UNPKG

dicomweb-pacs

Version:

A self contained easy to use PACS with DICOMWEB and DIMSE service support

3 lines 813 kB
/*! For license information please see 6029.bundle.6035b3ad42ac94c36050.js.LICENSE.txt */
(self.webpackChunk=self.webpackChunk||[]).push([[6029],{48405:(e,t,n)=>{"use strict";n.d(t,{C:()=>c});class o{constructor(e){this.fullDate=e}getTimeInSec(){const e=this.fullDate.substring(0,10),t=this.fullDate.substring(11,28),n=parseInt(e.substring(0,4),10),o=e.length>=7?parseInt(e.substring(5,7),10):void 0,i=e.length>=10?parseInt(e.substring(8,10),10):void 0;if(isNaN(n)||void 0!==o&&isNaN(o)||void 0!==i&&isNaN(i)||n>3e3||o&&(o<1||o>12)||i&&(i<1||i>31))throw new Error(`invalid date '${e}'`);const a=new Date(`${e}T00:00:00.000000Z`),r=parseInt(t.substring(0,2),10),s=t.length>=5?parseInt(t.substring(3,5),10):void 0,l=t.length>=8?parseInt(t.substring(6,8),10):void 0,d=t.substring(9,15),c=d?parseInt(d,10)*Math.pow(10,-d.length):void 0;if(isNaN(r)||void 0!==s&&isNaN(s)||void 0!==l&&isNaN(l)||void 0!==c&&isNaN(c)||r<0||r>23||s&&(s<0||s>59)||l&&(l<0||l>59)||c&&(c<0||c>999999))throw new Error(`invalid time '${t}'`);let u=a.getTime()/1e3;return u+=3600*r,void 0!==s&&(u+=60*s),void 0!==l&&(u+=l),void 0!==c&&(u+=c),u}getTimeInMicroSec(){return 1e6*this.getTimeInSec()}}function i(e,t){const n=`${t.hours||"00"}`.padStart(2,"0"),i=`${t.minutes||"00"}`.padStart(2,"0"),a=`${t.seconds||"00"}`.padStart(2,"0"),r=`${e.month}`.padStart(2,"0"),s=`${e.day}`.padStart(2,"0"),l=`${t.fractionalSeconds||"000000"}`.padEnd(6,"0"),d=`${e.year}-${r}-${s}`;return new o(`${d}${`T${n}:${i}:${a}.${l}Z`}`)}function a(e){if(null==e||8!==e.length||"string"!=typeof e)throw new Error(`invalid DA '${e}'`);const t=parseInt(e.substring(0,4),10),n=parseInt(e.substring(4,6),10),o=parseInt(e.substring(6,8),10);if(!0!=(i=o,a=n,r=t,!isNaN(r)&&a>0&&a<=12&&i>0&&i<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(a,r)))throw new Error(`invalid DA '${e}'`);var i,a,r;return{year:t,month:n,day:o}}function r(e){if(null==e||e.length<2||"string"!=typeof e)throw new Error(`invalid TM '${e}'`);const t=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,o=e.length>=6?parseInt(e.substring(4,6),10):void 0,i=e.length>=8?e.substring(7,13):void 0,a=i?parseInt(i,10)*Math.pow(10,6-i.length):void 0;if(isNaN(t)||void 0!==n&&isNaN(n)||void 0!==o&&isNaN(o)||void 0!==a&&isNaN(a)||t<0||t>23||n&&(n<0||n>59)||o&&(o<0||o>59)||a&&(a<0||a>999999))throw new Error(`invalid TM '${e}'`);return{hours:t,minutes:n,seconds:o,fractionalSeconds:a}}function s(e){if(null==e)throw new Error("dateTimeToFullDateInterface : dateTime not defined.");return i(a(e.substring(0,8)),r(e.substring(8)))}function l(e){const{RadionuclideTotalDose:t,RadionuclideHalfLife:n,RadiopharmaceuticalStartDateTime:l,RadiopharmaceuticalStartTime:d,SeriesDate:c}=e[0];if(null==t)throw new Error("calculateDecayCorrection : RadionuclideTotalDose value not found.");if(null==n)throw new Error("calculateDecayCorrection : RadionuclideHalfLife value not found.");const u=function(e){const{SeriesDate:t,SeriesTime:n,GEPrivatePostInjectionDateTime:l}=e[0],d=new Array(e.length),c=i(a(t),r(n));let u=new o("3000-01-01T00:00:00.000000Z"),h=u.getTimeInSec();if(e.forEach((e=>{const{AcquisitionDate:t,AcquisitionTime:n}=e,o=i(a(t),r(n));u=u.getTimeInSec()>=h||o.getTimeInSec()<u.getTimeInSec()?o:u})),u.getTimeInSec()>=h)throw new Error("Earliest acquisition time or date could not be parsed.");return c.getTimeInSec()<=u.getTimeInSec()?d.fill(c):l?d.fill(s(l)):d.fill(u)}(e),h=function(e){const{RadiopharmaceuticalStartDateTime:t,RadiopharmaceuticalStartTime:n,SeriesDate:o}=e;let l,d;if(t)return s(t);if(n&&o)return l=r(n),d=a(o),i(d,l);throw new Error(`Invalid input: ${e}`)}({RadiopharmaceuticalStartDateTime:l,RadiopharmaceuticalStartTime:d,SeriesDate:c});return e.map(((e,o)=>{const i=u[o].getTimeInSec()-h.getTimeInSec();if(i<0)throw new Error("Decay time cannot be less than zero");return 1/(t*Math.pow(2,-i/n))}))}const d=(e,t)=>e===t||Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every(((e,n)=>e===t[n]));function c(e){const{CorrectedImage:t,Units:n,PhilipsPETPrivateGroup:o,PatientWeight:i,PatientSex:a,PatientSize:r}=e[0];if(!t.includes("ATTN")||!t.includes("DECY"))throw new Error(`CorrectedImage must contain "ATTN" and "DECY": ${t}`);if(!e.every((o=>o.Units===n&&d(o.CorrectedImage,t)&&o.PatientWeight===i&&o.PatientSex===a&&o.PatientSize===r&&o.RadionuclideHalfLife===e[0].RadionuclideHalfLife&&o.RadionuclideTotalDose===e[0].RadionuclideTotalDose&&o.DecayCorrection===e[0].DecayCorrection&&o.SeriesDate===e[0].SeriesDate&&o.SeriesTime===e[0].SeriesTime)))throw new Error("The set of instances does not appear to come from one Series. Every instance must have identical values for series-level metadata properties");if(!i)throw new Error("PatientWeight value is missing. It is not possible to calculate the SUV factors");let s=new Array(e.length);s=l(e);let c=new Array(e.length);const u=1e3*i;if("BQML"===n)c=s.map((function(e){return e*u}));else if("CNTS"===n){const t=e.every((e=>{var t,n,o;return e.PhilipsPETPrivateGroup&&null!==(null===(t=e.PhilipsPETPrivateGroup)||void 0===t?void 0:t.SUVScaleFactor)&&void 0!==(null===(n=e.PhilipsPETPrivateGroup)||void 0===n?void 0:n.SUVScaleFactor)&&0!==(null===(o=e.PhilipsPETPrivateGroup)||void 0===o?void 0:o.SUVScaleFactor)})),n=e.every((e=>{var t,n,o;return e.PhilipsPETPrivateGroup&&!(null!==(t=e.PhilipsPETPrivateGroup)&&void 0!==t&&t.SUVScaleFactor)&&void 0!==(null===(n=e.PhilipsPETPrivateGroup)||void 0===n?void 0:n.ActivityConcentrationScaleFactor)&&0!==(null===(o=e.PhilipsPETPrivateGroup)||void 0===o?void 0:o.ActivityConcentrationScaleFactor)}));if(t)c=e.map((e=>e.PhilipsPETPrivateGroup.SUVScaleFactor));else{if(!n)throw new Error(`Units are in CNTS, but PhilipsPETPrivateGroup has invalid values: ${JSON.stringify(o)}`);c=e.map(((e,t)=>e.PhilipsPETPrivateGroup.ActivityConcentrationScaleFactor*s[t]*u))}}else{if("GML"!==n)throw new Error(`Units has an invalid value: ${n}`);c.fill(1)}let h,g,p;if(null==r)console.warn("PatientSize value is missing. It is not possible to calculate the SUV bsa factors");else{h=function(e){const{PatientWeight:t,PatientSize:n}=e;return Math.pow(t,.425)*Math.pow(100*n,.725)*71.84}({PatientWeight:i,PatientSize:r})}if(null==r)console.warn("PatientSize value is missing. It is not possible to calculate the SUV lbm factors");else if(null==a)console.warn("PatientSex value is missing. It is not possible to calculate the SUV lbm factors");else{const e={PatientWeight:i,PatientSex:a,PatientSize:r};g=function(e){const{PatientSex:t,PatientWeight:n,PatientSize:o}=e;let i;const a=Math.pow(n/(100*o),2);if("F"===t)i=1.07*n-148*a;else{if("M"!==t)throw new Error(`PatientSex is an invalid value: ${t}`);i=1.1*n-120*a}return 1e3*i}(e),p=function(e){const{PatientSex:t,PatientWeight:n,PatientSize:o}=e;let i;const a=n/Math.pow(o,2);if("F"===t)i=9270*n/(8780+244*a);else{if("M"!==t)throw new Error(`PatientSex is an invalid value: ${t}`);i=9270*n/(6680+216*a)}return 1e3*i}(e)}return c.map((function(e,t){const n={suvbw:e};return h&&(n.suvbsa=s[t]*h),g&&(n.suvlbm=s[t]*g),p&&(n.suvlbmJanma=s[t]*p),n}))}},36625:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>a,Qy:()=>s,zj:()=>i});let o={};function i(){return o}function a(e){o=e}let r=!1;function s(){if(!o.addons?.polySeg)return console.warn("PolySeg add-on not configured. This will prevent automatic conversion between segmentation representations (labelmap, contour, surface). To enable these features, install @cornerstonejs/polymorphic-segmentation and register it during initialization: cornerstoneTools.init({ addons: { polySeg } })."),null;const e=o.addons.polySeg;return r||(e.init(),r=!0),e}},93952:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]]},47085:(e,t,n)=>{"use strict";n.r(t),n.d(t,{COLOR_LUT:()=>o.A});var o=n(93952)},94430:(e,t,n)=>{"use strict";n.d(t,{A:()=>a,i:()=>s});const o=Symbol("DefinedCursors"),i=new Set(["alias","all-scroll","auto","cell","col-resize","context-menu","copy","crosshair","default","e-resize","ew-resize","grab","grabbing","help","move","ne-resize","nesw-resize","no-drop","none","not-allowed","n-resize","ns-resize","nw-resize","nwse-resize","pointer","progress","row-resize","se-resize","s-resize","sw-resize","text","vertical-text","wait","w-resize","zoom-in","zoom-out"]);class a{constructor(e,t){this.name=e+"",this.fallback=t}getName(){return this.name+""}addFallbackStyleProperty(e){const{fallback:t}=this;return t instanceof a?`${e}, ${t.getStyleProperty()}`:e+""}getStyleProperty(){return this.addFallbackStyleProperty(this.name)+""}static getDefinedCursor(e){const t=r(a,o);let n=t.get(e);return n instanceof a?n:i.has(e)?(n=new a(e),t.set(e,n),n):void 0}static setDefinedCursor(e,t){if(t instanceof a){return r(a,o).set(e,t),!0}return!1}}function r(e,t){let n=e[t];return n instanceof Map||(n=new Map,Object.defineProperty(e,t,{value:n})),n}const s=i.values()},7001:(e,t,n)=>{"use strict";n.r(t),n.d(t,{hideElementCursor:()=>l,initElementCursor:()=>a,resetElementCursor:()=>s,setElementCursor:()=>r});var o=n(94430);const i=Symbol("ElementCursorsMap");function a(e,t){d(e)[0]=t,r(e,t)}function r(e,t){const n=d(e);n[1]=n[0],n[0]=t,e.style.cursor=(t instanceof o.A?t:o.A.getDefinedCursor("auto")).getStyleProperty()}function s(e){r(e,d(e)[1])}function l(e){r(e,o.A.getDefinedCursor("none"))}function d(e){let t=d[i];t instanceof WeakMap||(t=new WeakMap,Object.defineProperty(d,i,{value:t}));let n=t.get(e);return n||(n=[null,null],t.set(e,n)),n}},79475:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CursorNames:()=>T,CursorSVG:()=>p,ImageMouseCursor:()=>a,MouseCursor:()=>o.A,SVGMouseCursor:()=>I,elementCursor:()=>x,registerCursor:()=>m,setCursorForElement:()=>S});var o=n(94430),i=n(15327);class a extends o.A{constructor(e,t,n,o,i){super(o||a.getUniqueInstanceName("image-cursor"),i),this.url=e,this.x=Number(t)||0,this.y=Number(n)||0}getStyleProperty(){const{url:e,x:t,y:n}=this;let o=`url('${e}')`;return t>=0&&n>=0&&(t>0||n>0)&&(o+=` ${t} ${n}`),this.addFallbackStyleProperty(o)}static getUniqueInstanceName(e){return`${e}-${i.utilities.getRuntimeId(a)}`}}var r=n(99737);const s={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n    <path stroke="{{color}}" d="M8 16L8 0"></path>\n    <path stroke="{{color}}" d="M16 8L0 8"></path>\n  '},l={x:127,y:60},d='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n',c='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n<rect fill="{{color}}" x="95.84" y="9.38" width="15.85" height="47.14"/>\n',u='<path fill="{{color}}" d="M82.89,10a12.09,12.09,0,0,0-16.8-2.5l-27.5,20.4-8.5-6.3a2.93,2.93,0,0,1-1.1-3,14.66,14.66,0,0,0,.1-6.6,14.08,14.08,0,1,0-6.5,15.2,2.87,2.87,0,0,1,3.2.2l8.2,6.1-8.2,6.1a2.87,2.87,0,0,1-3.2.2,14.16,14.16,0,1,0,6.7,14.4,14,14,0,0,0-.3-5.8,2.93,2.93,0,0,1,1.1-3l8.5-6.3,27.5,20.4A11.91,11.91,0,0,0,82.89,57l-31.7-23.5ZM15.29,21a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,21Zm0,36.8a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,57.77Zm28.3-21.5a2.8,2.8,0,1,1,2.8-2.8A2.8,2.8,0,0,1,43.59,36.27Z" transform="translate(-1.17 -0.96)"/>',h='<path fill="{{color}}" d="M8.86,2.25V66.08H72.69V2.25H8.86ZM65.28,58.67h-49v-49h49v49Z" transform="translate(-8.86 -2.25)"/>',g='<path fill="{{color}}" d="M40.77,2.25A31.92,31.92,0,1,0,72.69,34.16,31.92,31.92,0,0,0,40.77,2.25Zm0,57.63A25.71,25.71,0,1,1,66.48,34.16,25.71,25.71,0,0,1,40.77,59.87Z" transform="translate(-8.86 -2.25)"/>',p={Angle:f(s,{name:"Angle",iconContent:'<path fill="{{color}}" d="M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50\n    50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23\n    10l50 50q10 10 10 23z" />',viewBox:{x:1792,y:1792}}),ArrowAnnotate:f(s,{name:"ArrowAnnotate",iconContent:'<g id="arrowAnnotate-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n    <path id="arrowAnnotate-arrow" d="M23,7 l-15,15 M7,17 l0,6 6,0" stroke-width="2" />\n  </g>',viewBox:{x:24,y:24}}),Bidirectional:f(s,{name:"Bidirectional",iconContent:'<g fill="{{color}}" stroke-width="3" stroke="{{color}}">\n    <path d="M27.63 3.21L3.12 28.81"></path>\n    <path d="M27.63 15.75L15.27 4.43"></path>\n    <path d="M16.5 4.28C16.5 4.96 15.95 5.51 15.27 5.51C14.59 5.51 14.03 4.96 14.03 4.28C14.03 3.59 14.59 3.04 15.27 3.04C15.95 3.04 16.5 3.59 16.5 4.28Z" ></path>\n    <path d="M28.87 3.19C28.87 3.87 28.31 4.43 27.63 4.43C26.95 4.43 26.4 3.87 26.4 3.19C26.4 2.51 26.95 1.95 27.63 1.95C28.31 1.95 28.87 2.51 28.87 3.19Z"></path>\n    <path d="M28.87 15.75C28.87 16.43 28.31 16.99 27.63 16.99C26.95 16.99 26.4 16.43 26.4 15.75C26.4 15.07 26.95 14.51 27.63 14.51C28.31 14.51 28.87 15.07 28.87 15.75Z"></path>\n    <path d="M4.73 28.44C4.73 29.12 4.17 29.68 3.49 29.68C2.81 29.68 2.25 29.12 2.25 28.44C2.25 27.76 2.81 27.2 3.49 27.2C4.17 27.2 4.73 27.76 4.73 28.44Z"></path>\n  </g>',viewBox:{x:48,y:48}}),CobbAngle:f(s,{name:"CobbAngle",iconContent:'<g stroke="{{color}}" stroke-width="3">\n    <path d="M28.59 2.34L3.82 12.32"></path>\n    <path d="M28.59 29.66L3.82 19.68"></path>\n    <path stroke-dasharray="2" fill-opacity="0" d="M12.37\n      23.06C12.67 22.36 12.85 21.93 12.92 21.76C14.6 17.8 14.68 13.35 13.15\n      9.33C13.11 9.24 13.02 9 12.88 8.63">\n    </path>\n  </g>',viewBox:{x:32,y:32}}),CircleROI:f(s,{name:"CircleROI",iconContent:'<circle stroke="{{color}}" fill="none" stroke-width="3" cx="16" cy="16" r="14" />',viewBox:{x:32,y:32}}),EllipticalROI:f(s,{name:"EllipticalROI",iconContent:'<path stroke="{{color}}" fill="none" stroke-width="3" d="M30.74 15.76C30.74 20.99 24.14 25.23 16\n    25.23C7.86 25.23 1.26 20.99 1.26 15.76C1.26 10.54 7.86 6.3 16 6.3C24.14\n    6.3 30.74 10.54 30.74 15.76Z" />',viewBox:{x:32,y:32}}),FreehandROI:f(s,{name:"FreehandROI",iconContent:'<g fill="{{color}}" stroke="{{color}}" stroke-width="2">\n    <ellipse ry="1" rx="1" id="svg_3" cy="4.240343" cx="14.306499"/>\n    <line id="svg_4" y2="3.58462" x2="12.242186" y1="3.997482" x1="13.432202"/>\n    <line id="svg_5" y2="3.268901" x2="10.857882" y1="3.608906" x1="12.387902"/>\n    <line id="svg_6" y2="3.147471" x2="9.740724" y1="3.293187" x1="10.955026"/>\n    <line id="svg_7" y2="3.147471" x2="8.089274" y1="3.196043" x1="9.983585"/>\n    <line id="svg_8" y2="3.268901" x2="6.874972" y1="3.123185" x1="8.307848"/>\n    <line id="svg_9" y2="3.657478" x2="5.587812" y1="3.220329" x1="7.020688"/>\n    <line id="svg_10" y2="4.046054" x2="4.737801" y1="3.560334" x1="5.854959"/>\n    <line id="svg_11" y2="4.337487" x2="4.300652" y1="3.997482" x1="4.834945"/>\n    <line id="svg_12" y2="4.726063" x2="3.88779" y1="4.191771" x1="4.470655"/>\n    <line id="svg_15" y2="5.3575" x2="3.377783" y1="4.604633" x1="3.960648"/>\n    <line id="svg_16" y2="6.183226" x2="2.916348" y1="5.138926" x1="3.547785"/>\n    <line id="svg_17" y2="6.960379" x2="2.770632" y1="5.867507" x1="3.037779"/>\n    <line id="svg_18" y2="7.713246" x2="2.673488" y1="6.741804" x1="2.819204"/>\n    <line id="svg_19" y2="8.684687" x2="2.697774" y1="7.616102" x1="2.673488"/>\n    <line id="svg_20" y2="9.753273" x2="2.892062" y1="8.611829" x1="2.697774"/>\n    <line id="svg_21" y2="10.724714" x2="3.134923" y1="9.534698" x1="2.84349"/>\n    <line id="svg_23" y2="11.647583" x2="3.596357" y1="10.578998" x1="3.086351"/>\n    <line id="svg_25" y2="12.521881" x2="4.276366" y1="11.501867" x1="3.499213"/>\n    <line id="svg_26" y2="13.930471" x2="5.830673" y1="12.376165" x1="4.13065"/>\n    <line id="svg_28" y2="14.707624" x2="7.263549" y1="13.881899" x1="5.733528"/>\n    <line id="svg_29" y2="15.339061" x2="8.963571" y1="14.61048" x1="7.06926"/>\n    <line id="svg_30" y2="15.581921" x2="10.882168" y1="15.314775" x1="8.817855"/>\n    <line id="svg_31" y2="15.460491" x2="12.023612" y1="15.581921" x1="10.785024"/>\n    <line id="svg_33" y2="15.120487" x2="13.092197" y1="15.484777" x1="11.877895"/>\n    <line id="svg_34" y2="14.586194" x2="13.86935" y1="15.217631" x1="12.897909"/>\n    <line id="svg_35" y2="13.833327" x2="14.597931" y1="14.756196" x1="13.699348"/>\n    <line id="svg_37" y2="12.716169" x2="15.180796" y1="13.881899" x1="14.549359"/>\n    <line id="svg_39" y2="11.429009" x2="15.520801" y1="12.813313" x1="15.15651"/>\n    <ellipse ry="1" rx="1" id="svg_40" cy="10.967574" cx="15.520801"/>\n  </g>',viewBox:{x:18,y:18}}),FreehandROISculptor:f(s,{name:"FreehandROISculptor",iconContent:'<g id="icon-freehand-sculpt" fill="none" stroke-width="1.5" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n    <line id="svg_1" y2="2.559367" x2="10.184807" y1="4.467781" x1="8.81711"/>\n    <line id="svg_4" y2="1.493836" x2="11.727442" y1="2.766112" x1="10.089386"/>\n    <line id="svg_7" y2="1.080346" x2="13.047428" y1="1.748291" x1="11.345759"/>\n    <line id="svg_8" y2="1.000829" x2="14.351511" y1="1.112153" x1="12.77707"/>\n    <line id="svg_9" y2="1.350705" x2="15.242104" y1="0.905408" x1="13.969828"/>\n    <line id="svg_10" y2="2.098167" x2="15.862339" y1="1.14396" x1="14.955842"/>\n    <line id="svg_11" y2="3.195505" x2="16.41896" y1="1.939133" x1="15.766918"/>\n    <line id="svg_12" y2="4.292843" x2="16.530284" y1="2.925147" x1="16.387153"/>\n    <line id="svg_16" y2="5.644637" x2="16.196311" y1="3.831643" x1="16.593898"/>\n    <line id="svg_18" y2="7.266789" x2="15.623787" y1="5.19934" x1="16.275829"/>\n    <line id="svg_19" y2="10.813258" x2="14.526449" y1="6.726071" x1="15.766918"/>\n    <line id="svg_20" y2="5.056209" x2="8.085552" y1="4.181519" x1="8.976145"/>\n    <line id="svg_23" y2="5.326568" x2="7.481221" y1="4.78585" x1="8.403621"/>\n    <line id="svg_24" y2="5.565119" x2="6.749662" y1="5.294761" x1="7.624352"/>\n    <line id="svg_25" y2="5.994512" x2="5.429675" y1="5.533312" x1="6.956407"/>\n    <line id="svg_27" y2="6.551133" x2="4.284627" y1="5.962706" x1="5.572807"/>\n    <line id="svg_28" y2="7.584858" x2="3.044158" y1="6.392099" x1="4.427758"/>\n    <line id="svg_29" y2="8.84123" x2="2.185372" y1="7.489437" x1="3.219096"/>\n    <line id="svg_31" y2="10.606513" x2="1.644654" y1="8.602678" x1="2.280792"/>\n    <line id="svg_32" y2="13.214679" x2="1.48562" y1="10.352058" x1="1.724171"/>\n    <line id="svg_33" y2="14.375631" x2="1.676461" y1="12.992031" x1="1.453813"/>\n    <line id="svg_34" y2="15.298031" x2="2.264889" y1="14.152983" x1="1.517427"/>\n    <line id="svg_35" y2="16.172721" x2="3.521261" y1="14.948155" x1="1.915013"/>\n    <line id="svg_36" y2="16.824762" x2="5.207027" y1="15.997783" x1="3.28271"/>\n    <line id="svg_38" y2="17.063314" x2="7.035924" y1="16.745245" x1="4.968475"/>\n    <line id="svg_39" y2="16.888376" x2="9.278311" y1="17.047411" x1="6.733758"/>\n    <line id="svg_40" y2="16.284045" x2="10.661911" y1="16.983797" x1="8.992048"/>\n    <line id="svg_41" y2="15.313934" x2="11.647925" y1="16.395369" x1="10.455166"/>\n    <line id="svg_44" y2="13.898527" x2="12.82478" y1="15.425259" x1="11.504794"/>\n    <line id="svg_45" y2="12.037824" x2="14.144766" y1="14.312017" x1="12.522614"/>\n    <line id="svg_47" y2="10.59061" x2="14.605966" y1="12.228665" x1="13.953925"/>\n    <ellipse ry="1" rx="1" id="svg_48" cy="3.982726" cx="13.460918"/>\n  </g>',viewBox:{x:18,y:18}}),Length:f(s,{name:"Length",iconContent:'<g id="length-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n    <path id="length-dashes" d="m22.5,6 -16.5,16.5" stroke-width="3" stroke-dasharray="0.6666,5" />\n  </g>',viewBox:{x:24,y:24}}),Height:f(s,{name:"Height",iconContent:'<path d="m 6 22 l 8.5 0 v -16 h 8" stroke-width="3" fill="none" stroke="{{color}}" />',viewBox:{x:24,y:24}}),Probe:f(s,{name:"Probe",iconContent:'<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75\n    75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73\n    198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5\n    279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5\n    385.5-103 385.5 103 279.5 279.5 103 385.5z" />',viewBox:{x:1792,y:1792}}),RectangleROI:f(s,{name:"RectangleROI",iconContent:'<path fill="{{color}}" d="M1312 256h-832q-66 0-113 47t-47 113v832q0 66 47\n    113t113 47h832q66 0 113-47t47-113v-832q0-66-47-113t-113-47zm288 160v832q0\n    119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119\n    84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),Label:f(s,{name:"Label",iconContent:'<path fill="{{color}}" d="M789 559l-170 450q33 0 136.5 2t160.5 2q19 0\n    57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29\n    31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15\n    34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 5-.5\n    13.5t-.5 12.5q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0\n    12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11\n    2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0\n    22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58\n    0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z" />',viewBox:{x:1792,y:1792}}),Crosshairs:f(s,{name:"Crosshairs",iconContent:'<path fill="{{color}}" d="M1325 1024h-109q-26 0-45-19t-19-45v-128q0-26\n    19-45t45-19h109q-32-108-112.5-188.5t-188.5-112.5v109q0 26-19 45t-45\n    19h-128q-26 0-45-19t-19-45v-109q-108 32-188.5 112.5t-112.5 188.5h109q26\n    0 45 19t19 45v128q0 26-19 45t-45 19h-109q32 108 112.5 188.5t188.5\n    112.5v-109q0-26 19-45t45-19h128q26 0 45 19t19 45v109q108-32\n    188.5-112.5t112.5-188.5zm339-192v128q0 26-19 45t-45 19h-143q-37 161-154.5\n    278.5t-278.5 154.5v143q0 26-19 45t-45 19h-128q-26\n    0-45-19t-19-45v-143q-161-37-278.5-154.5t-154.5-278.5h-143q-26\n    0-45-19t-19-45v-128q0-26 19-45t45-19h143q37-161\n    154.5-278.5t278.5-154.5v-143q0-26 19-45t45-19h128q26 0 45 19t19 45v143q161\n    37 278.5 154.5t154.5 278.5h143q26 0 45 19t19 45z" />',viewBox:{x:1792,y:1792}}),Eraser:f(s,{name:"Eraser",iconContent:'<path transform="translate(0,1792) scale(1,-1)" fill="{{color}}" d="M960 1408l336-384h-768l-336 384h768zm1013-1077q15\n    34 9.5 71.5t-30.5 65.5l-896 1024q-38 44-96 44h-768q-38\n    0-69.5-20.5t-47.5-54.5q-15-34-9.5-71.5t30.5-65.5l896-1024q38-44 96-44h768q38\n    0 69.5 20.5t47.5 54.5z" />',viewBox:{x:2048,y:1792}}),Magnify:f(s,{name:"Magnify",iconContent:'<path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n    312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n    0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n    0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n    32s176 78.7 176 176-78.7 176-176 176z" />',viewBox:{x:512,y:512}}),Pan:f(s,{name:"Pan",iconContent:'<path fill="{{color}}" d="M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17\n    39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355\n    355 144 144q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59\n    39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12\n    0-24-5-40-17-40-59v-448q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69l-144\n    144 355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19\n    45v448q0 42-39 59-13 5-25 5-26 0-45-19z" />',viewBox:{x:1792,y:1792}}),Rotate:f(s,{name:"Rotate",iconContent:'<path fill="{{color}}" d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39\n    14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5\n    163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0\n    225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109\n    132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298\n    164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14\n    39 17 39 59z" />',viewBox:{x:1792,y:1792}}),StackScroll:f(s,{name:"StackScroll",iconContent:'<path fill="{{color}}" d="M24 21v2c0 0.547-0.453 1-1 1h-22c-0.547\n    0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 13v2c0\n    0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547\n    0 1 0.453 1 1zM24 5v2c0 0.547-0.453 1-1 1h-22c-0.547\n    0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1z" />',viewBox:{x:24,y:28}}),WindowLevelRegion:f(s,{name:"WindowLevelRegion",iconContent:'<path fill="{{color}}" d="M1664 416v960q0 119-84.5 203.5t-203.5 84.5h-960q-119\n    0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5\n    84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),WindowLevel:f(s,{name:"WindowLevel",iconContent:'\n    <path fill="{{color}}" d="M14.5,3.5 a1 1 0 0 1 -11,11 Z" stroke="none" opacity="0.8" />\n    <circle cx="9" cy="9" r="8" fill="none" stroke-width="2" stroke="{{color}}" />',viewBox:{x:18,y:18}}),Zoom:f(s,{name:"Zoom",iconContent:'\n  <path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n    312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n    0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n    0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n    32s176 78.7 176 176-78.7 176-176 176z" />\n  <path fill="{{color}}" transform="scale(0.22,0.22) translate(1400,0)" d="M1216\n    320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19\n    19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26\n    0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z" />',viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:f(s,{name:"SegmentationFreeHandEraseInside",iconContent:`${u} ${d}`,viewBox:l}),SegmentationFreeHandFillInside:f(s,{name:"SegmentationFreeHandFillInside",iconContent:`${u} ${c}`,viewBox:l}),SegmentationFreeHandEraseOutside:f(s,{name:"SegmentationFreeHandEraseOutside",iconContent:`${u} ${d}`,viewBox:l}),SegmentationFreeHandFillOutside:f(s,{name:"SegmentationFreeHandFillOutside",iconContent:`${u} ${c}`,viewBox:l}),SegmentationRectangleEraseInside:f(s,{name:"SegmentationRectangleEraseInside",iconContent:`${h} ${d}`,viewBox:l}),RectangleScissor:f(s,{name:"RectangleScissor",iconContent:`${h} ${c}`,viewBox:l}),"RectangleScissor.FILL_INSIDE":f(s,{name:"RectangleScissor.FILL_INSIDE",iconContent:`${h} ${c}`,viewBox:l}),"RectangleScissor.FILL_OUTSIDE":f(s,{name:"RectangleScissor.FILL_OUTSIDE",iconContent:`${h} ${c}`,viewBox:l}),"RectangleScissor.ERASE_OUTSIDE":f(s,{name:"RectangleScissor.ERASE_OUTSIDE",iconContent:`${h} ${d}`,viewBox:l}),"RectangleScissor.ERASE_INSIDE":f(s,{name:"RectangleScissor.ERASE_INSIDE",iconContent:`${h} ${d}`,viewBox:l}),CircleScissor:f(s,{name:"CircleScissor",iconContent:`${g} ${c}`,viewBox:l}),"CircleScissor.FILL_INSIDE":f(s,{name:"CircleScissor.FILL_INSIDE",iconContent:`${g} ${c}`,viewBox:l}),"CircleScissor.ERASE_OUTSIDE":f(s,{name:"CircleScissor.ERASE_OUTSIDE",iconContent:`${g} ${d}`,viewBox:l}),"CircleScissor.FILL_OUTSIDE":f(s,{name:"CircleScissor.FILL_OUTSIDE",iconContent:`${g} ${c}`,viewBox:l})};function f(e,t){return Object.assign(Object.create(e),{...t,name:t.name||e.name})}function m(e,t,n){p[e]=f(s,{iconContent:t,viewBox:n})}const v=Object.keys(p);var w=n(76712);const b=r.AnnotationStyleStates.Highlighted,E=r.ToolModes.Active;class I extends a{constructor(e,t,n,o,i){super(e,t,n,o,i)}static getDefinedCursor(e,t=!1,n){n||(n=(0,w.h)("color",{},b,E));const o=function(e,t,n){const o=t?"pointer":"cursor";return`${o}:${e}/${n}`}(e,t,n);let i=super.getDefinedCursor(o);if(!i){const a=function(e){return p[e]}(e);a&&(i=function(e,t,n,o,i){const{x:a,y:r}=e.mousePoint;return new I(function(e,t,n){const o=function(e,t,n){const o=(t?C:_)(e,n);return new Blob([o],{type:"image/svg+xml"})}(e,t,n),i=`${URL.createObjectURL(o)}#${e.name||"unknown"}-${t?"pointer":"cursor"}`;return i}(e,n,{color:o}),a,r,t,i)}(a,o,t,n,super.getDefinedCursor("default")),super.setDefinedCursor(o,i))}return i}}function y(e,t){const n=Object(t),o=Object.prototype.hasOwnProperty.bind(n);return(e+"").replace(/\{\{(\w+)\}\}/g,((e,t)=>o(t)?n[t]+"":""))}function _(e,t){const{iconContent:n,iconSize:o,viewBox:i}=e;return y(`\n    <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n      width="${o}" height="${o}" viewBox="0 0\n      ${i.x} ${i.y}">\n      ${n}\n    </svg>`,t)}function C(e,t){const{iconContent:n,iconSize:o,viewBox:i,mousePointerGroupString:a}=e,r=16+o;return y(`\n    <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n      width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">\n      <g>${a}</g>\n      <g transform="translate(16, 16) scale(${o/Math.max(i.x,i.y,1)})">${n}</g>\n    </svg>`,t)}var x=n(7001);const S=function(e,t){let n=I.getDefinedCursor(t,!0);n||(n=o.A.getDefinedCursor(t)),n||(console.log(`Cursor ${t} is not defined either as SVG or as a standard cursor.`),n=o.A.getDefinedCursor(t)),(0,x.setElementCursor)(e,n)},T=[...v,...o.i]},85856:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n(97181);var o=n(95074);const i=function(e,t,n,i,a,r={},s=""){const l=[(i[0]+a[0])/2,i[1]],d=[(i[0]+a[0])/2,a[1]],c=[i[0],(i[1]+a[1])/2],u=[a[0],(i[1]+a[1])/2];(0,o.A)(e,t,n,[d,l,c,u],{},"")}},95074:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(97181),i=n(85899),a=n(56442);const r=function(e,t,n,r,s={},l=""){const{color:d,width:c,lineWidth:u,lineDash:h}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},s),g=u||c,p=(0,o.A)(t,"ellipse",n),f=e.getSvgNode(p),[m,v,w,b]=r,E=Math.hypot(w[0]-b[0],w[1]-b[1]),I=Math.hypot(v[0]-m[0],v[1]-m[1]),y=180*Math.atan2(w[1]-b[1],w[0]-b[0])/Math.PI,_=[(w[0]+b[0])/2,(v[1]+m[1])/2],C={cx:`${_[0]}`,cy:`${_[1]}`,rx:`${E/2}`,ry:`${I/2}`,stroke:d,fill:"transparent",transform:`rotate(${y} ${_[0]} ${_[1]})`,"stroke-width":g,"stroke-dasharray":h};if(f)(0,i.A)(C,f),e.setNodeTouched(p);else{const t=document.createElementNS("http://www.w3.org/2000/svg","ellipse");""!==l&&t.setAttribute("data-id",l),(0,a.A)(C,t),e.appendNode(t,p)}}},94042:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(97181),i=n(56442),a=n(85899);const r=function(e,t,n,r,s={},l){const{color:d,handleRadius:c,width:u,lineWidth:h,fill:g,type:p,opacity:f}=Object.assign({color:"rgb(0, 255, 0)",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},s),m=h||u,v=(0,o.A)(t,"handle",`hg-${n}-index-${l}`);let w;if("circle"===p)w={cx:`${r[0]}`,cy:`${r[1]}`,r:c,stroke:d,fill:g,"stroke-width":m,opacity:f};else{if("rect"!==p)throw new Error(`Unsupported handle type: ${p}`);{const e=1.5*parseFloat(c);w={x:`${r[0]-.5*e}`,y:`${r[1]-.5*e}`,width:`${e}`,height:`${e}`,stroke:d,fill:g,"stroke-width":m,rx:""+.1*e,opacity:f}}}const b=e.getSvgNode(v);if(b)(0,a.A)(w,b),e.setNodeTouched(v);else{const t=document.createElementNS("http://www.w3.org/2000/svg",p);(0,i.A)(w,t),e.appendNode(t,v)}}},92118:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(97181),i=n(56442),a=n(85899);function r(e,t,n,r,s,l={},d=""){if(isNaN(r[0])||isNaN(r[1])||isNaN(s[0])||isNaN(s[1]))return;const{color:c="rgb(0, 255, 0)",width:u=10,lineWidth:h,lineDash:g,markerStartId:p=null,markerEndId:f=null,shadow:m=!1}=l,v=h||u,w=(0,o.A)(t,"line",n),b=e.getSvgNode(w),E=e.svgLayerElement.id,I=m?`filter:url(#shadow-${E});`:"",y={x1:`${r[0]}`,y1:`${r[1]}`,x2:`${s[0]}`,y2:`${s[1]}`,stroke:c,style:I,"stroke-width":v,"stroke-dasharray":g,"marker-start":p?`url(#${p})`:"","marker-end":f?`url(#${f})`:""};if(b)(0,a.A)(y,b),e.setNodeTouched(w);else{const t=document.createElementNS("http://www.w3.org/2000/svg","line");""!==d&&t.setAttribute("data-id",d),(0,i.A)(y,t),e.appendNode(t,w)}}},17311:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(97181),i=n(56442),a=n(85899);function r(e,t,n,r,s){const l=r.length&&r[0].length&&Array.isArray(r[0][0])?r:[r],{color:d="rgb(0, 255, 0)",width:c=10,fillColor:u="none",fillOpacity:h=0,lineWidth:g,lineDash:p,closePath:f=!1}=s,m=g||c,v=(0,o.A)(t,"path",n),w=e.getSvgNode(v);let b="";for(let e=0,t=l.length;e<t;e++){const t=l[e],n=t.length;if(!(n<2)){for(let e=0;e<n;e++){const n=t[e];b+=`${e?"L":"M"} ${n[0].toFixed(1)}, ${n[1].toFixed(1)} `}f&&(b+="Z ")}}if(!b)return;const E={d:b,stroke:d,fill:u,"fill-opacity":h,"stroke-width":m,"stroke-dasharray":p};if(w)(0,a.A)(E,w),e.setNodeTouched(v);else{const t=document.createElementNS("http://www.w3.org/2000/svg","path");(0,i.A)(E,t),e.appendNode(t,v)}}},98812:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(97181),i=n(56442),a=n(85899);function r(e,t,n,r,s){if(r.length<2)return;const{color:l="rgb(0, 255, 0)",width:d=10,fillColor:c="none",fillOpacity:u=0,lineWidth:h,lineDash:g,closePath:p=!1,markerStartId:f=null,markerEndId:m=null}=s,v=h||d,w=(0,o.A)(t,"polyline",n),b=e.getSvgNode(w);let E="";for(const e of r)E+=`${e[0].toFixed(1)}, ${e[1].toFixed(1)} `;if(p){const e=r[0];E+=`${e[0]}, ${e[1]}`}const I={points:E,stroke:l,fill:c,"fill-opacity":u,"stroke-width":v,"stroke-dasharray":g,"marker-start":f?`url(#${f})`:"","marker-end":m?`url(#${m})`:""};if(b)(0,a.A)(I,b),e.setNodeTouched(w);else{const t=document.createElementNS("http://www.w3.org/2000/svg","polyline");(0,i.A)(I,t),e.appendNode(t,w)}}},75076:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(97181),i=n(85899),a=n(56442);function r(e,t,n,r,s={},l=""){const{color:d,width:c,lineWidth:u,lineDash:h}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},s),g=u||c,p=(0,o.A)(t,"rect",n),f=e.getSvgNode(p),[m,v,w,b]=r,E=Math.hypot(m[0]-v[0],m[1]-v[1]),I=Math.hypot(m[0]-w[0],m[1]-w[1]),y=[(b[0]+m[0])/2,(b[1]+m[1])/2],_=[(w[0]+m[0])/2,(w[1]+m[1])/2],C=180*Math.atan2(y[1]-_[1],y[0]-_[0])/Math.PI,x={x:""+(y[0]-E/2),y:""+(y[1]-I/2),width:`${E}`,height:`${I}`,stroke:d,fill:"transparent",transform:`rotate(${C} ${y[0]} ${y[1]})`,"stroke-width":g,"stroke-dasharray":h};if(f)(0,i.A)(x,f),e.setNodeTouched(p);else{const t=document.createElementNS("http://www.w3.org/2000/svg","rect");""!==l&&t.setAttribute("data-id",l),(0,a.A)(x,t),e.appendNode(t,p)}}},26290:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(97181),i=n(85899);function a(e){const t=document.createElementNS("http://www.w3.org/2000/svg","tspan");return t.setAttribute("x","0"),t.setAttribute("dy","1.2em"),t.textContent=e,t}function r(e,t){let n=e.querySelector("rect.background");if(!t)return n&&e.removeChild(n),e.getBBox();n||(n=document.createElementNS("http://www.w3.org/2000/svg","rect"),n.setAttribute("class","background"),e.insertBefore(n,e.firstChild));const o=e.getBBox(),a={x:`${o.x}`,y:`${o.y}`,width:`${o.width}`,height:`${o.height}`,fill:t};return(0,i.A)(a,n),o}const s=function(e,t,n,s,l,d={}){return function(e,t,n,s=[""],l,d){const{padding:c,color:u,fontFamily:h,fontSize:g,background:p}=d;let f;const[m,v]=[l[0]+c,l[1]+c],w="http://www.w3.org/2000/svg",b=(0,o.A)(t,"text",n),E=e.getSvgNode(b);if(E){const n=E.querySelector("text"),o=Array.from(n.children);for(let e=0;e<o.length;e++){const t=o[e],n=s[e]||"";t.textContent=n}if(s.length>o.length){for(let e=0;e<s.length-o.length;e++){const t=a(s[e+o.length]);n.appendChild(t)}E.appendChild(n),e.appendNode(E,b)}const l={fill:u,"font-size":g,"font-family":h},d={transform:`translate(${m} ${v})`};(0,i.A)(l,n),(0,i.A)(d,E),E.setAttribute("data-annotation-uid",t),f=r(E,p),e.setNodeTouched(b)}else{const n=document.createElementNS(w,"g");n.setAttribute("data-annotation-uid",t),n.setAttribute("transform",`translate(${m} ${v})`);const o=function(e,t){const{color:n,fontFamily:o,fontSize:i}=t,a="http://www.w3.org/2000/svg",r=document.createElementNS(a,"text"),s="user-select: none; pointer-events: none; -webkit-tap-highlight-color:  rgba(255, 255, 255, 0);",l=`filter:url(#shadow-${e.svgLayerElement.id});`,d=`${s}${l}`;return r.setAttribute("x","0"),r.setAttribute("y","0"),r.setAttribute("fill",n),r.setAttribute("font-family",o),r.setAttribute("font-size",i),r.setAttribute("style",d),r.setAttribute("pointer-events","visible"),r}(e,d);for(let e=0;e<s.length;e++){const t=a(s[e]);o.appendChild(t)}n.appendChild(o),e.appendNode(n,b),f=r(n,p)}return Object.assign({},f,{x:m,y:v,height:f.height+c,width:f.width+c})}(e,t,n,s,l,Object.assign({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"14px",color:"rgb(255, 255, 0)",background:"",padding:25,centerX:!1,centerY:!0},d))}},17328:(e,t,n)=>{"use strict";n.r(t),n.d(t,{draw:()=>o.A,drawArrow:()=>w,drawCircle:()=>i.A,drawEllipse:()=>a.A,drawEllipseByCoordinates:()=>r.A,drawHandle:()=>l.A,drawHandles:()=>s.A,drawHeight:()=>c,drawLine:()=>d.A,drawLinkedTextBox:()=>g.A,drawPath:()=>h.A,drawPolyline:()=>u.A,drawRect:()=>p.A,drawRectByCoordinates:()=>f.A,drawRedactionRect:()=>y,drawTextBox:()=>m.A,setAttributesIfNecessary:()=>E.A,setNewAttributesIfValid:()=>I.A});var o=n(18262),i=n(12004),a=n(85856),r=n(95074),s=n(56745),l=n(94042),d=n(92118);function c(e,t,n,o,i,a={}){if(isNaN(o[0])||isNaN(o[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:r,width:s,lineWidth:l,lineDash:c}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},a),u=i[0]+(o[0]-i[0])/2,h=[u,o[1]],g=[u,i[1]],p={start:o,end:h},f={start:h,end:g},m={start:g,end:i};(0,d.A)(e,t,"1",p.start,p.end,{color:r,width:s,lineWidth:l,lineDash:c}),(0,d.A)(e,t,"2",f.start,f.end,{color:r,width:s,lineWidth:l,lineDash:c}),(0,d.A)(e,t,"3",m.start,m.end,{color:r,width:s,lineWidth:l,lineDash:c})}var u=n(98812),h=n(17311),g=n(1595),p=n(97530),f=n(75076),m=n(26290);const v="http://www.w3.org/2000/svg";function w(e,t,n,o,i,a={}){if(isNaN(o[0])||isNaN(o[1])||isNaN(i[0])||isNaN(i[1]))return;const{viaMarker:r=!1,color:s="rgb(0, 255, 0)",markerSize:l=10}=a;if(!r)return void function(e,t,n,o,i,a={}){const{color:r="rgb(0, 255, 0)",width:s=2,lineWidth:l,lineDash:c}=a,u=10,h=Math.atan2(i[1]-o[1],i[0]-o[0]),g={start:[i[0]-u*Math.cos(h-Math.PI/7),i[1]-u*Math.sin(h-Math.PI/7)],end:i},p={start:[i[0]-u*Math.cos(h+Math.PI/7),i[1]-u*Math.sin(h+Math.PI/7)],end:i};(0,d.A)(e,t,n,o,i,{color:r,width:s,lineWidth:l,lineDash:c}),(0,d.A)(e,t,"2",g.start,g.end,{color:r,width:s,lineWidth:l,lineDash:c}),(0,d.A)(e,t,"3",p.start,p.end,{color:r,width:s,lineWidth:l,lineDash:c})}(e,t,n,o,i,a);const c=`${`arrow-${t}`}-${e.svgLayerElement.id}`,u=e.svgLayerElement.querySelector("defs");let h=u.querySelector(`#${c}`);if(h){h.setAttribute("markerWidth",`${l}`),h.setAttribute("markerHeight",`${l}`);const e=h.querySelector("path");e&&e.setAttribute("fill",s)}else{h=document.createElementNS(v,"marker"),h.setAttribute("id",c),h.setAttribute("viewBox","0 0 10 10"),h.setAttribute("refX","8"),h.setAttribute("refY","5"),h.setAttribute("markerWidth",`${l}`),h.setAttribute("markerHeight",`${l}`),h.setAttribute("orient","auto");const e=document.createElementNS(v,"path");e.setAttribute("d","M 0 0 L 10 5 L 0 10 z"),e.setAttribute("fill",s),h.appendChild(e),u.appendChild(h)}a.markerEndId=c,(0,d.A)(e,t,n,o,i,a)}var b=n(97181),E=n(85899),I=n(56442);function y(e,t,n,o,i,a={}){const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"rgb(0, 255, 0)",width:"2",lineWidth:void 0,lineDash:void 0},a),c=l||s,u=(0,b.A)(t,"rect",n),h=e.getSvgNode(u),g=[Math.min(o[0],i[0]),Math.min(o[1],i[1])],p=Math.abs(o[0]-i[0]),f=Math.abs(o[1]-i[1]),m={x:`${g[0]}`,y:`${g[1]}`,width:`${p}`,height:`${f}`,stroke:r,fill:"black","stroke-width":c,"stroke-dasharray":d};if(h)(0,E.A)(m,h),e.setNodeTouched(u);else{const t=document.createElementNS("http://www.w3.org/2000/svg","rect");(0,I.A)(m,t),e.appendNode(t,u)}}},85899:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o=function(e,t){Object.keys(e).forEach((n=>{const o=t.getAttribute(n),i=e[n];void 0===i||""===i?t.removeAttribute(n):o!==i&&t.setAttribute(n,i)}))}},56442:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o=function(e,t){Object.keys(e).forEach((n=>{const o=e[n];void 0!==o&&""!==o&&t.setAttribute(n,o)}))}},93098:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(94021),a=n(27740);const r={enable:function(){o.eventTarget.addEventListener(i.A.ANNOTATION_COMPLETED,a.A.handleAnnotationCompleted),o.eventTarget.addEventListener(i.A.ANNOTATION_MODIFIED,a.A.handleAnnotationUpdate),o.eventTarget.addEventListener(i.A.ANNOTATION_REMOVED,a.A.handleAnnotationDelete)},disable:function(){o.eventTarget.removeEventListener(i.A.ANNOTATION_COMPLETED,a.A.handleAnnotationCompleted),o.eventTarget.removeEventListener(i.A.ANNOTATION_MODIFIED,a.A.handleAnnotationUpdate),o.eventTarget.removeEventListener(i.A.ANNOTATION_REMOVED,a.A.handleAnnotationDelete)}}},24271:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var o=n(15327),i=n(99737),a=n(70333);const{Active:r,Passive:s,Enabled:l}=i.ToolModes,d=function(e){(0,a.A)(e,[r,s,l]).forEach((t=>{t.onCameraModified&&t.onCameraModified(e)}))},c={enable:function(e){e.addEventListener(o.Enums.Events.CAMERA_MODIFIED,d)},disable:function(e){e.removeEventListener(o.Enums.Events.CAMERA_MODIFIED,d)}}},93151:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var o=n(15327),i=n(99737),a=n(70333);const{Active:r,Passive:s,Enabled:l}=i.ToolModes,d=function(e){(0,a.A)(e,[r,s,l]).forEach((t=>{t.onResetCamera&&t.onResetCamera(e)}))},c={enable:function(e){e.addEventListener(o.Enums.Events.CAMERA_RESET,d)},disable:function(e){e.removeEventListener(o.Enums.Events.CAMERA_RESET,d)}}},75681:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(56069);const a=function(e){(0,i.A)(e.detail.element)},r={enable:function(e){e.addEventListener(o.Enums.Events.IMAGE_RENDERED,a)},disable:function(e){e.removeEventListener(o.Enums.Events.IMAGE_RENDERED,a)}}},40396:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var o=n(15327),i=n(99737),a=n(70333);const{Active:r,Passive:s,Enabled:l}=i.ToolModes,d=function(e){(0,a.A)(e,[r,s,l]).forEach((t=>{t.onImageSpacingCalibrated&&t.onImageSpacingCalibrated(e)}))},c={enable:function(e){e.addEventListener(o.Enums.Events.IMAGE_SPACING_CALIBRATED,d)},disable:function(e){e.removeEventListener(o.Enums.Events.IMAGE_SPACING_CALIBRATED,d)}}},3406:(e,t,n)=>{"use strict";n.d(t,{$m:()=>l.A,In:()=>o.A,V$:()=>a.A,aB:()=>r.A,dj:()=>d.A,n6:()=>i.A,we:()=>c.A,z5:()=>s.A});var o=n(75681),i=n(66106),a=n(83438),r=n(24271),s=n(40396),l=n(45470),d=n(93098),c=n(93151)},83438:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(94021),i=n(74690);const a={enable:function(e){e.addEventListener(o.A.KEY_DOWN,i.u),e.addEventListener(o.A.KEY_UP,i.L)},disable:function(e){e.removeEventListener(o.A.KEY_DOWN,i.u),e.removeEventListener(o.A.KEY_UP,i.L)}}},66106:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(94021),i=n(40100);const a={enable:function(e){e.addEventListener(o.A.MOUSE_CLICK,i.q_),e.addEventListener(o.A.MOUSE_DOWN,i.cT),e.addEventListener(o.A.MOUSE_DOWN_ACTIVATE,i.Xd),e.addEventListener(o.A.MOUSE_DOUBLE_CLICK,i.LM),e.addEventListener(o.A.MOUSE_DRAG,i.al),e.addEventListener(o.A.MOUSE_MOVE,i.tG),e.addEventListener(o.A.MOUSE_UP,i.Je),e.addEventListener(o.A.MOUSE_WHEEL,i.rO)},disable:function(e){e.removeEventListener(o.A.MOUSE_CLICK,i.q_),e.removeEventListener(o.A.MOUSE_DOWN,i.cT),e.removeEventListener(o.A.MOUSE_DOWN_ACTIVATE,i.Xd),e.removeEventListener(o.A.MOUSE_DOUBLE_CLICK,i.LM),e.removeEventListener(o.A.MOUSE_DRAG,i.al),e.removeEventListener(o.A.MOUSE_MOVE,i.tG),e.removeEventListener(o.A.MOUSE_UP,i.Je),e.removeEventListener(o.A.MOUSE_WHEEL,i.rO)}}},45470:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(94021),i=n(84971);const a={enable:function(e){e.addEventListener(o.A.TOUCH_START,i.gX),e.addEventListener(o.A.TOUCH_START_ACTIVATE,i.$F),e.addEventListener(o.A.TOUCH_DRAG,i.Oz),e.addEventListener(o.A.TOUCH_END,i.ls),e.addEventListener(o.A.TOUCH_TAP,i.lI),e.addEventListener(o.A.TOUCH_PRESS,i.x5)},disable:function(e){e.removeEventListener(o.A.TOUCH_START,i.gX),e.removeEventListener(o.A.TOUCH_START_ACTIVATE,i.$F),e.removeEventListener(o.A.TOUCH_DRAG,i.Oz),e.removeEventListener(o.A.TOUCH_END,i.ls),e.removeEventListener(o.A.TOUCH_PRESS,i.x5)}}},50986:(e,t,n)=>{"use strict";n.d(t,{A:()=>m,r:()=>b});var o=n(15327),i=n(15295),a=n(95527),r=n(58640),s=n(60810),l=n(82056),d=n(93126),c=n(44049),u=n(72967),h=n(64843),g=n(77609),p=n(68040);const f="PlanarFreehandContourSegmentationTool";async function m(e){const t=e.detail.annotation;if(!(0,h.isContourSegmentationAnnotation)(t))return;const n=function(e){const t=(0,i.A)(e),n=t.find((e=>v(e,!0)));return n??t[0]}(t),g=function(e,t){const{annotationUID:n}=t;return(0,l.getAllAnnotations)().filter((o=>o.annotationUID&&o.annotationUID!==n&&(0,h.isContourSegmentationAnnotation)(o)&&(0,h.areSameSegment)(o,t)&&e.isReferenceViewable(o.metadata)))}(n,t);if(!g.length)return;const m=w(t.data.contour.polyline,n),E=function(e,t,n){const o=a.polyline.getAABB(t);for(let i=0;i<n.length;i++){const r=n[i],s=w(r.data.contour.polyline,e),l=a.polyline.getAABB(s),d=a.aabb.intersectAABB(o,l),c=d&&a.polyline.intersectPolyline(t,s),u=d&&!c&&a.polyline.containsPoints(s,t);if(c||u)return{targetAnnotation:r,targetPolyline:s,isContourHole:u}}}(n,m,g);if(!E)return;const{targetAnnotation:I,targetPolyline:y,isContourHole:_}=E;if(_){const{contourHoleProcessingEnabled:o=!1}=e.detail;if(!o)return;b(n,I,t)}else!function(e,t,n,i,g){if(!(0,p.l$)(f))return void console.warn(`${f} is not registered in cornerstone`);if(!v(e))return;const m=g[0],b=a.polyline.containsPoint(n,m),E=function(e,t){return(0,l.getChildAnnotations)(t).map((t=>({annotation:t,polyline:w(t.data.contour.polyline,e)})))}(e,t),I=new Set(E),y=new Map,_=(e,t)=>{let n=y.get(e);n||(n=[],y.set(e,n)),n.push(t),I.delete(t)},C=[];if(b){const e=a.polyline.mergePolylines(n,g);C.push(e),Array.from(I.keys()).forEach((t=>_(e,t)))}else{a.polyline.subtractPolylines(n,g).forEach((e=>{C.push(e),Array.from(I.keys()).forEach((t=>{a.polyline.containsPoints(e,t.polyline)&&(_(e,t),I.delete(t))}))}))}Array.from(y.values()).forEach((e=>e.forEach((e=>(0,l.clearParentAnnotation)(e.annotation)))));const{element:x}=e,S=(0,o.getEnabledElement)(x),{metadata:T,data:A}=t,{handles:D,segmentation:M}=A,{textBox:R}=D;(0,l.removeAnnotation)(i.annotationUID),(0,l.removeAnnotation)(t.annotationUID);for(let n=0;n<C.length;n++){const i=C[n],a=e.canvasToWorld(i[0]),r=e.canvasToWorld(i[i.length-1]),s={metadata:{...T,toolName:f,originalToolName:T.originalToolName||T.toolName},data:{cachedStats:{},handles:{points:[a,r],textBox:R?{...R}:void 0},contour:{polyline:[],closed:!0},spline:t.data.spline,segmentation:{...M}},annotationUID:o.utilities.uuidv4(),highlighted:!0,invalidated:!0,isLocked:!1,isVisible:void 0,interpolationUID:t.interpolationUID,interpolationCompleted:t.interpolationCompleted};(0,u.A)(s,{points:i,closed:!0,targetWindingDirection:d.W.Clockwise},e),(0,l.addAnnotation)(s,x),(0,h.addContourSegmentationAnnotation)(s),(0,c.triggerAnnotationModified)(s,e.element),y.get(i)?.forEach((e=>(0,l.addChildAnnotation)(s,e.annotation)))}!function(e,t,n){const{viewport:o}=e,{element:i}=o,a=new Set([f,t.metadata.toolName,n.metadata.toolName]);for(const e of a.values()){const t=(0,s.getViewportIdsWithToolToRender)(i,e);(0,r.A)(t)}new Promise((e=>window.requestAnimationFrame(e)))}(S,t,i)}(n,I,y,t,m)}function v(e,t=!1){const n="PlanarFreehandContourSegmentationTool",o=(0,g.getToolGroupForViewport)(e.id,e.renderingEngineId);let i;return o.hasTool(n)?o.getToolOptions(n)||(i=`Tool ${n} must be in active/passive state`):i=`Tool ${n} not added to ${o.id} toolGroup`,i&&!t&&console.warn(i),!i}function w(e,t){const n=e.length,o=new Array(n);for(let i=0;i<n;i++)o[i]=t.worldToCanvas(e[i]);return o}function b(e,t,n){const{windingDirection:o}=t.data.contour,{windingDirection:i}=n.data.contour;(0,l.addChildAnnotation)(t,n),(0,h.removeContourSegmentationAnnotation)(n);const{contour:a}=n.data,d=w(a.polyline,e);(0,u.A)(n,{points:d,closed:a.closed},e);const{element:c}=e,g=new Set([f,t.metadata.toolName,n.metadata.toolName]);for(const e of g.values()){const t=(0,s.getViewportIdsWithToolToRender)(c,e);(0,r.A)(t)}}},83638:(e,t,n)=>{"use strict";n.d(t,{tQ:()=>k,nm:()=>N,Gg:()=>V,ge:()=>U,_9:()=>R,kt:()=>f.A,bH:()=>s,qI:()=>x,sp:()=>S,F_:()=>u,CG:()=>p});var o=n(91099),i=n(68014),a=n(41343);function r(e){e.removeEventListener("dblclick",o.A),e.removeEventListener("mousedown",i.Ay),e.removeEventListener("mousemove",a.A),e.removeEventListener("dblclick",i.DF,{capture:!0})}const s={enable:function(e){r(e),e.addEventListener("dblclick",o.A),e.addEventListener("mousedown",i.Ay),e.addEventListener("mousemove",a.A),e.addEventListener("dblclick",i.DF,{capture:!0})},disable:r};var l=n(41666),d=n(82603);function c(e){l.A.disable(e),e.removeEventListener("touchstart",d.A)}const u={enable:function(e){c(e),l.A.enable(e),e.addEventListener("touchstart",d.A,{passive:!1})},disable:c};var h=n(17806);function g(e){e.removeEventListener("wheel",h.A)}const p={enable:function(e){g(e),e.addEventListener("wheel",h.A,{passive:!1})},disable:g};var f=n(39595),m=n(24917),v=n(15327),w=n(99737);var b=n(59452),E=n(93210),I=n(97577);var y=n(33283),_=n(58859);const C=function(e){const{segmentationId:t,modifiedSlicesToUse:n}=e.detail,{representationData:o}=(0,y.T)(t),i=(0,_.P)(t),a=i.some((e=>{const{viewport:t}=(0,v.getEnabledElementByViewportId)(e);return t instanceof v.VolumeViewport})),r=i.some((e=>{const{viewport:t}=(0,v.getEnabledElementByViewportId)(e);return t instanceof v.StackViewport})),s=a&&r;i.forEach((e=>{const{viewport:a}=(0,v.getEnabledElementByViewportId)(e);a instanceof v.VolumeViewport&&function({modifiedSlicesToUse:e,representationData:t,type:n}){const o=v.cache.getVolume(t[n].volumeId);if(!o)return void console.warn("segmentation not found in cache");const{imageData:i,vtkOpenGLTexture:a}=o;let r;if(e?.length>0)r=e;else{const e=i.getDimensions()[2];r=[...Array(e).keys()]}r.forEach((e=>{a.setUpdatedFrame(e)})),i.modified()}({modifiedSlicesToUse:s?[]:n,representationData:o,type:w.SegmentationRepresentations.Labelmap}),a instanceof v.StackViewport&&function({viewportIds:e,segmentationId:t}){e.forEach((e=>{let n=(0,E.r$)(e,{segmentationId:t});n=n.filter((e=>e.type===w.SegmentationRepresentations.Labelmap)),n.forEach((n=>{if(n.segmentationId!==t)return;const o=(0,v.getEnabledElementByViewportId)(e);if(!o)return;const{viewport:i}=o;if(i instanceof v.VolumeViewport)return;const a=(0,b.ED)(e,t);a?.length&&a.forEach(((n,o)=>{const i=n.actor.getMapper().getInputData(),a=(0,I.aF)(e,t),r=v.cache.getImage(a[o]);i.modified(),v.utilities.updateVTKImageDataWithCornerstoneImage(i,r)}))}))}))}({viewportIds:i,segmentationId:t})}))},x=function(e){const{segmentationId:t}=e.detail,{representationData:n}=(0,y.T)(t);n.Labelmap&&C(e),(0,m.fy)(t)},S=function(e){const{segmentationId:t}=e.detail;(0,m.fy)(t)};var T=n(42008),A=n(58498),D=n(78231);new Map;function M(e){const t=e.detail,{viewportId:n,renderingEngineId:o}=t,{viewport:i}=(0,v.getEnabledElementByIds)(n,o),a=(0,E.r$)(n);if(!a?.length)return;const r=a.filter((e=>e.type===w.SegmentationRepresentations.Labelmap)),s=i.getActors();r.forEach((e=>{const{segmentationId:t}=e;(0,D.t)(n,t)}));const l=r.flatMap((e=>(0,b.ED)(n,e.segmentationId))).filter((e=>void 0!==e));l.length&&(l.forEach((e=>{r.find((t=>{const o=(0,I.aF)(n,t.segmentationId);return o?.includes(e.referencedId)}))||i.removeActors([e.uid])})),r.forEach((t=>{const{segmentationId:o}=t,a=i.getCurrentImageId(),r=(0,I.aF)(n,o);if(!r)return;r.forEach((e=>{const r=v.cache.getImage(e);if(!r)return void console.warn("No derived image found in the cache for segmentation representation",t);const l=s.find((t=>t.referencedId===e));if(!l){const{dimensions:t,spacing:s,direction:l}=i.getImageDataMetadata(r),d=v.cache.getImage(a)||{imageId:a},{origin:c}=i.getImageDataMetadata(d),u=c,h=r.voxelManager.getConstructor(),g=r.voxelManager.getScalarData(),p=T.Ay.newInstance({name:"Pixels",numberOfComponents:1,values:new h(g)}),f=A.Ay.newInstance();return f.setDimensions(t[0],t[1],1),f.setSpacing(s),f.setDirection(l),f.setOrigin(u),f.getPointData().setScalars(p),f.modified(),i.addImages([{imageId:e,representationUID:`${o}-${w.SegmentationRepresentations.Labelmap}-${r.imageId}`,callback:({imageActor:e})=>{e.getMapper().setInputData(f)}}]),void(0,m.h6)(n)}{const e=l.actor.getMapper().getInputData();e.setDerivedImage?e.setDerivedImage(r):v.utilities.updateVTKImageDataWithCornerstoneImage(e,r)}})),i.render(),e.type===v.Enums.Events.IMAGE_RENDERED&&i.element.removeEventListener(v.Enums.Events.IMAGE_RENDERED,M)})))}const R={enable:function(e){if(!e)return;const t=(0,v.getEnabledElement)(e);if(!t)return;const{viewport:n}=t;n instanceof v.BaseVolumeViewport||(e.addEventListener(v.Enums.Events.STACK_NEW_IMAGE,M),e.addEventListener(v.Enums.Events.IMAGE_RENDERED,M))},disable:function(e){e.removeEventListener(v.Enums.Events.STACK_NEW_IMAGE,M),e.removeEventListener(v.Enums.Events.IMAGE_RENDERED,M)}};var P=n(64843),O=n(50986);function k(e){const t=e.detail.annotation;P.isContourSegmentationAnnotation(t)&&(0,O.A)(e)}var L=n(58640);const U=function(e){if(!e.detail.removed.length)return;(0,v.getRenderingEngines)().forEach((e=>{const t=e.getViewports().map((e=>e.id));(0,L.t)(t)}))};const N=function(e){const{viewportId:t}=e.detail;(0,L.A)([t])};function V(e){const t=e.detail.annotation;P.isContourSegmentationAnnotation(t)&&function(e){const t=e.detail.annotation;(0,P.removeContourSegmentationAnnotation)(t)}(e)}},44150:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(24917);const i=function(e){const{viewportId:t}=e.detail;(0,o.h6)(t)}},4667:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AdvancedMagnifyTool:()=>f.M$,AngleTool:()=>f.yT,AnnotationDisplayTool:()=>f.wh,AnnotationTool:()=>f.EC,ArrowAnnotateTool:()=>f.ao,BaseTool:()=>f.oS,BidirectionalTool:()=>f.Mu,BrushTool:()=>f.ls,CONSTANTS:()=>r,CircleROIStartEndThresholdTool:()=>f.pq,CircleROITool:()=>f.Vl,CircleScissorsTool:()=>f.G2,CobbAngleTool:()=>f.EV,CrosshairsTool:()=>f.ep,DragProbeTool:()=>f.j$,ETDRSGridTool:()=>f.nJ,EllipticalROITool:()=>f.qD,Enums:()=>v,EraserTool:()=>f.dB,HeightTool:()=>f.m8,KeyImageTool:()=>f.Np,LabelTool:()=>f.hz,LabelmapBaseTool:()=>f.il,LengthTool:()=>f.LW,LivewireContourSegmentationTool:()=>f.Ix,LivewireContourTool:()=>f.Ys,MIPJumpToClickTool:()=>f.uJ,MagnifyTool:()=>f.eh,OrientationMarkerTool:()=>f.Xr,OverlayGridTool:()=>f.Nk,PaintFillTool:()=>f.Uj,PanTool:()=>f.CH,PlanarFreehandContourSegmentationTool:()=>f.qi,PlanarFreehandROITool:()=>f.ex,PlanarRotateTool:()=>f.A5,ProbeTool:()=>f.N7,RectangleROIStartEndThresholdTool:()=>f.mX,RectangleROIThresholdTool:()=>f.TR,RectangleROITool:()=>f.E0,RectangleScissorsTool:()=>f.td,ReferenceCursors:()=>f.xI,ReferenceLinesTool:()=>f.X8,RegionSegmentPlusTool:()=>f.sR,RegionSegmentTool:()=>f.wR,ScaleOverlayTool:()=>f.FE,SculptorTool:()=>f.N,SegmentBidirectionalTool:()=>f.Fz,SegmentLabelTool:()=>f.u9,SegmentSelectTool:()=>f.IX,SegmentationIntersectionTool:()=>f.cN,SphereScissorsTool:()=>f.zH,SplineContourSegmentationTool:()=>f.qT,SplineROITool:()=>f.J2,StackScrollTool:()=>f.ae,Synchronizer:()=>i.Synchronizer,SynchronizerManager:()=>i.SynchronizerManager,ToolGroupManager:()=>i.ToolGroupManager,TrackballRotateTool:()=>f.So,Types:()=>u,UltrasoundDirectionalTool:()=>f.oi,VideoRedactionTool:()=>m.A,VolumeRotateTool:()=>f.Oh,WholeBodySegmentTool:()=>f.Tc,WindowLevelRegionTool:()=>f.TG,WindowLevelTool:()=>f.Du,ZoomTool:()=>f.OQ,addTool:()=>i.addTool,annotation:()=>h,cancelActiveManipulations:()=>i.cancelActiveManipulations,cursors:()=>c,destroy:()=>o.zr,drawing:()=>l,init:()=>o.Ts,removeTool:()=>i.removeTool,segmentation:()=>g,splines:()=>p,state:()=>a.wk,store:()=>i,synchronizers:()=>s,utilities:()=>d});var o=n(64957),i=n(6657),a=n(85204),r=n(47085),s=n(34389),l=n(17328),d=n(53860),c=n(79475),u=n(13369),h=n(47807),g=n(44595),p=n(3040),f=n(49975),m=n(11811),v=n(99737)},64957:(e,t,n)=>{"use strict";n.d(t,{Ts:()=>f,zr:()=>m});var o=n(15327),i=n(82056),a=n(99737),r=n(6657),s=n(85204),l=n(83638),d=n(3406),c=n(77609),u=n(59475),h=n(44150),g=n(36625);let p=!1;function f(e={}){p||((0,g.Nk)(e),function(){v();const e=o.Enums.Events.ELEMENT_ENABLED,t=o.Enums.Events.ELEMENT_DISABLED;o.eventTarget.addEventListener(e,r.addEnabledElement),o.eventTarget.addEventListener(t,r.removeEnabledElement),d.dj.enable()}(),w(),o.eventTarget.addEventListener(a.Events.ANNOTATION_COMPLETED,l.tQ),o.eventTarget.addEventListener(a.Events.ANNOTATION_MODIFIED,l.nm),o.eventTarget.addEventListener(a.Events.ANNOTATION_SELECTION_CHANGE,l.ge),o.eventTarget.addEventListener(a.Events.ANNOTATION_SELECTION_CHANGE,l.ge),o.eventTarget.addEventListener(a.Events.ANNOTATION_REMOVED,l.Gg),o.eventTarget.addEventListener(a.Events.SEGMENTATION_MODIFIED,l.sp),o.eventTarget.addEventListener(a.Events.SEGMENTATION_DATA_MODIFIED,l.qI),o.eventTarget.addEventListener(a.Events.SEGMENTATION_REPRESENTATION_MODIFIED,h.A),o.eventTarget.addEventListener(a.Events.SEGMENTATION_REPRESENTATION_ADDED,h.A),p=!0)}function m(){v(),w(),c.destroy(),(0,s.qh)();const e=(0,i.getAnnotationManager)(),t=u._6;e.restoreAnnotations({}),t.resetState(),p=!1}function v(){const e=o.Enums.Events.ELEMENT_ENABLED,t=o.Enums.Events.ELEMENT_DISABLED;o.eventTarget.removeEventListener(e,r.addEnabledElement),o.eventTarget.removeEventListener(t,r.removeEnabledElement),d.dj.disable()}function w(){o.eventTarget.removeEventListener(a.Events.ANNOTATION_COMPLETED,l.tQ),o.eventTarget.removeEventListener(a.Events.ANNOTATION_MODIFIED,l.nm),o.eventTarget.removeEventListener(a.Events.ANNOTATION_SELECTION_CHANGE,l.ge),o.eventTarget.removeEventListener(a.Events.ANNOTATION_SELECTION_CHANGE,l.ge),o.eventTarget.removeEventListener(a.Events.SEGMENTATION_MODIFIED,l.sp),o.eventTarget.removeEventListener(a.Events.SEGMENTATION_DATA_MODIFIED,l.qI),o.eventTarget.removeEventListener(a.Events.SEGMENTATION_REPRESENTATION_MODIFIED,h.A),o.eventTarget.removeEventListener(a.Events.SEGMENTATION_REPRESENTATION_ADDED,h.A)}},39011:(e,t,n)=>{"use strict";n.d(t,{o:()=>c});var o=n(15327),i=n(99737),a=n(17328),r=n(39848);const{Active:s,Passive:l,Enabled:d}=i.ToolModes;const c=new class{constructor(){this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this._renderFlaggedViewports=()=>{this._throwIfDestroyed();const e=Array.from(this._viewportElements.values());for(let t=0;t<e.length;t++){const n=e[t];if(this._needsRender.has(n)&&(this._triggerRender(n),this._needsRender.delete(n),0===this._needsRender.size))break}this._animationFrameSet=!1,this._animationFrameHandle=null,this._render()},this._viewportElements=new Map}addViewportElement(e,t){this._viewportElements.set(e,t)}removeViewportElement(e,t){this._viewportElements.delete(e),this._needsRender.delete(t),this._reset()}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_setAllViewportsToBeRenderedNextFrame(){[...this._viewportElements.values()].forEach((e=>{this._needsRender.add(e)})),this._renderFlaggedViewports()}_setViewportsToBeRenderedNextFrame(e){const t=[...this._viewportElements.values()];e.forEach((e=>{-1!==t.indexOf(e)&&this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}_triggerRender(e){const t=(0,o.getEnabledElement)(e);if(!t)return;if(!(0,o.getRenderingEngine)(t.renderingEngineId))return void console.warn("rendering Engine has been destroyed");const n=(0,r.A)(e,[s,l,d]),{renderingEngineId:c,viewportId:u}=t,h={element:e,renderingEngineId:c,viewportId:u};(0,a.draw)(e,(a=>{let r=!1;n.forEach((e=>{if(e.renderAnnotation){const n=e.renderAnnotation(t,a);r=r||n}})),r&&(0,o.triggerEvent)(e,i.Events.ANNOTATION_RENDERED,{...h})}))}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}},67013:(e,t,n)=>{"use strict";n.d(t,{A:()=>r,H:()=>a});var o=n(15327);class i{constructor(e){this.getGroupKey=e=>{if("string"==typeof e)return e;const t=e,n=(0,o.getEnabledElement)(t);if(!n)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return n.FrameOfReferenceUID},this._imageVolumeModifiedHandler=e=>{const t=e.detail,{FrameOfReferenceUID:n}=t,o=this.annotations[n];o&&Object.keys(o).forEach((e=>{o[e].forEach((e=>{void 0!==e.invalidated&&(e.invalidated=!0)}))}))},this.getFramesOfReference=()=>Object.keys(this.annotations),this.getAnnotations=(e,t)=>{const n=this.annotations;return n[e]?t?n[e][t]?n[e][t]:[]:n[e]:[]},this.getAnnotation=e=>{const t=this.annotations;for(const n in t){const o=t[n];for(const t in o){const n=o[t];for(const t of n)if(e===t.annotationUID)return t}}},this.getNumberOfAnnotations=(e,t)=>{const n=this.getAnnotations(e,t);if(!n.length)return 0;if(t)return n.length;let o=0;for(const e in n)o+=n[e].length;return o},this.addAnnotation=(e,t)=>{const{metadata:n}=e,{FrameOfReferenceUID:o,toolName:i}=n;t=t||o;const a=this.annotations;let r=a[t];r||(a[t]={},r=a[t]);let s=r[i];s||(r[i]=[],s=r[i]),this.preprocessingFn&&(e=this.preprocessingFn(e)),s.push(e)},this.removeAnnotation=e=>{const{annotations:t}=this;for(const n in t){const o=t[n];for(const t in o){const n=o[t],i=n.findIndex((t=>t.annotationUID===e));-1!==i&&(n.splice(i,1),0===n.length&&delete o[t])}0===Object.keys(o).length&&delete t[n]}},this.removeAnnotations=(e,t)=>{const n=this.annotations,o=[];if(!n[e])return o;if(t){const i=n[e][t];for(const e of i)this.removeAnnotation(e.annotationUID),o.push(e)}else for(const t in n[e]){const i=n[e][t];for(const e of i)this.removeAnnotation(e.annotationUID),o.push(e)}return o},this.saveAnnotations=(e,t)=>{const n=this.annotations;if(e&&t){const o=n[e];if(!o)return;const i=o[t];return structuredClone(i)}if(e){const t=n[e];return structuredClone(t)}return structuredClone(n)},this.restoreAnnotations=(e,t,n)=>{const o=this.annotations;if(t&&n){let i=o[t];i||(o[t]={},i=o[t]),i[n]=e}else t?o[t]=e:this.annotations=structuredClone(e)},this.getAllAnnotations=()=>Object.values(this.annotations).map((e=>Object.values(e))).flat(2),this.getNumberOfAllAnnotations=()=>{let e=0;const t=this.annotations;for(const n in t){const o=t[n];for(const t in o){e+=o[t].length}}return e},this.removeAllAnnotations=()=>{const e=[];for(const t of this.getAllAnnotations())this.removeAnnotation(t.annotationUID),e.push(t);return e},e||(e=o.utilities.uuidv4()),this.annotations={},this.uid=e,o.eventTarget.addEventListener(o.Enums.Events.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}setPreprocessingFn(e){this.preprocessingFn=e}}const a=new i("DEFAULT"),r=i},2076:(e,t,n)=>{"use strict";n.r(t),n.d(t,{checkAndSetAnnotationLocked:()=>h,getAnnotationsLocked:()=>d,getAnnotationsLockedCount:()=>u,isAnnotationLocked:()=>c,setAnnotationLocked:()=>s,unlockAllAnnotations:()=>l});var o=n(15327),i=n(99737),a=n(82056);const r=new Set;function s(e,t=!0){const n=g();e&&(t?function(e,t,n){if(!t.has(e)){t.add(e),n.added.push(e);const o=(0,a.getAnnotation)(e);o&&(o.isLocked=!0)}}(e,r,n):p(e,r,n)),f(n,r)}function l(){const e=g();!function(e,t){e.forEach((n=>{p(n,e,t)}))}(r,e),f(e,r)}function d(){return Array.from(r)}function c(e){return r.has(e)}function u(){return r.size}function h(e){const t=c(e);return s(e,t),t}function g(){return Object.freeze({added:[],removed:[],locked:[]})}function p(e,t,n){if(t.delete(e)){n.removed.push(e);const t=(0,a.getAnnotation)(e);t&&(t.isLocked=!1)}}function f(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((t=>{e.locked.push(t)})),(0,o.triggerEvent)(o.eventTarget,i.Events.ANNOTATION_LOCK_CHANGE,e))}},17343:(e,t,n)=>{"use strict";n.r(t),n.d(t,{deselectAnnotation:()=>l,getAnnotationsSelected:()=>d,getAnnotationsSelectedByToolName:()=>c,getAnnotationsSelectedCount:()=>h,isAnnotationSelected:()=>u,setAnnotationSelected:()=>s});var o=n(15327),i=n(99737),a=n(82056);const r=new Set;function s(e,t=!0,n=!1){t?function(e,t=!1){const n=g();if(!t){p(r,n);const t=(0,a.getAnnotation)(e);t&&(t.isSelected=!0)}if(e&&!r.has(e)){r.add(e),n.added.push(e);const t=(0,a.getAnnotation)(e);t&&(t.isSelected=!0)}f(n,r)}(e,n):l(e)}function l(e){const t=g();if(e){if(r.delete(e)){t.removed.push(e);(0,a.getAnnotation)(e).isSelected=!1}}else p(r,t);f(t,r)}function d(){return Array.from(r)}function c(e){return d().filter((t=>{const n=(0,a.getAnnotation)(t);return n?.metadata?.toolName===e}))}function u(e){return r.has(e)}function h(){return r.size}function g(){return Object.freeze({added:[],removed:[],selection:[]})}function p(e,t){e.forEach((n=>{if(e.delete(n)){t.removed.push(n);const e=(0,a.getAnnotation)(n);e&&(e.isSelected=!1)}}))}function f(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((t=>{e.selection.push(t)})),(0,o.triggerEvent)(o.eventTarget,i.Events.ANNOTATION_SELECTION_CHANGE,e))}},82056:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addAnnotation:()=>f,addChildAnnotation:()=>h,clearParentAnnotation:()=>u,getAllAnnotations:()=>c,getAnnotation:()=>d,getAnnotationManager:()=>r,getAnnotations:()=>l,getChildAnnotations:()=>p,getNumberOfAnnotations:()=>m,getParentAnnotation:()=>g,invalidateAnnotation:()=>E,removeAllAnnotations:()=>w,removeAnnotation:()=>v,removeAnnotations:()=>b,setAnnotationManager:()=>s});var o=n(15327),i=n(44049);let a;function r(){return a}function s(e){a=e}function l(e,t){const n=r(),o=n.getGroupKey(t);return n.getAnnotations(o,e)}function d(e){return r().getAnnotation(e)}function c(){return r().getAllAnnotations()}function u(e){const{annotationUID:t,parentAnnotationUID:n}=e;if(!n)return;const o=d(n),i=o.childAnnotationUIDs.indexOf(t);o.childAnnotationUIDs.splice(i,1),e.parentAnnotationUID=void 0}function h(e,t){const{annotationUID:n}=e,{annotationUID:o}=t;u(t),e.childAnnotationUIDs||(e.childAnnotationUIDs=[]),e.childAnnotationUIDs.includes(o)||(e.childAnnotationUIDs.push(o),t.parentAnnotationUID=n)}function g(e){return e.parentAnnotationUID?d(e.parentAnnotationUID):void 0}function p(e){return e.childAnnotationUIDs?.map((e=>d(e)))??[]}function f(e,t){e.annotationUID||(e.annotationUID=o.utilities.uuidv4());const n=r();if(t instanceof HTMLDivElement){const o=n.getGroupKey(t);n.addAnnotation(e,o),(0,i.triggerAnnotationAddedForElement)(e,t)}else n.addAnnotation(e,void 0),(0,i.triggerAnnotationAddedForFOR)(e);return e.annotationUID}function m(e,t){const n=r(),o=n.getGroupKey(t);return n.getNumberOfAnnotations(o,e)}function v(e){if(!e)return;const t=r(),n=t.getAnnotation(e);n&&(n.childAnnotationUIDs?.forEach((e=>v(e))),t.removeAnnotation(e),(0,i.triggerAnnotationRemoved)({annotation:n,annotationManagerUID:t.uid}))}function w(){const e=r(),t=e.removeAllAnnotations();for(const n of t)(0,i.triggerAnnotationRemoved)({annotation:n,annotationManagerUID:e.uid})}function b(e,t){const n=r(),o=n.getGroupKey(t),a=n.removeAnnotations(o,e);for(const e of a)(0,i.triggerAnnotationRemoved)({annotation:e,annotationManagerUID:n.uid})}function E(e){let t=e;for(;t;)t.invalidated=!0,t=t.parentAnnotationUID?d(t.parentAnnotationUID):void 0}},29601:(e,t,n)=>{"use strict";n.r(t),n.d(t,{checkAndSetAnnotationVisibility:()=>p,isAnnotationVisible:()=>c,setAnnotationVisibility:()=>l,showAllAnnotations:()=>d});var o=n(15327),i=n(99737),a=n(17343),r=n(82056);const s=new Set;function l(e,t=!0){const n=u();e&&(t?h(e,s,n):function(e,t,n){t.has(e)||(t.add(e),(0,a.isAnnotationSelected)(e)&&(0,a.deselectAnnotation)(e),n.lastHidden.push(e))}(e,s,n)),g(n)}function d(){const e=u();s.forEach((t=>{h(t,s,e)})),g(e)}function c(e){if((0,r.getAnnotation)(e))return!s.has(e)}function u(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function h(e,t,n){if(t.delete(e)){n.lastVisible.push(e);(0,r.getAnnotation)(e).isVisible=!0}}function g(e){(e.lastHidden.length>0||e.lastVisible.length>0)&&(s.forEach((t=>{e.hidden.push(t)})),(0,o.triggerEvent)(o.eventTarget,i.Events.ANNOTATION_VISIBILITY_CHANGE,e))}function p(e){const t=!s.has(e);return l(e,t),t}},8710:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o=new class{constructor(){this._initializeConfig({color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(209, 193, 90)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(209, 193, 90)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0,markerSize:"10"})}getAnnotationToolStyles(e){return this.config.annotations&&this.config.annotations[e]}getViewportToolStyles(e){return this.config.viewports&&this.config.viewports[e]}getToolGroupToolStyles(e){return this.config.toolGroups&&this.config.toolGroups[e]}getDefaultToolStyles(){return this.config.default}setAnnotationStyles(e,t){let n=this.config.annotations;n||(this.config={...this.config,annotations:{}},n=this.config.annotations),n[e]=t}setViewportToolStyles(e,t){let n=this.config.viewports;n||(this.config={...this.config,viewports:{}},n=this.config.viewports),n[e]=t}setToolGroupToolStyles(e,t){let n=this.config.toolGroups;n||(this.config={...this.config,toolGroups:{}},n=this.config.toolGroups),n[e]=t}setDefaultToolStyles(e){this.config.default=e}getStyleProperty(e,t){const{annotationUID:n,viewportId:o,toolGroupId:i,toolName:a}=t;return this._getToolStyle(e,n,o,i,a)}_getToolStyle(e,t,n,o,i){if(t){const n=this.getAnnotationToolStyles(t);if(n&&void 0!==n[e])return n[e]}if(n){const t=this.getViewportToolStyles(n);if(t){if(t[i]&&void 0!==t[i][e])return t[i][e];if(t.global&&void 0!==t.global[e])return t.global[e]}}if(o){const t=this.getToolGroupToolStyles(o);if(t){if(t[i]&&void 0!==t[i][e])return t[i][e];if(t.global&&void 0!==t.global[e])return t.global[e]}}const a=this.getDefaultToolStyles();return a[i]&&void 0!==a[i][e]?a[i][e]:a.global&&void 0!==a.global[e]?a.global[e]:void 0}_initializeConfig(e){const t={};for(const n in e)t[n]=e[n];this.config={default:{global:t}}}}},76712:(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o=n(8710);function i(e,t,n,i){const a=function(e,t,n){const o=[`${e}`];return t&&o.push(`${o[0]}${t}`),n&&o.push(`${o[o.length-1]}${n}`),o}(e,n,i);for(let e=a.length-1;e>=0;--e){const n=o.A.getStyleProperty(a[e],t);if(void 0!==n)return n}}},49310:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getFont:()=>l,getState:()=>r,style:()=>d.A});var o=n(2076),i=n(17343),a=n(99737);const r=function(e){if(e){if(e.data&&e.highlighted)return a.AnnotationStyleStates.Highlighted;if((0,i.isAnnotationSelected)(e.annotationUID))return a.AnnotationStyleStates.Selected;if((0,o.isAnnotationLocked)(e.annotationUID))return a.AnnotationStyleStates.Locked;if(e.data&&e.autoGenerated)return a.AnnotationStyleStates.AutoGenerated}return a.AnnotationStyleStates.Default};var s=n(76712);const l=function(e,t,n){return`${(0,s.h)("textBoxFontSize",e,t,n)}px ${(0,s.h)("textBoxFontFamily",e,t,n)}`};var d=n(8710)},44049:(e,t,n)=>{"use strict";n.r(t),n.d(t,{triggerAnnotationAddedForElement:()=>r,triggerAnnotationAddedForFOR:()=>s,triggerAnnotationCompleted:()=>c,triggerAnnotationModified:()=>d,triggerAnnotationRemoved:()=>l,triggerContourAnnotationCompleted:()=>u});var o=n(15327),i=n(99737),a=n(77609);function r(e,t){const n=(0,o.getEnabledElement)(t),{renderingEngine:a,viewportId:r}=n,s=i.Events.ANNOTATION_ADDED,l={annotation:e,viewportId:r,renderingEngineId:a.id};(0,o.triggerEvent)(o.eventTarget,s,l)}function s(e){const{toolName:t}=e.metadata,n=(0,a.getToolGroupsWithToolName)(t);if(!n.length)return;const r=[];n.forEach((t=>{t.viewportsInfo.forEach((t=>{const{renderingEngineId:n,viewportId:i}=t,{FrameOfReferenceUID:a}=(0,o.getEnabledElementByIds)(i,n);e.metadata.FrameOfReferenceUID===a&&r.push(t)}))}));const s=i.Events.ANNOTATION_ADDED,l={annotation:e};r.length?r.forEach((({renderingEngineId:e,viewportId:t})=>{l.viewportId=t,l.renderingEngineId=e,(0,o.triggerEvent)(o.eventTarget,s,l)})):(0,o.triggerEvent)(o.eventTarget,s,l)}function l(e){const t=i.Events.ANNOTATION_REMOVED;(0,o.triggerEvent)(o.eventTarget,t,e)}function d(e,t,n=i.ChangeTypes.HandlesUpdated){const a=t&&(0,o.getEnabledElement)(t),{viewportId:r,renderingEngineId:s}=a||{},l=i.Events.ANNOTATION_MODIFIED,d={annotation:e,viewportId:r,renderingEngineId:s,changeType:n};(0,o.triggerEvent)(o.eventTarget,l,d)}function c(e){h({annotation:e})}function u(e,t=!1){h({annotation:e,contourHoleProcessingEnabled:t})}function h(e){const t=i.Events.ANNOTATION_COMPLETED;(0,o.triggerEvent)(o.eventTarget,t,e)}},47807:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnotationGroup:()=>h,FrameOfReferenceSpecificAnnotationManager:()=>d.A,config:()=>o,locking:()=>i,selection:()=>a,state:()=>p,visibility:()=>l});var o=n(49310),i=n(2076),a=n(17343),r=n(82056),s=n(44049),l=n(29601),d=n(67013),c=n(15327),u=n(94021);class h{constructor(){this.annotationUIDs=new Set,this._isVisible=!0,this.visibleFilter=this.unboundVisibleFilter.bind(this)}unboundVisibleFilter(e){return!this._isVisible||!this.annotationUIDs.has(e)}has(e){return this.annotationUIDs.has(e)}setVisible(e=!0,t,n){this._isVisible!==e&&(this._isVisible=e,this.annotationUIDs.forEach((o=>{const i=(0,r.getAnnotation)(o);if(!i)return void this.annotationUIDs.delete(o);if(i.isVisible===e)return;if(!e&&!1===n?.(o))return;i.isVisible=e;const a={...t,annotation:i};(0,c.triggerEvent)(c.eventTarget,u.A.ANNOTATION_MODIFIED,a)})))}get isVisible(){return this._isVisible}findNearby(e,t){const n=[...this.annotationUIDs];if(0===n.length)return null;if(!e)return n[1===t?0:n.length-1];const o=n.indexOf(e);return-1===o||o+t<0||o+t>=n.length?null:n[o+t]}add(...e){e.forEach((e=>this.annotationUIDs.add(e)))}remove(...e){e.forEach((e=>this.annotationUIDs.delete(e)))}clear(){this.annotationUIDs.clear()}}var g=n(97);const p={...r,...s,resetAnnotationManager:g.c}},24917:(e,t,n)=>{"use strict";n.d(t,{fy:()=>v,h6:()=>m});var o=n(15327),i=n(99737),a=n(18682),r=n(93210),s=n(67014),l=n(25894),d=n(684),c=n(68040),u=n(85204),h=n(37590),g=n(77609);const p={[a.A.Labelmap]:d.Ay,[a.A.Contour]:l.A,[a.A.Surface]:s.Ay},f=h.A.toolName;function m(e){w.renderSegmentationsForViewport(e)}function v(e){w.renderSegmentation(e)}const w=new class{constructor(){this._needsRender=new Set,this._animationFrameSet=!1,this._animationFrameHandle=null,this._getAllViewports=()=>(0,o.getRenderingEngines)().flatMap((e=>e.getViewports())),this._renderFlaggedSegmentations=()=>{this._throwIfDestroyed();Array.from(this._needsRender).forEach((e=>{this._triggerRender(e)})),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}}renderSegmentationsForViewport(e){const t=e?[e]:this._getViewportIdsForSegmentation();this._setViewportsToBeRenderedNextFrame(t)}renderSegmentation(e){const t=this._getViewportIdsForSegmentation(e);this._setViewportsToBeRenderedNextFrame(t)}_getViewportIdsForSegmentation(e){const t=this._getAllViewports(),n=[];for(const o of t){const t=o.id;if(e){const o=(0,r.r$)(t,{segmentationId:e});o?.length>0&&n.push(t)}else{const e=(0,r.r$)(t);e?.length>0&&n.push(t)}}return n}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_setViewportsToBeRenderedNextFrame(e){e.forEach((e=>{this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedSegmentations),this._animationFrameSet=!0)}_triggerRender(e){const t=(0,r.r$)(e);if(!t?.length)return;const{viewport:n}=(0,o.getEnabledElementByViewportId)(e)||{};if(!n)return;const a=[],s=t.map((e=>{e.type===i.SegmentationRepresentations.Contour&&this._addPlanarFreeHandToolIfAbsent(n);const t=p[e.type];try{const o=t.render(n,e);a.push(o)}catch(e){console.error(e)}return Promise.resolve({segmentationId:e.segmentationId,type:e.type})}));Promise.allSettled(s).then((e=>{const t=e.filter((e=>"fulfilled"===e.status)).map((e=>e.value));n.element.addEventListener(o.Enums.Events.IMAGE_RENDERED,(function e(n){const{element:a,viewportId:r}=n.detail;a.removeEventListener(o.Enums.Events.IMAGE_RENDERED,e),t.forEach((e=>{const t={viewportId:r,segmentationId:e.segmentationId,type:e.type};(0,o.triggerEvent)(o.eventTarget,i.Events.SEGMENTATION_RENDERED,{...t})}))})),n.render()}))}_addPlanarFreeHandToolIfAbsent(e){f in u.wk.tools||(0,c.Gx)(h.A);const t=(0,g.getToolGroupForViewport)(e.id);t.hasTool(f)||(t.addTool(f),t.setToolPassive(f))}}},59475:(e,t,n)=>{"use strict";n.d(t,{Zm:()=>u,_6:()=>p,cC:()=>h});var o=n(15327),i=n(99737),a=n(33739),r=n(99341),s=n(49906),l=n(92686),d=n(75419);const c={colorLUT:[],segmentations:[],viewportSegRepresentations:{}};async function u({imageIds:e,options:t}){const n=e,i=t?.volumeId||o.utilities.uuidv4();return await o.volumeLoader.createAndCacheVolumeFromImages(i,n),{volumeId:i}}async function h({segmentationId:e,options:t}){const n=p.getSegmentation(e),o=n.representationData.Labelmap,{volumeId:i}=await u({imageIds:o.imageIds,options:t});n.representationData.Labelmap.volumeId=i}function g(e){const t=a.Ay.newInstance(),n=r.Ay.newInstance();return n.addPoint(0,0),e===i.SegmentationRepresentations.Labelmap?{cfun:t,ofun:n}:{}}const p=new class{constructor(e){this._stackLabelmapImageIdReferenceMap=new Map,this._labelmapImageIdReferenceMap=new Map,e||=o.utilities.uuidv4(),this.state=Object.freeze(o.utilities.deepClone(c)),this.uid=e}getState(){return this.state}updateState(e){const t=o.utilities.deepClone(this.state);e(t),this.state=Object.freeze(t)}getColorLUT(e){return this.state.colorLUT[e]}getNextColorLUTIndex(){return this.state.colorLUT.length}resetState(){this._stackLabelmapImageIdReferenceMap.clear(),this._labelmapImageIdReferenceMap.clear(),this.state=Object.freeze(o.utilities.deepClone(c))}getSegmentation(e){return this.state.segmentations.find((t=>t.segmentationId===e))}updateSegmentation(e,t){this.updateState((n=>{const o=n.segmentations.find((t=>t.segmentationId===e));o?Object.assign(o,t):console.warn(`Segmentation with id ${e} not found. Update aborted.`)})),(0,s.triggerSegmentationModified)(e)}addSegmentation(e){if(this.getSegmentation(e.segmentationId))throw new Error(`Segmentation with id ${e.segmentationId} already exists`);this.updateState((t=>{const n=o.utilities.deepClone(e);if(n.representationData.Labelmap&&"volumeId"in n.representationData.Labelmap&&!("imageIds"in n.representationData.Labelmap)){const e=this.getLabelmapImageIds(n.representationData);n.representationData.Labelmap.imageIds=e}t.segmentations.push(n)})),(0,d.R)(e.segmentationId)}removeSegmentation(e){this.updateState((t=>{const n=t.segmentations.filter((t=>t.segmentationId!==e));t.segmentations.splice(0,t.segmentations.length,...n)})),(0,s.triggerSegmentationRemoved)(e)}addSegmentationRepresentation(e,t,n,a){if(!(0,o.getEnabledElementByViewportId)(e))return;this.getSegmentationRepresentations(e,{type:n,segmentationId:t}).length>0?console.debug("A segmentation representation of type",n,"already exists in viewport",e,"for segmentation",t):(this.updateState((o=>{o.viewportSegRepresentations[e]||(o.viewportSegRepresentations[e]=[],l.Y.setRenderInactiveSegmentations(e,!0)),n!==i.SegmentationRepresentations.Labelmap?this.addDefaultSegmentationRepresentation(o,e,t,n,a):this.addLabelmapRepresentation(o,e,t,a)})),(0,s.triggerSegmentationRepresentationModified)(e,t,n))}addDefaultSegmentationRepresentation(e,t,n,o,i){const a=e.segmentations.find((e=>e.segmentationId===n));if(!a)return;const r={};Object.keys(a.segments).forEach((e=>{r[Number(e)]={visible:!0}})),e.viewportSegRepresentations[t].push({segmentationId:n,type:o,active:!0,visible:!0,colorLUTIndex:i?.colorLUTIndex||0,segments:r,config:{...g(o),...i}}),this._setActiveSegmentation(e,t,n)}addLabelmapRepresentation(e,t,n,a=g(i.SegmentationRepresentations.Labelmap)){if(!(0,o.getEnabledElementByViewportId)(t))return;const r=this.getSegmentation(n);if(!r)return;const{representationData:s}=r;if(!s.Labelmap)return this.addDefaultSegmentationRepresentation(e,t,n,i.SegmentationRepresentations.Labelmap,a);this.processLabelmapRepresentationAddition(t,n),this.addDefaultSegmentationRepresentation(e,t,n,i.SegmentationRepresentations.Labelmap,a)}async processLabelmapRepresentationAddition(e,t){const n=(0,o.getEnabledElementByViewportId)(e);if(!n)return;const i=this.getSegmentation(t);if(!i)return;const a=n.viewport instanceof o.BaseVolumeViewport,{representationData:r}=i,s="volumeId"in r.Labelmap;n.viewport;a||s||this.updateLabelmapSegmentationImageReferences(e,i.segmentationId)}_updateLabelmapSegmentationReferences(e,t,n,o){const i=t.getCurrentImageId();let a=!1;for(const o of n){t.isReferenceViewable({referencedImageId:o},{asOverlay:!0})&&(a=!0,this._stackLabelmapImageIdReferenceMap.get(e).set(i,o),this._updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:i,labelmapImageId:o}))}return o&&o(t,e,n),a?this._stackLabelmapImageIdReferenceMap.get(e).get(i):void 0}updateLabelmapSegmentationImageReferences(e,t){const n=this.getSegmentation(t);if(!n)return;this._stackLabelmapImageIdReferenceMap.has(t)||this._stackLabelmapImageIdReferenceMap.set(t,new Map);const{representationData:i}=n;if(!i.Labelmap)return;const a=this.getLabelmapImageIds(i),r=(0,o.getEnabledElementByViewportId)(e).viewport;return this._updateLabelmapSegmentationReferences(t,r,a,null)}_updateAllLabelmapSegmentationImageReferences(e,t){const n=this.getSegmentation(t);if(!n)return;this._stackLabelmapImageIdReferenceMap.has(t)||this._stackLabelmapImageIdReferenceMap.set(t,new Map);const{representationData:i}=n;if(!i.Labelmap)return;const a=this.getLabelmapImageIds(i),r=(0,o.getEnabledElementByViewportId)(e).viewport;this._updateLabelmapSegmentationReferences(t,r,a,((e,t,n)=>{e.getImageIds().forEach(((o,i)=>{for(const a of n){e.isReferenceViewable({referencedImageId:a,sliceIndex:i},{asOverlay:!0,withNavigation:!0})&&(this._stackLabelmapImageIdReferenceMap.get(t).set(o,a),this._updateLabelmapImageIdReferenceMap({segmentationId:t,referenceImageId:o,labelmapImageId:a}))}}))}))}getLabelmapImageIds(e){const t=e.Labelmap;let n;if(t.imageIds)n=t.imageIds;else if(!n&&t.volumeId){const e=t.volumeId;n=o.cache.getVolume(e).imageIds}return n}getLabelmapImageIdsForImageId(e,t){const n=this._generateMapKey({segmentationId:t,referenceImageId:e});return this._labelmapImageIdReferenceMap.get(n)}getCurrentLabelmapImageIdsForViewport(e,t){const n=(0,o.getEnabledElementByViewportId)(e);if(!n)return;const i=n.viewport.getCurrentImageId();return this.getLabelmapImageIdsForImageId(i,t)}getCurrentLabelmapImageIdForViewport(e,t){const n=(0,o.getEnabledElementByViewportId)(e);if(!n)return;if(!this._stackLabelmapImageIdReferenceMap.has(t))return;const i=n.viewport.getCurrentImageId();return this._stackLabelmapImageIdReferenceMap.get(t).get(i)}getStackSegmentationImageIdsForViewport(e,t){if(!this.getSegmentation(t))return[];this._updateAllLabelmapSegmentationImageReferences(e,t);const{viewport:n}=(0,o.getEnabledElementByViewportId)(e),i=n.getImageIds(),a=this._stackLabelmapImageIdReferenceMap.get(t);return i.map((e=>a.get(e)))}removeSegmentationRepresentationsInternal(e,t){const n=[];return this.updateState((o=>{if(!o.viewportSegRepresentations[e])return;const i=o.viewportSegRepresentations[e];let a=!1;if(!t||Object.values(t).every((e=>void 0===e)))n.push(...i),delete o.viewportSegRepresentations[e];else{const{segmentationId:r,type:s}=t;o.viewportSegRepresentations[e]=i.filter((e=>{const t=r&&s&&e.segmentationId===r&&e.type===s||r&&!s&&e.segmentationId===r||!r&&s&&e.type===s;return t&&(n.push(e),e.active&&(a=!0)),!t})),0===o.viewportSegRepresentations[e].length?delete o.viewportSegRepresentations[e]:a&&(o.viewportSegRepresentations[e][0].active=!0)}})),n}removeSegmentationRepresentations(e,t){const n=this.removeSegmentationRepresentationsInternal(e,t);n.forEach((t=>{(0,s.triggerSegmentationRepresentationRemoved)(e,t.segmentationId,t.type)}));const o=this.getSegmentationRepresentations(e);return o.length>0&&o[0].active&&(0,s.triggerSegmentationRepresentationModified)(e,o[0].segmentationId,o[0].type),n}removeSegmentationRepresentation(e,t,n){const o=this.removeSegmentationRepresentationsInternal(e,t);return n||o.forEach((({segmentationId:t,type:n})=>{(0,s.triggerSegmentationRepresentationRemoved)(e,t,n)})),o}_updateLabelmapImageIdReferenceMap({segmentationId:e,referenceImageId:t,labelmapImageId:n}){const o=this._generateMapKey({segmentationId:e,referenceImageId:t});if(!this._labelmapImageIdReferenceMap.has(o))return void this._labelmapImageIdReferenceMap.set(o,[n]);const i=this._labelmapImageIdReferenceMap.get(o),a=Array.from(new Set([...i,n]));this._labelmapImageIdReferenceMap.set(o,a)}_setActiveSegmentation(e,t,n){const o=e.viewportSegRepresentations[t];o&&o.forEach((e=>{e.active=e.segmentationId===n}))}setActiveSegmentation(e,t){this.updateState((n=>{const o=n.viewportSegRepresentations[e];o&&o.forEach((e=>{e.active=e.segmentationId===t}))})),(0,s.triggerSegmentationRepresentationModified)(e,t)}getActiveSegmentation(e){if(!this.state.viewportSegRepresentations[e])return;const t=this.state.viewportSegRepresentations[e].find((e=>e.active));return t?this.getSegmentation(t.segmentationId):void 0}getSegmentationRepresentations(e,t={}){const n=this.state.viewportSegRepresentations[e];return n?t.type||t.segmentationId?n.filter((e=>{const n=!t.type||e.type===t.type,o=!t.segmentationId||e.segmentationId===t.segmentationId;return n&&o})):n:[]}getSegmentationRepresentation(e,t){return this.getSegmentationRepresentations(e,t)[0]}getSegmentationRepresentationVisibility(e,t){const n=this.getSegmentationRepresentation(e,t);return n?.visible}setSegmentationRepresentationVisibility(e,t,n){this.updateState((o=>{const i=this.getSegmentationRepresentations(e,t);i&&i.forEach((e=>{e.visible=n,Object.entries(e.segments).forEach((([e,t])=>{t.visible=n}))}))})),(0,s.triggerSegmentationRepresentationModified)(e,t.segmentationId,t.type)}addColorLUT(e,t){this.updateState((n=>{n.colorLUT[t]&&console.warn("Color LUT table already exists, overwriting"),n.colorLUT[t]=o.utilities.deepClone(e)}))}removeColorLUT(e){this.updateState((t=>{delete t.colorLUT[e]}))}_getStackIdForImageIds(e){return e.map((e=>e.slice(-Math.round(.15*e.length)))).join("_")}getAllViewportSegmentationRepresentations(){return Object.entries(this.state.viewportSegRepresentations).map((([e,t])=>({viewportId:e,representations:t})))}getSegmentationRepresentationsBySegmentationId(e){const t=[];return Object.entries(this.state.viewportSegRepresentations).forEach((([n,o])=>{const i=o.filter((t=>t.segmentationId===e));i.length>0&&t.push({viewportId:n,representations:i})})),t}_generateMapKey({segmentationId:e,referenceImageId:t}){return`${e}-${t}`}}("DEFAULT")},26228:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getActiveSegmentation:()=>a,setActiveSegmentation:()=>r});var o=n(67165),i=n(59475);function a(e){return(0,o.T)(e)}function r(e,t){!function(e,t){i._6.setActiveSegmentation(e,t)}(e,t)}},4714:(e,t,n)=>{"use strict";n.d(t,{u:()=>s});var o=n(15327),i=n(59475),a=n(70906),r=n(93952);function s(e,t){const n=i._6,s=t??(0,a.u)();let l=[...e];if(o.utilities.isEqual(l[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),l=[[0,0,0,0],...l]),l=l.map((e=>3===e.length?[e[0],e[1],e[2],255]:e)),l.length<255){const e=r.A.slice(l.length);l=[...l,...e]}return n.addColorLUT(l,s),s}},74283:(e,t,n)=>{"use strict";n.d(t,{$j:()=>u,At:()=>r,Hr:()=>c,Wz:()=>l,cs:()=>s,gR:()=>a,w9:()=>d});var o=n(99737),i=n(55894);function a(e,t){t.map((t=>(0,i.U)(e,t)))}function r(e,t){return a(e,t.map((e=>({...e,type:o.SegmentationRepresentations.Contour}))))}function s(e){const t={};for(const[n,o]of Object.entries(e))t[n]=r(n,o);return t}function l(e,t){return a(e,t.map((e=>({...e,type:o.SegmentationRepresentations.Labelmap}))))}function d(e){const t={};for(const[n,i]of Object.entries(e))t[n]=l(n,i.map((e=>({...e,type:o.SegmentationRepresentations.Labelmap}))))}function c(e,t){return a(e,t.map((e=>({...e,type:o.SegmentationRepresentations.Surface}))))}function u(e){const t={};for(const[n,o]of Object.entries(e))t[n]=c(n,o);return t}},30935:(e,t,n)=>{"use strict";n.d(t,{d:()=>l});var o=n(59475),i=n(49906),a=n(99737),r=n(15327);const s=function(e){const{segmentationId:t,representation:n,config:o}=e,{type:i,data:s}=n,l=s?{...s}:{};if(!l)throw new Error("Segmentation representation data may not be undefined");var d;i===a.SegmentationRepresentations.Contour&&((d=l).geometryIds=d.geometryIds??[],d.annotationUIDsMap=d.annotationUIDsMap??new Map);const c=function(e,t,n){const o={};e?Object.entries(e).forEach((([e,t])=>{o[e]={segmentIndex:Number(e),label:t.label??`Segment ${e}`,locked:t.locked??!1,cachedStats:t.cachedStats??{},active:t.active??!1}})):t===a.SegmentationRepresentations.Surface?function(e,t){const{geometryIds:n}=t;n?.forEach((t=>{const n=r.cache.getGeometry(t);if(n?.data){const{segmentIndex:t}=n.data;e[t]={segmentIndex:t}}}))}(o,n):o[1]={segmentIndex:1,label:"Segment 1",locked:!1,cachedStats:{},active:!0};return o}(o?.segments,i,l);return delete o?.segments,{segmentationId:t,label:o?.label??null,cachedStats:o?.cachedStats??{},segments:c,representationData:{[i]:{...l}}}};function l(e,t){const n=o._6;e.forEach((e=>{const o=s(e);n.addSegmentation(o),t||(0,i.triggerSegmentationModified)(o.segmentationId)}))}},93733:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addColorLUT:()=>s,getSegmentIndexColor:()=>d,setColorLUT:()=>l,setSegmentIndexColor:()=>c});var o=n(4714),i=n(50409),a=n(93210),r=n(49906);function s(e,t){if(!e)throw new Error("addColorLUT: colorLUT is required");return(0,o.u)(e,t)}function l(e,t,n){if(!(0,i.B)(n))throw new Error(`setColorLUT: could not find colorLUT with index ${n}`);const o=(0,a.r$)(e,{segmentationId:t});if(!o)throw new Error(`viewport specific state for viewport ${e} does not exist`);o.forEach((e=>{e.colorLUTIndex=n})),(0,r.triggerSegmentationRepresentationModified)(e,t)}function d(e,t,n){const o=(0,a.r$)(e,{segmentationId:t});if(!o||0===o.length)return null;const r=o[0],{colorLUTIndex:s}=r,l=(0,i.B)(s);let d=l[n];if(!d){if("number"!=typeof n)return console.warn(`Can't create colour for LUT index ${n}`),null;d=l[n]=[0,0,0,0]}return d}function c(e,t,n,o){const i=d(e,t,n);for(let e=0;e<o.length;e++)i[e]=o[e];(0,r.triggerSegmentationRepresentationModified)(e,t)}},60740:(e,t,n)=>{"use strict";n.d(t,{Q:()=>i});var o=n(33283);function i(e){const t=(0,o.T)(e);if(t){const e=Object.keys(t.segments).find((e=>t.segments[e].active));return e?Number(e):void 0}}},50409:(e,t,n)=>{"use strict";n.d(t,{B:()=>i});var o=n(59475);function i(e){return o._6.getColorLUT(e)}},97577:(e,t,n)=>{"use strict";n.d(t,{T8:()=>r,aF:()=>a,vl:()=>i});var o=n(59475);function i(e,t){return a(e,t)[0]}function a(e,t){return o._6.getCurrentLabelmapImageIdsForViewport(e,t)}function r(e,t){return o._6.getLabelmapImageIdsForImageId(e,t)}},70906:(e,t,n)=>{"use strict";n.d(t,{u:()=>i});var o=n(59475);function i(){return o._6.getNextColorLUTIndex()}},33283:(e,t,n)=>{"use strict";n.d(t,{T:()=>i});var o=n(59475);function i(e){return o._6.getSegmentation(e)}},93210:(e,t,n)=>{"use strict";n.d(t,{Ut:()=>a,ny:()=>r,r$:()=>i});var o=n(59475);function i(e,t={}){return o._6.getSegmentationRepresentations(e,t)}function a(e,t){const n=o._6;if(!t.segmentationId||!t.type)throw new Error("getSegmentationRepresentation: No segmentationId or type provided, you need to provide at least one of them");const i=n.getSegmentationRepresentations(e,t);return i?.[0]}function r(e){return o._6.getSegmentationRepresentationsBySegmentationId(e)}},70758:(e,t,n)=>{"use strict";n.d(t,{K:()=>i});var o=n(59475);function i(){return o._6.getState().segmentations}},58859:(e,t,n)=>{"use strict";n.d(t,{P:()=>i});var o=n(59475);function i(e){const t=o._6.getState().viewportSegRepresentations;return Object.entries(t).filter((([,t])=>t.some((t=>t.segmentationId===e)))).map((([e])=>e))}},42568:(e,t,n)=>{"use strict";n.d(t,{a:()=>a,z:()=>r});var o=n(33283),i=n(59475);function a(e,t){return r(e).map((e=>(t&&e.type,(0,o.T)(e.segmentationId)))).filter((e=>void 0!==e))}function r(e){return i._6.getState().viewportSegRepresentations[e]}},93690:(e,t,n)=>{"use strict";n.d(t,{_:()=>r,f:()=>s});var o=n(15327),i=n(33283),a=n(98149);async function r({volumeId:e}){return{imageIds:o.cache.getVolume(e).imageIds}}function s({segmentationId:e,options:t}){const n=(0,i.T)(e);if(!n)return;const{volumeId:r}=n.representationData.Labelmap,s=o.cache.getVolume(r);return(0,a.X)({segmentationId:e,viewportId:t.viewportId,imageIds:s.imageIds,options:t})}},6994:(e,t,n)=>{"use strict";n.d(t,{a:()=>i});var o=n(59475);async function i(e){return(0,o.Zm)(e)}},59452:(e,t,n)=>{"use strict";n.d(t,{DU:()=>c,ED:()=>s,Qe:()=>r,Th:()=>d,wV:()=>l});var o=n(15327),i=n(99737);function a(e,t,n){const i=(0,o.getEnabledElementByViewportId)(e);if(!i)return;const{renderingEngine:a,viewport:r}=i;if(!a||!r)return;const s=r.getActors().filter(n);return s.length>0?s[0]:void 0}function r(e,t){const n=l(e,t);return n?.uid}function s(e,t){return function(e,t){const n=(0,o.getEnabledElementByViewportId)(e);if(!n)return;const{renderingEngine:i,viewport:a}=n;if(!i||!a)return;const r=a.getActors().filter(t);return r.length>0?r:void 0}(e,(e=>e.representationUID?.startsWith(`${t}-${i.SegmentationRepresentations.Labelmap}`)))}function l(e,t){return a(e,0,(e=>e.representationUID?.startsWith(`${t}-${i.SegmentationRepresentations.Labelmap}`)))}function d(e,t,n){return a(e,0,(e=>e.representationUID===c(t,n)))}function c(e,t){return`${e}-${i.SegmentationRepresentations.Surface}-${t}`}},91963:(e,t,n)=>{"use strict";n.d(t,{wV:()=>o.wV});n(9711);var o=n(59452)},44595:(e,t,n)=>{"use strict";n.r(t),n.d(t,{activeSegmentation:()=>g,addContourRepresentationToViewport:()=>s.At,addContourRepresentationToViewportMap:()=>s.cs,addLabelmapRepresentationToViewport:()=>s.Wz,addLabelmapRepresentationToViewportMap:()=>s.w9,addRepresentationData:()=>d.A,addSegmentationRepresentations:()=>s.gR,addSegmentations:()=>l.d,addSurfaceRepresentationToViewport:()=>s.Hr,addSurfaceRepresentationToViewportMap:()=>s.$j,config:()=>a,defaultSegmentationStateManager:()=>c._6,getActiveSegmentation:()=>K.T,getCurrentLabelmapImageIdsForViewport:()=>q.aF,getLabelmapImageIds:()=>G,getLabelmapImageIdsForImageId:()=>q.T8,helpers:()=>Z,removeAllSegmentationRepresentations:()=>r.us,removeAllSegmentations:()=>$.j,removeContourRepresentation:()=>r.OE,removeLabelmapRepresentation:()=>r.kN,removeSegment:()=>j,removeSegmentation:()=>$.z,removeSegmentationRepresentation:()=>r.E8,removeSegmentationRepresentations:()=>r.nc,removeSurfaceRepresentation:()=>r.JC,segmentIndex:()=>k,segmentLocking:()=>p,segmentationStyle:()=>T.Y,state:()=>f,strategies:()=>z,triggerSegmentationEvents:()=>u,updateSegmentations:()=>h});var o={};n.r(o),n.d(o,{getHiddenSegmentIndices:()=>C,getSegmentIndexVisibility:()=>_,getSegmentationRepresentationVisibility:()=>I,setSegmentIndexVisibility:()=>y,setSegmentationRepresentationVisibility:()=>E});var i={};n.r(i),n.d(i,{getRenderInactiveSegmentations:()=>R,getStyle:()=>A,hasCustomStyle:()=>O,resetToGlobalStyle:()=>P,setRenderInactiveSegmentations:()=>M,setStyle:()=>D});var a={};n.r(a),n.d(a,{color:()=>m,style:()=>i,visibility:()=>o});var r=n(53662),s=n(74283),l=n(30935),d=n(44188),c=n(59475),u=n(49906);function h(e,t){const n=c._6;e.forEach((e=>{n.updateSegmentation(e.segmentationId,e.payload),t||(0,u.triggerSegmentationModified)(e.segmentationId)}))}var g=n(26228),p=n(26795),f=n(98870),m=n(93733),v=n(93210);var w=n(33658),b=n(24917);function E(e,t,n){const o=(0,v.r$)(e,t);o&&o.forEach((t=>{!function(e,t,n){c._6.setSegmentationRepresentationVisibility(e,t,n)}(e,{segmentationId:t.segmentationId,type:t.type},n)}))}function I(e,t){return(0,w.I)(e,t)}function y(e,t,n,o){const i=(0,v.r$)(e,t);i&&(i.forEach((e=>{e.segments[n].visible=o})),(0,b.fy)(t.segmentationId),(0,u.triggerSegmentationRepresentationModified)(e,t.segmentationId))}function _(e,t,n){return!C(e,t).has(n)}function C(e,t){const n=(0,v.Ut)(e,t);if(!n)return new Set;return Object.entries(n.segments).reduce(((e,[t,n])=>(n.visible||e.add(Number(t)),e)),new Set)}var x=n(70758),S=n(42568),T=n(92686);function A(e){return T.Y.getStyle(e)}function D(e,t){if(T.Y.setStyle(e,t),!e.viewportId&&!e.segmentationId){(0,x.K)().forEach((e=>{(0,b.h6)(e.segmentationId)}))}(0,u.triggerSegmentationRepresentationModified)(e.viewportId,e.segmentationId,e.type)}function M(e,t){T.Y.setRenderInactiveSegmentations(e,t),(0,b.h6)(e);(0,S.a)(e).forEach((t=>{(0,u.triggerSegmentationRepresentationModified)(e,t.segmentationId)}))}function R(e){return T.Y.getRenderInactiveSegmentations(e)}function P(){T.Y.resetToGlobalStyle(),(0,b.h6)()}function O(e){return T.Y.hasCustomStyle(e)}var k=n(70930),L=n(6273),U=n(6994),N=n(15327),V=n(33283);function B(e,t){const n=(0,V.T)(e);if(!n.representationData.Labelmap)throw new Error("Invalid segmentation type, only labelmap is supported right now");{const{representationData:o}=n,i=o.Labelmap;if("imageIds"in i||"volumeId"in i){("imageIds"in i?i.imageIds.map((e=>N.cache.getImage(e))):[N.cache.getVolume(i.volumeId)]).forEach((e=>{if(!e)return;const{voxelManager:n}=e;n.forEach((({value:e,index:o})=>{e===t&&n.setAtIndex(o,0)}))}))}(0,u.triggerSegmentationDataModified)(e)}}var F=n(93690),W=n(60740),H=n(58859);function j(e,t,n={setNextSegmentAsActive:!0}){B(e,t);const o=(0,W.Q)(e)===t,i=(0,V.T)(e),{segments:a}=i;delete a[t];const r={...a};if(h([{segmentationId:e,payload:{segments:r}}]),o&&n.setNextSegmentAsActive){const n=Object.keys(a).map(Number).sort(((e,t)=>e-t)),o=n.indexOf(t),i=n[o+1],r=n[o-1];void 0!==i?(0,k.setActiveSegmentIndex)(e,i):void 0!==r&&(0,k.setActiveSegmentIndex)(e,r)}(0,H.P)(e).forEach((n=>{(0,v.r$)(n,{segmentationId:e}).forEach((e=>{delete e.segments[t]}))}))}function G(e){const t=c._6,n=(0,V.T)(e);return t.getLabelmapImageIds(n.representationData)}var z=n(99522),$=n(63427),q=n(97577),K=n(67165);const Z={clearSegmentValue:B,convertStackToVolumeLabelmap:L.p,computeVolumeLabelmapFromStack:U.a,convertVolumeToStackLabelmap:F.f}},55894:(e,t,n)=>{"use strict";n.d(t,{U:()=>d});var o=n(93952),i=n(58640),a=n(99737),r=n(49906),s=n(4714),l=n(59475);function d(e,t){const{segmentationId:n,config:o}=t,s={colorLUTIndex:c(o),...o};l._6.addSegmentationRepresentation(e,n,t.type,s),t.type===a.SegmentationRepresentations.Contour&&(0,i.t)([e]),(0,r.triggerSegmentationModified)(n)}function c(e){const{colorLUTOrIndex:t}=e||{};if(void 0===t){return(0,s.u)(JSON.parse(JSON.stringify(o.A)))}if("number"==typeof t)return t;if(Array.isArray(t)&&t.every((e=>Array.isArray(e)&&4===e.length))){return(0,s.u)(t)}return(0,s.u)(JSON.parse(JSON.stringify(o.A)))}},63427:(e,t,n)=>{"use strict";n.d(t,{j:()=>s,z:()=>r});var o=n(59475),i=n(49906),a=n(53662);function r(e){const t=o._6;t.getAllViewportSegmentationRepresentations().filter((({representations:t})=>t.some((t=>t.segmentationId===e)))).map((({viewportId:e})=>e)).forEach((t=>{(0,a.nc)(t,{segmentationId:e})})),t.removeSegmentation(e),(0,i.triggerSegmentationRemoved)(e)}function s(){const e=o._6;e.getState().segmentations.map((e=>e.segmentationId)).forEach((e=>{r(e)})),e.resetState()}},53662:(e,t,n)=>{"use strict";n.d(t,{us:()=>g,OE:()=>f,kN:()=>p,E8:()=>c,nc:()=>u,JC:()=>m});var o=n(18682),i=n(684),a=n(25894),r=n(93210),s=n(15327),l=n(59475),d=n(67014);function c(e,t,n){return h(e,t,n)}function u(e,t,n){return h(e,t,n)}function h(e,t,n){const{segmentationId:c,type:u}=t;return function(e,t,n,l){const c=(0,r.r$)(e,{segmentationId:t,type:n});c.forEach((t=>{t.type===o.A.Labelmap?i.Ay.removeRepresentation(e,t.segmentationId,l):t.type===o.A.Contour?a.A.removeRepresentation(e,t.segmentationId,l):t.type===o.A.Surface&&d.Ay.removeRepresentation(e,t.segmentationId,l)}));const{viewport:u}=(0,s.getEnabledElementByViewportId)(e)||{};u&&u.render()}(e,c,u,n),l._6.removeSegmentationRepresentations(e,{segmentationId:c,type:u})}function g(){l._6.getAllViewportSegmentationRepresentations().forEach((({viewportId:e,representations:t})=>{t.forEach((({segmentationId:t,type:n})=>{c(e,{segmentationId:t,type:n})}))})),l._6.resetState()}function p(e,t,n){c(e,{segmentationId:t,type:o.A.Labelmap},n)}function f(e,t,n){c(e,{segmentationId:t,type:o.A.Contour},n)}function m(e,t,n){c(e,{segmentationId:t,type:o.A.Surface},n)}},70930:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getActiveSegmentIndex:()=>l.Q,setActiveSegmentIndex:()=>c});var o=n(77609),i=n(35706),a=n(33283),r=n(58859),s=n(49906),l=n(60740),d=n(93210);function c(e,t){const n=(0,a.T)(e);"string"==typeof t&&(console.warn("segmentIndex is a string, converting to number"),t=Number(t)),Object.values(n.segments).forEach((e=>{e.active=!1})),n.segments[t]||(n.segments[t]={segmentIndex:t,label:"",locked:!1,cachedStats:{},active:!1}),!0!==n.segments[t].active&&(n.segments[t].active=!0,(0,s.triggerSegmentationModified)(e));const l=(0,r.P)(e);l.forEach((n=>{(0,d.r$)(n,{segmentationId:e}).forEach((e=>{e.segments[t]||(e.segments[t]={visible:!0})}))})),l.forEach((e=>{const t=(0,o.getToolGroupForViewport)(e);(0,i.E)(t.id)}))}},26795:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getLockedSegmentIndices:()=>s,isSegmentIndexLocked:()=>a,setSegmentIndexLocked:()=>r});var o=n(33283),i=n(49906);function a(e,t){const n=(0,o.T)(e);if(!n)throw new Error(`No segmentation state found for ${e}`);const{segments:i}=n;return i[t].locked}function r(e,t,n=!0){const a=(0,o.T)(e);if(!a)throw new Error(`No segmentation state found for ${e}`);const{segments:r}=a;r[t].locked=n,(0,i.triggerSegmentationModified)(e)}function s(e){const t=(0,o.T)(e);if(!t)throw new Error(`No segmentation state found for ${e}`);const{segments:n}=t;return Object.keys(n).filter((e=>n[e].locked)).map((e=>parseInt(e)))}},98870:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addColorLUT:()=>l.u,addSegmentations:()=>a.d,destroy:()=>b,getColorLUT:()=>d.B,getCurrentLabelmapImageIdForViewport:()=>f.vl,getCurrentLabelmapImageIdsForViewport:()=>f.aF,getNextColorLUTIndex:()=>c.u,getSegmentation:()=>o.T,getSegmentationRepresentation:()=>w.Ut,getSegmentationRepresentations:()=>w.r$,getSegmentationRepresentationsBySegmentationId:()=>w.ny,getSegmentations:()=>i.K,getStackSegmentationImageIdsForViewport:()=>v,getViewportIdsWithSegmentation:()=>p.P,getViewportSegmentationRepresentations:()=>g.z,getViewportSegmentations:()=>g.a,removeAllSegmentationRepresentations:()=>s.us,removeAllSegmentations:()=>r.j,removeColorLUT:()=>h,removeContourRepresentation:()=>s.OE,removeLabelmapRepresentation:()=>s.kN,removeSegmentation:()=>r.z,removeSegmentationRepresentation:()=>s.E8,removeSurfaceRepresentation:()=>s.JC,updateLabelmapSegmentationImageReferences:()=>m.t});var o=n(33283),i=n(70758),a=n(30935),r=n(63427),s=n(53662),l=n(4714),d=n(50409),c=n(70906),u=n(59475);function h(e){u._6.removeColorLUT(e)}var g=n(42568),p=n(58859),f=n(97577),m=n(78231);function v(e,t){return u._6.getStackSegmentationImageIdsForViewport(e,t)}var w=n(93210);function b(){u._6.resetState()}},49906:(e,t,n)=>{"use strict";n.r(t),n.d(t,{triggerSegmentationDataModified:()=>o.Q,triggerSegmentationModified:()=>i.G,triggerSegmentationRemoved:()=>a.B,triggerSegmentationRepresentationModified:()=>r.r,triggerSegmentationRepresentationRemoved:()=>s.O});var o=n(98798),i=n(9726),a=n(1485),r=n(44951),s=n(65290)},78231:(e,t,n)=>{"use strict";n.d(t,{t:()=>i});var o=n(59475);function i(e,t){return o._6.updateLabelmapSegmentationImageReferences(e,t)}},50749:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327);function i(e,t){return e.findIndex((e=>t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId))}function a(e,t){return e.some((e=>e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId))}const r=class{constructor(e,t,n,i){this._viewportOptions={},this._onEvent=e=>{if(!0===this._ignoreFiredEvents)return;if(!this._targetViewports.length)return;const t="element"===this._eventSource?(0,o.getEnabledElement)(e.currentTarget):(0,o.getEnabledElementByViewportId)(e.detail?.viewportId);if(!t)return;const{renderingEngineId:n,viewportId:i}=t;this._sourceViewports.find((e=>e.viewportId===i))&&this.fireEvent({renderingEngineId:n,viewportId:i},e)},this._enabled=!0,this._eventName=t,this._eventHandler=n,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=i||{},this._eventSource=this._options.eventSource||"element",this._auxiliaryEvents=this._options.auxiliaryEvents||[],this.id=e}isDisabled(){return!this._enabled||!this._hasSourceElements()}setOptions(e,t={}){this._viewportOptions[e]=t}setEnabled(e){this._enabled=e}getOptions(e){return this._viewportOptions[e]}add(e){this.addTarget(e),this.addSource(e)}addSource(e){if(a(this._sourceViewports,e))return;const{renderingEngineId:t,viewportId:n}=e,i=(0,o.getRenderingEngine)(t).getViewport(n);if(!i)return void console.warn(`Synchronizer.addSource: No viewport for ${t} ${n}`);("element"===this._eventSource?i.element:o.eventTarget).addEventListener(this._eventName,this._onEvent.bind(this)),this._auxiliaryEvents.forEach((({name:e,source:t})=>{("element"===t?i.element:o.eventTarget).addEventListener(e,this._onEvent.bind(this))})),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){a(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}getSourceViewports(){return this._sourceViewports}getTargetViewports(){return this._targetViewports}destroy(){this._sourceViewports.forEach((e=>this.removeSource(e))),this._targetViewports.forEach((e=>this.removeTarget(e)))}remove(e){this.removeTarget(e),this.removeSource(e)}removeSource(e){const t=i(this._sourceViewports,e);if(-1===t)return;const n="element"===this._eventSource?this.getViewportElement(e):o.eventTarget;this._sourceViewports.splice(t,1),n.removeEventListener(this._eventName,this._eventHandler),this._auxiliaryEvents.forEach((({name:t,source:n})=>{("element"===n?this.getViewportElement(e):o.eventTarget).removeEventListener(t,this._eventHandler)})),this._updateDisableHandlers()}removeTarget(e){const t=i(this._targetViewports,e);-1!==t&&(this._targetViewports.splice(t,1),this._updateDisableHandlers())}hasSourceViewport(e,t){return a(this._sourceViewports,{renderingEngineId:e,viewportId:t})}hasTargetViewport(e,t){return a(this._targetViewports,{renderingEngineId:e,viewportId:t})}fireEvent(e,t){if(this.isDisabled()||this._ignoreFiredEvents)return;this._ignoreFiredEvents=!0;const n=[];try{for(let o=0;o<this._targetViewports.length;o++){const i=this._targetViewports[o];if(e.viewportId===i.viewportId)continue;const a=this._eventHandler(this,e,i,t,this._options);a instanceof Promise&&n.push(a)}}catch(e){console.warn(`Synchronizer, for: ${this._eventName}`,e)}finally{n.length?Promise.allSettled(n).then((()=>{this._ignoreFiredEvents=!1})):this._ignoreFiredEvents=!1}}_hasSourceElements(){return 0!==this._sourceViewports.length}_updateDisableHandlers(){const e=function(e,t){const n=[],o=e.concat(t);for(let e=0;e<o.length;e++){const t=o[e];n.some((e=>t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId))||n.push(t)}return n}(this._sourceViewports,this._targetViewports),t=this.remove.bind(this),n=e=>{t(e.detail.element)};e.forEach((e=>{const t=this.getEventSource(e);t&&(t.removeEventListener(o.Enums.Events.ELEMENT_DISABLED,n),t.addEventListener(o.Enums.Events.ELEMENT_DISABLED,n))}))}getEventSource(e){return"element"===this._eventSource?this.getViewportElement(e):o.eventTarget}getViewportElement(e){const{renderingEngineId:t,viewportId:n}=e,i=(0,o.getRenderingEngine)(t);if(!i)return null;const a=i.getViewport(n);return a?a.element:null}}},36601:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(85204),i=n(50749);const a=function(e,t,n,a){if(o.wk.synchronizers.some((t=>t.id===e)))throw new Error(`Synchronizer with id '${e}' already exists.`);const r=new i.A(e,t,n,a);return o.wk.synchronizers.push(r),r}},13239:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(85204);const i=function(){for(;o.wk.synchronizers.length>0;){o.wk.synchronizers.pop().destroy()}}},71395:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(85204);const i=function(e){const t=o.wk.synchronizers.findIndex((t=>t.id===e));if(t>-1){o.wk.synchronizers[t].destroy(),o.wk.synchronizers.splice(t,1)}}},92569:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(85204);const i=function(){return o.wk.synchronizers}},70321:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(85204);const i=function(e){return o.wk.synchronizers.find((t=>t.id===e))}},27851:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(85204);const i=function(e,t){const n=[];if(!t&&!e)throw new Error("At least one of renderingEngineId or viewportId should be given");for(let i=0;i<o.wk.synchronizers.length;i++){const a=o.wk.synchronizers[i],r=!a.isDisabled(),s=a.hasSourceViewport(t,e),l=a.hasTargetViewport(t,e);r&&(s||l)&&n.push(a)}return n}},70741:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createSynchronizer:()=>o.A,destroy:()=>i.A,destroySynchronizer:()=>l.A,getAllSynchronizers:()=>s.A,getSynchronizer:()=>r.A,getSynchronizersForViewport:()=>a.A});var o=n(36601),i=n(13239),a=n(27851),r=n(70321),s=n(92569),l=n(71395)},77609:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createToolGroup:()=>w,destroy:()=>E,destroyToolGroup:()=>b,getAllToolGroups:()=>y,getToolGroup:()=>c,getToolGroupForViewport:()=>I.A,getToolGroupsWithToolName:()=>_.A});var o=n(85204),i=n(99737),a=n(93008),r=n.n(a),s=n(15327),l=n(79475),d=n(7001);const c=function(e){return o.wk.toolGroups.find((t=>t.id===e))},{Active:u,Passive:h,Enabled:g,Disabled:p}=i.ToolModes,f=[{mouseButton:i.MouseBindings.Primary}];class m{constructor(e){this.viewportsInfo=[],this.toolOptions={},this.currentActivePrimaryToolName=null,this.prevActivePrimaryToolName=null,this.restoreToolOptions={},this._toolInstances={},this.id=e}getViewportIds(){return this.viewportsInfo.map((({viewportId:e})=>e))}getViewportsInfo(){return this.viewportsInfo.slice()}getToolInstance(e){const t=this._toolInstances[e];if(t)return t;console.warn(`'${e}' is not registered with this toolGroup (${this.id}).`)}getToolInstances(){return this._toolInstances}hasTool(e){return!!this._toolInstances[e]}addTool(e,t={}){const n=o.wk.tools[e],i=void 0!==e&&""!==e,a=this.toolOptions[e];if(!i)return void console.warn("Tool with configuration did not produce a toolName: ",t);if(!n)return void console.warn(`'${e}' is not registered with the library. You need to use cornerstoneTools.addTool to register it.`);if(a)return void console.warn(`'${e}' is already registered for ToolGroup ${this.id}.`);const{toolClass:r}=n,s=new r({name:e,toolGroupId:this.id,configuration:t});this._toolInstances[e]=s}addToolInstance(e,t,n={}){let i=o.wk.tools[e]?.toolClass;if(!i){const n=o.wk.tools[t].toolClass;class a extends n{}a.toolName=e,i=a,o.wk.tools[e]={toolClass:a}}this.addTool(i.toolName,n)}addViewport(e,t){if("string"!=typeof e)throw new Error("viewportId must be defined and be a string");const n=this._findRenderingEngine(e,t);this.viewportsInfo.some((({viewportId:t})=>t===e))||this.viewportsInfo.push({viewportId:e,renderingEngineId:n});const o=this.getActivePrimaryMouseButtonTool();s.Settings.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(o);const a={toolGroupId:this.id,viewportId:e,renderingEngineId:n};(0,s.triggerEvent)(s.eventTarget,i.Events.TOOLGROUP_VIEWPORT_ADDED,a)}removeViewports(e,t){const n=[];if(this.viewportsInfo.forEach(((o,i)=>{let a=!1;o.renderingEngineId===e&&(a=!0,t&&o.viewportId!==t&&(a=!1)),a&&n.push(i)})),n.length)for(let e=n.length-1;e>=0;e--)this.viewportsInfo.splice(n[e],1);const o={toolGroupId:this.id,viewportId:t,renderingEngineId:e};(0,s.triggerEvent)(s.eventTarget,i.Events.TOOLGROUP_VIEWPORT_REMOVED,o)}setActiveStrategy(e,t){const n=this._toolInstances[e];void 0!==n?n.setActiveStrategy(t):console.warn(`Tool ${e} not added to toolGroup, can't set tool configuration.`)}setToolMode(e,t,n={}){e?t!==i.ToolModes.Active?t!==i.ToolModes.Passive?t!==i.ToolModes.Enabled?t!==i.ToolModes.Disabled?console.warn("setToolMode: mode must be defined"):this.setToolDisabled(e):this.setToolEnabled(e):this.setToolPassive(e):this.setToolActive(e,n||this.restoreToolOptions[e]):console.warn("setToolMode: toolName must be defined")}setToolActive(e,t={}){const n=this._toolInstances[e];if(void 0===n)return void console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);if(!n)return void console.warn(`'${e}' instance ${n} is not registered with this toolGroup, can't set tool mode.`);const o={bindings:[...this.toolOptions[e]?this.toolOptions[e].bindings:[],...t.bindings?t.bindings:[]].reduce(((e,t)=>{const n=void 0!==t.numTouchPoints,o=void 0!==t.mouseButton;return e.some((e=>v(e,t)))||!n&&!o||e.push(t),e}),[]),mode:u};this.toolOptions[e]=o,this._toolInstances[e].mode=u;const a=s.Settings.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(t)&&a)this.setViewportsCursorByToolName(e);else{if(!this.getActivePrimaryMouseButtonTool()&&a){const e=l.MouseCursor.getDefinedCursor("default");this._setCursorForViewports(e)}}this._hasMousePrimaryButtonBinding(t)&&(null===this.prevActivePrimaryToolName?this.prevActivePrimaryToolName=e:this.prevActivePrimaryToolName=this.currentActivePrimaryToolName,this.currentActivePrimaryToolName=e),"function"==typeof n.onSetToolActive&&n.onSetToolActive(),this._renderViewports();const r={toolGroupId:this.id,toolName:e,toolBindingsOptions:t};(0,s.triggerEvent)(s.eventTarget,i.Events.TOOL_ACTIVATED,r),this._triggerToolModeChangedEvent(e,u,t)}setToolPassive(e,t){const n=this._toolInstances[e];if(void 0===n)return void console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);const o=this.getToolOptions(e),i=Object.assign({bindings:o?o.bindings:[]},o,{mode:h}),a=Array.isArray(t?.removeAllBindings)?t.removeAllBindings:this.getDefaultPrimaryBindings();i.bindings=i.bindings.filter((e=>!0!==t?.removeAllBindings&&!a.some((t=>v(e,t)))));let r=h;0!==i.bindings.length&&(r=u,i.mode=r),this.toolOptions[e]=i,n.mode=r,"function"==typeof n.onSetToolPassive&&n.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,h)}setToolEnabled(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);const n={bindings:[],mode:g};this.toolOptions[e]=n,t.mode=g,"function"==typeof t.onSetToolEnabled&&t.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,g)}setToolDisabled(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn(`Tool ${e} not added to toolGroup, can't set tool mode.`);const n={bindings:[],mode:p};this.restoreToolOptions[e]=this.toolOptions[e],this.toolOptions[e]=n,t.mode=p,"function"==typeof t.onSetToolDisabled&&t.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,p)}getToolOptions(e){const t=this.toolOptions[e];if(void 0!==t)return t}getActivePrimaryMouseButtonTool(){return Object.keys(this.toolOptions).find((e=>{const t=this.toolOptions[e];return t.mode===u&&this._hasMousePrimaryButtonBinding(t)}))}setViewportsCursorByToolName(e,t){const n=this._getCursor(e,t);this._setCursorForViewports(n)}_getCursor(e,t){let n,o;return t&&(n=`${e}.${t}`,o=l.SVGMouseCursor.getDefinedCursor(n,!0),o)?o:(n=`${e}`,o=l.SVGMouseCursor.getDefinedCursor(n,!0),o||(n=e,o=l.SVGMouseCursor.getDefinedCursor(n,!0),o||l.MouseCursor.getDefinedCursor("default")))}_setCursorForViewports(e){this.viewportsInfo.forEach((({renderingEngineId:t,viewportId:n})=>{const o=(0,s.getEnabledElementByIds)(n,t);if(!o)return;const{viewport:i}=o;(0,d.initElementCursor)(i.element,e)}))}setToolConfiguration(e,t,n){const o=this._toolInstances[e];if(void 0===o)return console.warn(`Tool ${e} not present, can't set tool configuration.`),!1;let i;return i=n?t:Object.assign(o.configuration,t),o.configuration=i,"function"==typeof o.onSetToolConfiguration&&o.onSetToolConfiguration(),this._renderViewports(),!0}getDefaultMousePrimary(){return i.MouseBindings.Primary}getDefaultPrimaryBindings(){return f}getToolConfiguration(e,t){if(void 0===this._toolInstances[e])return void console.warn(`Tool ${e} not present, can't set tool configuration.`);const n=r()(this._toolInstances[e].configuration,t)||this._toolInstances[e].configuration;return s.utilities.deepClone(n)}getPrevActivePrimaryToolName(){return this.prevActivePrimaryToolName}setActivePrimaryTool(e){const t=this.getCurrentActivePrimaryToolName();this.setToolDisabled(t),this.setToolActive(e,{bindings:[{mouseButton:i.MouseBindings.Primary}]})}getCurrentActivePrimaryToolName(){return this.currentActivePrimaryToolName}clone(e,t=null){let n=c(e);return n?(console.debug(`ToolGroup ${e} already exists`),n):(n=new m(e),o.wk.toolGroups.push(n),t=t??(()=>!0),Object.keys(this._toolInstances).filter(t).forEach((e=>{const t=this._toolInstances[e],o=this.toolOptions[e],i=t.mode;n.addTool(e),n.setToolMode(e,i,{bindings:o.bindings??[]})})),n)}_hasMousePrimaryButtonBinding(e){const t=this.getDefaultPrimaryBindings();return e?.bindings?.some((e=>t.some((t=>v(e,t)))))}_renderViewports(){this.viewportsInfo.forEach((({renderingEngineId:e,viewportId:t})=>{(0,s.getRenderingEngine)(e).renderViewport(t)}))}_triggerToolModeChangedEvent(e,t,n){const o={toolGroupId:this.id,toolName:e,mode:t,toolBindingsOptions:n};(0,s.triggerEvent)(s.eventTarget,i.Events.TOOL_MODE_CHANGED,o)}_findRenderingEngine(e,t){const n=(0,s.getRenderingEngines)();if(0===n?.length)throw new Error("No rendering engines found.");if(t)return t;const o=n.filter((t=>t.getViewport(e)));if(0===o.length){if(1===n.length)return n[0].id;throw new Error("No rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.")}if(o.length>1)throw new Error("Multiple rendering engines found that contain the viewport with the same viewportId, you must specify a renderingEngineId.");return o[0].id}}function v(e,t){return e.mouseButton===t.mouseButton&&(e.numTouchPoints===t.numTouchPoints&&e.modifierKey===t.modifierKey)}const w=function(e){if(o.wk.toolGroups.some((t=>t.id===e)))return void console.warn(`'${e}' already exists.`);const t=new m(e);return o.wk.toolGroups.push(t),t};const b=function(e){const t=o.wk.toolGroups.findIndex((t=>t.id===e));t>-1&&o.wk.toolGroups.splice(t,1)};const E=function(){const e=[...o.wk.toolGroups];for(const t of e)b(t.id);o.wk.toolGroups=[]};var I=n(65136);const y=function(){return o.wk.toolGroups};var _=n(88029)},17221:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(83638),i=n(3406),a=n(85204),r=n(39011);function s(e){const{element:t,viewportId:n}=e.detail,s=function(e){const t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg"),o=`svg-layer-${e}`;n.classList.add("svg-layer"),n.setAttribute("id",o),n.setAttribute("xmlns","http://www.w3.org/2000/svg"),n.style.width="100%",n.style.height="100%",n.style.pointerEvents="none",n.style.position="absolute";const i=document.createElementNS(t,"defs"),a=document.createElementNS(t,"filter"),r=document.createElementNS(t,"feOffset"),s=document.createElementNS(t,"feColorMatrix"),l=document.createElementNS(t,"feBlend");return a.setAttribute("id",`shadow-${o}`),a.setAttribute("filterUnits","userSpaceOnUse"),r.setAttribute("result","offOut"),r.setAttribute("in","SourceGraphic"),r.setAttribute("dx","0.5"),r.setAttribute("dy","0.5"),s.setAttribute("result","matrixOut"),s.setAttribute("in","offOut"),s.setAttribute("in2","matrix"),s.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),l.setAttribute("in","SourceGraphic"),l.setAttribute("in2","matrixOut"),l.setAttribute("mode","normal"),a.appendChild(r),a.appendChild(s),a.appendChild(l),i.appendChild(a),n.appendChild(i),n}(n);var l;!function(e){const{viewportUid:t,renderingEngineUid:n}=e.dataset,o=`${t}:${n}`;a.wk.svgNodeCache[o]={}}(t),l=s,t.querySelector("div.viewport-element").appendChild(l),r.o.addViewportElement(n,t),o.bH.enable(t),o.CG.enable(t),o.F_.enable(t),o.kt.enable(t),o._9.enable(t),i.In.enable(t),i.aB.enable(t),i.z5.enable(t),i.we.enable(t),i.n6.enable(t),i.V$.enable(t),i.$m.enable(t),a.wk.enabledElements.push(t)}},68040:(e,t,n)=>{"use strict";n.d(t,{Bl:()=>s,Gx:()=>i,J2:()=>a,l$:()=>r});var o=n(85204);function i(e){const t=e.toolName;if(!t)throw new Error(`No Tool Found for the ToolClass ${e.name}`);o.wk.tools[t]||(o.wk.tools[t]={toolClass:e})}function a(e){const t=e.toolName;return!(!t||!o.wk.tools[t])}function r(e){return!(!e||!o.wk.tools[e])}function s(e){const t=e.toolName;if(!t)throw new Error(`No tool found for: ${e.name}`);if(void 0===!o.wk.tools[t])throw new Error(`${t} cannot be removed because it has not been added`);delete o.wk.tools[t]}},91243:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(99737),i=n(39848),a=n(57725);function r(e){const t=(0,i.A)(e,[o.ToolModes.Active,o.ToolModes.Passive]),n=(0,a.A)(e,t);for(const{tool:t}of n){const n=t.cancel(e);if(n)return n}}},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Synchronizer:()=>l.A,SynchronizerManager:()=>u,ToolGroupManager:()=>c,addEnabledElement:()=>i.A,addTool:()=>o.Gx,cancelActiveManipulations:()=>r.A,hasTool:()=>o.J2,removeEnabledElement:()=>a.A,removeTool:()=>o.Bl,state:()=>s.Ay,svgNodeCache:()=>d.A});var o=n(68040),i=n(17221),a=n(34222),r=n(91243),s=n(85204),l=n(50749),d=n(48145),c=n(77609),u=n(70741)},34222:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var o=n(15327),i=n(83638),a=n(3406),r=(n(57725),n(85204)),s=(n(39848),n(99737),n(6802),n(27851)),l=n(65136),d=n(39011);const c="viewport-element";const u=e=>{const t=(0,o.getEnabledElement)(e);if(!t)return;(0,s.A)(t.viewportId,t.renderingEngineId).forEach((e=>{e.remove(t)}))},h=e=>{const t=(0,o.getEnabledElement)(e);if(!t)return;const{renderingEngineId:n,viewportId:i}=t,a=(0,l.A)(i,n);a&&a.removeViewports(n,i)};const g=function(e){const t=r.wk.enabledElements.findIndex((t=>t===e));t>-1&&r.wk.enabledElements.splice(t,1)},p=function(e){const{element:t,viewportId:n}=e.detail;!function(e){const{viewportUid:t,renderingEngineUid:n}=e.dataset,o=`${t}:${n}`;delete r.wk.svgNodeCache[o]}(t),function(e){const t=e.querySelector(`div.${c}`),n=t.querySelector("svg");n&&t.removeChild(n)}(t),d.o.removeViewportElement(n,t),i.bH.disable(t),i.CG.disable(t),i.F_.disable(t),i.kt.disable(t),i._9.disable(t),a.In.disable(t),a.aB.disable(t),a.z5.disable(t),a.we.disable(t),a.n6.disable(t),a.V$.disable(t),a.$m.disable(t),u(t),h(t),g(t)}},85204:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>a,qh:()=>r,wk:()=>a});var o=n(48145);const i={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:o.A,enabledElements:[],handleRadius:6};let a={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:o.A,enabledElements:[],handleRadius:6};function r(){(0,o.e)(),a={...structuredClone({...i,svgNodeCache:{}}),svgNodeCache:{...i.svgNodeCache}}}},48145:(e,t,n)=>{"use strict";n.d(t,{A:()=>a,e:()=>i});let o={};function i(){o={}}const a=o},94195:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(3823);function i(e,t){const{viewPlaneNormal:n}=e.getCamera(),{viewPlaneNormal:i}=t.getCamera(),a=o.eR.dot(n,i);return Math.abs(a)>.9}},67831:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);function i(e,t,n,i){const{camera:a}=i.detail,r=(0,o.getRenderingEngine)(n.renderingEngineId);if(!r)throw new Error(`No RenderingEngine for Id: ${n.renderingEngineId}`);const s=r.getViewport(n.viewportId);s.setCamera(a),s.render()}},69877:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(3823),i=n(15327),a=n(94195);const r=(e,t)=>i.utilities.spatialRegistrationMetadataProvider.get("spatialRegistrationModule",e,t);async function s(e,t,n){const s=(0,i.getRenderingEngine)(n.renderingEngineId);if(!s)throw new Error(`No RenderingEngine for Id: ${n.renderingEngineId}`);const l=s.getViewport(t.viewportId),d=e.getOptions(n.viewportId);if(d?.disabled)return;const c=s.getViewport(n.viewportId),u=l.getCurrentImageId(),h=i.metaData.get("imagePlaneModule",u).imagePositionPatient,g=c.getImageIds();if(!(0,a.A)(l,c))return;let p=r(n.viewportId,t.viewportId);if(!p){if(l.getFrameOfReferenceUID()===c.getFrameOfReferenceUID()&&!1!==d?.useInitialPosition?p=o.pB.identity(o.pB.create()):(i.utilities.calculateViewportsSpatialRegistration(l,c),p=r(n.viewportId,t.viewportId)),!p)return}const f=o.eR.transformMat4(o.eR.create(),h,p),m=(v=f,g.reduce(((e,t,n)=>{const{imagePositionPatient:a}=i.metaData.get("imagePlaneModule",t),r=o.eR.distance(a,v);return r<e.distance?{distance:r,index:n}:e}),{distance:1/0,index:-1}));var v;let w=m.index;c instanceof i.VolumeViewport&&(w=g.length-m.index-1),-1!==m.index&&c.getCurrentImageIdIndex()!==m.index&&await i.utilities.jumpToSlice(c.element,{imageIndex:w})}},56553:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);function i(e,t,n,i,a){const r=(0,o.getRenderingEngine)(n.renderingEngineId);if(!r)throw new Error(`No RenderingEngine for Id: ${n.renderingEngineId}`);const s=r.getViewport(n.viewportId),l=r.getViewport(t.viewportId).getViewPresentation(a);s.setViewPresentation(l),s.render()}},9912:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);function i(e,t,n){const i=(0,o.getRenderingEngine)(n.renderingEngineId);if(!i)throw new Error(`No RenderingEngine for Id: ${n.renderingEngineId}`);const a=i.getViewport(n.viewportId),r=i.getViewport(t.viewportId),s=r.getSlabThickness?.();s&&(a.setSlabThickness?.(s),a.render())}},14676:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);function i(e,t,n,i,a){const r=i.detail,{volumeId:s,range:l,invertStateChanged:d,invert:c,colormap:u}=r,h=(0,o.getRenderingEngine)(n.renderingEngineId);if(!h)throw new Error(`Rendering Engine does not exist: ${n.renderingEngineId}`);const g=h.getViewport(n.viewportId),p={voiRange:l};if(a?.syncInvertState&&d&&(p.invert=c),a?.syncColormap&&u&&(p.colormap=u),g instanceof o.BaseVolumeViewport){g._actors&&g._actors.size>1?g.setProperties(p,s):g.setProperties(p)}else{if(!(g instanceof o.StackViewport))throw new Error("Viewport type not supported.");g.setProperties(p)}g.render()}},53308:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);function i(e,t,n){const i=(0,o.getRenderingEngine)(n.renderingEngineId);if(!i)throw new Error(`No RenderingEngine for Id: ${n.renderingEngineId}`);const a=e.getOptions(n.viewportId),r=i.getViewport(n.viewportId),s=i.getViewport(t.viewportId);if(!1!==a?.syncZoom){const e=s.getZoom();r.setZoom(e)}if(!1!==a?.syncPan){const e=s.getPan();r.setPan(e)}r.render()}},34389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createCameraPositionSynchronizer:()=>o.A,createImageSliceSynchronizer:()=>s.A,createPresentationViewSynchronizer:()=>i.A,createSlabThicknessSynchronizer:()=>l.A,createStackImageSynchronizer:()=>d,createVOISynchronizer:()=>a.A,createZoomPanSynchronizer:()=>r.A});var o=n(90839),i=n(31130),a=n(32865),r=n(3889),s=n(76266),l=n(7137);const d=s.A},90839:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(70741),i=n(15327),a=n(67831);const{CAMERA_MODIFIED:r}=i.Enums.Events;function s(e){return(0,o.createSynchronizer)(e,r,a.A)}},76266:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(70741),i=n(15327),a=n(69877);const{STACK_NEW_IMAGE:r,VOLUME_NEW_IMAGE:s}=i.Enums.Events;function l(e){return(0,o.createSynchronizer)(e,r,a.A,{auxiliaryEvents:[{name:"VOLUME_NEW_IMAGE"}]})}},31130:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(15327),i=n(70741),a=n(56553);const{CAMERA_MODIFIED:r}=o.Enums.Events;function s(e,t){return(0,i.createSynchronizer)(e,r,a.A,{viewPresentation:t})}},7137:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(15327),i=n(70741),a=n(9912);const{CAMERA_MODIFIED:r}=o.Enums.Events;function s(e){return(0,i.createSynchronizer)(e,r,a.A)}},32865:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(70741),i=n(15327),a=n(14676);function r(e,t){t=Object.assign({syncInvertState:!0,syncColormap:!0},t);return(0,o.createSynchronizer)(e,i.Enums.Events.VOI_MODIFIED,a.A,{auxiliaryEvents:[{name:i.Enums.Events.COLORMAP_MODIFIED}],...t})}},3889:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(70741),i=n(15327),a=n(53308);const{CAMERA_MODIFIED:r}=i.Enums.Events;function s(e){return(0,o.createSynchronizer)(e,r,a.A)}},45152:(e,t,n)=>{"use strict";n.d(t,{A:()=>x});var o=n(85817),i=n(15327),a=n(82056),r=n(2076),s=n(29601),l=n(44049),d=n(17328),c=n(85204),u=n(99737),h=n(60810),g=n(7001),p=n(58640),f=n(77081),m=n(3823),v=n(77609),w=n(52905),b=n(82216),E=n(44595);const{Events:I}=i.Enums,y=e=>e.uid!==e.referencedId;var _;!function(e){e.ShowZoomFactorsList="showZoomFactorsList"}(_||(_={}));const C=1-i.CONSTANTS.EPSILON;class x extends o.EC{static{this.Actions=_}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,magnifyingGlass:{radius:125,zoomFactor:3,zoomFactorList:[1.5,2,2.5,3,3.5,4,4.5,5],autoPan:{enabled:!0,padding:10}},actions:{showZoomFactorsList:{method:"showZoomFactorsList",bindings:[{mouseButton:u.MouseBindings.Secondary,modifierKey:u.KeyboardBindings.Shift}]}}}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,r=(0,i.getEnabledElement)(o),{viewport:s,renderingEngine:l}=r,d=n.world,c=n.canvas,{magnifyingGlass:u}=this.configuration,{radius:g,zoomFactor:f,autoPan:m}=u,v=this._getCanvasHandlePoints(c,g),w=s.getCamera(),{viewPlaneNormal:b,viewUp:E}=w,I=this.getReferencedImageId(s,d,b,E),y=i.utilities.uuidv4(),_=i.utilities.uuidv4(),C=s.getFrameOfReferenceUID(),x={annotationUID:y,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...b],viewUp:[...E],FrameOfReferenceUID:C,referencedImageId:I},data:{sourceViewportId:s.id,magnifyViewportId:_,zoomFactor:f,isCanvasAnnotation:!0,handles:{points:v,activeHandleIndex:null}}};this.magnifyViewportManager.createViewport(x,{magnifyViewportId:_,sourceEnabledElement:r,position:c,radius:g,zoomFactor:f,autoPan:{enabled:m.enabled,padding:m.padding,callback:e=>{const t=x.data.handles.points,{canvas:n}=e.delta;for(let e=0,o=t.length;e<o;e++){const o=t[e];o[0]+=n[0],o[1]+=n[1],x.invalidated=!0}}}}),(0,a.addAnnotation)(x,o);const S=(0,h.getViewportIdsWithToolToRender)(o,this.getToolName());return e.preventDefault(),(0,p.A)(S),x},this.onSetToolDisabled=()=>{this.magnifyViewportManager.dispose();(0,a.getAllAnnotations)().forEach((e=>{e.metadata.toolName===this.getToolName()&&(0,a.removeAnnotation)(e.annotationUID)}))},this.isPointNearTool=(e,t,n,o)=>{const{data:i}=t,{points:a}=i.handles,r=a,s=r[0],l=r[2],d=r[3],c=.5*Math.abs(l[1]-s[1]),u=[d[0]+c,s[1]+c],h=(0,f.getCanvasCircleRadius)([u,n]);return Math.abs(h-c)<2*o},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=(0,h.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},(0,g.hideElementCursor)(o),this._activateModify(o),(0,p.A)(i),e.preventDefault()},this.handleSelectedCallback=(e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;const{points:r}=a.handles,s=r.findIndex((e=>e===n)),l=(0,h.getViewportIdsWithToolToRender)(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:s},this._activateModify(i),(0,g.hideElementCursor)(i),(0,p.A)(l),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a}=this.editData,{data:r}=o;r.handles.activeHandleIndex=null,this._deactivateModify(n),(0,g.resetElementCursor)(n),this.editData=null,this.isDrawing=!1,(0,p.A)(i),a&&(0,l.triggerAnnotationCompleted)(o)},this._dragDrawCallback=e=>{this.isDrawing=!0;const t=e.detail,{deltaPoints:n}=t,o=n?.canvas??[0,0,0],{annotation:i,viewportIdsToRender:a}=this.editData,{points:r}=i.data.handles;r.forEach((e=>{e[0]+=o[0],e[1]+=o[1]})),i.invalidated=!0,this.editData.hasMoved=!0,(0,p.A)(a)},this._dragModifyCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a}=this.editData,{data:r}=o;if(void 0===a){const{deltaPoints:e}=t,n=e.canvas;r.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;(0,p.A)(i)},this._dragHandle=e=>{const t=e.detail,{annotation:n}=this.editData,{data:o}=n,{points:i}=o.handles,a=i,r=a[0],s=a[2],l=a[3],d=.5*Math.abs(s[1]-r[1]),c=[l[0]+d,r[1]+d],{currentPoints:u}=t,h=u.canvas,g=(0,f.getCanvasCircleRadius)([c,h]),p=this._getCanvasHandlePoints(c,g);i[0]=p[0],i[1]=p[1],i[2]=p[2],i[3]=p[3]},this.cancel=e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(e),(0,g.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,p.A)(n),o&&(0,l.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID},this._activateModify=e=>{c.wk.isInteractingWithTool=!0,e.addEventListener(u.Events.MOUSE_UP,this._endCallback),e.addEventListener(u.Events.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(u.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(u.Events.TOUCH_END,this._endCallback),e.addEventListener(u.Events.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(u.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{c.wk.isInteractingWithTool=!1,e.removeEventListener(u.Events.MOUSE_UP,this._endCallback),e.removeEventListener(u.Events.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(u.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(u.Events.TOUCH_END,this._endCallback),e.removeEventListener(u.Events.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(u.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let l=(0,a.getAnnotations)(this.getToolName(),i);if(!l?.length)return n;l=l?.filter((e=>e.data.sourceViewportId===o.id));const c=this.filterInteractableAnnotationsForElement(i,l);if(!c?.length)return n;const u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<c.length;e++){const i=c[e],{annotationUID:a,data:l}=i,{magnifyViewportId:h,zoomFactor:g,handles:p}=l,{points:f,activeHandleIndex:m}=p;u.annotationUID=a;this.getStyle("lineWidth",u,i),this.getStyle("lineDash",u,i);const v=this.getStyle("color",u,i),w=f,b=w[0],E=w[2],I=w[3],y=.5*Math.abs(E[1]-b[1]),_=[I[0]+y,b[1]+y];if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let C;if(!(0,s.isAnnotationVisible)(a))continue;if((0,r.isAnnotationLocked)(a)||this.editData||null===m||(C=[w[m]]),C){const e="0";(0,d.drawHandles)(t,a,e,C,{color:v})}const x=`${a}-advancedMagnify`,S="0";(0,d.drawCircle)(t,a,S,_,y,{color:v,lineWidth:5},x);const T=this.magnifyViewportManager.getViewport(h);T.position=_,T.radius=y,T.zoomFactor=g,T.update(),n=!0}return n},this._getCanvasHandlePoints=(e,t)=>[[e[0],e[1]-t,0],[e[0]+t,e[1],0],[e[0],e[1]+t,0],[e[0]-t,e[1],0]],this.magnifyViewportManager=S.getInstance()}showZoomFactorsList(e,t){const{element:n,currentPoints:o}=e.detail,a=(0,i.getEnabledElement)(n),{viewport:r}=a,{canvas:s}=o,l=n.querySelector(":scope .viewport-element"),d=t.data.zoomFactor,c=this._getZoomFactorsListDropdown(d,(e=>{void 0!==e&&(t.data.zoomFactor=Number.parseFloat(e),t.invalidated=!0),c.parentElement.removeChild(c),r.render()}));Object.assign(c.style,{left:`${s[0]}px`,top:`${s[1]}px`}),l.appendChild(c),c.focus()}_getZoomFactorsListDropdown(e,t){const{zoomFactorList:n}=this.configuration.magnifyingGlass,o=document.createElement("select");return o.size=5,Object.assign(o.style,{width:"50px",position:"absolute"}),["mousedown","mouseup","mousemove","click"].forEach((e=>{o.addEventListener(e,(e=>e.stopPropagation()))})),o.addEventListener("change",(e=>{e.stopPropagation(),t(o.value)})),o.addEventListener("keydown",(e=>{((e.keyCode??27===e.which)||"escape"===e.key?.toLowerCase())&&(e.stopPropagation(),t())})),n.forEach((t=>{const n=document.createElement("option");n.label=t,n.title=`Zoom factor ${t.toFixed(1)}`,n.value=t,n.defaultSelected=t===e,o.add(n)})),o}}class S{constructor(){this.createViewport=(e,t)=>{const{magnifyViewportId:n,sourceEnabledElement:o,position:i,radius:a,zoomFactor:r,autoPan:s}=t,{viewport:l}=o,{element:d}=l,c=new T({magnifyViewportId:n,sourceEnabledElement:o,radius:a,position:i,zoomFactor:r,autoPan:s});return this._addSourceElementEventListener(d),this._magnifyViewportsMap.set(c.viewportId,{annotation:e,magnifyViewport:c,magnifyViewportInfo:t}),c},this._annotationRemovedCallback=e=>{const{annotation:t}=e.detail;"AdvancedMagnify"===t.metadata.toolName&&this.destroyViewport(t.data.magnifyViewportId)},this._newStackImageCallback=e=>{const{viewportId:t,imageId:n}=e.detail,o=this._getMagnifyViewportsMapEntriesBySourceViewportId(t),{viewport:a}=(0,i.getEnabledElementByViewportId)(t);a.stackActorReInitialized&&this._reset(t),o.forEach((({annotation:e})=>{e.metadata.referencedImageId=n,e.invalidated=!0}))},this._newVolumeImageCallback=e=>{const{renderingEngineId:t,viewportId:n}=e.detail,o=(0,i.getRenderingEngine)(t).getViewport(n),{viewPlaneNormal:a}=o.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(n).forEach((({annotation:e})=>{const{viewPlaneNormal:t}=e.metadata;if(!(Math.abs(m.eR.dot(t,a))>C))return;const{handles:n}=e.data,i=o.canvasToWorld([0,0]),r=m.eR.sub(m.eR.create(),i,n.points[0]),s=m.eR.dot(r,a),l=m.eR.scale(m.eR.create(),a,s);for(let e=0,t=n.points.length;e<t;e++){const t=n.points[e];t[0]+=l[0],t[1]+=l[1],t[2]+=l[2]}e.invalidated=!0}))},this._magnifyViewportsMap=new Map,this._initialize()}static getInstance(){return S._singleton=S._singleton??new S,S._singleton}getViewport(e){return this._magnifyViewportsMap.get(e)?.magnifyViewport}dispose(){this._removeEventListeners(),this._destroyViewports()}destroyViewport(e){const t=this._magnifyViewportsMap.get(e);if(t){const{magnifyViewport:n}=t,{viewport:o}=n.sourceEnabledElement,{element:i}=o;this._removeSourceElementEventListener(i),n.dispose(),this._magnifyViewportsMap.delete(e)}}_destroyViewports(){Array.from(this._magnifyViewportsMap.keys()).forEach((e=>this.destroyViewport(e)))}_getMagnifyViewportsMapEntriesBySourceViewportId(e){return Array.from(this._magnifyViewportsMap.values()).filter((({magnifyViewport:t})=>{const{viewport:n}=t.sourceEnabledElement;return n.id===e}))}_reset(e){this._getMagnifyViewportsMapEntriesBySourceViewportId(e).forEach((({magnifyViewport:t,annotation:n,magnifyViewportInfo:o})=>{this.destroyViewport(t.viewportId);const a=(0,i.getEnabledElementByViewportId)(e);this.createViewport(n,{...o,sourceEnabledElement:{...a}})}))}_addEventListeners(){i.eventTarget.addEventListener(u.Events.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){i.eventTarget.removeEventListener(u.Events.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(I.STACK_NEW_IMAGE,this._newStackImageCallback);const t=e=>{const{viewportId:t}=e.detail;this._reset(t)};e.addEventListener(I.VIEWPORT_NEW_IMAGE_SET,t);const n=e=>{const{viewportId:t}=e.detail;this._reset(t)};e.addEventListener(I.VOLUME_VIEWPORT_NEW_VOLUME,n),e.addEventListener(I.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.newStackHandler=t,e.newVolumeHandler=n}_removeSourceElementEventListener(e){e.removeEventListener(I.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(I.VOLUME_NEW_IMAGE,this._newVolumeImageCallback),e.removeEventListener(I.VIEWPORT_NEW_IMAGE_SET,e.newStackHandler),e.removeEventListener(I.VOLUME_VIEWPORT_NEW_VOLUME,e.newVolumeHandler),delete e.newStackHandler,delete e.newVolumeHandler}_initialize(){this._addEventListeners()}}class T{constructor({magnifyViewportId:e,sourceEnabledElement:t,radius:n=125,position:o=[0,0],zoomFactor:a,autoPan:r}){this._enabledElement=null,this._sourceToolGroup=null,this._magnifyToolGroup=null,this._isViewportReady=!1,this._radius=0,this._resized=!1,this._canAutoPan=!1,this._viewportId=e??i.utilities.uuidv4(),this._sourceEnabledElement=t,this._autoPan=r,this.radius=n,this.position=o,this.zoomFactor=a,this.visible=!0,this._browserMouseDownCallback=this._browserMouseDownCallback.bind(this),this._browserMouseUpCallback=this._browserMouseUpCallback.bind(this),this._handleToolModeChanged=this._handleToolModeChanged.bind(this),this._mouseDragCallback=this._mouseDragCallback.bind(this),this._resizeViewportAsync=(0,w.A)(this._resizeViewport.bind(this),1),this._initialize()}get sourceEnabledElement(){return this._sourceEnabledElement}get viewportId(){return this._viewportId}get radius(){return this._radius}set radius(e){Math.abs(this._radius-e)>1e-5&&(this._radius=e,this._resized=!0)}update(){const{radius:e,position:t,visible:n}=this,{viewport:o}=this._enabledElement,{element:i}=o,a=2*e,[r,s]=t;this._resized&&(this._resizeViewportAsync(),this._resized=!1),Object.assign(i.style,{display:n?"block":"hidden",width:`${a}px`,height:`${a}px`,left:-e+"px",top:-e+"px",transform:`translate(${r}px, ${s}px)`}),this._isViewportReady&&(this._syncViewports(),o.render())}dispose(){const{viewport:e}=this._enabledElement,{element:t}=e,n=e.getRenderingEngine();this._removeEventListeners(t),n.disableElement(e.id),t.parentNode&&t.parentNode.removeChild(t)}_handleToolModeChanged(e){const{_magnifyToolGroup:t}=this,{toolGroupId:n,toolName:o,mode:i,toolBindingsOptions:a}=e.detail;if(this._sourceToolGroup?.id===n)switch(i){case u.ToolModes.Active:t.setToolActive(o,a);break;case u.ToolModes.Passive:t.setToolPassive(o);break;case u.ToolModes.Enabled:t.setToolEnabled(o);break;case u.ToolModes.Disabled:t.setToolDisabled(o);break;default:throw new Error(`Unknow tool mode (${i})`)}}_inheritBorderRadius(e){const t=e.querySelector(".viewport-element"),n=e.querySelector(".cornerstone-canvas");t.style.borderRadius="inherit",n.style.borderRadius="inherit"}_createViewportNode(){const e=document.createElement("div"),{radius:t}=this,n=2*t;return e.classList.add("advancedMagnifyTool"),Object.assign(e.style,{display:"block",width:`${n}px`,height:`${n}px`,position:"absolute",overflow:"hidden",borderRadius:"50%",boxSizing:"border-box",left:-t+"px",top:-t+"px",transform:"translate(-1000px, -1000px)"}),e}_convertZoomFactorToParallelScale(e,t,n){const{parallelScale:o}=e.getCamera();return o*(1/n)*(t.canvas.offsetWidth/e.canvas.offsetWidth)}_isStackViewport(e){return"setStack"in e}_isVolumeViewport(e){return"addVolumes"in e}_cloneToolGroups(e,t){const n=e.getActors(),i=`${t.id}-toolGroup`,a=(0,v.getToolGroupForViewport)(e.id,e.renderingEngineId),r=a.clone(i,(e=>{const t=a.getToolInstance(e);return t instanceof o.EC&&!(t instanceof x)}));return r.addViewport(t.id,t.renderingEngineId),n.filter(y).forEach((e=>{(0,E.addSegmentationRepresentations)(this.viewportId,[{segmentationId:e.referencedId,type:u.SegmentationRepresentations.Labelmap}])})),{sourceToolGroup:a,magnifyToolGroup:r}}_cloneStack(e,t){const n=e.getImageIds();t.setStack(n).then((()=>{this._isViewportReady=!0,this.update()}))}_cloneVolumes(e,t){const n=e.getActors().filter((e=>!y(e))).map((e=>({volumeId:e.uid})));return t.setVolumes(n).then((()=>{this._isViewportReady=!0,this.update()})),t}_cloneViewport(e,t){const{viewportId:n}=this,o=e.getRenderingEngine(),{options:i}=e,a={element:t,viewportId:n,type:e.type,defaultOptions:{...i}};o.enableElement(a);const r=o.getViewport(n);this._isStackViewport(e)?this._cloneStack(e,r):this._isVolumeViewport(e)&&this._cloneVolumes(e,r),this._inheritBorderRadius(t);const s=this._cloneToolGroups(e,r);this._sourceToolGroup=s.sourceToolGroup,this._magnifyToolGroup=s.magnifyToolGroup}_cancelMouseEventCallback(e){e.stopPropagation(),e.preventDefault()}_browserMouseUpCallback(e){const{element:t}=this._enabledElement.viewport;document.removeEventListener("mouseup",this._browserMouseUpCallback),t.addEventListener("mouseup",this._cancelMouseEventCallback),t.addEventListener("mousemove",this._cancelMouseEventCallback)}_browserMouseDownCallback(e){const{element:t}=this._enabledElement.viewport;this._canAutoPan=!!e.target?.closest(".advancedMagnifyTool"),document.addEventListener("mouseup",this._browserMouseUpCallback),t.removeEventListener("mouseup",this._cancelMouseEventCallback),t.removeEventListener("mousemove",this._cancelMouseEventCallback)}_mouseDragCallback(e){if(!c.wk.isInteractingWithTool)return;const{_autoPan:t}=this;if(!t.enabled||!this._canAutoPan)return;const{currentPoints:n}=e.detail,{viewport:o}=this._enabledElement,{canvasToWorld:i}=o,{canvas:a}=n,{radius:r}=this,s=[r,r],l=(0,b.distanceToPoint)(s,a),d=r-t.padding;if(l<=d)return;const u=l-d,h=m.Zc.sub(m.Zc.create(),a,s);m.Zc.normalize(h,h),m.Zc.scale(h,h,u);const g=m.Zc.add(m.Zc.create(),this.position,h),p=i(this.position),f=i(g),v=m.eR.sub(m.eR.create(),f,p),w={points:{currentPosition:{canvas:this.position,world:p},newPosition:{canvas:g,world:f}},delta:{canvas:h,world:v}};t.callback(w)}_addBrowserEventListeners(e){document.addEventListener("mousedown",this._browserMouseDownCallback,!0),e.addEventListener("mousedown",this._cancelMouseEventCallback),e.addEventListener("mouseup",this._cancelMouseEventCallback),e.addEventListener("mousemove",this._cancelMouseEventCallback),e.addEventListener("dblclick",this._cancelMouseEventCallback)}_removeBrowserEventListeners(e){document.removeEventListener("mousedown",this._browserMouseDownCallback,!0),document.removeEventListener("mouseup",this._browserMouseUpCallback),e.removeEventListener("mousedown",this._cancelMouseEventCallback),e.removeEventListener("mouseup",this._cancelMouseEventCallback),e.removeEventListener("mousemove",this._cancelMouseEventCallback),e.removeEventListener("dblclick",this._cancelMouseEventCallback)}_addEventListeners(e){i.eventTarget.addEventListener(u.Events.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(u.Events.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(u.Events.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){i.eventTarget.removeEventListener(u.Events.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(u.Events.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(u.Events.MOUSE_DRAG,this._mouseDragCallback),this._removeBrowserEventListeners(e)}_initialize(){const{_sourceEnabledElement:e}=this,{viewport:t}=e,{canvas:n}=t,o=this._createViewportNode();n.parentNode.appendChild(o),this._addEventListeners(o),this._cloneViewport(t,o),this._enabledElement=(0,i.getEnabledElement)(o)}_syncViewportsCameras(e,t){const n=e.canvasToWorld(this.position),o=this._convertZoomFactorToParallelScale(e,t,this.zoomFactor),{focalPoint:i,position:a,viewPlaneNormal:r}=t.getCamera(),s=Math.sqrt(Math.pow(i[0]-a[0],2)+Math.pow(i[1]-a[1],2)+Math.pow(i[2]-a[2],2)),l=[n[0],n[1],n[2]],d=[l[0]+s*r[0],l[1]+s*r[1],l[2]+s*r[2]];t.setCamera({parallelScale:o,focalPoint:l,position:d})}_syncStackViewports(e,t){t.setImageIdIndex(e.getCurrentImageIdIndex())}_syncViewports(){const{viewport:e}=this._sourceEnabledElement,{viewport:t}=this._enabledElement,n=e.getProperties();t.getImageData()&&(t.setProperties(n),this._syncViewportsCameras(e,t),this._isStackViewport(e)&&this._syncStackViewports(e,t),this._syncViewportsCameras(e,t),t.render())}_resizeViewport(){const{viewport:e}=this._enabledElement;e.getRenderingEngine().resize()}}x.toolName="AdvancedMagnify"},68760:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(85817),i=n(82056),a=n(17343),r=n(77609);class s extends o.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"]}){super(e,t),this.preMouseDownCallback=e=>this._deleteNearbyAnnotations(e,"mouse"),this.preTouchStartCallback=e=>this._deleteNearbyAnnotations(e,"touch")}_deleteNearbyAnnotations(e,t){const{renderingEngineId:n,viewportId:s,element:l,currentPoints:d}=e.detail,c=(0,r.getToolGroupForViewport)(s,n);if(!c)return!1;const u=c._toolInstances,h=[];for(const e in u){const n=u[e];if("function"!=typeof n.isPointNearTool||"function"!=typeof n.filterInteractableAnnotationsForElement)continue;const o=(0,i.getAnnotations)(e,l),a=n.filterInteractableAnnotationsForElement(l,o);if(a)for(const e of a)n.isPointNearTool(l,e,d.canvas,10,t)&&h.push(e.annotationUID)}for(const e of h){(0,a.setAnnotationSelected)(e);const t=(0,i.getAnnotation)(e);o.EC.createAnnotationMemo(l,t,{deleting:!0}),(0,i.removeAnnotation)(e)}return e.preventDefault(),!0}}s.toolName="Eraser";const l=s},14840:(e,t,n)=>{"use strict";n.d(t,{A:()=>A});var o=n(3823),i=n(84607),a=n(89265),r=n(85817),s=n(15327),l=n(77609),d=n(82056),c=n(17328),u=n(85204),h=n(99737),g=n(60810),p=n(7001),f=n(35381),m=n(15305),v=n(2076),w=n(58640);const{RENDERING_DEFAULTS:b}=s.CONSTANTS;function E(){return"rgb(0, 200, 0)"}function I(){return!0}function y(){return!0}function _(){return!0}const C=1,x=2,S=3;class T extends r.EC{constructor(e={},t={supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!1,viewportIndicatorsConfig:{radius:5,x:null,y:null},autoPan:{enabled:!1,panSize:10},handleRadius:3,enableHDPIHandles:!1,referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:s.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}}){super(e,t),this.toolCenter=[0,0,0],this.initializeViewport=({renderingEngineId:e,viewportId:t})=>{const n=(0,s.getEnabledElementByIds)(t,e);if(!n)return;const{FrameOfReferenceUID:o,viewport:i}=n,{element:a}=i,{position:r,focalPoint:l,viewPlaneNormal:c}=i.getCamera();let u=this._getAnnotations(n);u=this.filterInteractableAnnotationsForElement(a,u),u?.length&&(0,d.removeAnnotation)(u[0].annotationUID);const h={highlighted:!1,metadata:{cameraPosition:[...r],cameraFocalPoint:[...l],FrameOfReferenceUID:o,toolName:this.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:this.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:t}};return(0,d.addAnnotation)(h,a),{normal:c,point:i.canvasToWorld([i.canvas.clientWidth/2,i.canvas.clientHeight/2])}},this._getViewportsInfo=()=>(0,l.getToolGroup)(this.toolGroupId).viewportsInfo,this.resetCrosshairs=()=>{const e=this._getViewportsInfo();for(const t of e){const{viewportId:e,renderingEngineId:n}=t,o=(0,s.getEnabledElementByIds)(e,n),i=o.viewport,a=!0,r=!0,l=!0,c=!0,u=!0;i.resetCamera({resetPan:a,resetZoom:r,resetToCenter:l,resetRotation:c,suppressEvents:u}),i.resetSlabThickness();const{element:h}=i;let g=this._getAnnotations(o);g=this.filterInteractableAnnotationsForElement(h,g),g.length&&(0,d.removeAnnotation)(g[0].annotationUID),i.render()}this._computeToolCenter(e)},this.computeToolCenter=()=>{const e=this._getViewportsInfo();this._computeToolCenter(e)},this._computeToolCenter=e=>{if(!e.length||1===e.length)return void console.warn("For crosshairs to operate, at least two viewports must be given.");const[t,n,i]=e,{normal:a,point:r}=this.initializeViewport(t),{normal:l,point:d}=this.initializeViewport(n);let c=[0,0,0],u=o.eR.create();i?({normal:c,point:u}=this.initializeViewport(i)):(o.eR.add(u,r,d),o.eR.scale(u,u,.5),o.eR.cross(c,a,l));const h=s.utilities.planar.planeEquation(a,r),g=s.utilities.planar.planeEquation(l,d),p=s.utilities.planar.planeEquation(c,u),f=s.utilities.planar.threePlaneIntersection(h,g,p);this.setToolCenter(f)},this.addNewAnnotation=e=>{const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.world,a=(0,s.getEnabledElement)(n),{viewport:r}=a;this._jump(a,i);const l=this._getAnnotations(a),d=this.filterInteractableAnnotationsForElement(r.element,l),{data:c}=d[0],{rotationPoints:u}=c.handles,h=[];for(let e=0;e<u.length-1;++e){const t=u[e][1],n=this._getReferenceLineControllable(t.id),o=this._getReferenceLineDraggableRotatable(t.id);n&&o&&(h.push(t.id),e++)}return c.activeViewportIds=[...h],c.handles.activeOperation=C,e.preventDefault(),(0,p.hideElementCursor)(n),this._activateModify(n),d[0]},this.cancel=()=>{console.log("Not implemented yet")},this.handleSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0,this._activateModify(o),(0,p.hideElementCursor)(o),e.preventDefault()},this.isPointNearTool=(e,t,n,o)=>!!this._pointNearTool(e,t,n,6),this.toolSelectedCallback=(e,t,n)=>{const o=e.detail,{element:i}=o;t.highlighted=!0,this._activateModify(i),(0,p.hideElementCursor)(i),e.preventDefault()},this.onCameraModified=e=>{const t=e.detail,{element:n}=t,o=(0,s.getEnabledElement)(n),{renderingEngine:a}=o,r=o.viewport,d=this._getAnnotations(o),c=this.filterInteractableAnnotationsForElement(n,d)[0];if(!c)return;const u=r.getCamera(),p=c.metadata.cameraPosition,f=[0,0,0];i.Ay.subtract(u.position,p,f);const m=c.metadata.cameraFocalPoint,v=[0,0,0];i.Ay.subtract(u.focalPoint,m,v),c.metadata.cameraPosition=[...u.position],c.metadata.cameraFocalPoint=[...u.focalPoint];const b=this._getReferenceLineControllable(r.id),E=this._getReferenceLineDraggableRotatable(r.id);if(!s.utilities.isEqual(u.position,p,.001)&&b&&E){let e=!1;s.utilities.isEqual(f,v,.001)||(e=!0);const t=Math.abs(i.Ay.dot(f,u.viewPlaneNormal))<.01;e||t||(this.toolCenter[0]+=f[0],this.toolCenter[1]+=f[1],this.toolCenter[2]+=f[2],(0,s.triggerEvent)(s.eventTarget,h.Events.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter}))}if(this.configuration.autoPan?.enabled){(0,l.getToolGroupForViewport)(r.id,a.id).getViewportIds().filter((e=>e!==r.id)).forEach((e=>{this._autoPanViewportIfNecessary(e,a)}))}const I=(0,g.getViewportIdsWithToolToRender)(n,this.getToolName(),!1);(0,w.A)(I)},this.onResetCamera=e=>{this.resetCrosshairs()},this.mouseMoveCallback=(e,t)=>{const{element:n,currentPoints:o}=e.detail,i=o.canvas;let a=!1;for(let e=0;e<t.length;e++){const o=t[e];if((0,v.isAnnotationLocked)(o.annotationUID))continue;const{data:r,highlighted:s}=o;if(!r.handles)continue;const l=r.handles.activeOperation,d=r.activeViewportIds&&r.activeViewportIds.length>0?[...r.activeViewportIds]:[];r.activeViewportIds=[],r.handles.activeOperation=null;let c=!1;c=!!this.getHandleNearImagePoint(n,o,i,6)||this._pointNearTool(n,o,i,6);c&&!s||!c&&s?(o.highlighted=!s,a=!0):r.handles.activeOperation===l&&this._areViewportIdArraysEqual(r.activeViewportIds,d)||(a=!0)}return a},this.filterInteractableAnnotationsForElement=(e,t)=>{if(!t||!t.length)return[];const n=(0,s.getEnabledElement)(e),{viewportId:o}=n;return t.filter((e=>e.data.viewportId===o))},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:r,renderingEngine:s}=e,{element:l}=r,d=this._getAnnotations(e),u=r.getCamera(),h=this.filterInteractableAnnotationsForElement(l,d)[0];if(!d?.length||!h?.data)return n;const g=h.annotationUID,{clientWidth:p,clientHeight:m}=r.canvas,v=Math.sqrt(p*p+m*m),w=Math.min(p,m),b=h.data,E=r.worldToCanvas(this.toolCenter),I=this._filterAnnotationsByUniqueViewportOrientations(e,d),y=[],_=[0,0,p,m];I.forEach((e=>{const{data:t}=e;t.handles.toolCenter=this.toolCenter;const n=s.getViewport(t.viewportId),l=n.getCamera(),d=this._getReferenceLineControllable(n.id),c=this._getReferenceLineDraggableRotatable(n.id),h=this._getReferenceLineSlabThicknessControlsOn(n.id),{clientWidth:g,clientHeight:p}=n.canvas,m=Math.sqrt(g*g+p*p),b=[.5*g,.5*p],C=n.canvasToWorld(b),x=[0,0,0];i.Ay.cross(u.viewPlaneNormal,l.viewPlaneNormal,x),i.Ay.normalize(x),i.Ay.multiplyScalar(x,m);const S=[0,0,0];i.Ay.add(C,x,S);const T=[0,0,0];i.Ay.subtract(C,x,T);const A=r.worldToCanvas(S),D=r.worldToCanvas(C),M=o.Zc.create();o.Zc.subtract(M,A,D),o.Zc.normalize(M,M);const R=o.Zc.create();o.Zc.scale(R,M,100*v);const P=o.Zc.create();o.Zc.scale(P,M,.4*w);const O=o.Zc.create();o.Zc.scale(O,M,.2*w);const k=o.Zc.create(),L=this.configuration.referenceLinesCenterGapRadius;o.Zc.scale(k,M,2===I.length?L:0);const U=o.Zc.create(),N=o.Zc.create(),V=o.Zc.create(),B=o.Zc.create();let F=o.Zc.clone(E);c&&d||(F=o.Zc.clone(D)),o.Zc.add(U,F,k),o.Zc.add(N,F,R),o.Zc.subtract(V,F,k),o.Zc.subtract(B,F,R),(0,f.A)(U,N,_),(0,f.A)(V,B,_);const W=o.Zc.create();o.Zc.subtract(W,E,P);const H=o.Zc.create();o.Zc.add(H,E,P);let j=o.Zc.clone(E);!c&&h&&(j=o.Zc.clone(D));let G=[...this.toolCenter];!c&&h&&(G=[...C]);const z=[0,0,0];i.Ay.subtract(S,T,z),i.Ay.normalize(z);const{viewPlaneNormal:$}=u,{matrix:q}=a.A.buildFromDegree().rotate(90,$),K=[0,0,0];o.eR.transformMat4(K,z,q);const Z=n.getSlabThickness(),J=[...K];i.Ay.multiplyScalar(J,Z);const Y=[0,0,0];i.Ay.add(G,J,Y);const X=r.worldToCanvas(Y),Q=o.Zc.create();o.Zc.subtract(Q,j,X);const ee=o.Zc.create();o.Zc.subtract(ee,j,R),o.Zc.add(ee,ee,Q);const te=o.Zc.create();o.Zc.add(te,j,R),o.Zc.add(te,te,Q),(0,f.A)(ee,te,_);const ne=o.Zc.create();o.Zc.add(ne,j,R),o.Zc.subtract(ne,ne,Q);const oe=o.Zc.create();o.Zc.subtract(oe,j,R),o.Zc.subtract(oe,oe,Q),(0,f.A)(ne,oe,_);const ie=o.Zc.create(),ae=o.Zc.create(),re=o.Zc.create(),se=o.Zc.create();o.Zc.subtract(ie,j,O),o.Zc.add(ie,ie,Q),o.Zc.add(ae,j,O),o.Zc.add(ae,ae,Q),o.Zc.subtract(re,j,O),o.Zc.subtract(re,re,Q),o.Zc.add(se,j,O),o.Zc.subtract(se,se,Q),y.push([n,U,N,V,B,ee,te,ne,oe,W,H,ie,ae,re,se])}));const T=[],A=[],D=this._getReferenceLineColor(r.id),M=void 0!==D?D:"rgb(200, 200, 200)";if(y.forEach(((e,n)=>{const o=e[0],i=this._getReferenceLineColor(o.id),a=this._getReferenceLineControllable(o.id),s=this._getReferenceLineDraggableRotatable(o.id)||this.configuration.mobile?.enabled,l=this._getReferenceLineSlabThicknessControlsOn(o.id)||this.configuration.mobile?.enabled,d=b.activeViewportIds.find((e=>e===o.id));let u=void 0!==i?i:"rgb(200, 200, 200)",h=1;const p=null!==b.handles.activeOperation&&b.handles.activeOperation===C&&d;p&&(h=2.5);let f=`${n}`;if(a&&s?(f=`${n}One`,(0,c.drawLine)(t,g,f,e[1],e[2],{color:u,lineWidth:h}),f=`${n}Two`,(0,c.drawLine)(t,g,f,e[3],e[4],{color:u,lineWidth:h})):(0,c.drawLine)(t,g,f,e[2],e[4],{color:u,lineWidth:h}),a){u=void 0!==i?i:"rgb(200, 200, 200)";const a=b.handles.activeOperation===x,h=[e[9],e[10]],m=[r.canvasToWorld(e[9]),o,e[1],e[2]],v=[r.canvasToWorld(e[10]),o,e[3],e[4]];T.push(m,v);const w=b.handles.activeOperation===S,E=[e[11],e[12],e[13],e[14]],I=[r.canvasToWorld(e[11]),o,e[5],e[6]],y=[r.canvasToWorld(e[12]),o,e[5],e[6]],_=[r.canvasToWorld(e[13]),o,e[7],e[8]],C=[r.canvasToWorld(e[14]),o,e[7],e[8]];A.push(I,y,_,C);let D=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1),M=1;if(this.configuration.mobile?.enabled&&(D=this.configuration.mobile.handleRadius,M=this.configuration.mobile.opacity),(p||this.configuration.mobile?.enabled)&&!a&&!w&&s&&l){let e=`${n}One`;(0,c.drawHandles)(t,g,e,h,{color:u,handleRadius:D,opacity:M,type:"circle"}),e=`${n}Two`,(0,c.drawHandles)(t,g,e,E,{color:u,handleRadius:D,opacity:M,type:"rect"})}else if(p&&!a&&!w&&s){const e=`${n}`;(0,c.drawHandles)(t,g,e,h,{color:u,handleRadius:D,opacity:M,type:"circle"})}else if(d&&!a&&!w&&l){const e=`${n}`;(0,c.drawHandles)(t,g,e,E,{color:u,handleRadius:D,opacity:M,type:"rect"})}else if(a&&s){const e=`${n}`,o=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);(0,c.drawHandles)(t,g,e,h,{color:u,handleRadius:o,fill:u,type:"circle"})}else if(w&&d&&l){const e=this.configuration.handleRadius*(this.configuration.enableHDPIHandles?window.devicePixelRatio:1);(0,c.drawHandles)(t,g,f,E,{color:u,handleRadius:e,fill:u,type:"rect"})}o.getSlabThickness()>.5&&l&&(f=`${n}STOne`,(0,c.drawLine)(t,g,f,e[5],e[6],{color:u,width:1,lineDash:[2,3]}),f=`${n}STTwo`,(0,c.drawLine)(t,g,f,e[7],e[8],{color:u,width:e,lineDash:[2,3]}))}})),n=!0,b.handles.rotationPoints=T,b.handles.slabThicknessPoints=A,this.configuration.viewportIndicators){const{viewportIndicatorsConfig:e}=this.configuration,n=[p*(e?.xOffset||.95),m*(e?.yOffset||.05)],o=e?.circleRadius||.01*v,i="0";(0,c.drawCircle)(t,g,i,n,o,{color:M,fill:M})}return n},this._getAnnotations=e=>{const{viewport:t}=e,n=(0,d.getAnnotations)(this.getToolName(),t.element)||[],o=this._getViewportsInfo().map((({viewportId:e})=>e));return n.filter((e=>{const{data:t}=e;return o.includes(t.viewportId)}))},this._onNewVolume=()=>{const e=this._getViewportsInfo();this._computeToolCenter(e)},this._areViewportIdArraysEqual=(e,t)=>e.length===t.length&&(e.forEach((e=>{let n=!1;for(let o=0;o<t.length;++o)if(e===t[o]){n=!0;break}if(!1===n)return!1})),!0),this._getAnnotationsForViewportsWithDifferentCameras=(e,t)=>{const{viewportId:n,renderingEngine:o,viewport:i}=e,a=t.filter((e=>e.data.viewportId!==n));if(!a||!a.length)return[];const r=i.getCamera(),{viewPlaneNormal:l,position:d}=r,c=a.filter((e=>{const{viewportId:t}=e.data,n=o.getViewport(t).getCamera();return!(s.utilities.isEqual(n.viewPlaneNormal,l,.01)&&s.utilities.isEqual(n.position,d,1))}));return c},this._filterViewportWithSameOrientation=(e,t,n)=>{const{renderingEngine:o}=e,{data:a}=t,r=o.getViewport(a.viewportId),l=n.filter((e=>{const{data:t}=e,n=o.getViewport(t.viewportId);return!0===this._getReferenceLineControllable(n.id)}));if(!l||!l.length)return[];const d=r.getCamera(),c=d.viewPlaneNormal;i.Ay.normalize(c);return l.filter((e=>{const{viewportId:t}=e.data,n=o.getViewport(t).getCamera(),a=n.viewPlaneNormal;return i.Ay.normalize(a),s.utilities.isEqual(c,a,.01)&&s.utilities.isEqual(d.viewUp,n.viewUp,.01)}))},this._filterAnnotationsByUniqueViewportOrientations=(e,t)=>{const{renderingEngine:n,viewport:o}=e,a=o.getCamera().viewPlaneNormal;i.Ay.normalize(a);const r=t.filter((e=>{const{data:t}=e,i=n.getViewport(t.viewportId),a=this._getReferenceLineControllable(i.id);return o!==i&&!0===a})),l=[];for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,d=n.getViewport(o).getCamera(),c=d.viewPlaneNormal;if(i.Ay.normalize(c),s.utilities.isEqual(a,c,.01)||s.utilities.isOpposite(a,c,.01))continue;let u=!1;for(let e=0;e<l.length;++e){const t=l[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();s.utilities.isEqual(i.viewPlaneNormal,d.viewPlaneNormal,.01)&&s.utilities.isEqual(i.position,d.position,1)&&(u=!0)}u||l.push(t)}const d=t.filter((e=>{const{data:t}=e,i=n.getViewport(t.viewportId),a=this._getReferenceLineControllable(i.id);return o!==i&&!0!==a}));for(let e=0;e<d.length;++e){const t=d[e],{viewportId:o}=t.data,r=n.getViewport(o).getCamera(),c=r.viewPlaneNormal;if(i.Ay.normalize(c),s.utilities.isEqual(a,c,.01)||s.utilities.isOpposite(a,c,.01))continue;let u=!1;for(let e=0;e<l.length;++e){const t=l[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();s.utilities.isEqual(i.viewPlaneNormal,r.viewPlaneNormal,.01)&&s.utilities.isEqual(i.position,r.position,1)&&(u=!0)}u||l.push(t)}const c=this._getAnnotationsForViewportsWithDifferentCameras(e,t);for(let e=0;e<c.length;++e){const t=c[e];if(l.some((e=>e===t)))continue;const{viewportId:o}=t.data,r=n.getViewport(o).getCamera(),d=r.viewPlaneNormal;if(i.Ay.normalize(d),s.utilities.isEqual(a,d,.01)||s.utilities.isOpposite(a,d,.01))continue;let u=!1;for(let e=0;e<l.length;++e){const t=l[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();s.utilities.isEqual(i.viewPlaneNormal,r.viewPlaneNormal,.01)&&s.utilities.isEqual(i.position,r.position,1)&&(u=!0)}u||l.push(t)}return l},this._checkIfViewportsRenderingSameScene=(e,t)=>{const n=e.getAllVolumeIds(),o=t.getAllVolumeIds();return n.length===o.length&&n.every((e=>o.includes(e)))},this._jump=(e,t)=>{u.wk.isInteractingWithTool=!0;const{viewport:n,renderingEngine:o}=e,a=this._getAnnotations(e),r=[0,0,0];i.Ay.subtract(t,this.toolCenter,r);const s=this._getAnnotationsForViewportsWithDifferentCameras(e,a).filter((e=>{const{data:t}=e,i=o.getViewport(t.viewportId),a=this._checkIfViewportsRenderingSameScene(n,i);return this._getReferenceLineControllable(i.id)&&this._getReferenceLineDraggableRotatable(i.id)&&a}));return 0===s.length?(u.wk.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(o,s,r),u.wk.isInteractingWithTool=!1,!0)},this._activateModify=e=>{u.wk.isInteractingWithTool=!this.configuration.mobile?.enabled,e.addEventListener(h.Events.MOUSE_UP,this._endCallback),e.addEventListener(h.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(h.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(h.Events.TOUCH_END,this._endCallback),e.addEventListener(h.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(h.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{u.wk.isInteractingWithTool=!1,e.removeEventListener(h.Events.MOUSE_UP,this._endCallback),e.removeEventListener(h.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(h.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(h.Events.TOUCH_END,this._endCallback),e.removeEventListener(h.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(h.Events.TOUCH_TAP,this._endCallback)},this._endCallback=e=>{const t=e.detail,{element:n}=t;this.editData.annotation.data.handles.activeOperation=null,this.editData.annotation.data.activeViewportIds=[],this._deactivateModify(n),(0,p.resetElementCursor)(n),this.editData=null;const o=(0,g.getViewportIdsWithToolToRender)(n,this.getToolName(),!1);(0,w.A)(o)},this._dragCallback=e=>{const t=e.detail,n=t.deltaPoints.world;if(Math.abs(n[0])<.001&&Math.abs(n[1])<.001&&Math.abs(n[2])<.001)return;const{element:r}=t,d=(0,s.getEnabledElement)(r),{renderingEngine:c,viewport:u}=d,h=this._getAnnotations(d),g=this.filterInteractableAnnotationsForElement(r,h)[0];if(!g)return;const{handles:p}=g.data,{currentPoints:f}=e.detail,m=f.canvas;if(p.activeOperation===C){const e=this._getAnnotationsForViewportsWithDifferentCameras(d,h).filter((e=>{const{data:t}=e,n=c.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineDraggableRotatable(n.id);return!0===o&&!0===i&&g.data.activeViewportIds.find((e=>e===n.id))}));this._applyDeltaShiftToSelectedViewportCameras(c,e,n)}else if(p.activeOperation===x){const e=this._getAnnotationsForViewportsWithDifferentCameras(d,h).filter((e=>{const{data:t}=e,n=c.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineDraggableRotatable(n.id);return!0===o&&!0===i})),n=o.Zc.create(),i=o.Zc.create(),r=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],s=u.worldToCanvas(r),l=t.currentPoints.canvas,g=o.Zc.create();o.Zc.sub(g,l,t.deltaPoints.canvas),o.Zc.sub(n,g,s),o.Zc.sub(i,l,s);let p=o.Zc.angle(n,i);this._isClockWise(s,g,l)&&(p*=-1),p=Math.round(100*p)/100;const f=u.getCamera().viewPlaneNormal,{matrix:m}=a.A.buildFromRadian().translate(r[0],r[1],r[2]).rotate(p,f).translate(-r[0],-r[1],-r[2]),v=[];e.forEach((e=>{const{data:t}=e;t.handles.toolCenter=r;const n=c.getViewport(t.viewportId),i=n.getCamera(),{viewUp:a,position:s,focalPoint:l}=i;a[0]+=s[0],a[1]+=s[1],a[2]+=s[2],o.eR.transformMat4(l,l,m),o.eR.transformMat4(s,s,m),o.eR.transformMat4(a,a,m),a[0]-=s[0],a[1]-=s[1],a[2]-=s[2],n.setCamera({position:s,viewUp:a,focalPoint:l}),v.push(n.id)})),c.renderViewports(v)}else if(p.activeOperation===S){const e=this._getAnnotationsForViewportsWithDifferentCameras(d,h).filter((e=>{const{data:t}=e,n=c.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineSlabThicknessControlsOn(n.id);return!0===o&&!0===i&&g.data.activeViewportIds.find((e=>e===n.id))}));if(0===e.length)return;const a=this._filterViewportWithSameOrientation(d,e[0],h),r=[];r.push(u.id),a.forEach((e=>{const{data:a}=e,d=c.getViewport(a.viewportId),h=d.getCamera().viewPlaneNormal,p=i.Ay.dot(n,h),f=[...h];if(i.Ay.multiplyScalar(f,p),Math.abs(f[0])>.001||Math.abs(f[1])>.001||Math.abs(f[2])>.001){const e=Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2]),n=t.lastPoints.world,a=[0,0,0],p=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(d.id)){const{rotationPoints:e}=this.editData.annotation.data.handles,t=e.filter((e=>e[1].uid===d.id));if(2===t.length){const e=u.canvasToWorld(t[0][3]),n=u.canvasToWorld(t[1][3]);i.Ay.add(e,n,p),i.Ay.multiplyScalar(p,.5)}}i.Ay.subtract(n,p,a);const v=i.Ay.dot(a,h),w=[...h];i.Ay.multiplyScalar(w,v);const E=[w[0],w[1],w[2]];o.eR.normalize(E,E);const I=[f[0],f[1],f[2]];o.eR.normalize(I,I);let y=d.getSlabThickness();s.utilities.isOpposite(E,I,.001)?y-=e:y+=e,y=Math.abs(y),y=Math.max(b.MINIMUM_SLAB_THICKNESS,y);this._pointNearReferenceLine(g,m,6,d)&&(y=b.MINIMUM_SLAB_THICKNESS);(0,l.getToolGroupForViewport)(d.id,c.id).getToolInstance(this.getToolName()).setSlabThickness(d,y),r.push(d.id)}})),c.renderViewports(r)}},this._pointNearReferenceLine=(e,t,n,o)=>{const{data:i}=e,{rotationPoints:a}=i.handles;for(let e=0;e<a.length-1;++e){const i=a[e][1];if(i.id!==o.id)continue;if(!this._getReferenceLineControllable(i.id))continue;const r={start:{x:a[e][2][0],y:a[e][2][1]},end:{x:a[e][3][0],y:a[e][3][1]}},s=m.distanceToPoint([r.start.x,r.start.y],[r.end.x,r.end.y],[t[0],t[1]]),l={start:{x:a[e+1][2][0],y:a[e+1][2][1]},end:{x:a[e+1][3][0],y:a[e+1][3][1]}},d=m.distanceToPoint([l.start.x,l.start.y],[l.end.x,l.end.y],[t[0],t[1]]);if(s<=n||d<=n)return!0;e++}return!1},this._getReferenceLineColor=e.configuration?.getReferenceLineColor||E,this._getReferenceLineControllable=e.configuration?.getReferenceLineControllable||I,this._getReferenceLineDraggableRotatable=e.configuration?.getReferenceLineDraggableRotatable||y,this._getReferenceLineSlabThicknessControlsOn=e.configuration?.getReferenceLineSlabThicknessControlsOn||_}onSetToolActive(){const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this._computeToolCenter(e)}onSetToolPassive(){const e=this._getViewportsInfo();this._computeToolCenter(e)}onSetToolEnabled(){const e=this._getViewportsInfo();this._computeToolCenter(e)}onSetToolDisabled(){const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),e.forEach((({renderingEngineId:e,viewportId:t})=>{const n=(0,s.getEnabledElementByIds)(t,e);if(!n)return;const o=this._getAnnotations(n);o?.length&&o.forEach((e=>{(0,d.removeAnnotation)(e.annotationUID)}))}))}setToolCenter(e,t=!1){this.toolCenter=e;const n=this._getViewportsInfo();(0,w.A)(n.map((({viewportId:e})=>e))),t||(0,s.triggerEvent)(s.eventTarget,h.Events.CROSSHAIR_TOOL_CENTER_CHANGED,{toolGroupId:this.toolGroupId,toolCenter:this.toolCenter})}getHandleNearImagePoint(e,t,n,o){const i=(0,s.getEnabledElement)(e),{viewport:a}=i;let r=this._getRotationHandleNearImagePoint(a,t,n,o);return null!==r?r:(r=this._getSlabThicknessHandleNearImagePoint(a,t,n,o),null!==r?r:void 0)}_unsubscribeToViewportNewVolumeSet(e){e.forEach((({viewportId:e,renderingEngineId:t})=>{const{viewport:n}=(0,s.getEnabledElementByIds)(e,t),{element:o}=n;o.removeEventListener(s.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)}))}_subscribeToViewportNewVolumeSet(e){e.forEach((({viewportId:e,renderingEngineId:t})=>{const{viewport:n}=(0,s.getEnabledElementByIds)(e,t),{element:o}=n;o.addEventListener(s.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)}))}_autoPanViewportIfNecessary(e,t){const n=t.getViewport(e),{clientWidth:o,clientHeight:i}=n.canvas,a=n.worldToCanvas(this.toolCenter),r=this.configuration.autoPan.panSize,s=[a[0],a[1]];if(a[0]<0?s[0]=r:a[0]>o&&(s[0]=o-r),a[1]<0?s[1]=r:a[1]>i&&(s[1]=i-r),s[0]===a[0]&&s[1]===a[1])return;const l=n.canvasToWorld(s),d=[l[0]-this.toolCenter[0],l[1]-this.toolCenter[1],l[2]-this.toolCenter[2]],c=n.getCamera(),{focalPoint:u,position:h}=c,g=[h[0]-d[0],h[1]-d[1],h[2]-d[2]],p=[u[0]-d[0],u[1]-d[1],u[2]-d[2]];n.setCamera({focalPoint:p,position:g}),n.render()}setSlabThickness(e,t){let n;const{filterActorUIDsToSetSlabThickness:o}=this.configuration;o&&o.length>0&&(n=o);let i=this.configuration.slabThicknessBlendMode;t===b.MINIMUM_SLAB_THICKNESS&&(i=s.Enums.BlendModes.COMPOSITE);e.setBlendMode(i,n,!1),e.setSlabThickness(t,n)}_isClockWise(e,t,n){return(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0])>0}_applyDeltaShiftToSelectedViewportCameras(e,t,n){t.forEach((t=>{this._applyDeltaShiftToViewportCamera(e,t,n)}))}_applyDeltaShiftToViewportCamera(e,t,n){const{data:o}=t,a=e.getViewport(o.viewportId),r=a.getCamera(),s=r.viewPlaneNormal,l=i.Ay.dot(n,s),d=[...s];if(i.Ay.multiplyScalar(d,l),Math.abs(d[0])>.001||Math.abs(d[1])>.001||Math.abs(d[2])>.001){const e=[0,0,0],t=[0,0,0];i.Ay.add(r.focalPoint,d,e),i.Ay.add(r.position,d,t),a.setCamera({focalPoint:e,position:t}),a.render()}}_getRotationHandleNearImagePoint(e,t,n,i){const{data:a}=t,{rotationPoints:r}=a.handles;for(let s=0;s<r.length;s++){const l=r[s][0],d=r[s][1];if(!this._getReferenceLineControllable(d.id))continue;if(!this._getReferenceLineDraggableRotatable(d.id))continue;const c=e.worldToCanvas(l);if(o.Zc.distance(n,c)<i)return a.handles.activeOperation=x,this.editData={annotation:t},l}return null}_getSlabThicknessHandleNearImagePoint(e,t,n,i){const{data:a}=t,{slabThicknessPoints:r}=a.handles;for(let s=0;s<r.length;s++){const l=r[s][0],d=r[s][1];if(!this._getReferenceLineControllable(d.id))continue;if(!this._getReferenceLineSlabThicknessControlsOn(d.id))continue;const c=e.worldToCanvas(l);if(o.Zc.distance(n,c)<i)return a.handles.activeOperation=S,a.activeViewportIds=[d.id],this.editData={annotation:t},l}return null}_pointNearTool(e,t,n,i){const a=(0,s.getEnabledElement)(e),{viewport:r}=a,{clientWidth:l,clientHeight:d}=r.canvas,c=Math.sqrt(l*l+d*d),{data:u}=t,{rotationPoints:h}=u.handles,{slabThicknessPoints:g}=u.handles,p=[];for(let e=0;e<h.length-1;++e){const t=h[e][1],o=this._getReferenceLineControllable(t.id),a=this._getReferenceLineDraggableRotatable(t.id);if(!o||!a)continue;const r={start:{x:h[e][2][0],y:h[e][2][1]},end:{x:h[e][3][0],y:h[e][3][1]}},s=m.distanceToPoint([r.start.x,r.start.y],[r.end.x,r.end.y],[n[0],n[1]]),l={start:{x:h[e+1][2][0],y:h[e+1][2][1]},end:{x:h[e+1][3][0],y:h[e+1][3][1]}},d=m.distanceToPoint([l.start.x,l.start.y],[l.end.x,l.end.y],[n[0],n[1]]);(s<=i||d<=i)&&(p.push(t.id),u.handles.activeOperation=C),e++}for(let e=0;e<g.length-1;++e){const t=g[e][1];if(p.find((e=>e===t.id)))continue;const a=this._getReferenceLineControllable(t.id),r=this._getReferenceLineSlabThicknessControlsOn(t.id);if(!a||!r)continue;const s=g[e][2],l=g[e][3],d=o.Zc.create();o.Zc.add(d,s,l),o.Zc.scale(d,d,.5);const h=o.Zc.create();o.Zc.subtract(h,s,d),o.Zc.normalize(h,h);const f=o.Zc.create();o.Zc.scale(f,h,.05*c);const v=o.Zc.create(),w=o.Zc.create();o.Zc.add(v,d,f),o.Zc.subtract(w,d,f);const b={start:{x:v[0],y:v[1]},end:{x:s[0],y:s[1]}},E=m.distanceToPoint([b.start.x,b.start.y],[b.end.x,b.end.y],[n[0],n[1]]),I={start:{x:w[0],y:w[1]},end:{x:l[0],y:l[1]}},y=m.distanceToPoint([I.start.x,I.start.y],[I.end.x,I.end.y],[n[0],n[1]]);(E<=i||y<=i)&&(p.push(t.id),u.handles.activeOperation=null),e++}return u.activeViewportIds=[...p],this.editData={annotation:t},u.handles.activeOperation===C}}T.toolName="Crosshairs";const A=T},66944:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(85817),i=n(15327),a=n(13165),r=n(77609);class s extends o.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}){super(e,t)}mouseClickCallback(e){const{element:t,currentPoints:n}=e.detail,o=(0,i.getEnabledElement)(t),{viewport:s,renderingEngine:l}=o,d=s.getVolumeId();if(!d)throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");let c=-1/0;const u=(0,a.getPointInLineOfSightWithCriteria)(s,n.world,d,((e,t)=>{if(e>c)return c=e,t}));if(!u||!u.length)return;const{targetViewportIds:h,toolGroupId:g}=this.configuration;l.getViewports().filter((e=>{if(h?.indexOf(e.id)>=0)return!0;const t=(0,r.getToolGroupForViewport)(e.id,l.id);return!(!g||g!==t?.id)})).forEach((e=>{e instanceof i.VolumeViewport?e.jumpToWorld(u):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")}))}}s.toolName="MIPJumpToClickTool";const l=s},72674:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var o=n(85817),i=n(99737),a=n(15327),r=n(60810),s=n(58640),l=n(85204),d=n(7001);const c="magnify-viewport";class u extends o.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}}){super(e,t),this._hasBeenRemoved=!1,this.preMouseDownCallback=e=>{const t=e.detail,{element:n,currentPoints:o}=t,i=(0,a.getEnabledElement)(n),{viewport:l,renderingEngine:c}=i;if(!(l instanceof a.StackViewport))throw new Error("MagnifyTool only works on StackViewports");const u=this._getReferencedImageId(l);if(!u)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");const h=(0,r.getViewportIdsWithToolToRender)(n,this.getToolName());return this.editData={referencedImageId:u,viewportIdsToRender:h,enabledElement:i,renderingEngine:c,currentPoints:o},this._createMagnificationViewport(),this._activateDraw(n),(0,d.hideElementCursor)(n),e.preventDefault(),(0,s.A)(h),!0},this.preTouchStartCallback=e=>{this.preMouseDownCallback(e)},this._createMagnificationViewport=()=>{const{enabledElement:e,referencedImageId:t,viewportIdsToRender:n,renderingEngine:o,currentPoints:i}=this.editData,{viewport:r}=e,{element:l}=r,d=r.getProperties(),{rotation:u}=r.getViewPresentation(),{canvas:h,world:g}=i;let p;if(p=l.querySelector(".magnifyTool"),null===p){const e=document.createElement("div");e.classList.add("magnifyTool"),e.style.display="block",e.style.width=`${this.configuration.magnifyWidth}px`,e.style.height=`${this.configuration.magnifyHeight}px`,e.style.position="absolute",p=e;l.querySelector(".viewport-element").appendChild(e);const t={viewportId:c,type:a.Enums.ViewportType.STACK,element:p};o.enableElement(t)}p.style.top=h[1]-this.configuration.magnifyHeight/2+"px",p.style.left=h[0]-this.configuration.magnifyWidth/2+"px";const f=o.getViewport(c);f.setStack([t]).then((()=>{if(this._hasBeenRemoved)return;f.setProperties(d),f.setViewPresentation({rotation:u});const{parallelScale:e}=r.getCamera(),{focalPoint:t,position:n,viewPlaneNormal:o}=f.getCamera(),i=Math.sqrt(Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2)+Math.pow(t[2]-n[2],2)),a=[g[0],g[1],g[2]],s=[a[0]+i*o[0],a[1]+i*o[1],a[2]+i*o[2]];f.setCamera({parallelScale:e*(1/this.configuration.magnifySize),focalPoint:a,position:s}),f.render()})),p.style.display="block",(0,s.A)(n)},this._dragCallback=e=>{const t=e.detail,{deltaPoints:n,element:o,currentPoints:i}=t,r=n.world,s=i.canvas,l=(0,a.getEnabledElement)(o),{renderingEngine:d}=l,u=d.getViewport(c),h=o.querySelector(".magnifyTool");if(!h)return;h.style.top=s[1]-this.configuration.magnifyHeight/2+"px",h.style.left=s[0]-this.configuration.magnifyWidth/2+"px";const{focalPoint:g,position:p}=u.getCamera(),f=[p[0]+r[0],p[1]+r[1],p[2]+r[2]],m=[g[0]+r[0],g[1]+r[1],g[2]+r[2]];u.setCamera({focalPoint:m,position:f}),u.render()},this._dragEndCallback=e=>{const{element:t}=e.detail,n=(0,a.getEnabledElement)(t),{renderingEngine:o}=n;o.disableElement(c);const i=t.querySelector(".viewport-element"),r=i.querySelector(".magnifyTool");i.removeChild(r),this._deactivateDraw(t),(0,d.resetElementCursor)(t),this._hasBeenRemoved=!0},this._activateDraw=e=>{l.wk.isInteractingWithTool=!0,this._hasBeenRemoved=!1,e.addEventListener(i.Events.MOUSE_UP,this._dragEndCallback),e.addEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(i.Events.MOUSE_CLICK,this._dragEndCallback),e.addEventListener(i.Events.TOUCH_END,this._dragEndCallback),e.addEventListener(i.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{l.wk.isInteractingWithTool=!1,e.removeEventListener(i.Events.MOUSE_UP,this._dragEndCallback),e.removeEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(i.Events.MOUSE_CLICK,this._dragEndCallback),e.removeEventListener(i.Events.TOUCH_END,this._dragEndCallback),e.removeEventListener(i.Events.TOUCH_DRAG,this._dragCallback)}}_getReferencedImageId(e){const t=this.getTargetId(e);let n;return e instanceof a.StackViewport&&(n=t.split("imageId:")[1]),n}}u.toolName="Magnify";const h=u},36913:(e,t,n)=>{"use strict";n.d(t,{A:()=>v});var o,i=n(25161),a=n(85825),r=n(45700),s=n(7019),l=n(82409),d=n(94199),c=n(87275),u=n(85817),h=n(15327),g=n(60810),p=n(77609),f=n(99737);!function(e){e[e.ANNOTATED_CUBE=1]="ANNOTATED_CUBE",e[e.AXES=2]="AXES",e[e.CUSTOM=3]="CUSTOM"}(o||(o={}));class m extends u.oS{static{this.CUBE=1}static{this.AXIS=2}static{this.VTPFILE=3}static{this.OVERLAY_MARKER_TYPES=o}constructor(e={},t={configuration:{orientationWidget:{enabled:!0,viewportCorner:i.Ay.Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:m.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[m.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE]:{faceProperties:{xPlus:{text:"L",faceColor:"#ffff00",faceRotation:90},xMinus:{text:"R",faceColor:"#ffff00",faceRotation:270},yPlus:{text:"P",faceColor:"#00ffff",fontColor:"white",faceRotation:180},yMinus:{text:"A",faceColor:"#00ffff",fontColor:"white"},zPlus:{text:"S"},zMinus:{text:"I"}},defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:e=>e/2,faceColor:"#0000ff",edgeThickness:.1,edgeColor:"black",resolution:400}},[m.OVERLAY_MARKER_TYPES.AXES]:{},[m.OVERLAY_MARKER_TYPES.CUSTOM]:{polyDataURL:"https://raw.githubusercontent.com/Slicer/Slicer/80ad0a04dacf134754459557bf2638c63f3d1d1b/Base/Logic/Resources/OrientationMarkers/Human.vtp"}}}}){super(e,t),this._resizeObservers=new Map,this.onSetToolEnabled=()=>{this.initViewports(),this._subscribeToViewportEvents()},this.onSetToolActive=()=>{this.initViewports(),this._subscribeToViewportEvents()},this.onSetToolDisabled=()=>{this.cleanUpData(),this._unsubscribeToViewportNewVolumeSet()},this._getViewportsInfo=()=>(0,p.getToolGroup)(this.toolGroupId).viewportsInfo,this.resize=e=>{const t=this.orientationMarkers[e];if(!t)return;const{orientationWidget:n}=t;n.updateViewport()},this.orientationMarkers={},this.updatingOrientationMarker={}}_unsubscribeToViewportNewVolumeSet(){const e=()=>{this._getViewportsInfo().forEach((({viewportId:e,renderingEngineId:t})=>{const{viewport:n}=(0,h.getEnabledElementByIds)(e,t),{element:o}=n;o.removeEventListener(h.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));this._resizeObservers.get(e).unobserve(o)}))};h.eventTarget.removeEventListener(f.Events.TOOLGROUP_VIEWPORT_ADDED,(t=>{t.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())}))}_subscribeToViewportEvents(){const e=()=>{this._getViewportsInfo().forEach((({viewportId:e,renderingEngineId:t})=>{const{viewport:n}=(0,h.getEnabledElementByIds)(e,t),{element:o}=n;this.initViewports(),o.addEventListener(h.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this.initViewports.bind(this));const i=new ResizeObserver((()=>{setTimeout((()=>{const n=(0,h.getEnabledElementByIds)(e,t);if(!n)return;const{viewport:o}=n;this.resize(e),o.render()}),100)}));i.observe(o),this._resizeObservers.set(e,i)}))};e(),h.eventTarget.addEventListener(f.Events.TOOLGROUP_VIEWPORT_ADDED,(t=>{t.detail.toolGroupId===this.toolGroupId&&(e(),this.initViewports())}))}cleanUpData(){(0,h.getRenderingEngines)()[0].getViewports().forEach((e=>{const t=this.orientationMarkers[e.id];if(!t)return;const{actor:n,orientationWidget:o}=t;o?.setEnabled(!1),o?.delete(),n?.delete();e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow().render(),e.getRenderingEngine().render(),delete this.orientationMarkers[e.id]}))}initViewports(){const e=(0,h.getRenderingEngines)()[0];if(!e)return;let t=e.getViewports();t=(0,g.filterViewportsWithToolEnabled)(t,this.getToolName()),t.forEach((e=>{const t=e.getWidget(this.getToolName());t&&!t.isDeleted()||this.addAxisActorInViewport(e)}))}async addAxisActorInViewport(e){const t=e.id;if(!this.updatingOrientationMarker[t]){this.updatingOrientationMarker[t]=!0;const n=this.configuration.overlayMarkerType,o=this.configuration.overlayConfiguration[n];if(this.orientationMarkers[t]){const{actor:n,orientationWidget:o}=this.orientationMarkers[t];e.getRenderer().removeActor(n),o.setEnabled(!1)}let a;1===n?a=this.createAnnotationCube(o):2===n?a=r.Ay.newInstance():3===n&&(a=await this.createCustomActor());const s=e.getRenderer(),l=e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow(),{enabled:d,viewportCorner:c,viewportSize:u,minPixelSize:h,maxPixelSize:g}=this.configuration.orientationWidget,p=i.Ay.newInstance({actor:a,interactor:l.getInteractor(),parentRenderer:s});p.setEnabled(d),p.setViewportCorner(c),p.setViewportSize(u),p.setMinPixelSize(h),p.setMaxPixelSize(g),p.updateMarkerOrientation(),this.orientationMarkers[t]={orientationWidget:p,actor:a},e.addWidget(this.getToolName(),p),l.render(),e.getRenderingEngine().render(),this.updatingOrientationMarker[t]=!1}}async createCustomActor(){const e=this.configuration.overlayConfiguration[o.CUSTOM].polyDataURL,t=await fetch(e),n=await t.arrayBuffer(),i=d.Ay.newInstance();i.parseAsArrayBuffer(n),i.update();const a=c.Ay.newInstance();a.shallowCopy(i.getOutputData()),a.getPointData().setActiveScalars("Color");const r=l.Ay.newInstance();r.setInputData(a),r.setColorModeToDirectScalars();const u=s.Ay.newInstance();return u.setMapper(r),u.rotateZ(180),u}createAnnotationCube(e){const t=a.Ay.newInstance();return t.setDefaultStyle({...e.defaultStyle}),t.setXPlusFaceProperty({...e.faceProperties.xPlus}),t.setXMinusFaceProperty({...e.faceProperties.xMinus}),t.setYPlusFaceProperty({...e.faceProperties.yPlus}),t.setYMinusFaceProperty({...e.faceProperties.yMinus}),t.setZPlusFaceProperty({...e.faceProperties.zPlus}),t.setZMinusFaceProperty({...e.faceProperties.zMinus}),t}async createAnnotatedCubeActor(){const e=a.Ay.newInstance(),{faceProperties:t,defaultStyle:n}=this.configuration.annotatedCube;return e.setDefaultStyle(n),Object.keys(t).forEach((n=>{const o=`set${n.charAt(0).toUpperCase()+n.slice(1)}FaceProperty`;e[o](t[n])})),e}}m.toolName="OrientationMarker";const v=m},43185:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var o=n(3823),i=n(15327),a=n(82056),r=n(77609),s=n(17328),l=n(58640),d=n(6030);const{EPSILON:c}=i.CONSTANTS;class u extends d.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceImageIds:[]}}){super(e,t),this.onSetToolEnabled=()=>{this._init()},this.onSetToolActive=()=>{this._init()},this._init=()=>{const e=this.configuration.sourceImageIds;if(!e?.length)return void console.warn("OverlayGridTool: No sourceImageIds provided in configuration");const t=i.metaData.get("imagePlaneModule",e[0]);if(!t)return void console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");const{frameOfReferenceUID:n}=t,o=(0,r.getToolGroup)(this.toolGroupId).viewportsInfo;if(!o?.length)return void console.warn("OverlayGridTool: No viewports found");const s=(0,a.getAnnotations)(this.getToolName(),n);if(!s?.length){const t=e.map((e=>this.calculateImageIdPointSets(e))),o={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:n,referencedImageId:null},data:{viewportData:new Map,pointSets:t}};(0,a.addAnnotation)(o,n)}(0,l.A)(o.map((({viewportId:e})=>e)))},this.calculateImageIdPointSets=e=>{const{imagePositionPatient:t,rows:n,columns:a,rowCosines:r,columnCosines:s,rowPixelSpacing:l,columnPixelSpacing:d}=i.metaData.get("imagePlaneModule",e),c=[...t],u=[...t],h=[...t],g=[...t];o.eR.scaleAndAdd(u,t,s,a*d),o.eR.scaleAndAdd(h,t,r,n*l),o.eR.scaleAndAdd(g,h,s,a*d);return{pointSet1:[c,h,u,g],pointSet2:[c,u,h,g]}},this.renderAnnotation=(e,t)=>{const n=this.configuration.sourceImageIds;let r=!1;if(!n?.length)return r;const{viewport:l,FrameOfReferenceUID:d}=e;if(l.getImageIds().length<2)return r;const c=(0,a.getAnnotations)(this.getToolName(),d);if(!c?.length)return r;const u=c[0],{annotationUID:h}=u,{focalPoint:g,viewPlaneNormal:p}=l.getCamera(),f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},m=this.getImageIdNormal(n[0]);if(this.isParallel(p,m))return r;const v=i.utilities.planar.planeEquation(p,g),w=u.data.pointSets,b=u.data.viewportData;for(let e=0;e<n.length;e++){const{pointSet1:n,pointSet2:a}=w[e],r=b.get(l.id)||this.initializeViewportData(b,l.id);if(!r.pointSetsToUse[e]){let t=n,s=o.eR.subtract(o.eR.create(),n[0],n[1]);s=o.eR.normalize(o.eR.create(),s),this.isPerpendicular(s,p)&&(t=a),r.pointSetsToUse[e]=t,r.lineStartsWorld[e]=i.utilities.planar.linePlaneIntersection(t[0],t[1],v),r.lineEndsWorld[e]=i.utilities.planar.linePlaneIntersection(t[2],t[3],v)}const d=r.lineStartsWorld[e],c=r.lineEndsWorld[e];f.annotationUID=h;const g=this.getStyle("lineWidth",f,u),m=this.getStyle("lineDash",f,u),E=this.getStyle("color",f,u),I=this.getStyle("shadow",f,u),y=[d,c].map((e=>l.worldToCanvas(e))),_=`${h}-line`,C=`${e}`;(0,s.drawLine)(t,h,C,y[0],y[1],{color:E,width:g,lineDash:m,shadow:I},_)}return r=!0,r},this.initializeViewportData=(e,t)=>(e.set(t,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),e.get(t)),this.isPerpendicular=(e,t)=>{const n=o.eR.dot(e,t);return Math.abs(n)<c}}isParallel(e,t){return Math.abs(o.eR.dot(e,t))>1-c}getImageIdNormal(e){const{imageOrientationPatient:t}=i.metaData.get("imagePlaneModule",e),n=o.eR.fromValues(t[0],t[1],t[2]),a=o.eR.fromValues(t[3],t[4],t[5]);return o.eR.cross(o.eR.create(),n,a)}}u.toolName="OverlayGrid";const h=u},38782:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(85817),i=n(15327);class a extends o.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"]}){super(e,t)}touchDragCallback(e){this._dragCallback(e)}mouseDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,i.getEnabledElement)(t),a=n.world;if(0===a[0]&&0===a[1]&&0===a[2])return;const r=o.viewport.getCamera(),{focalPoint:s,position:l}=r,d=[l[0]-a[0],l[1]-a[1],l[2]-a[2]],c=[s[0]-a[0],s[1]-a[1],s[2]-a[2]];o.viewport.setCamera({focalPoint:c,position:d}),o.viewport.render()}}a.toolName="Pan";const r=a},82058:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(15327),i=n(3823),a=n(85817),r=n(25963);class s extends a.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"]}){super(e,t),this.mouseWheelCallback=e=>{const{element:t,wheel:n}=e.detail,i=(0,o.getEnabledElement)(t),{viewport:a}=i,{invert:r}=this.configuration,s=10*n.direction*(r?-1:1);this.setAngle(a,s)},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:t,currentPoints:n,startPoints:a}=e.detail,s=n.world,l=a.world,d=(0,o.getEnabledElement)(t),{viewport:c}=d,u=c.getCamera(),h=[.5*t.clientWidth,.5*t.clientHeight],g=c.canvasToWorld(h);let p=(0,r.A)([l,g],[g,s]);const{viewPlaneNormal:f}=u,m=i.eR.sub(i.eR.create(),g,l),v=i.eR.sub(i.eR.create(),g,s),w=i.eR.cross(i.eR.create(),m,v);i.eR.dot(f,w)>0&&(p=-p),Number.isNaN(p)||this.setAngle(c,p)}setAngle(e,t){const{viewPlaneNormal:n,viewUp:a}=e.getCamera();if(e instanceof o.BaseVolumeViewport){const o=(t+360)%360*Math.PI/180,r=i.pB.identity(new Float32Array(16));i.pB.rotate(r,r,o,n);const s=i.eR.transformMat4(i.eR.create(),a,r);e.setCamera({viewUp:s})}else{const{rotation:n}=e.getViewPresentation();e.setViewPresentation({rotation:(n+t+360)%360})}e.render()}}s.toolName="PlanarRotate";const l=s},85735:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var o=n(15327),i=n(82056),a=n(29601),r=n(17328),s=n(60810),l=n(58640),d=n(3823),c=n(6030),u=n(84607),h=n(7001),g=n(77609);class p extends c.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}}){super(e,t),this.isDrawing=!1,this.isHandleOutsideImage=!1,this._elementWithCursor=null,this._currentCursorWorldPosition=null,this._currentCanvasPosition=null,this._disableCursorEnabled=!1,this.mouseMoveCallback=e=>{const{detail:t}=e,{element:n,currentPoints:o}=t;this._currentCursorWorldPosition=o.world,this._currentCanvasPosition=o.canvas,this._elementWithCursor=n;const i=this.getActiveAnnotation(n);return null===i?(this.createInitialAnnotation(o.world,n),!1):(this.updateAnnotationPosition(n,i),!1)},this.createInitialAnnotation=(e,t)=>{const n=(0,o.getEnabledElement)(t);if(!n)throw new Error("No enabled element found");const{viewport:a,renderingEngine:r}=n;this.isDrawing=!0;const d=a.getCamera(),{viewPlaneNormal:c,viewUp:u}=d;if(!c||!u)throw new Error("Camera not found");const h=this.getReferencedImageId(a,e,c,u),g=a.getFrameOfReferenceUID(),p={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...c],viewUp:[...u],FrameOfReferenceUID:g,referencedImageId:h},data:{label:"",handles:{points:[[...e]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if((0,i.getAnnotations)(this.getToolName(),t).length>0)return null;if(null===(0,i.addAnnotation)(p,t))return;const f=(0,s.getViewportIdsWithToolToRender)(t,this.getToolName(),!1);(0,l.A)(f)},this.onCameraModified=e=>{const t=e.detail,{element:n,previousCamera:i,camera:a}=t,r=(0,o.getEnabledElement)(n).viewport;if(n!==this._elementWithCursor)return;const s=i.focalPoint,l=a.viewPlaneNormal,d=a.focalPoint,c=[0,0,0];if(u.Ay.subtract(d,s,c),0===c.reduce(((e,t)=>e+t),0))return;const h=u.Ay.dot(c,l);if(Math.abs(h)<.01)return;if(!this._currentCanvasPosition)return;const g=r.canvasToWorld(this._currentCanvasPosition);this._currentCursorWorldPosition=g,this.updateAnnotationPosition(n,this.getActiveAnnotation(n))},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o,FrameOfReferenceUID:s}=e,l=this._elementWithCursor===o.element;this.configuration.positionSync&&!l&&this.updateViewportImage(o);const{element:d}=o;let c=(0,i.getAnnotations)(this.getToolName(),d);if(!c?.length)return n;if(c=this.filterInteractableAnnotationsForElement(d,c),!c?.length)return n;const u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<c.length;e++){const i=c[e],{annotationUID:s,data:d}=i,{handles:h}=d,{points:g}=h;if(!s)return n;u.annotationUID=s;const p=parseFloat(this.getStyle("lineWidth",u,i)),f=p,m=this.getStyle("lineDash",u,i),v=this.getStyle("color",u,i);if(g[0].some((e=>isNaN(e))))return n;const w=g.map((e=>o.worldToCanvas(e)));if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,a.isAnnotationVisible)(s))continue;const b={upper:"upper",right:"right",lower:"lower",left:"left"},[E,I]=w[0],y=l?20:7,_=l?5:7;(0,r.drawLine)(t,s,b.upper,[E,I-(y/2+_)],[E,I-y/2],{color:v,lineDash:m,lineWidth:f}),(0,r.drawLine)(t,s,b.lower,[E,I+(y/2+_)],[E,I+y/2],{color:v,lineDash:m,lineWidth:f}),(0,r.drawLine)(t,s,b.right,[E+(y/2+_),I],[E+y/2,I],{color:v,lineDash:m,lineWidth:f}),(0,r.drawLine)(t,s,b.left,[E-(y/2+_),I],[E-y/2,I],{color:v,lineDash:m,lineWidth:f}),n=!0}return n},this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=(0,g.getToolGroup)(this.toolGroupId).viewportsInfo;if(!e)return;e.map((e=>(0,o.getEnabledElementByIds)(e.viewportId,e.renderingEngineId))).forEach((e=>{e&&(0,h.hideElementCursor)(e.viewport.element)}))}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=(0,g.getToolGroup)(this.toolGroupId).viewportsInfo;if(!e)return;e.map((e=>(0,o.getEnabledElementByIds)(e.viewportId,e.renderingEngineId))).forEach((e=>{e&&(0,h.resetElementCursor)(e.viewport.element)}))}getActiveAnnotation(e){const t=(0,i.getAnnotations)(this.getToolName(),e);if(!t.length)return null;return t[0]}updateAnnotationPosition(e,t){const n=this._currentCursorWorldPosition;if(!n)return;if(!t.data?.handles?.points)return;t.data.handles.points=[[...n]],t.invalidated=!0;const i=(0,s.getViewportIdsWithToolToRender)(e,this.getToolName(),!1);(0,o.getEnabledElement)(e)&&(0,l.A)(i)}filterInteractableAnnotationsForElement(e,t){if(!(t instanceof Array)||0===t.length)return[];const n=t[0],i=(0,o.getEnabledElement)(e)?.viewport;if(!i)return[];const a=i.getCamera(),{viewPlaneNormal:r,focalPoint:s}=a;if(!r||!s)return[];const l=n.data?.handles?.points;if(!(l instanceof Array)||1!==l.length)return[];const d=l[0],c=o.utilities.planar.planeEquation(r,s);return o.utilities.planar.planeDistanceToPoint(c,d)<this.configuration.displayThreshold?[n]:[]}updateViewportImage(e){const t=this._currentCursorWorldPosition;if(t&&!t.some((e=>isNaN(e))))if(e instanceof o.StackViewport){const n=o.utilities.getClosestStackImageIndexForPoint(t,e);if(null===n)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof o.VolumeViewport){const{focalPoint:n,viewPlaneNormal:i}=e.getCamera();if(!n||!i)return;const a=o.utilities.planar.planeEquation(i,n),r=o.utilities.planar.planeDistanceToPoint(a,t,!0);if(Math.abs(r)<.5)return;const s=d.eR.normalize(d.eR.create(),d.eR.fromValues(...i)),l=d.eR.scale(d.eR.create(),s,r),c=d.eR.add(d.eR.create(),d.eR.fromValues(...n),l);if(!0){e.setCamera({focalPoint:c});const t=e.getRenderingEngine();t&&t.renderViewport(e.id)}}}}p.toolName="ReferenceCursors";const f=p},36797:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var o=n(3823),i=n(15327),a=n(82056),r=n(17328),s=n(60810),l=n(58640),d=n(6030);const{EPSILON:c}=i.CONSTANTS;class u extends d.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",enforceSameFrameOfReference:!0,showFullDimension:!1}}){super(e,t),this.editData=null,this._init=()=>{const e=(0,i.getRenderingEngines)()[0];if(!e)return;let t=e.getViewports();t=(0,s.filterViewportsWithToolEnabled)(t,this.getToolName());const n=e.getViewport(this.configuration.sourceViewportId);if(!n?.getImageData())return;const{element:o}=n,{viewUp:r,viewPlaneNormal:d}=n.getCamera(),c=i.utilities.getViewportImageCornersInWorld(n);let u=this.editData?.annotation;const h=n.getFrameOfReferenceUID();if(u)this.editData.annotation.data.handles.points=c;else{const e={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...r],FrameOfReferenceUID:h,referencedImageId:null},data:{handles:{points:c}}};(0,a.addAnnotation)(e,o),u=e}this.editData={sourceViewportId:n.id,renderingEngine:e,annotation:u},(0,l.A)(t.filter((e=>e.id!==n.id)).map((e=>e.id)))},this.onSetToolEnabled=()=>{this._init()},this.onSetToolConfiguration=()=>{this._init()},this.onCameraModified=e=>{this._init()},this.renderAnnotation=(e,t)=>{const{viewport:n}=e;if(!this.editData)return!1;const{annotation:a,sourceViewportId:s}=this.editData;let l=!1;const{viewport:d}=(0,i.getEnabledElementByViewportId)(s)||{};if(!d)return l;if(d.id===n.id)return l;if(!a||!a?.data?.handles?.points)return l;if(this.configuration.enforceSameFrameOfReference&&d.getFrameOfReferenceUID()!==n.getFrameOfReferenceUID())return l;const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},u=a.data.handles.points[0],h=a.data.handles.points[1],g=a.data.handles.points[2],p=a.data.handles.points[3],{focalPoint:f,viewPlaneNormal:m,viewUp:v}=n.getCamera(),{viewPlaneNormal:w}=d.getCamera();if(this.isParallel(m,w))return l;const b=i.utilities.planar.planeEquation(m,f),E=[u,g,h,p],I=[u,h,g,p];let y=E,_=o.eR.subtract(o.eR.create(),E[0],E[1]);_=o.eR.normalize(o.eR.create(),_);let C=o.eR.subtract(o.eR.create(),E[2],E[0]);C=o.eR.normalize(o.eR.create(),C);const x=o.eR.cross(o.eR.create(),_,C);if(this.isParallel(x,m))return l;this.isPerpendicular(_,m)&&(y=I);const S=i.utilities.planar.linePlaneIntersection(y[0],y[1],b),T=i.utilities.planar.linePlaneIntersection(y[2],y[3],b),{annotationUID:A}=a;c.annotationUID=A;const D=this.getStyle("lineWidth",c,a),M=this.getStyle("lineDash",c,a),R=this.getStyle("color",c,a),P=this.getStyle("shadow",c,a);let O=[S,T].map((e=>n.worldToCanvas(e)));if(this.configuration.showFullDimension&&(O=this.handleFullDimension(n,S,m,v,T,O)),O.length<2)return l;const k=`${A}-line`;return(0,r.drawLine)(t,A,"1",O[0],O[1],{color:R,width:D,lineDash:M,shadow:P},k),l=!0,l},this.isPerpendicular=(e,t)=>{const n=o.eR.dot(e,t);return Math.abs(n)<c}}handleFullDimension(e,t,n,o,a,r){e.getRenderingEngine();const s=this.getTargetId(e),l=this.getTargetImageData(s),d=this.getReferencedImageId(e,t,n,o);if(d&&l)try{const{imageData:n,dimensions:o}=l,[s,c,u,h]=[n.indexToWorld([0,0,0]),n.indexToWorld([o[0]-1,0,0]),n.indexToWorld([o[0]-1,o[1]-1,0]),n.indexToWorld([0,o[1]-1,0])].map((e=>i.utilities.worldToImageCoords(d,e))),[g,p]=[t,a].map((e=>i.utilities.worldToImageCoords(d,e)));r=[[s,c],[c,u],[h,u],[s,h]].map((([e,t])=>this.intersectInfiniteLines(e,t,g,p))).filter((e=>e&&this.isInBound(e,o))).map((t=>{const n=i.utilities.imageToWorldCoords(d,t);return e.worldToCanvas(n)}))}catch(e){console.log(e)}return r}intersectInfiniteLines(e,t,n,o){const[i,a]=e,[r,s]=t,[l,d]=n,[u,h]=o,g=s-a,p=i-r,f=r*a-i*s,m=h-d,v=l-u,w=u*d-l*h;if(Math.abs(g*v-m*p)<c)return;return[(p*w-v*f)/(g*v-m*p),(m*f-g*w)/(g*v-m*p)]}isParallel(e,t){return Math.abs(o.eR.dot(e,t))>1-c}isInBound(e,t){return e[0]>=0&&e[0]<=t[0]&&e[1]>=0&&e[1]<=t[1]}}u.toolName="ReferenceLines";const h=u},26039:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var o=n(6030),i=n(3823),a=n(15327),r=n(82056),s=n(17328),l=n(77609);const d=[];class c extends o.A{constructor(e={},t={configuration:{viewportId:"",scaleLocation:"bottom"}}){super(e,t),this.editData=null,this._init=()=>{const e=(0,a.getRenderingEngines)()[0];if(!e)return;const t=(0,l.getToolGroup)(this.toolGroupId).viewportsInfo;if(!t)return;const n=t.map((e=>(0,a.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)));let{viewport:o}=n[0];const{FrameOfReferenceUID:i}=n[0];if(this.configuration.viewportId&&n.forEach((e=>{e.viewport.id==this.configuration.viewportId&&(o=e.viewport)})),!o)return;const{viewUp:s,viewPlaneNormal:c}=o.getCamera(),u=a.utilities.getViewportImageCornersInWorld(o);let h=this.editData?.annotation;const g=(0,r.getAnnotations)(this.getToolName(),o.element);g.length&&(h=g.filter((e=>e.data.viewportId==o.id))[0]),n.forEach((e=>{const{viewport:t}=e;if(!d.includes(t.id)){const e={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...c],viewUp:[...s],FrameOfReferenceUID:i,referencedImageId:null},data:{handles:{points:a.utilities.getViewportImageCornersInWorld(t)},viewportId:t.id}};d.push(t.id),(0,r.addAnnotation)(e,t.element),h=e}})),this.editData?.annotation&&this.editData.annotation.data.viewportId==o.id&&(this.editData.annotation.data.handles.points=u,this.editData.annotation.data.viewportId=o.id),this.editData={viewport:o,renderingEngine:e,annotation:h}},this.onSetToolEnabled=()=>{this._init()},this.onCameraModified=e=>{this.configuration.viewportId=e.detail.viewportId,this._init()},this.computeScaleSize=(e,t,n)=>{const o=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];let i;return i="top"==n||"bottom"==n?o.filter((t=>t<.6*e&&t>.2*e)):o.filter((e=>e<.6*t&&e>.2*t)),i[0]},this.computeEndScaleTicks=(e,t)=>{const n={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]};return{endTick1:[[e[1][0]+n[t][0][0],e[1][1]+n[t][0][0]],[e[1][0]+n[t][1][0],e[1][1]+n[t][1][1]]],endTick2:[[e[0][0]+n[t][0][0],e[0][1]+n[t][0][0]],[e[0][0]+n[t][1][0],e[0][1]+n[t][1][1]]]}},this.computeInnerScaleTicks=(e,t,n,o,i)=>{let a;"bottom"==t||"top"==t?a=i[0][0]-o[0][0]:"left"!=t&&"right"!=t||(a=i[0][1]-o[0][1]);const r=[],s=[],l=[];let d=e;e>=50&&(d=e/10);const c=a/d;for(let e=0;e<d-1;e++){const i={bottom:[[c*(e+1),0],[c*(e+1),5]],top:[[c*(e+1),0],[c*(e+1),-5]],left:[[0,c*(e+1)],[-5,c*(e+1)]],right:[[0,c*(e+1)],[5,c*(e+1)]]};r.push(`${n}-tick${e}`),s.push(`tick${e}`),(e+1)%5==0?l.push([[o[0][0]+i[t][0][0],o[0][1]+i[t][0][1]],[o[1][0]+i[t][0][0],o[1][1]+i[t][0][1]]]):l.push([[o[0][0]+i[t][0][0],o[0][1]+i[t][0][1]],[o[1][0]+i[t][1][0],o[1][1]+i[t][1][1]]])}return{tickIds:r,tickUIDs:s,tickCoordinates:l}},this.computeWorldScaleCoordinates=(e,t,n)=>{let o,a=i.eR.subtract(i.eR.create(),n[0],n[1]);a=i.eR.normalize(i.eR.create(),a);let r=i.eR.subtract(i.eR.create(),n[2],n[0]);r=i.eR.normalize(i.eR.create(),r);const s={bottom:[n[1],n[2]],top:[n[0],n[3]],right:[n[2],n[3]],left:[n[0],n[1]]},l=i.eR.add(i.eR.create(),s[t][0],s[t][0]).map((e=>e/2)),d=e/2/Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2));return"top"==t||"bottom"==t?o=[i.eR.subtract(i.eR.create(),l,r.map((e=>e*d))),i.eR.add(i.eR.create(),l,r.map((e=>e*d)))]:"left"!=t&&"right"!=t||(o=[i.eR.add(i.eR.create(),l,a.map((e=>e*d))),i.eR.subtract(i.eR.create(),l,a.map((e=>e*d)))]),o},this.computeCanvasScaleCoordinates=(e,t,n,o,i)=>{let a;if("top"==i||"bottom"==i){const o=t[0][0]-t[1][0];a=[[e.width/2-o/2,n.height],[e.width/2+o/2,n.height]]}else if("left"==i||"right"==i){const n=t[0][1]-t[1][1];a=[[o.width,e.height/2-n/2],[o.width,e.height/2+n/2]]}return a},this.computeScaleBounds=(e,t,n,o)=>{const i=t*Math.min(1e3,e.width),a=n*Math.min(1e3,e.height),r={bottom:[-a,-i],top:[a,i],left:[a,i],right:[-a,-i]},s={bottom:[e.height,e.width],top:[0,e.width],left:[e.height,0],right:[e.height,e.width]};return{height:s[o][0]+r[o][0],width:s[o][1]+r[o][1]}}}renderAnnotation(e,t){if(!this.editData||!this.editData.viewport)return;const n=this.configuration.scaleLocation,{viewport:o}=e,a=(0,r.getAnnotations)(this.getToolName(),o.element).filter((e=>e.data.viewportId==o.id))[0],l=e.viewport.canvas,d=!1;if(!o)return d;const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},u={width:l.width/window.devicePixelRatio||1,height:l.height/window.devicePixelRatio||1},h=a.data.handles.points[0],g=a.data.handles.points[1],p=a.data.handles.points[2],f=a.data.handles.points[3],m=[h,p,g,f],v=i.eR.distance(p,f),w=i.eR.distance(h,p),b=this.computeScaleBounds(u,.05,.05,n),E=this.computeScaleBounds(u,.05,.05,n),I=this.computeScaleSize(v,w,n),y=this.computeWorldScaleCoordinates(I,n,m).map((e=>o.worldToCanvas(e))),_=this.computeCanvasScaleCoordinates(u,y,E,b,n),C=this.computeEndScaleTicks(_,n),{annotationUID:x}=a;c.annotationUID=x;const S=this.getStyle("lineWidth",c,a),T=this.getStyle("lineDash",c,a),A=this.getStyle("color",c,a),D=this.getStyle("shadow",c,a),M=`${x}-scaleline`;(0,s.drawLine)(t,x,"1",_[0],_[1],{color:A,width:S,lineDash:T,shadow:D},M);const R=`${x}-left`;(0,s.drawLine)(t,x,"2",C.endTick1[0],C.endTick1[1],{color:A,width:S,lineDash:T,shadow:D},R);const P=`${x}-right`;(0,s.drawLine)(t,x,"3",C.endTick2[0],C.endTick2[1],{color:A,width:S,lineDash:T,shadow:D},P);const O={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},k=[_[0][0]+O[n][0],_[0][1]+O[n][1]],L=this._getTextLines(I),{tickIds:U,tickUIDs:N,tickCoordinates:V}=this.computeInnerScaleTicks(I,n,x,C.endTick1,C.endTick2);for(let e=0;e<N.length;e++)(0,s.drawLine)(t,x,N[e],V[e][0],V[e][1],{color:A,width:S,lineDash:T,shadow:D},U[e]);return(0,s.drawTextBox)(t,x,"text0",L,[k[0],k[1]],{fontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",fontSize:"14px",lineDash:"2,3",lineWidth:"1",shadow:!0,color:A}),d}_getTextLines(e){let t,n;e>=50?(t=e/10,n=" cm"):(t=e,n=" mm");return[t.toString().concat(n)]}}c.toolName="ScaleOverlay";const u=c},3751:(e,t,n)=>{"use strict";n.d(t,{A:()=>v});var o=n(15327),i=n(85817),a=n(6802),r=n(95527),s=n(99737),l=n(58640),d=n(7001),c=n(76712),u=n(44049),h=n(16175),g=n(13271),p=n(77609);class f extends i.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{minSpacing:1,referencedToolNames:["PlanarFreehandROI","PlanarFreehandContourSegmentationTool"],toolShape:"circle",referencedToolName:"PlanarFreehandROI"}}){super(e,t),this.registeredShapes=new Map,this.isActive=!1,this.commonData={activeAnnotationUID:null,viewportIdsToRender:[],isEditingOpenContour:!1,canvasLocation:void 0},this.preMouseDownCallback=e=>{const t=e.detail,n=t.element;if(this.configureToolSize(e),this.selectFreehandTool(t),null!==this.commonData.activeAnnotationUID)return this.isActive=!0,(0,d.hideElementCursor)(n),this.activateModify(n),!0},this.mouseMoveCallback=e=>{this.mode===s.ToolModes.Active?(this.configureToolSize(e),this.updateCursor(e)):this.commonData.canvasLocation=void 0},this.endCallback=e=>{const t=e.detail,{element:n}=t,i=this.configuration,a=(0,o.getEnabledElement)(n);this.isActive=!1,this.deactivateModify(n),(0,d.resetElementCursor)(n);const{renderingEngineId:r,viewportId:l}=a,c=(0,p.getToolGroupForViewport)(l,r).getToolInstance(i.referencedToolName),h=this.filterSculptableAnnotationsForElement(n).find((e=>e.annotationUID===this.commonData.activeAnnotationUID));c.configuration.calculateStats&&(h.invalidated=!0),(0,u.triggerAnnotationModified)(h,n,s.ChangeTypes.HandlesUpdated)},this.dragCallback=e=>{const t=e.detail,n=t.element;this.updateCursor(e);const o=this.filterSculptableAnnotationsForElement(n),i=o.find((e=>e.annotationUID===this.commonData.activeAnnotationUID));if(!o?.length||!this.isActive)return;const a=i.data.contour.polyline;this.sculpt(t,a)},this.registerShapes(h.A.shapeName,h.A),this.setToolShape(this.configuration.toolShape)}registerShapes(e,t){const n=new t;this.registeredShapes.set(e,n)}sculpt(e,t){const n=this.configuration,i=e.element,a=(0,o.getEnabledElement)(i),{viewport:r}=a,s=this.registeredShapes.get(this.selectedShape);this.sculptData={mousePoint:e.currentPoints.world,mouseCanvasPoint:e.currentPoints.canvas,points:t,maxSpacing:s.getMaxSpacing(n.minSpacing),element:i};const l=s.pushHandles(r,this.sculptData);void 0!==l.first&&this.insertNewHandles(l)}interpolatePointsWithinMaxSpacing(e,t,n,i){const{element:a}=this.sculptData,s=(0,o.getEnabledElement)(a),{viewport:l}=s,d=m(e+1,t.length),c=l.worldToCanvas(t[e]),u=l.worldToCanvas(t[d]);r.point.distanceToPoint(c,u)>i&&n.push(e)}updateCursor(e){const t=e.detail,n=t.element,i=(0,o.getEnabledElement)(n),{renderingEngine:a,viewport:r}=i;this.commonData.viewportIdsToRender=[r.id];const s=this.filterSculptableAnnotationsForElement(n);if(!s?.length)return;const d=s.find((e=>e.annotationUID===this.commonData.activeAnnotationUID));if(this.commonData.canvasLocation=t.currentPoints.canvas,this.isActive)d.highlighted=!0;else{const e=this.registeredShapes.get(this.selectedShape),n=t.currentPoints.canvas;e.updateToolSize(n,r,d)}(0,l.t)(this.commonData.viewportIdsToRender)}filterSculptableAnnotationsForElement(e){const t=this.configuration,n=(0,o.getEnabledElement)(e),{renderingEngineId:i,viewportId:r}=n,s=[],l=(0,p.getToolGroupForViewport)(r,i).getToolInstance(t.referencedToolName);return t.referencedToolNames.forEach((t=>{const n=(0,a.Rh)(t,e);n&&s.push(...n)})),l.filterInteractableAnnotationsForElement(e,s)}configureToolSize(e){this.registeredShapes.get(this.selectedShape).configureToolSize(e)}insertNewHandles(e){const t=this.findNewHandleIndices(e);let n=0;for(let e=0;e<t?.length;e++){const o=t[e]+1+n;this.insertHandleRadially(o),n++}}findNewHandleIndices(e){const{points:t,maxSpacing:n}=this.sculptData,o=[];for(let i=e.first;i<=e.last;i++)this.interpolatePointsWithinMaxSpacing(i,t,o,n);return o}insertHandleRadially(e){const{points:t}=this.sculptData;if(e>t.length-1&&this.commonData.isEditingOpenContour)return;const n=this.registeredShapes.get(this.selectedShape),o=e-1,i=m(e,t.length),a=n.getInsertPosition(o,i,this.sculptData);t.splice(e,0,a)}selectFreehandTool(e){const t=this.getClosestFreehandToolOnElement(e);void 0!==t&&(this.commonData.activeAnnotationUID=t)}getClosestFreehandToolOnElement(e){const{element:t}=e,n=(0,o.getEnabledElement)(t),{viewport:i}=n,a=this.configuration,r=this.filterSculptableAnnotationsForElement(t);if(!r?.length)return;const s=e.currentPoints.canvas,l={distance:1/0,toolIndex:void 0,annotationUID:void 0};for(let e=0;e<r?.length;e++){if(r[e].isLocked||!r[e].isVisible)continue;const t=(0,g.X)(i,r[e],s);-1!==t&&(t<l.distance&&(l.distance=t,l.toolIndex=e,l.annotationUID=r[e].annotationUID))}return this.commonData.isEditingOpenContour=!r[l.toolIndex].data.contour.closed,a.referencedToolName=r[l.toolIndex].metadata.toolName,l.annotationUID}activateModify(e){e.addEventListener(s.Events.MOUSE_UP,this.endCallback),e.addEventListener(s.Events.MOUSE_CLICK,this.endCallback),e.addEventListener(s.Events.MOUSE_DRAG,this.dragCallback),e.addEventListener(s.Events.TOUCH_TAP,this.endCallback),e.addEventListener(s.Events.TOUCH_END,this.endCallback),e.addEventListener(s.Events.TOUCH_DRAG,this.dragCallback)}deactivateModify(e){e.removeEventListener(s.Events.MOUSE_UP,this.endCallback),e.removeEventListener(s.Events.MOUSE_CLICK,this.endCallback),e.removeEventListener(s.Events.MOUSE_DRAG,this.dragCallback),e.removeEventListener(s.Events.TOUCH_TAP,this.endCallback),e.removeEventListener(s.Events.TOUCH_END,this.endCallback),e.removeEventListener(s.Events.TOUCH_DRAG,this.dragCallback)}setToolShape(e){this.selectedShape=this.registeredShapes.get(e)??h.A.shapeName}renderAnnotation(e,t){const{viewport:n}=e,{element:o}=n,i=this.commonData.viewportIdsToRender;if(!this.commonData.canvasLocation||this.mode!==s.ToolModes.Active||!i.includes(n.id))return;const a=this.filterSculptableAnnotationsForElement(o);if(!a?.length)return;const r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};let l=(0,c.h)("color",r,s.AnnotationStyleStates.Default,this.mode);this.isActive&&(l=(0,c.h)("color",r,s.AnnotationStyleStates.Highlighted,this.mode));this.registeredShapes.get(this.selectedShape).renderShape(t,this.commonData.canvasLocation,{color:l})}}const m=(e,t)=>(e+t)%t;f.toolName="SculptorTool";const v=f},32302:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var o=n(15327),i=n(82056),a=n(17328),r=n(77609),s=n(58640),l=n(6030),d=(n(82216),n(38726)),c=n(53860);class u extends l.A{constructor(e={},t={configuration:{opacity:.5}}){super(e,t),this._init=()=>{const e=(0,r.getToolGroup)(this.toolGroupId).viewportsInfo;if(!e?.length)return void console.warn(this.getToolName()+"Tool: No viewports found");const t=(0,o.getRenderingEngine)(e[0].renderingEngineId)?.getViewport(e[0].viewportId);if(!t)return;const n=t.getFrameOfReferenceUID(),a=(0,i.getAnnotations)(this.getToolName(),n);if(!a?.length){const t=new Map;!function(e,t){t.forEach((({viewportId:t,renderingEngineId:n})=>{const i=(0,o.getRenderingEngine)(n)?.getViewport(t);h(e,i)}))}(t,e);const a={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:n,referencedImageId:null},data:{actorsWorldPointsMap:t}};(0,i.addAnnotation)(a,n)}(0,s.A)(e.map((({viewportId:e})=>e)))},this.onSetToolEnabled=()=>{this._init()},this.onCameraModified=e=>{this._init()},this.renderAnnotation=(e,t)=>{const{viewport:n,FrameOfReferenceUID:o}=e;let r=!1;const s=(0,i.getAnnotations)(this.getToolName(),o);if(!s?.length)return r;const l=s[0],{annotationUID:d}=l,c=l.data.actorsWorldPointsMap;h(c,n);const u=n.getActors(),p=g(n);return u.forEach((e=>{if(!e?.clippingFilter)return;const o=c.get(e.uid);if(!o)return;if(!o.get(p))return;let i=1;const{worldPointsSet:r,color:s}=o.get(p);for(let o=0;o<r.length;o++){const l=r[o].map((e=>n.worldToCanvas(e))),c={color:s,fillColor:s,fillOpacity:this.configuration.opacity,closePath:!0,lineWidth:2},u=e.uid+"#"+i;(0,a.drawPath)(t,d,u,l,c),i++}})),r=!0,r}}}function h(e,t){const n=t.getActors(),o=g(t);n.forEach((t=>{if(!t?.clippingFilter)return;let n=e.get(t.uid);if(n||(n=new Map,e.set(t.uid,n)),!n.get(o)){const e=t.clippingFilter.getOutputData(),i=c.polyDataUtils.getPolyDataPoints(e);if(!i)return;const a=function(e){function t(e){let t=Math.floor(255*e).toString(16);return 1===t.length&&(t="0"+t),t}return"#"+t(e[0])+t(e[1])+t(e[2])}(t.actor.getProperty().getColor());n.set(o,{worldPointsSet:i,color:a})}}))}function g(e){const{viewPlaneNormal:t}=e.getCamera(),n=e.getCurrentImageIdIndex();return`${e.id}-${(0,d.l)(t)}-${n}`}u.toolName="SegmentationIntersection";const p=u},89460:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(85817);class a extends i.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}}){super(e,t),this.deltaY=1}mouseWheelCallback(e){this._scroll(e)}mouseDragCallback(e){this._dragCallback(e)}touchDragCallback(e){this._dragCallback(e)}_dragCallback(e){this._scrollDrag(e)}_scrollDrag(e){const{deltaPoints:t,viewportId:n,renderingEngineId:i}=e.detail,{viewport:a}=(0,o.getEnabledElementByIds)(n,i),{debounceIfNotLoaded:r,invert:s,loop:l}=this.configuration,d=t.canvas[1];let c;a instanceof o.VolumeViewport&&(c=a.getVolumeId());const u=this._getPixelPerImage(a),h=d+this.deltaY;if(u)if(Math.abs(h)>=u){const e=Math.round(h/u);o.utilities.scroll(a,{delta:s?-e:e,volumeId:c,debounceLoading:r,loop:l}),this.deltaY=h%u}else this.deltaY=h}_scroll(e){const{wheel:t,element:n}=e.detail,{direction:i}=t,{invert:a}=this.configuration,{viewport:r}=(0,o.getEnabledElement)(n),s=i*(a?-1:1);o.utilities.scroll(r,{delta:s,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:r instanceof o.BaseVolumeViewport?r.getVolumeId():void 0,scrollSlabs:this.configuration.scrollSlabs})}_getPixelPerImage(e){const{element:t}=e,n=e.getNumberOfSlices();return Math.max(2,t.offsetHeight/Math.max(n,8))}}a.toolName="StackScroll";const r=a},26884:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var o=n(84607),i=n(99737),a=n(15327),r=n(3823),s=n(85817),l=n(77609);class d extends s.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2}}){super(e,t),this._resizeObservers=new Map,this._hasResolutionChanged=!1,this.preMouseDownCallback=e=>{const t=e.detail,{element:n}=t,o=(0,a.getEnabledElement)(n),{viewport:i}=o,r=i.getDefaultActor().actor.getMapper();if(!("getSampleDistance"in r||"getCurrentSampleDistance"in r))return!0;const s=r.getSampleDistance();return this._hasResolutionChanged||(r.setSampleDistance(2*s),this._hasResolutionChanged=!0,null!==this.cleanUp&&document.removeEventListener("mouseup",this.cleanUp),this.cleanUp=()=>{r.setSampleDistance(s),i.render(),this._hasResolutionChanged=!1},document.addEventListener("mouseup",this.cleanUp,{once:!0})),!0},this._getViewportsInfo=()=>(0,l.getToolGroup)(this.toolGroupId).viewportsInfo,this.onSetToolActive=()=>{const e=()=>{this._getViewportsInfo().forEach((({viewportId:e,renderingEngineId:t})=>{if(!this._resizeObservers.has(e)){const{viewport:n}=(0,a.getEnabledElementByIds)(e,t)||{viewport:null};if(!n)return;const{element:o}=n,i=new ResizeObserver((()=>{const n=(0,a.getEnabledElementByIds)(e,t);if(!n)return;const{viewport:o}=n,i=o.getViewPresentation();o.resetCamera(),o.setViewPresentation(i),o.render()}));i.observe(o),this._resizeObservers.set(e,i)}}))};e(),this._viewportAddedListener=t=>{t.detail.toolGroupId===this.toolGroupId&&e()},a.eventTarget.addEventListener(i.Events.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener)},this.onSetToolDisabled=()=>{this._resizeObservers.forEach(((e,t)=>{e.disconnect(),this._resizeObservers.delete(t)})),this._viewportAddedListener&&(a.eventTarget.removeEventListener(i.Events.TOOLGROUP_VIEWPORT_ADDED,this._viewportAddedListener),this._viewportAddedListener=null)},this.rotateCamera=(e,t,n,o)=>{const i=e.getVtkActiveCamera(),a=i.getViewUp(),s=i.getFocalPoint(),l=i.getPosition(),d=[0,0,0],c=[0,0,0],u=[0,0,0],h=r.pB.identity(new Float32Array(16));r.pB.translate(h,h,t),r.pB.rotate(h,h,o,n),r.pB.translate(h,h,[-t[0],-t[1],-t[2]]),r.eR.transformMat4(d,l,h),r.eR.transformMat4(c,s,h),r.pB.identity(h),r.pB.rotate(h,h,o,n),r.eR.transformMat4(u,a,h),e.setCamera({position:d,viewUp:u,focalPoint:c})},this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:t,currentPoints:n,lastPoints:i}=e.detail,r=n.canvas,s=i.canvas,{rotateIncrementDegrees:l}=this.configuration,d=(0,a.getEnabledElement)(t),{viewport:c}=d,u=c.getCamera(),h=t.clientWidth,g=t.clientHeight,p=[r[0]/h,r[1]/g],f=[s[0]/h,s[1]/g],m=[.5*h,.5*g],v=c.canvasToWorld(m),w=(1+Math.abs(.5))**2,b=[f[0],0,0],E=[p[0],0,0],I=b[0]**2,y=E[0]**2,_=I>w?0:Math.sqrt(w-I),C=y>w?0:Math.sqrt(w-y),x=[b[0],0,_];o.Ay.normalize(x);const S=[E[0],0,C];o.Ay.normalize(S);const T=o.Ay.dot(x,S);if(Math.abs(T)>1e-4){const e=-2*Math.acos(o.Ay.clampValue(T,-1,1))*Math.sign(p[0]-f[0])*l,t=u.viewUp,n=u.viewPlaneNormal,i=[0,0,0],a=[0,0,0];o.Ay.cross(t,n,i),o.Ay.normalize(i),o.Ay.cross(n,i,a),o.Ay.normalize(a),o.Ay.normalize(t),this.rotateCamera(c,v,a,e);const r=(f[1]-p[1])*l;this.rotateCamera(c,v,i,r),c.render()}}}d.toolName="TrackballRotate";const c=d},30588:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(85817),i=n(15327),a=n(3823);const r=[0,0,1];class s extends o.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:r,rotateIncrementDegrees:30}}){super(e,t)}mouseWheelCallback(e){const{element:t,wheel:n}=e.detail,o=(0,i.getEnabledElement)(t),{viewport:r}=o,{direction:s,rotateIncrementDegrees:l}=this.configuration,d=r.getCamera(),{viewUp:c,position:u,focalPoint:h}=d,{direction:g}=n,[p,f,m]=h,[v,w,b]=s,E=g*(l*Math.PI)/180,I=[0,0,0],y=[0,0,0],_=[0,0,0],C=a.pB.identity(new Float32Array(16));a.pB.translate(C,C,[p,f,m]),a.pB.rotate(C,C,E,[v,w,b]),a.pB.translate(C,C,[-p,-f,-m]),a.eR.transformMat4(I,u,C),a.eR.transformMat4(y,h,C),a.pB.identity(C),a.pB.rotate(C,C,E,[v,w,b]),a.eR.transformMat4(_,c,C),r.setCamera({position:I,viewUp:_,focalPoint:y}),r.render()}}s.toolName="VolumeRotateMouseWheel";const l=s},17819:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var o=n(85817),i=n(15327),a=n(6802),r=n(44049),s=n(17328),l=n(85204),d=n(99737),c=n(60810),u=n(7001),h=n(58640),g=n(97213);class p extends o.EC{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{minWindowWidth:10}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,r=n.world,s=(0,i.getEnabledElement)(o),{viewport:l}=s;this.isDrawing=!0;const d=l.getCamera(),{viewPlaneNormal:g,viewUp:p}=d,f=this.getReferencedImageId(l,r,g,p),m=l.getFrameOfReferenceUID(),v={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...g],viewUp:[...p],FrameOfReferenceUID:m,referencedImageId:f},data:{handles:{points:[[...r],[...r],[...r],[...r]]},cachedStats:{}}};(0,a.lC)(v,o);const w=(0,c.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:w},this._activateDraw(o),(0,u.hideElementCursor)(o),e.preventDefault(),(0,h.A)(w),v},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i}=this.editData;this._deactivateDraw(n),(0,u.resetElementCursor)(n),this.editData=null,this.isDrawing=!1,(0,a.O8)(o.annotationUID),(0,h.A)(i),(0,r.triggerAnnotationCompleted)(o),this.applyWindowLevelRegion(o,n)},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a}=this.editData,{data:r}=o,{currentPoints:s}=t,l=(0,i.getEnabledElement)(n),{worldToCanvas:d,canvasToWorld:c}=l.viewport,u=s.world,{points:g}=r.handles;g[3]=[...u];const p=d(g[0]),f=d(g[3]),m=[f[0],p[1]],v=[p[0],f[1]],w=c(m),b=c(v);g[1]=w,g[2]=b,o.invalidated=!0,(0,h.A)(a)},this._activateDraw=e=>{l.wk.isInteractingWithTool=!0,e.addEventListener(d.Events.MOUSE_UP,this._endCallback),e.addEventListener(d.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(d.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(d.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(d.Events.TOUCH_END,this._endCallback),e.addEventListener(d.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(d.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{l.wk.isInteractingWithTool=!1,e.removeEventListener(d.Events.MOUSE_UP,this._endCallback),e.removeEventListener(d.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(d.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(d.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(d.Events.TOUCH_END,this._endCallback),e.removeEventListener(d.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(d.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let r=(0,a.Rh)(this.getToolName(),i);if(!r?.length)return n;if(r=this.filterInteractableAnnotationsForElement(i,r),!r?.length)return n;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<r.length;e++){const i=r[e],{annotationUID:a,data:d}=i,{points:c}=d.handles,u=c.map((e=>o.worldToCanvas(e)));l.annotationUID=a;const{color:h,lineWidth:g,lineDash:p}=this.getAnnotationStyle({annotation:i,styleSpecifier:l});if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;const f=`${a}-rect`,m="0";(0,s.drawRect)(t,a,m,u[0],u[3],{color:h,lineDash:p,lineWidth:g},f),n=!0}return n},this.applyWindowLevelRegion=(e,t)=>{const n=(0,i.getEnabledElement)(t),{viewport:o}=n,a=g.windowLevel.extractWindowLevelRegionToolData(o),{data:r}=e,{points:s}=r.handles,l=s.map((e=>o.worldToCanvas(e))),d=l[0],c=l[3];let u=Math.min(d[0],c[0]),h=Math.min(d[1],c[1]),p=Math.abs(d[0]-c[0]),f=Math.abs(d[1]-c[1]);u=i.utilities.clip(u,0,a.width),h=i.utilities.clip(h,0,a.height),p=Math.floor(Math.min(p,Math.abs(a.width-u))),f=Math.floor(Math.min(f,Math.abs(a.height-h)));const m=g.windowLevel.getLuminanceFromRegion(a,Math.round(u),Math.round(h),p,f),v=g.windowLevel.calculateMinMaxMean(m,a.minPixelValue,a.maxPixelValue);void 0===this.configuration.minWindowWidth&&(this.configuration.minWindowWidth=10);const w=Math.max(Math.abs(v.max-v.min),this.configuration.minWindowWidth),b=v.mean,E=o.getProperties().VOILUTFunction,I=i.utilities.windowLevel.toLowHighRange(w,b,E);o.setProperties({voiRange:I}),o.render()},this.cancel=()=>null,this.isPointNearTool=()=>null,this.toolSelectedCallback=()=>null,this.handleSelectedCallback=()=>null,this._activateModify=()=>null,this._deactivateModify=()=>null}}p.toolName="WindowLevelRegion";const f=p},43159:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(85817),i=n(15327);class a extends o.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"]}){super(e,t),this._getImageDynamicRangeFromMiddleSlice=(e,t)=>{const n=Math.floor(t[2]/2),o=t[0]*t[1];let i,a;e instanceof Float32Array?(i=4,a=Float32Array):e instanceof Uint8Array?(i=1,a=Uint8Array):e instanceof Uint16Array?(i=2,a=Uint16Array):e instanceof Int16Array&&(i=2,a=Int16Array);const r=new a(e.buffer,n*o*i,o),{max:s,min:l}=this._getMinMax(r,o);return s-l}}touchDragCallback(e){this.mouseDragCallback(e)}mouseDragCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,i.getEnabledElement)(t),{viewport:a}=o;let r,s,l,d,c,u,h=!1;const g=a.getProperties();if(a instanceof i.VolumeViewport){r=a.getVolumeId(),u=i.utilities.getViewportsWithVolumeId(r),({lower:s,upper:l}=g.voiRange);const e=i.cache.getVolume(r);if(!e)throw new Error("Volume not found "+r);d=e.metadata.Modality,h=e.scaling&&Object.keys(e.scaling).length>0}else{if(!g.voiRange)throw new Error("Viewport is not a valid type");{d=a.modality,({lower:s,upper:l}=g.voiRange);const{preScale:e={scaled:!1}}=a.getImageData?.()||{};h=e.scaled&&void 0!==e.scalingParameters?.suvbw}}c="PT"===d&&h?this.getPTScaledNewRange({deltaPointsCanvas:n.canvas,lower:s,upper:l,clientHeight:t.clientHeight,isPreScaled:h,viewport:a,volumeId:r}):this.getNewRange({viewport:a,deltaPointsCanvas:n.canvas,volumeId:r,lower:s,upper:l}),c.lower>=c.upper||(a.setProperties({voiRange:c}),a.render(),a instanceof i.VolumeViewport&&u.forEach((e=>{a!==e&&e.render()})))}getPTScaledNewRange({deltaPointsCanvas:e,lower:t,upper:n,clientHeight:o,viewport:i,volumeId:a,isPreScaled:r}){let s=4;s=r?5/o:this._getMultiplierFromDynamicRange(i,a)||4;return n-=e[1]*s,{lower:t,upper:n=r?Math.max(n,.1):n}}getNewRange({viewport:e,deltaPointsCanvas:t,volumeId:n,lower:o,upper:a}){const r=this._getMultiplierFromDynamicRange(e,n)||4,s=t[0]*r,l=t[1]*r;let{windowWidth:d,windowCenter:c}=i.utilities.windowLevel.toWindowLevel(o,a);d+=s,c+=l,d=Math.max(d,1);const u=e.getProperties().VOILUTFunction;return i.utilities.windowLevel.toLowHighRange(d,c,u)}_getMultiplierFromDynamicRange(e,t){let n;if(t){const o=i.cache.getVolume(t),{voxelManager:a}=e.getImageData(),r=a.getMiddleSliceData().reduce(((e,t)=>[Math.min(e[0],t),Math.max(e[1],t)]),[1/0,-1/0]),s=o?.metadata?.BitsStored,l=s?2**s:1/0;n=Math.min(r,l)}else n=this._getImageDynamicRangeFromViewport(e);const o=n/1024;return o>1?Math.round(o):o}_getImageDynamicRangeFromViewport(e){const{imageData:t,voxelManager:n}=e.getImageData();if(n?.getRange){const e=n.getRange();return e[1]-e[0]}const o=t.getDimensions();if(t.getRange){const e=t.getRange();return e[1]-e[0]}let i,a;if(i=t.getScalarData?t.getScalarData():t.getPointData().getScalars().getData(),1!==o[2])return this._getImageDynamicRangeFromMiddleSlice(i,o);if(i.getRange)a=i.getRange();else{const{min:e,max:t}=this._getMinMax(i,i.length);a=[e,t]}return a[1]-a[0]}_getMinMax(e,t){let n=1/0,o=-1/0;for(let i=0;i<t;i++){const t=e[i];t<n&&(n=t),t>o&&(o=t)}return{max:o,min:n}}}a.toolName="WindowLevel";const r=a},26938:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(3823),i=n(84607),a=n(15327),r=n(85817);class s extends r.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.001,maxZoomScale:3e3,pinchToZoom:!0,pan:!0,invert:!1}}){super(e,t),this.preMouseDownCallback=e=>{const t=e.detail,{element:n,currentPoints:i}=t,r=i.world,s=(0,a.getEnabledElement)(n).viewport.getCamera(),{focalPoint:l}=s;this.initialMousePosWorld=r;let d=o.eR.fromValues(l[0]-r[0],l[1]-r[1],l[2]-r[2]);return d=o.eR.normalize(o.eR.create(),d),this.dirVec=d,!1},this.preTouchStartCallback=e=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(e)},this._dragParallelProjection=(e,t,n,i=!1)=>{const{element:a,deltaPoints:r}=e.detail,s=i?e.detail.deltaDistance.canvas:r.canvas[1],l=[a.clientWidth,a.clientHeight],{parallelScale:d,focalPoint:c,position:u}=n,h=s*(5/l[1])*(this.configuration.invert?-1:1),g=(1-h)*d;let p=c,f=u;if(!this.configuration.zoomToCenter){const e=o.eR.distance(c,this.initialMousePosWorld);f=o.eR.scaleAndAdd(o.eR.create(),u,this.dirVec,-e*h),p=o.eR.scaleAndAdd(o.eR.create(),c,this.dirVec,-e*h)}const m=t.getImageData();let v=[1,1,1];m&&(v=m.spacing);const{minZoomScale:w,maxZoomScale:b}=this.configuration,E=a.clientHeight*v[1]*.5,I=E/g;let y=g,_=!1;m&&(I<w?(y=E/w,_=!0):I>=b&&(y=E/b,_=!0)),t.setCamera({parallelScale:y,focalPoint:_?c:p,position:_?u:f})},this._dragPerspectiveProjection=(e,t,n,o=!1)=>{const{element:a,deltaPoints:r}=e.detail,s=o?e.detail.deltaDistance.canvas:r.canvas[1],l=[a.clientWidth,a.clientHeight],{position:d,focalPoint:c,viewPlaneNormal:u}=n,h=i.Ay.distance2BetweenPoints(d,c),g=Math.sqrt(h)/l[1],p=[-u[0],-u[1],-u[2]],f=this.configuration.invert?s/g:s*g;let m=f*p[0];d[0]+=m,c[0]+=m,m=f*p[1],d[1]+=m,c[1]+=m,m=f*p[2],d[2]+=m,c[2]+=m,t.setCamera({position:d,focalPoint:c})},this.initialMousePosWorld=[0,0,0],this.dirVec=[0,0,0],this.configuration.pinchToZoom?this.touchDragCallback=this._pinchCallback.bind(this):this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:t,currentPoints:n}=e.detail,i=(0,a.getEnabledElement)(t),{viewport:r}=i,s=r.getCamera(),l=n.world,{focalPoint:d}=s;this.initialMousePosWorld=l;let c=o.eR.fromValues(d[0]-l[0],d[1]-l[1],d[2]-l[2]);c=o.eR.normalize(o.eR.create(),c),this.dirVec=c,s.parallelProjection?this._dragParallelProjection(e,r,s,!0):this._dragPerspectiveProjection(e,r,s,!0),r.render()}this.configuration.pan&&this._panCallback(e)}_dragCallback(e){const{element:t}=e.detail,n=(0,a.getEnabledElement)(t),{viewport:o}=n,i=o.getCamera();i.parallelProjection?this._dragParallelProjection(e,o,i):this._dragPerspectiveProjection(e,o,i),o.render()}_panCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,a.getEnabledElement)(t),i=n.world,r=o.viewport.getCamera(),{focalPoint:s,position:l}=r,d=[l[0]-i[0],l[1]-i[1],l[2]-i[2]],c=[s[0]-i[0],s[1]-i[1],s[2]-i[2]];o.viewport.setCamera({focalPoint:c,position:d}),o.viewport.render()}}s.toolName="Zoom";const l=s},9608:(e,t,n)=>{"use strict";n.d(t,{A:()=>E});var o=n(99737),i=n(15327),a=n(85817),r=n(27730),s=n(82056),l=n(2076),d=n(15305),c=n(25963),u=n(17328),h=n(85204),g=n(60810),p=n(58640),f=n(44049),m=n(7001),v=n(29601);class w extends a.EC{static{this.toolName="Angle"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:b}}){super(e,t),this.addNewAnnotation=e=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:l,renderingEngine:d}=r;(0,m.hideElementCursor)(o),this.isDrawing=!0;const c=l.getCamera(),{viewPlaneNormal:u,viewUp:h}=c,f=this.getReferencedImageId(l,a,u,h),v=l.getFrameOfReferenceUID(),w={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...h],FrameOfReferenceUID:v,referencedImageId:f,...l.getViewReference({points:[a]})},data:{handles:{points:[[...a],[...a]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};(0,s.addAnnotation)(w,o);const b=(0,g.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:w,viewportIdsToRender:b,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),(0,p.A)(b),w},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,[l,c,u]=s.handles.points,h=r.worldToCanvas(l),g=r.worldToCanvas(c),p={start:{x:h[0],y:h[1]},end:{x:g[0],y:g[1]}};if(d.distanceToPoint([p.start.x,p.start.y],[p.end.x,p.end.y],[n[0],n[1]])<=o)return!0;if(!u)return!1;const f=r.worldToCanvas(u),m={start:{x:g[0],y:g[1]},end:{x:f[0],y:f[1]}};return d.distanceToPoint([m.start.x,m.start.y],[m.end.x,m.end.y],[n[0],n[1]])<=o},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,g.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1},this._activateModify(o),(0,m.hideElementCursor)(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,p.A)(a),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,newAnnotation:r,hasMoved:l}=this.editData,{data:d}=o;if(r&&!l)return;if(this.angleStartedNotYetCompleted&&2===d.handles.points.length)return void(this.editData.handleIndex=2);this.angleStartedNotYetCompleted=!1,d.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,m.resetElementCursor)(n);const c=(0,i.getEnabledElement)(n),{renderingEngine:u}=c;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,s.removeAnnotation)(o.annotationUID),(0,p.A)(a),r&&(0,f.triggerAnnotationCompleted)(o),this.editData=null,this.isDrawing=!1},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:a,viewportIdsToRender:r,handleIndex:s,movingTextBox:l}=this.editData,{data:d}=a;if(l){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===s){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),a.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;d.handles.points[s]=[...n],a.invalidated=!0}this.editData.hasMoved=!0;const c=(0,i.getEnabledElement)(n),{renderingEngine:u}=c;(0,p.A)(r),a.invalidated&&(0,f.triggerAnnotationModified)(a,n,o.ChangeTypes.HandlesUpdated)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,m.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,p.A)(n),o&&(0,f.triggerAnnotationCompleted)(t),this.editData=null,this.angleStartedNotYetCompleted=!1,t.annotationUID}},this._activateModify=e=>{h.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=e=>{h.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._activateDraw=e=>{h.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{h.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,s.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r=this.getTargetId(o),d=o.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<a.length;i++){const s=a[i],{annotationUID:h,data:g}=s,{points:p,activeHandleIndex:f}=g.handles;c.annotationUID=h;const{color:m,lineWidth:w,lineDash:b}=this.getAnnotationStyle({annotation:s,styleSpecifier:c}),E=p.map((e=>o.worldToCanvas(e)));let I;if(g.cachedStats[r]&&null!=g.cachedStats[r].angle?s.invalidated&&this._throttledCalculateCachedStats(s,d,e):(g.cachedStats[r]={angle:null},this._calculateCachedStats(s,d,e)),(0,l.isAnnotationLocked)(s.annotationUID)||this.editData||null===f||(I=[E[f]]),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,v.isAnnotationVisible)(h))continue;if(I){const e="0";(0,u.drawHandles)(t,h,e,E,{color:m,lineDash:b,lineWidth:w})}let y="1";if((0,u.drawLine)(t,h,y,E[0],E[1],{color:m,width:w,lineDash:b}),n=!0,3!==E.length)return n;if(y="2",(0,u.drawLine)(t,h,y,E[1],E[2],{color:m,width:w,lineDash:b}),!g.cachedStats[r]?.angle)continue;const _=this.getLinkedTextBoxStyle(c,s);if(!_.visibility){g.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const C=this.configuration.getTextLines(g,r);if(!g.handles.textBox.hasMoved){const e=E[1];g.handles.textBox.worldPosition=o.canvasToWorld(e)}const x=o.worldToCanvas(g.handles.textBox.worldPosition),S="1",T=(0,u.drawLinkedTextBox)(t,h,S,C,x,E,{},_),{x:A,y:D,width:M,height:R}=T;g.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([A,D]),topRight:o.canvasToWorld([A+M,D]),bottomLeft:o.canvasToWorld([A,D+R]),bottomRight:o.canvasToWorld([A+M,D+R])}}return n},this._throttledCalculateCachedStats=(0,r.A)(this._calculateCachedStats,100,{trailing:!0})}static{this.hydrate=(e,t,n)=>{const o=(0,i.getEnabledElementByViewportId)(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:r,viewPlaneNormal:l,instance:d,viewport:c}=this.hydrateBase(w,o,t,n),u={annotationUID:n?.annotationUID||i.utilities.uuidv4(),data:{handles:{points:t}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:d.getToolName(),viewPlaneNormal:l,FrameOfReferenceUID:a,referencedImageId:r,...n}};(0,s.addAnnotation)(u,c.element),(0,p.A)([c.id])}}handleSelectedCallback(e,t,n){const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;let s,l=!1;n.worldPosition?l=!0:s=r.handles.points.findIndex((e=>e===n));const d=(0,g.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a),(0,m.hideElementCursor)(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:u}=c;(0,p.A)(d),e.preventDefault()}_calculateCachedStats(e,t,n){const a=e.data,{element:r}=n.viewport;if(3!==a.handles.points.length)return;const s=a.handles.points[0],l=a.handles.points[1],d=a.handles.points[2],{cachedStats:u}=a,h=Object.keys(u);for(let e=0;e<h.length;e++){const t=h[e],n=(0,c.A)([s,l],[l,d]),{dimensions:o,imageData:a}=this.getTargetImageData(t);this.isHandleOutsideImage=[s,l,d].map((e=>i.utilities.transformWorldToIndex(a,e))).some((e=>!i.utilities.indexWithinDimensions(e,o))),u[t]={angle:isNaN(n)?"Incomplete Angle":n}}const g=e.invalidated;return e.invalidated=!1,g&&(0,f.triggerAnnotationModified)(e,r,o.ChangeTypes.StatsUpdated),u}}function b(e,t){const n=e.cachedStats[t],{angle:o}=n;if(void 0===o)return;if(isNaN(o))return[`${o}`];return[`${i.utilities.roundNumber(o)} ${String.fromCharCode(176)}`]}const E=w},24146:(e,t,n)=>{"use strict";n.d(t,{A:()=>E});var o=n(99737),i=n(15327),a=n(85817),r=n(82056),s=n(2076),l=n(15305),d=n(17328),c=n(85204),u=n(60810),h=n(58640),g=n(44049),p=n(7001),f=n(29601),m=n(53860);class v extends a.EC{static{this.toolName="ArrowAnnotate"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:w,changeTextCallback:b,preventHandleOutsideImage:!1,arrowFirst:!0,arrowHeadStyle:"legacy"}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,s=(0,i.getEnabledElement)(o),{viewport:l,renderingEngine:d}=s;(0,p.hideElementCursor)(o),this.isDrawing=!0;const c=l.getCamera(),{viewPlaneNormal:g,viewUp:f}=c,m=this.getReferencedImageId(l,a,g,f),{arrowFirst:v}=this.configuration,w=l.getFrameOfReferenceUID(),b={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...g],viewUp:[...f],FrameOfReferenceUID:w,referencedImageId:m,...l.getViewReference({points:[a]})},data:{text:"",handles:{points:[[...a],[...a]],activeHandleIndex:null,arrowFirst:v,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};(0,r.addAnnotation)(b,o);const E=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:b,viewportIdsToRender:E,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),(0,h.A)(E),b},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,[d,c]=s.handles.points,u=r.worldToCanvas(d),h=r.worldToCanvas(c),g={start:{x:u[0],y:u[1]},end:{x:h[0],y:h[1]}};return l.distanceToPoint([g.start.x,g.start.y],[g.end.x,g.end.y],[n[0],n[1]])<=o},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1},this._activateModify(o),(0,p.hideElementCursor)(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,h.A)(a),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:a,newAnnotation:s,hasMoved:l,movingTextBox:d}=this.editData,{data:c}=i;s&&!l||(c.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,p.resetElementCursor)(n),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,r.removeAnnotation)(i.annotationUID),s?this.configuration.getTextCallback((e=>{if(!e)return(0,r.removeAnnotation)(i.annotationUID),(0,h.A)(a),this.editData=null,void(this.isDrawing=!1);i.data.text=e,(0,g.triggerAnnotationModified)(i,n,o.ChangeTypes.HandlesUpdated),(0,g.triggerAnnotationCompleted)(i),this.createMemo(n,i,{newAnnotation:!!this.memo}),(0,m.setAnnotationLabel)(i,n,e),(0,h.A)(a)})):d||(0,g.triggerAnnotationModified)(i,n,o.ChangeTypes.HandlesUpdated),this.doneEditMemo(),this.editData=null,this.isDrawing=!1)},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:a,handleIndex:r,movingTextBox:s,newAnnotation:l}=this.editData;this.createMemo(n,i,{newAnnotation:l});const{data:d}=i;if(s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),i.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;d.handles.points[r]=[...n],i.invalidated=!0}this.editData.hasMoved=!0,(0,h.A)(a),i.invalidated&&(0,g.triggerAnnotationModified)(i,n,o.ChangeTypes.HandlesUpdated)},this.touchTapCallback=e=>{2==e.detail.taps&&this.doubleClickCallback(e)},this.doubleClickCallback=e=>{const t=e.detail,{element:n}=t;let o=(0,r.getAnnotations)(this.getToolName(),n);if(o=this.filterInteractableAnnotationsForElement(n,o),!o?.length)return;const i=o.find((e=>this.isPointNearTool(n,e,t.currentPoints.canvas,6)));if(!i)return;const a=i;this.configuration.changeTextCallback(i,e.detail,this._doneChangingTextCallback.bind(this,n,a)),this.editData=null,this.isDrawing=!1,e.stopImmediatePropagation(),e.preventDefault()},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,p.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,h.A)(n),o&&(0,g.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{c.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=e=>{c.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback)},this._activateDraw=e=>{c.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{c.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,r.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<a.length;e++){const i=a[e],{annotationUID:r,data:c}=i,{handles:u,text:h}=c,{points:g,activeHandleIndex:p}=u;l.annotationUID=r;const{color:m,lineWidth:v,lineDash:w,markerSize:b}=this.getAnnotationStyle({annotation:i,styleSpecifier:l}),E=g.map((e=>o.worldToCanvas(e)));let I;if((0,s.isAnnotationLocked)(r)||this.editData||null===p||(I=[E[p]]),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,f.isAnnotationVisible)(r))continue;if(I){const e="0";(0,d.drawHandles)(t,r,e,E,{color:m,lineWidth:v})}const y="1";if(this.configuration.arrowFirst?(0,d.drawArrow)(t,r,y,E[1],E[0],{color:m,width:v,lineDash:w,viaMarker:"legacy"!==this.configuration.arrowHeadStyle,markerSize:b}):(0,d.drawArrow)(t,r,y,E[0],E[1],{color:m,width:v,lineDash:w,viaMarker:"legacy"!==this.configuration.arrowHeadStyle,markerSize:b}),n=!0,!h)continue;const _=this.getLinkedTextBoxStyle(l,i);if(!_.visibility){c.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}if(!c.handles.textBox.hasMoved){const e=E[1];c.handles.textBox.worldPosition=o.canvasToWorld(e)}const C=o.worldToCanvas(c.handles.textBox.worldPosition),x="1",S=(0,d.drawLinkedTextBox)(t,r,x,[h],C,E,{},_),{x:T,y:A,width:D,height:M}=S;c.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([T,A]),topRight:o.canvasToWorld([T+D,A]),bottomLeft:o.canvasToWorld([T,A+M]),bottomRight:o.canvasToWorld([T+D,A+M])}}return n}}static{this.hydrate=(e,t,n,o)=>{const a=(0,i.getEnabledElementByViewportId)(e);if(!a)return;const{FrameOfReferenceUID:s,referencedImageId:l,viewPlaneNormal:d,instance:c,viewport:u}=this.hydrateBase(v,a,t,o),g={annotationUID:o?.annotationUID||i.utilities.uuidv4(),data:{text:n||"",handles:{points:t}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:d,FrameOfReferenceUID:s,referencedImageId:l,...o}};(0,r.addAnnotation)(g,u.element),(0,h.A)([u.id])}}handleSelectedCallback(e,t,n){const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;let s,l=!1;n.worldPosition?l=!0:s=r.handles.points.findIndex((e=>e===n));const d=(0,u.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a),(0,p.hideElementCursor)(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:g}=c;(0,h.A)(d),e.preventDefault()}_doneChangingTextCallback(e,t,n){t.data.text=n;(0,i.getEnabledElement)(e);const o=(0,u.getViewportIdsWithToolToRender)(e,this.getToolName());(0,h.A)(o),(0,g.triggerAnnotationModified)(t,e)}_isInsideVolume(e,t,n){return i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n)}}function w(e){return e(prompt("Enter your annotation:"))}function b(e,t,n){return n(prompt("Enter your annotation:"))}const E=v},25072:(e,t,n)=>{"use strict";n.d(t,{A:()=>_});var o=n(3823),i=n(15327),a=n(4096),r=n(85817),s=n(27730),l=n(82056),d=n(2076),c=n(29601),u=n(44049),h=n(17328),g=n(85204),p=n(99737),f=n(60810),m=n(15305),v=n(473),w=n(7001),b=n(58640);const{transformWorldToIndex:E}=i.utilities;class I extends r.EC{static{this.toolName="Bidirectional"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:y}}){super(e,t),this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,{points:l}=s.handles;let d=r.worldToCanvas(l[0]),c=r.worldToCanvas(l[1]),u={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}},h=m.distanceToPoint([u.start.x,u.start.y],[u.end.x,u.end.y],[n[0],n[1]]);return h<=o||(d=r.worldToCanvas(l[2]),c=r.worldToCanvas(l[3]),u={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}},h=m.distanceToPoint([u.start.x,u.start.y],[u.end.x,u.end.y],[n[0],n[1]]),h<=o)},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,f.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1},this._activateModify(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,b.A)(a),(0,w.hideElementCursor)(o),e.preventDefault()},this.handleSelectedCallback=(e,t,n)=>{const o=e.detail,{element:a}=o,r=t.data;t.highlighted=!0;let s,l=!1;n.worldPosition?l=!0:s=r.handles.points.findIndex((e=>e===n));const d=(0,f.getViewportIdsWithToolToRender)(a,this.getToolName());(0,w.hideElementCursor)(a),this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:u}=c;(0,b.A)(d),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:a,viewportIdsToRender:r,newAnnotation:s,hasMoved:d}=this.editData,{data:c}=a;if(s&&!d)return;this.doneEditMemo(),c.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,w.resetElementCursor)(n);const{renderingEngine:h}=(0,i.getEnabledElement)(n);if(void 0!==this.editData.handleIndex){const{points:e}=c.handles,t=o.eR.distance(e[0],e[1]);if(o.eR.distance(e[2],e[3])>t){const t=[[...e[2]],[...e[3]]],n=[...e[0]],i=[...e[1]],a=o.Zc.create();o.Zc.set(a,t[1][0]-t[0][0],t[1][1]-t[1][0]);const r=o.Zc.create();o.Zc.set(r,-a[1],a[0]);const s=o.Zc.create();let l;o.Zc.set(s,i[0]-n[0],i[1]-n[0]),l=o.Zc.dot(s,r)>0?[n,i]:[i,n],c.handles.points=[t[0],t[1],l[0],l[1]]}}this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,l.removeAnnotation)(a.annotationUID),(0,b.A)(r),s&&(0,u.triggerAnnotationCompleted)(a),this.editData=null,this.isDrawing=!1},this._dragDrawCallback=e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:a}=t,r=(0,i.getEnabledElement)(a),{viewport:s}=r,{worldToCanvas:l}=s,{annotation:d,viewportIdsToRender:c,handleIndex:h,newAnnotation:g}=this.editData;this.createMemo(a,d,{newAnnotation:g});const{data:f}=d,m=n.world;f.handles.points[h]=[...m];const v=f.handles.points.map(l),w={start:{x:v[0][0],y:v[0][1]},end:{x:v[1][0],y:v[1][1]}},E=(v[2][0],v[2][1],v[3][0],v[3][1],o.Zc.distance(v[0],v[1])/3),I=w.start.x-w.end.x,y=w.start.y-w.end.y,_=Math.sqrt(I*I+y*y),C=I/_,x=y/_,S=(w.start.x+w.end.x)/2,T=(w.start.y+w.end.y)/2,A=S+E*x,D=T-E*C,M=S-E*x,R=T+E*C;f.handles.points[2]=s.canvasToWorld([A,D]),f.handles.points[3]=s.canvasToWorld([M,R]),d.invalidated=!0,(0,b.A)(c),(0,u.triggerAnnotationModified)(d,a,p.ChangeTypes.HandlesUpdated),this.editData.hasMoved=!0},this._dragModifyCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r,newAnnotation:s}=this.editData;this.createMemo(n,o,{newAnnotation:s});const{data:l}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=l.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;l.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragModifyHandle(e),o.invalidated=!0;(0,b.A)(i),o.invalidated&&(0,u.triggerAnnotationModified)(o,n,p.ChangeTypes.HandlesUpdated)},this._dragModifyHandle=e=>{const t=e.detail,{currentPoints:n,element:a}=t,r=(0,i.getEnabledElement)(a),{viewport:s}=r,{annotation:l,handleIndex:d}=this.editData,{data:c}=l,u=n.world,h=[s.worldToCanvas(c.handles.points[0]),s.worldToCanvas(c.handles.points[1]),s.worldToCanvas(c.handles.points[2]),s.worldToCanvas(c.handles.points[3])],g={start:{x:h[0][0],y:h[0][1]},end:{x:h[1][0],y:h[1][1]}},p={start:{x:h[2][0],y:h[2][1]},end:{x:h[3][0],y:h[3][1]}},f=[...u],v=s.worldToCanvas(f);if(0===d||1===d){const e=h[0===d?1:0],t=o.Zc.set(o.Zc.create(),v[0]-e[0],v[1]-e[1]),n=o.Zc.set(o.Zc.create(),h[d][0]-e[0],h[d][1]-e[1]);o.Zc.normalize(t,t),o.Zc.normalize(n,n);const i={start:{x:e[0],y:e[1]},end:{x:v[0],y:v[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(i,p))return;const a=e,r=this._getSignedAngle(n,t);let l=h[2][0],u=h[2][1],g=h[3][0],m=h[3][1];l-=a[0],u-=a[1],g-=a[0],m-=a[1];const w=l*Math.cos(r)-u*Math.sin(r),b=l*Math.sin(r)+u*Math.cos(r),E=g*Math.cos(r)-m*Math.sin(r),I=g*Math.sin(r)+m*Math.cos(r);l=w+a[0],u=b+a[1],g=E+a[0],m=I+a[1];const y=s.canvasToWorld([l,u]),_=s.canvasToWorld([g,m]);c.handles.points[d]=f,c.handles.points[2]=y,c.handles.points[3]=_}else{const e=2===d?3:2,t={longLineSegment:{start:g.start,end:g.end},shortLineSegment:{start:p.start,end:p.end}},n=o.Zc.subtract(o.Zc.create(),[t.longLineSegment.end.x,t.longLineSegment.end.y],[t.longLineSegment.start.x,t.longLineSegment.start.y]),i=o.Zc.normalize(o.Zc.create(),n),a=o.Zc.subtract(o.Zc.create(),[v[0],v[1]],[h[d][0],h[d][1]]),r=o.Zc.length(a),l=this._getSignedAngle(i,a),u=Math.cos(l)*r,w=o.Zc.scaleAndAdd(o.Zc.create(),[h[e][0],h[e][1]],i,u);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:v[0],y:v[1]},end:{x:w[0],y:w[1]}},{start:{x:t.longLineSegment.start.x,y:t.longLineSegment.start.y},end:{x:t.longLineSegment.end.x,y:t.longLineSegment.end.y}}))return;if(!m.intersectLine([v[0],v[1]],[w[0],w[1]],[g.start.x,g.start.y],[g.end.x,g.end.y]))return;c.handles.points[e]=s.canvasToWorld(w),c.handles.points[d]=f}},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,w.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,b.A)(n),o&&(0,u.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateDraw=e=>{g.wk.isInteractingWithTool=!0,e.addEventListener(p.Events.MOUSE_UP,this._endCallback),e.addEventListener(p.Events.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(p.Events.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(p.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(p.Events.TOUCH_TAP,this._endCallback),e.addEventListener(p.Events.TOUCH_END,this._endCallback),e.addEventListener(p.Events.TOUCH_DRAG,this._dragDrawCallback)},this._deactivateDraw=e=>{g.wk.isInteractingWithTool=!1,e.removeEventListener(p.Events.MOUSE_UP,this._endCallback),e.removeEventListener(p.Events.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(p.Events.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(p.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(p.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(p.Events.TOUCH_END,this._endCallback),e.removeEventListener(p.Events.TOUCH_DRAG,this._dragDrawCallback)},this._activateModify=e=>{g.wk.isInteractingWithTool=!0,e.addEventListener(p.Events.MOUSE_UP,this._endCallback),e.addEventListener(p.Events.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(p.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(p.Events.TOUCH_END,this._endCallback),e.addEventListener(p.Events.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(p.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{g.wk.isInteractingWithTool=!1,e.removeEventListener(p.Events.MOUSE_UP,this._endCallback),e.removeEventListener(p.Events.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(p.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(p.Events.TOUCH_END,this._endCallback),e.removeEventListener(p.Events.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(p.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!0;const{viewport:o}=e,{element:i}=o;let a=(0,l.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r=this.getTargetId(o),s=o.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<a.length;i++){const l=a[i],{annotationUID:g,data:p}=l,{points:f,activeHandleIndex:m}=p.handles,w=f.map((e=>o.worldToCanvas(e)));u.annotationUID=g;const{color:b,lineWidth:E,lineDash:I,shadow:y}=this.getAnnotationStyle({annotation:l,styleSpecifier:u});if(p.cachedStats[r]&&null!=p.cachedStats[r].unit?l.invalidated&&this._throttledCalculateCachedStats(l,s,e):(p.cachedStats[r]={length:null,width:null,unit:null},this._calculateCachedStats(l,s,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let _;if(!(0,c.isAnnotationVisible)(g))continue;if((0,d.isAnnotationLocked)(g)||this.editData||null===m||(_=[w[m]]),_){const e="0";(0,h.drawHandles)(t,g,e,_,{color:b})}const C=`${g}-line-1`,x=`${g}-line-2`,S="0";(0,h.drawLine)(t,g,S,w[0],w[1],{color:b,lineDash:I,lineWidth:E,shadow:y},C);const T="1";(0,h.drawLine)(t,g,T,w[2],w[3],{color:b,lineDash:I,lineWidth:E,shadow:y},x),n=!0;const A=this.getLinkedTextBoxStyle(u,l);if(!A.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const D=this.configuration.getTextLines(p,r);if(!D||0===D.length)continue;let M;p.handles.textBox.hasMoved||(M=(0,v.getTextBoxCoordsCanvas)(w),p.handles.textBox.worldPosition=o.canvasToWorld(M));const R=o.worldToCanvas(p.handles.textBox.worldPosition),P="1",O=(0,h.drawLinkedTextBox)(t,g,P,D,R,w,{},A),{x:k,y:L,width:U,height:N}=O;p.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([k,L]),topRight:o.canvasToWorld([k+U,L]),bottomLeft:o.canvasToWorld([k,L+N]),bottomRight:o.canvasToWorld([k+U,L+N])}}return n},this._movingLongAxisWouldPutItThroughShortAxis=(e,t)=>{const n=o.Zc.create();o.Zc.set(n,t.end.x-t.start.x,t.end.y-t.start.y),o.Zc.normalize(n,n);const i={start:{x:t.start.x-10*n[0],y:t.start.y-10*n[1]},end:{x:t.end.x+10*n[0],y:t.end.y+10*n[1]}};return!m.intersectLine([i.start.x,i.start.y],[i.end.x,i.end.y],[e.start.x,e.start.y],[e.end.x,e.end.y])},this._calculateCachedStats=(e,t,n)=>{const{data:o}=e,{element:i}=n.viewport,r=o.handles.points[0],s=o.handles.points[1],l=o.handles.points[2],d=o.handles.points[3],{cachedStats:c}=o,h=Object.keys(c);for(let e=0;e<h.length;e++){const t=h[e],n=this.getTargetImageData(t);if(!n)continue;const{imageData:o,dimensions:i}=n,u=E(o,r),g=E(o,s),p=E(o,l),f=E(o,d),m=[u,g],v=[p,f],{scale:w,unit:b}=(0,a.Op)(n,m),{scale:I,unit:y}=(0,a.Op)(n,v),_=this._calculateLength(r,s)/w,C=this._calculateLength(l,d)/I,x=_>C?_:C,S=_>C?C:_,T=_>C?b:y,A=_>C?y:b;this._isInsideVolume(u,g,p,f,i)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,c[t]={length:x,width:S,unit:T,widthUnit:A}}const g=e.invalidated;return e.invalidated=!1,g&&(0,u.triggerAnnotationModified)(e,i,p.ChangeTypes.StatsUpdated),c},this._isInsideVolume=(e,t,n,o,a)=>i.utilities.indexWithinDimensions(e,a)&&i.utilities.indexWithinDimensions(t,a)&&i.utilities.indexWithinDimensions(n,a)&&i.utilities.indexWithinDimensions(o,a),this._getSignedAngle=(e,t)=>Math.atan2(e[0]*t[1]-e[1]*t[0],e[0]*t[0]+e[1]*t[1]),this._throttledCalculateCachedStats=(0,s.A)(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:s,renderingEngine:d}=r;this.isDrawing=!0;const c=s.getCamera(),{viewPlaneNormal:u,viewUp:h}=c,g=this.getReferencedImageId(s,a,u,h),p=s.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...s.getViewReference({points:[a]})},data:{handles:{points:[[...a],[...a],[...a],[...a]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};(0,l.addAnnotation)(m,o);const v=(0,f.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),(0,w.hideElementCursor)(o),e.preventDefault(),(0,b.A)(v),m}static{this.hydrate=(e,t,n)=>{const o=(0,i.getEnabledElementByViewportId)(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:r,viewPlaneNormal:s,instance:d,viewport:c}=this.hydrateBase(I,o,[],n),[u,h]=t,[g,p]=u,[f,m]=h,v=[g,p,f,m],w={annotationUID:n?.annotationUID||i.utilities.uuidv4(),data:{handles:{points:v,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:d.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:a,referencedImageId:r,...n}};return(0,l.addAnnotation)(w,c.element),(0,b.A)([c.id]),w}}_calculateLength(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+o*o+i*i)}}function y(e,t){const{cachedStats:n,label:o}=e,{length:a,width:r,unit:s}=n[t],l=[];return o&&l.push(o),void 0===a||l.push(`L: ${i.utilities.roundNumber(a)} ${s||s}`,`W: ${i.utilities.roundNumber(r)} ${s}`),l}const _=I},31137:(e,t,n)=>{"use strict";n.d(t,{A:()=>T});var o=n(85817),i=n(15327),a=n(4096),r=n(27730),s=n(82056),l=n(2076),d=n(29601),c=n(44049),u=n(17328),h=n(85204),g=n(99737),p=n(60810),f=n(473),m=n(62514),v=n(7001),w=n(58640),b=n(40634),E=n(18990),I=n(77081),y=n(11683),_=n(73262);const{transformWorldToIndex:C}=i.utilities;class x extends o.EC{static{this.toolName="CircleROI"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:S,statsCalculator:_.BasicStatsCalculator}}){super(e,t),this.isHandleOutsideImage=!1,this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:l,renderingEngine:d}=r;this.isDrawing=!0;const c=l.getCamera(),{viewPlaneNormal:u,viewUp:h}=c,g=this.getReferencedImageId(l,a,u,h),f=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...h],FrameOfReferenceUID:f,referencedImageId:g,...l.getViewReference({points:[a]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...a],[...a]],activeHandleIndex:null},cachedStats:{}}};(0,s.addAnnotation)(m,o);const b=(0,p.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:b,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),(0,v.hideElementCursor)(o),e.preventDefault(),(0,w.A)(b),m},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,{points:l}=s.handles,d=l.map((e=>r.worldToCanvas(e))),c=(0,I.getCanvasCircleRadius)(d),u=(0,I.getCanvasCircleRadius)([d[0],n]);return Math.abs(u-c)<o/2},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,p.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1},(0,v.hideElementCursor)(o),this._activateModify(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,w.A)(a),e.preventDefault()},this.handleSelectedCallback=(e,t,n)=>{const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;let s,l=!1;if(n.worldPosition)l=!0;else{const{points:e}=r.handles;s=e.findIndex((e=>e===n))}const d=(0,p.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a),(0,v.hideElementCursor)(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:u}=c;(0,w.A)(d),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,newAnnotation:r,hasMoved:l}=this.editData,{data:d}=o;if(r&&!l)return;this.doneEditMemo(),o.highlighted=!1,d.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,v.resetElementCursor)(n);const{renderingEngine:u}=(0,i.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,s.removeAnnotation)(o.annotationUID),(0,w.A)(a),r&&(0,c.triggerAnnotationCompleted)(o)},this._dragDrawCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,a=o.canvas,r=(0,i.getEnabledElement)(n),{viewport:s}=r,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:u,newAnnotation:h}=this.editData;this.createMemo(n,d,{newAnnotation:h});const{data:p}=d;p.handles.points=[p.handles.points[0],l(a)],d.invalidated=!0,this.editData.hasMoved=!0,(0,w.A)(u),(0,c.triggerAnnotationModified)(d,n,g.ChangeTypes.HandlesUpdated)},this._dragModifyCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,handleIndex:r,movingTextBox:s,newAnnotation:l}=this.editData;this.createMemo(n,o,{newAnnotation:l});const{data:d}=o;if(s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const u=(0,i.getEnabledElement)(n),{renderingEngine:h}=u;(0,w.A)(a),o.invalidated&&(0,c.triggerAnnotationModified)(o,n,g.ChangeTypes.HandlesUpdated)},this._dragHandle=e=>{const t=e.detail,{element:n}=t,o=(0,i.getEnabledElement)(n),{canvasToWorld:a,worldToCanvas:r}=o.viewport,{annotation:s,handleIndex:l}=this.editData,{data:d}=s,{points:c}=d.handles,u=c.map((e=>r(e))),{currentPoints:h}=t,g=h.canvas;if(0===l){const e=g[0]-u[0][0],t=g[1]-u[0][1],n=g,o=[u[1][0]+e,u[1][1]+t];c[0]=a(n),c[1]=a(o)}else c[1]=a(g)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,v.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,w.A)(n),o&&(0,c.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{h.wk.isInteractingWithTool=!0,e.addEventListener(g.Events.MOUSE_UP,this._endCallback),e.addEventListener(g.Events.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(g.Events.TOUCH_END,this._endCallback),e.addEventListener(g.Events.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(g.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{h.wk.isInteractingWithTool=!1,e.removeEventListener(g.Events.MOUSE_UP,this._endCallback),e.removeEventListener(g.Events.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(g.Events.TOUCH_END,this._endCallback),e.removeEventListener(g.Events.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(g.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{h.wk.isInteractingWithTool=!0,e.addEventListener(g.Events.MOUSE_UP,this._endCallback),e.addEventListener(g.Events.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(g.Events.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(g.Events.TOUCH_END,this._endCallback),e.addEventListener(g.Events.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(g.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{h.wk.isInteractingWithTool=!1,e.removeEventListener(g.Events.MOUSE_UP,this._endCallback),e.removeEventListener(g.Events.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(g.Events.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(g.Events.TOUCH_END,this._endCallback),e.removeEventListener(g.Events.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(g.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:a}=o;let r=(0,s.getAnnotations)(this.getToolName(),a);if(!r?.length)return n;if(r=this.filterInteractableAnnotationsForElement(a,r),!r?.length)return n;const c=this.getTargetId(o),h=o.getRenderingEngine(),g={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let a=0;a<r.length;a++){const s=r[a],{annotationUID:p,data:m}=s,{handles:v}=m,{points:w,activeHandleIndex:b}=v;g.annotationUID=p;const{color:E,lineWidth:y,lineDash:_}=this.getAnnotationStyle({annotation:s,styleSpecifier:g}),C=w.map((e=>o.worldToCanvas(e))),x=C[0],S=(0,I.getCanvasCircleRadius)(C),T=(0,I.getCanvasCircleCorners)(C),{centerPointRadius:A}=this.configuration;if(m.cachedStats[c]&&null!=m.cachedStats[c].areaUnit){if(s.invalidated&&(this._throttledCalculateCachedStats(s,o,h,e),o instanceof i.VolumeViewport)){const{referencedImageId:e}=s.metadata;for(const t in m.cachedStats)if(t.startsWith("imageId")){h.getStackViewports().find((t=>{const n=i.utilities.imageIdToURI(e),o=t.hasImageURI(n),a=i.utilities.imageIdToURI(t.getCurrentImageId());return o&&a!==n}))&&delete m.cachedStats[t]}}}else m.cachedStats[c]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,radius:null,radiusUnit:null,perimeter:null},this._calculateCachedStats(s,o,h,e);if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let D;if(!(0,d.isAnnotationVisible)(p))continue;if((0,l.isAnnotationLocked)(p)||this.editData||null===b||(D=[C[b]]),D){const e="0";(0,u.drawHandles)(t,p,e,D,{color:E})}const M=`${p}-circle`,R="0";(0,u.drawCircle)(t,p,R,x,S,{color:E,lineDash:_,lineWidth:y},M),A>0&&S>3*A&&(0,u.drawCircle)(t,p,`${R}-center`,x,A,{color:E,lineDash:_,lineWidth:y}),n=!0;const P=this.getLinkedTextBoxStyle(g,s);if(!P.visibility){m.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const O=this.configuration.getTextLines(m,c);if(!O||0===O.length)continue;let k;m.handles.textBox.hasMoved||(k=(0,f.getTextBoxCoordsCanvas)(T),m.handles.textBox.worldPosition=o.canvasToWorld(k));const L=o.worldToCanvas(m.handles.textBox.worldPosition),U="1",N=(0,u.drawLinkedTextBox)(t,p,U,O,L,C,{},P),{x:V,y:B,width:F,height:W}=N;m.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([V,B]),topRight:o.canvasToWorld([V+F,B]),bottomLeft:o.canvasToWorld([V,B+W]),bottomRight:o.canvasToWorld([V+F,B+W])}}return n},this._calculateCachedStats=(e,t,n,o)=>{if(!this.configuration.calculateStats)return;const r=e.data,{element:s}=t,l=e.invalidated,{points:d}=r.handles,u=d.map((e=>t.worldToCanvas(e))),{viewPlaneNormal:h,viewUp:p}=t.getCamera(),[f,v]=(0,I.getCanvasCircleCorners)(u),w=t.canvasToWorld(f),_=t.canvasToWorld(v),{cachedStats:x}=r,S=Object.keys(x),T=w,A=_;for(let n=0;n<S.length;n++){const o=S[n],r=this.getTargetImageData(o);if(!r)continue;const{dimensions:s,imageData:l,metadata:d,voxelManager:c}=r,u=C(l,T);u[0]=Math.floor(u[0]),u[1]=Math.floor(u[1]),u[2]=Math.floor(u[2]);const g=C(l,A);if(g[0]=Math.floor(g[0]),g[1]=Math.floor(g[1]),g[2]=Math.floor(g[2]),this._isInsideVolume(u,g,s)){const n=[[Math.min(u[0],g[0]),Math.max(u[0],g[0])],[Math.min(u[1],g[1]),Math.max(u[1],g[1])],[Math.min(u[2],g[2]),Math.max(u[2],g[2])]],s=[(w[0]+_[0])/2,(w[1]+_[1])/2,(w[2]+_[2])/2],f=Math.abs(w[0]-_[0])/2,v=Math.abs(w[1]-_[1])/2,I=Math.abs(w[2]-_[2])/2,C={center:s,xRadius:f<i.EPSILON/2?0:f,yRadius:v<i.EPSILON/2?0:v,zRadius:I<i.EPSILON/2?0:I},{worldWidth:S,worldHeight:D}=(0,m.A)(h,p,T,A),M=0===S&&0===D,R=[u,g],{scale:P,unit:O,areaUnit:k}=(0,a.Op)(r,R),L=(0,a.CQ)(r),U=Math.abs(Math.PI*(S/P/2)*(D/L/P/2)),N={isPreScaled:(0,E.u)(t,o),isSuvScaled:this.isSuvScaled(t,o,e.metadata.referencedImageId)},V=(0,b.j)(d.Modality,e.metadata.referencedImageId,N),B=c.forEach(this.configuration.statsCalculator.statsCallback,{isInObject:e=>(0,y.pointInEllipse)(C,e,{fast:!0}),boundsIJK:n,imageData:l,returnPoints:this.configuration.storePointData}),F=this.configuration.statsCalculator.getStatistics();x[o]={Modality:d.Modality,area:U,mean:F.mean?.value,max:F.max?.value,pointsInShape:B,stdDev:F.stdDev?.value,statsArray:F.array,isEmptyArea:M,areaUnit:k,radius:S/2/P,radiusUnit:O,perimeter:2*Math.PI*(S/2)/P,modalityUnit:V}}else this.isHandleOutsideImage=!0,x[o]={Modality:d.Modality}}return e.invalidated=!1,l&&(0,c.triggerAnnotationModified)(e,s,g.ChangeTypes.StatsUpdated),x},this._isInsideVolume=(e,t,n)=>i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n),this._throttledCalculateCachedStats=(0,r.A)(this._calculateCachedStats,100,{trailing:!0})}static{this.hydrate=(e,t,n)=>{const o=(0,i.getEnabledElementByViewportId)(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:r,viewPlaneNormal:l,instance:d,viewport:c}=this.hydrateBase(x,o,t,n),u={annotationUID:n?.annotationUID||i.utilities.uuidv4(),data:{handles:{points:t,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:d.getToolName(),viewPlaneNormal:l,FrameOfReferenceUID:a,referencedImageId:r,...n}};(0,s.addAnnotation)(u,c.element),(0,w.A)([c.id])}}}function S(e,t){const n=e.cachedStats[t],{radius:o,radiusUnit:a,area:r,mean:s,stdDev:l,max:d,isEmptyArea:c,areaUnit:u,modalityUnit:h}=n,g=[];if(o){const e=c?"Radius: Oblique not supported":`Radius: ${i.utilities.roundNumber(o)} ${a}`;g.push(e)}if(r){const e=c?"Area: Oblique not supported":`Area: ${i.utilities.roundNumber(r)} ${u}`;g.push(e)}return s&&g.push(`Mean: ${i.utilities.roundNumber(s)} ${h}`),d&&g.push(`Max: ${i.utilities.roundNumber(d)} ${h}`),l&&g.push(`Std Dev: ${i.utilities.roundNumber(l)} ${h}`),g}const T=x},99718:(e,t,n)=>{"use strict";n.d(t,{A:()=>_});var o=n(3823),i=n(99737),a=n(15327),r=n(85817),s=n(27730),l=n(82056),d=n(2076),c=n(44049),u=n(15305),h=n(25963),g=n(82983),p=n(17328),f=n(85204),m=n(60810),v=n(473),w=n(58640),b=n(7001),E=n(29601);class I extends r.EC{static{this.toolName="CobbAngle"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:y,showArcLines:!1}}){super(e,t),this.addNewAnnotation=e=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,r=(0,a.getEnabledElement)(o),{viewport:s,renderingEngine:d}=r;(0,b.hideElementCursor)(o),this.isDrawing=!0;const c=s.getCamera(),{viewPlaneNormal:u,viewUp:h}=c,g=this.getReferencedImageId(s,i,u,h),p=s.getFrameOfReferenceUID(),f={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...h],FrameOfReferenceUID:p,referencedImageId:g,...s.getViewReference({points:[i]})},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};(0,l.addAnnotation)(f,o);const v=(0,m.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:f,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),(0,w.A)(v),f},this.isPointNearTool=(e,t,n,o)=>{const i=(0,a.getEnabledElement)(e),{viewport:r}=i,{data:s}=t,{distanceToPoint:l,distanceToPoint2:d}=this.distanceToLines({viewport:r,points:s.handles.points,canvasCoords:n,proximity:o});return l<=o||d<=o},this.toolSelectedCallback=(e,t,n,o,i=6)=>{const r=e.detail,{element:s}=r;t.highlighted=!0;const l=(0,m.getViewportIdsWithToolToRender)(s,this.getToolName()),d=(0,a.getEnabledElement)(s),{renderingEngine:c,viewport:u}=d,{isNearFirstLine:h,isNearSecondLine:g}=this.distanceToLines({viewport:u,points:t.data.handles.points,canvasCoords:o,proximity:i});this.editData={annotation:t,viewportIdsToRender:l,movingTextBox:!1,isNearFirstLine:h,isNearSecondLine:g},this._activateModify(s),(0,b.hideElementCursor)(s),(0,w.A)(l),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:r,hasMoved:s}=this.editData,{data:d}=o;if(r&&!s)return;if(this.doneEditMemo(),this.angleStartedNotYetCompleted&&d.handles.points.length<4)return(0,b.resetElementCursor)(n),void(this.editData.handleIndex=d.handles.points.length);this.angleStartedNotYetCompleted=!1,d.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,b.resetElementCursor)(n);const u=(0,a.getEnabledElement)(n),{renderingEngine:h}=u;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,l.removeAnnotation)(o.annotationUID),(0,w.A)(i),r&&(0,c.triggerAnnotationCompleted)(o),this.editData=null,this.isDrawing=!1},this._mouseDownCallback=e=>{const{annotation:t,handleIndex:n}=this.editData,o=e.detail,{element:i,currentPoints:a}=o,r=a.world,{data:s}=t;return 1===n?(s.handles.points[1]=r,void(this.editData.hasMoved=s.handles.points[1][0]!==s.handles.points[0][0]||s.handles.points[1][1]!==s.handles.points[0][0])):3===n?(s.handles.points[3]=r,this.editData.hasMoved=s.handles.points[3][0]!==s.handles.points[2][0]||s.handles.points[3][1]!==s.handles.points[2][0],void(this.angleStartedNotYetCompleted=!1)):(this.editData.hasMoved=!1,(0,b.hideElementCursor)(i),s.handles.points[2]=s.handles.points[3]=r,void(this.editData.handleIndex=s.handles.points.length-1))},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:r,handleIndex:s,movingTextBox:l,isNearFirstLine:d,isNearSecondLine:u,newAnnotation:h}=this.editData;this.createMemo(n,o,{newAnnotation:h});const{data:g}=o;if(l){const{deltaPoints:e}=t,n=e.world,{textBox:o}=g.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===s&&(d||u)){const{deltaPoints:e}=t,n=e.world,i=g.handles.points;if(d){[i[0],i[1]].forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]}))}else if(u){[i[2],i[3]].forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]}))}o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;g.handles.points[s]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const p=(0,a.getEnabledElement)(n),{renderingEngine:f}=p;(0,w.A)(r),o.invalidated&&(0,c.triggerAnnotationModified)(o,n,i.ChangeTypes.HandlesUpdated)},this.cancel=e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,b.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;i.handles.points.length<4&&(0,l.removeAnnotation)(t.annotationUID),t.highlighted=!1,i.handles.activeHandleIndex=null;const r=(0,a.getEnabledElement)(e),{renderingEngine:s}=r;return(0,w.A)(n),o&&(0,c.triggerAnnotationCompleted)(t),this.editData=null,this.angleStartedNotYetCompleted=!1,t.annotationUID},this._activateModify=e=>{f.wk.isInteractingWithTool=!0,e.addEventListener(i.Events.MOUSE_UP,this._endCallback),e.addEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(i.Events.TOUCH_END,this._endCallback),e.addEventListener(i.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(i.Events.TOUCH_START,this._mouseDownCallback),e.addEventListener(i.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{f.wk.isInteractingWithTool=!1,e.removeEventListener(i.Events.MOUSE_UP,this._endCallback),e.removeEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(i.Events.TOUCH_END,this._endCallback),e.removeEventListener(i.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(i.Events.TOUCH_START,this._mouseDownCallback),e.removeEventListener(i.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{f.wk.isInteractingWithTool=!0,e.addEventListener(i.Events.MOUSE_UP,this._endCallback),e.addEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(i.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(i.Events.MOUSE_DOWN,this._mouseDownCallback),e.addEventListener(i.Events.TOUCH_END,this._endCallback),e.addEventListener(i.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(i.Events.TOUCH_START,this._mouseDownCallback),e.addEventListener(i.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{f.wk.isInteractingWithTool=!1,e.removeEventListener(i.Events.MOUSE_UP,this._endCallback),e.removeEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(i.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(i.Events.MOUSE_DOWN,this._mouseDownCallback),e.removeEventListener(i.Events.TOUCH_END,this._endCallback),e.removeEventListener(i.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(i.Events.TOUCH_START,this._mouseDownCallback),e.removeEventListener(i.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,l.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r=this.getTargetId(o),s=o.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<a.length;i++){const l=a[i],{annotationUID:u,data:h}=l,{points:f,activeHandleIndex:m}=h.handles;c.annotationUID=u;const{color:w,lineWidth:b,lineDash:I}=this.getAnnotationStyle({annotation:l,styleSpecifier:c}),y=f.map((e=>o.worldToCanvas(e)));let _;if(h.cachedStats[r]&&null!=h.cachedStats[r].angle?l.invalidated&&this._throttledCalculateCachedStats(l,s,e):(h.cachedStats[r]={angle:null,arc1Angle:null,arc2Angle:null,points:{world:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null},canvas:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null}}},this._calculateCachedStats(l,s,e)),(0,d.isAnnotationLocked)(u)||this.editData||null===m||(_=[y[m]]),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,E.isAnnotationVisible)(u))continue;if(_){const e="0";(0,p.drawHandles)(t,u,e,y,{color:w,lineDash:I,lineWidth:b})}const C=[y[0],y[1]],x=[y[2],y[3]];let S="line1";if((0,p.drawLine)(t,u,S,C[0],C[1],{color:w,width:b,lineDash:I}),n=!0,y.length<4)return n;S="line2",(0,p.drawLine)(t,u,S,x[0],x[1],{color:w,width:b,lineDash:I}),S="linkLine";const T=(0,g.f)(C[0],C[1]),A=(0,g.f)(x[0],x[1]);(0,p.drawLine)(t,u,S,T,A,{color:w,lineWidth:"1",lineDash:"1,4"});const{arc1Start:D,arc1End:M,arc2End:R,arc2Start:P}=h.cachedStats[r].points.canvas,{arc1Angle:O,arc2Angle:k}=h.cachedStats[r];if(this.configuration.showArcLines&&(S="arc1",(0,p.drawLine)(t,u,S,D,M,{color:w,lineWidth:"1"}),S="arc2",(0,p.drawLine)(t,u,S,P,R,{color:w,lineWidth:"1"})),!h.cachedStats[r]?.angle)continue;const L=this.getLinkedTextBoxStyle(c,l);if(!L.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const U=this.configuration.getTextLines(h,r);if(!h.handles.textBox.hasMoved){const e=(0,v.getTextBoxCoordsCanvas)(y);h.handles.textBox.worldPosition=o.canvasToWorld(e)}const N=o.worldToCanvas(h.handles.textBox.worldPosition),V="cobbAngleText",B=(0,p.drawLinkedTextBox)(t,u,V,U,N,y,{},L),{x:F,y:W,width:H,height:j}=B;if(h.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([F,W]),topRight:o.canvasToWorld([F+H,W]),bottomLeft:o.canvasToWorld([F,W+j]),bottomRight:o.canvasToWorld([F+H,W+j])},this.configuration.showArcLines){const e="arcAngle1",n=[`${O.toFixed(2)} ${String.fromCharCode(176)}`],o=(0,g.f)(D,M);(0,p.drawTextBox)(t,u,e,n,o,{...L,padding:3});const i="arcAngle2",a=[`${k.toFixed(2)} ${String.fromCharCode(176)}`],r=(0,g.f)(P,R);(0,p.drawTextBox)(t,u,i,a,r,{...L,padding:3})}}return n},this.distanceToLines=({viewport:e,points:t,canvasCoords:n,proximity:o})=>{const[i,a,r,s]=t,l=e.worldToCanvas(i),d=e.worldToCanvas(a),c=e.worldToCanvas(r),h=e.worldToCanvas(s),g={start:{x:l[0],y:l[1]},end:{x:d[0],y:d[1]}},p={start:{x:c[0],y:c[1]},end:{x:h[0],y:h[1]}},f=u.distanceToPoint([g.start.x,g.start.y],[g.end.x,g.end.y],[n[0],n[1]]),m=u.distanceToPoint([p.start.x,p.start.y],[p.end.x,p.end.y],[n[0],n[1]]);let v=!1,w=!1;return f<=o?v=!0:m<=o&&(w=!0),{distanceToPoint:f,distanceToPoint2:m,isNearFirstLine:v,isNearSecondLine:w}},this.getArcsStartEndPoints=({firstLine:e,secondLine:t,mid1:n,mid2:o})=>{const i=[n,o],a=(0,h.A)(e,i),r=(0,h.A)(t,i),s=a>90?1:0,l=r>90?0:1,d=(0,g.f)(i[0],i[1]),c=Math.sqrt((i[1][0]-i[0][0])**2+(i[1][1]-i[0][1])**2),u=.1,p=(0,g.f)(e[0],e[1]),f=(0,g.f)(t[0],t[1]),m=[e[s][0]-p[0],e[s][1]-p[1]],v=Math.sqrt(m[0]**2+m[1]**2),w=[m[0]/v,m[1]/v],b=[p[0]+w[0]*c*u,p[1]+w[1]*c*u],E=[d[0]-n[0],d[1]-n[1]],I=Math.sqrt(E[0]**2+E[1]**2),y=[E[0]/I,E[1]/I],_=[n[0]+y[0]*c*u,n[1]+y[1]*c*u],C=[t[l][0]-f[0],t[l][1]-f[1]],x=Math.sqrt(C[0]**2+C[1]**2),S=[C[0]/x,C[1]/x],T=[f[0]+S[0]*c*u,f[1]+S[1]*c*u],A=[d[0]-o[0],d[1]-o[1]],D=Math.sqrt(A[0]**2+A[1]**2),M=[A[0]/D,A[1]/D];return{arc1Start:b,arc1End:_,arc2Start:T,arc2End:[o[0]+M[0]*c*u,o[1]+M[1]*c*u],arc1Angle:a>90?180-a:a,arc2Angle:r>90?180-r:r}},this._throttledCalculateCachedStats=(0,s.A)(this._calculateCachedStats,25,{trailing:!0})}handleSelectedCallback(e,t,n,o="mouse"){const i=e.detail,{element:a}=i,{data:r}=t;t.highlighted=!0;let s,l=!1;n.worldPosition?l=!0:s=r.handles.points.findIndex((e=>e===n));const d=(0,m.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a),(0,b.hideElementCursor)(a),(0,w.A)(d),e.preventDefault()}_calculateCachedStats(e,t,n){const a=e.data;if(4!==a.handles.points.length)return;const r=[null,null],s=[null,null];let l=Number.MAX_VALUE;for(let e=0;e<2;e+=1)for(let t=2;t<4;t+=1){const n=o.eR.distance(a.handles.points[e],a.handles.points[t]);n<l&&(l=n,r[1]=a.handles.points[e],r[0]=a.handles.points[(e+1)%2],s[0]=a.handles.points[t],s[1]=a.handles.points[2+(t-1)%2])}const{viewport:d}=n,{element:u}=d,p=a.handles.points.map((e=>d.worldToCanvas(e))),f=[p[0],p[1]],m=[p[2],p[3]],v=(0,g.f)(f[0],f[1]),w=(0,g.f)(m[0],m[1]),{arc1Start:b,arc1End:E,arc2End:I,arc2Start:y,arc1Angle:_,arc2Angle:C}=this.getArcsStartEndPoints({firstLine:f,secondLine:m,mid1:v,mid2:w}),{cachedStats:x}=a,S=Object.keys(x);for(let e=0;e<S.length;e++){x[S[e]]={angle:(0,h.A)(r,s),arc1Angle:_,arc2Angle:C,points:{canvas:{arc1Start:b,arc1End:E,arc2End:I,arc2Start:y},world:{arc1Start:d.canvasToWorld(b),arc1End:d.canvasToWorld(E),arc2End:d.canvasToWorld(I),arc2Start:d.canvasToWorld(y)}}}}const T=e.invalidated;return e.invalidated=!1,T&&(0,c.triggerAnnotationModified)(e,u,i.ChangeTypes.StatsUpdated),x}}function y(e,t){const n=e.cachedStats[t],{angle:o}=n;if(void 0===o)return;return[`${o.toFixed(2)} ${String.fromCharCode(176)}`]}const _=I},40487:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var o=n(15327),i=n(17328),a=n(60810),r=n(7001),s=n(58640),l=n(61873);class d extends l.A{static{this.toolName="DragProbe"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:c}}){super(e,t),this.postMouseDownCallback=e=>{const t=e.detail,{currentPoints:n,element:i}=t,l=n.world,d=(0,o.getEnabledElement)(i),{viewport:c,renderingEngine:u}=d;this.isDrawing=!0;const h=c.getCamera(),{viewPlaneNormal:g,viewUp:p}=h,f=this.getReferencedImageId(c,l,g,p),m={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...g],viewUp:[...p],FrameOfReferenceUID:c.getFrameOfReferenceUID(),referencedImageId:f},data:{label:"",handles:{points:[[...l]]},cachedStats:{}}},v=(0,a.getViewportIdsWithToolToRender)(i,this.getToolName());return this.editData={annotation:m,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(i),(0,r.hideElementCursor)(i),e.preventDefault(),(0,s.A)(v),m},this.postTouchStartCallback=e=>this.postMouseDownCallback(e),this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e;if(!this.editData)return n;const a=this.filterInteractableAnnotationsForElement(o.element,[this.editData.annotation]);if(!a?.length)return n;const r=this.getTargetId(o),s=o.getRenderingEngine(),l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},d=this.editData.annotation,c=d.annotationUID,u=d.data,h=u.handles.points[0],g=o.worldToCanvas(h);l.annotationUID=c;const{color:p}=this.getAnnotationStyle({annotation:d,styleSpecifier:l});if(u.cachedStats[r]&&null!==u.cachedStats[r].value?d.invalidated&&this._calculateCachedStats(d,s,e):(u.cachedStats[r]={Modality:null,index:null,value:null},this._calculateCachedStats(d,s,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;(0,i.drawHandles)(t,c,"0",[g],{color:p}),n=!0;const f=this.configuration.getTextLines(u,r);if(f){const e=[g[0]+6,g[1]-6],n="0";(0,i.drawTextBox)(t,c,n,f,[e[0],e[1]],this.getLinkedTextBoxStyle(l,d))}return n}}}function c(e,t){const n=e.cachedStats[t],{index:o,value:i,modalityUnit:a}=n;if(void 0===i)return;const r=[];return r.push(`(${o[0]}, ${o[1]}, ${o[2]})`),r.push(`${i.toFixed(2)} ${a}`),r}const u=d},8467:(e,t,n)=>{"use strict";n.d(t,{A:()=>v});var o=n(85817),i=n(15327),a=n(82056),r=n(29601),s=n(44049),l=n(17328),d=n(85204),c=n(99737),u=n(60810),h=n(7001),g=n(58640),p=n(77081),f=n(3823);class m extends o.EC{static{this.toolName="ETDRSGrid"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,degrees:[45,135,225,315],diameters:[10,30,60]}}){super(e,t),this.isHandleOutsideImage=!1,this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,r=n.world,s=(0,i.getEnabledElement)(o),{viewport:l,renderingEngine:d}=s;this.isDrawing=!0;const c=l.getCamera(),{viewPlaneNormal:p,viewUp:f}=c,m=this.getReferencedImageId(l,r,p,f),v=l.getFrameOfReferenceUID(),w={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...p],viewUp:[...f],FrameOfReferenceUID:v,referencedImageId:m,...l.getViewReference({points:[r]})},data:{label:"",handles:{points:[[...r]]}}};(0,a.addAnnotation)(w,o);const b=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:w,viewportIdsToRender:b,newAnnotation:!0},this._activateDraw(o),(0,h.hideElementCursor)(o),e.preventDefault(),(0,g.A)(b),w},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,{points:l}=s.handles,d=r.worldToCanvas(l[0]),c=(0,p.getCanvasCircleRadius)([d,n]);return Math.abs(c)<o},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a},(0,h.hideElementCursor)(o),this._activateModify(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,g.A)(a),e.preventDefault()},this.handleSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a},this._activateModify(o),(0,h.hideElementCursor)(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,g.A)(a),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:r,newAnnotation:l,hasMoved:d}=this.editData,{data:c}=o;if(l&&!d)return;o.highlighted=!1,c.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,h.resetElementCursor)(n);const{renderingEngine:u}=(0,i.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,a.removeAnnotation)(o.annotationUID),(0,g.A)(r),l&&(0,s.triggerAnnotationCompleted)(o)},this._dragDrawCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,a=o.canvas,r=(0,i.getEnabledElement)(n),{renderingEngine:s,viewport:l}=r,{canvasToWorld:d}=l,{annotation:c,viewportIdsToRender:u}=this.editData,{data:h}=c;h.handles.points=[d(a),d(a)],c.invalidated=!0,this.editData.hasMoved=!0,(0,g.A)(u)},this._dragModifyCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a}=this.editData,{data:r}=o,{deltaPoints:s}=t,l=s.world;r.handles.points.forEach((e=>{e[0]+=l[0],e[1]+=l[1],e[2]+=l[2]})),o.invalidated=!0;const d=(0,i.getEnabledElement)(n),{renderingEngine:c}=d;(0,g.A)(a)},this._dragHandle=e=>{const t=e.detail,{element:n}=t,o=(0,i.getEnabledElement)(n),{canvasToWorld:a,worldToCanvas:r}=o.viewport,{annotation:s}=this.editData,{data:l}=s,{points:d}=l.handles,c=d.map((e=>r(e))),{currentPoints:u}=t,h=u.canvas,g=h[0]-c[0][0],p=h[1]-c[0][1],f=h,m=[c[1][0]+g,c[1][1]+p];d[0]=a(f),d[1]=a(m)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,h.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:a}=t;t.highlighted=!1,a.handles.activeHandleIndex=null;const{renderingEngine:r}=(0,i.getEnabledElement)(e);return(0,g.A)(n),o&&(0,s.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(c.Events.MOUSE_UP,this._endCallback),e.addEventListener(c.Events.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(c.Events.TOUCH_END,this._endCallback),e.addEventListener(c.Events.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(c.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(c.Events.MOUSE_UP,this._endCallback),e.removeEventListener(c.Events.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(c.Events.TOUCH_END,this._endCallback),e.removeEventListener(c.Events.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(c.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(c.Events.MOUSE_UP,this._endCallback),e.addEventListener(c.Events.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(c.Events.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(c.Events.TOUCH_END,this._endCallback),e.addEventListener(c.Events.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(c.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(c.Events.MOUSE_UP,this._endCallback),e.removeEventListener(c.Events.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(c.Events.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(c.Events.TOUCH_END,this._endCallback),e.removeEventListener(c.Events.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(c.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let s=(0,a.getAnnotations)(this.getToolName(),i);if(!s?.length)return n;if(s=this.filterInteractableAnnotationsForElement(i,s),!s?.length)return n;const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const i=s[e],{annotationUID:a,data:c}=i,{handles:u}=c,{points:h}=u;d.annotationUID=a;const{color:g,lineWidth:p,lineDash:f}=this.getAnnotationStyle({annotation:i,styleSpecifier:d}),m=h.map((e=>o.worldToCanvas(e)))[0];if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,r.isAnnotationVisible)(a))continue;let v=`${a}-crosshair-vertical`,w=[m[0],m[1]+5],b=[m[0],m[1]-5];(0,l.drawLine)(t,a,v,w,b,{color:g,lineDash:f,lineWidth:p}),v=`${a}-crosshair-horizontal`,w=[m[0]+5,m[1]],b=[m[0]-5,m[1]],(0,l.drawLine)(t,a,v,w,b,{color:g,lineDash:f,lineWidth:p});const E=this.configuration.diameters.map((e=>this.worldMeasureToCanvas(e,o)));for(let e=0;e<E.length;e++){const n=`${a}-circle-${e}`,o=`${a}-circle-${e}`;(0,l.drawCircle)(t,a,o,m,E[e]/2,{color:g,lineDash:f,lineWidth:p},n)}const I=e=>e*Math.PI/180,y=this.configuration.degrees.map((e=>I(e)));for(let e=0;e<y.length;e++){const n=`${a}-line-${e}`,o=[Math.cos(y[e])*E[0]/2+m[0],Math.sin(y[e])*E[0]/2+m[1]],i=[Math.cos(y[e])*E[2]/2+m[0],Math.sin(y[e])*E[2]/2+m[1]];(0,l.drawLine)(t,a,n,o,i,{color:g,lineDash:f,lineWidth:p})}n=!0}return n}}worldMeasureToCanvas(e,t){const n=t.canvasToWorld([t.canvas.width/2,t.canvas.height/2]),{viewUp:o}=t.getCamera(),i=f.eR.scaleAndAdd(f.eR.create(),n,o,e),a=t.worldToCanvas(n),r=t.worldToCanvas(i);return Math.sqrt(Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2))}}const v=m},78684:(e,t,n)=>{"use strict";n.d(t,{A:()=>S});var o=n(85817),i=n(15327),a=n(4096),r=n(27730),s=n(82056),l=n(2076),d=n(29601),c=n(44049),u=n(17328),h=n(85204),g=n(99737),p=n(60810),f=n(473),m=n(62514),v=n(11683),w=n(7001),b=n(58640),E=n(40634),I=n(18990),y=n(73262);const{transformWorldToIndex:_}=i.utilities;class C extends o.EC{static{this.toolName="EllipticalROI"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,storePointData:!1,centerPointRadius:0,calculateStats:!0,getTextLines:x,statsCalculator:y.BasicStatsCalculator}}){super(e,t),this.isHandleOutsideImage=!1,this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(n.canvas,(0,i.getEnabledElement)(o)),{viewport:l,renderingEngine:d}=r;this.isDrawing=!0;const c=l.getCamera(),{viewPlaneNormal:u,viewUp:h}=c,g=this.getReferencedImageId(l,a,u,h),f=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...u],viewUp:[...h],FrameOfReferenceUID:f,referencedImageId:g,...l.getViewReference({points:[a]})},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...a],[...a],[...a],[...a]],activeHandleIndex:null},cachedStats:{},initialRotation:l.getRotation()}};(0,s.addAnnotation)(m,o);const v=(0,p.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:v,centerWorld:a,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),(0,w.hideElementCursor)(o),e.preventDefault(),(0,b.A)(v),m},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,{points:l}=s.handles,d=l.map((e=>r.worldToCanvas(e))),c=(0,v.getCanvasEllipseCorners)(d),[u,h]=c,g={left:Math.min(u[0],h[0])+o/2,top:Math.min(u[1],h[1])+o/2,width:Math.abs(u[0]-h[0])-o,height:Math.abs(u[1]-h[1])-o},p={left:Math.min(u[0],h[0])-o/2,top:Math.min(u[1],h[1])-o/2,width:Math.abs(u[0]-h[0])+o,height:Math.abs(u[1]-h[1])+o},f=this._pointInEllipseCanvas(g,n);return!(!this._pointInEllipseCanvas(p,n)||f)},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,p.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1},(0,w.hideElementCursor)(o),this._activateModify(o);const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;(0,b.A)(a),e.preventDefault()},this.handleSelectedCallback=(e,t,n)=>{const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;let s,l,d,c,u,h,g=!1;if(n.worldPosition)g=!0;else{const{points:e}=r.handles,{viewport:t}=(0,i.getEnabledElement)(a),{worldToCanvas:o,canvasToWorld:g}=t;s=e.findIndex((e=>e===n));const p=e.map(o);h=p[s],c=Math.abs(p[2][0]-p[3][0]),u=Math.abs(p[0][1]-p[1][1]),l=[(p[2][0]+p[3][0])/2,(p[0][1]+p[1][1])/2],d=g(l)}const f=(0,p.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:f,handleIndex:s,canvasWidth:c,canvasHeight:u,centerWorld:d,originalHandleCanvas:h,movingTextBox:g},this._activateModify(a),(0,w.hideElementCursor)(a),(0,b.A)(f),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:l}=o;a&&!r||(this.doneEditMemo(),o.highlighted=!1,l.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,w.resetElementCursor)(n),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,s.removeAnnotation)(o.annotationUID),(0,b.A)(i),a&&(0,c.triggerAnnotationCompleted)(o))},this._dragDrawCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,a=o.canvas,r=(0,i.getEnabledElement)(n),{viewport:s}=r,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:u,centerWorld:h,newAnnotation:p}=this.editData;this.createMemo(n,d,{newAnnotation:p});const f=s.worldToCanvas(h),{data:m}=d,v=Math.abs(a[0]-f[0]),w=Math.abs(a[1]-f[1]),E=[f[0],f[1]-w],I=[f[0],f[1]+w],y=[f[0]-v,f[1]],_=[f[0]+v,f[1]];m.handles.points=[l(E),l(I),l(y),l(_)],d.invalidated=!0,this.editData.hasMoved=!0,(0,b.A)(u),(0,c.triggerAnnotationModified)(d,n,g.ChangeTypes.HandlesUpdated)},this._dragModifyCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,handleIndex:r,movingTextBox:s,newAnnotation:l}=this.editData;this.createMemo(n,o,{newAnnotation:l});const{data:d}=o;if(s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const u=(0,i.getEnabledElement)(n),{renderingEngine:h}=u;(0,b.A)(a),o.invalidated&&(0,c.triggerAnnotationModified)(o,n,g.ChangeTypes.HandlesUpdated)},this._dragHandle=e=>{const t=e.detail,{element:n}=t,{viewport:o}=(0,i.getEnabledElement)(n),{canvasToWorld:a,worldToCanvas:r}=o,{annotation:s,canvasWidth:l,canvasHeight:d,handleIndex:c,centerWorld:u,originalHandleCanvas:h}=this.editData,g=o.worldToCanvas(u),{data:p}=s,{points:f}=p.handles,{currentPoints:m}=t,v=m.canvas;if(0===c||1===c){const e=Math.abs(v[1]-g[1]),t=[g[0],g[1]-e],n=[g[0],g[1]+e];f[0]=a(t),f[1]=a(n);const o=l/2+(v[0]-h[0]),i=[g[0]-o,g[1]],r=[g[0]+o,g[1]];f[2]=a(i),f[3]=a(r)}else{const e=Math.abs(v[0]-g[0]),t=[g[0]-e,g[1]],n=[g[0]+e,g[1]];f[2]=a(t),f[3]=a(n);const o=d/2+(v[1]-h[1]),i=[g[0],g[1]-o],r=[g[0],g[1]+o];f[0]=a(i),f[1]=a(r)}},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,w.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,b.A)(n),o&&(0,c.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{h.wk.isInteractingWithTool=!0,e.addEventListener(g.Events.MOUSE_UP,this._endCallback),e.addEventListener(g.Events.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(g.Events.TOUCH_END,this._endCallback),e.addEventListener(g.Events.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(g.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{h.wk.isInteractingWithTool=!1,e.removeEventListener(g.Events.MOUSE_UP,this._endCallback),e.removeEventListener(g.Events.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(g.Events.TOUCH_END,this._endCallback),e.removeEventListener(g.Events.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(g.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{h.wk.isInteractingWithTool=!0,e.addEventListener(g.Events.MOUSE_UP,this._endCallback),e.addEventListener(g.Events.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(g.Events.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(g.Events.TOUCH_END,this._endCallback),e.addEventListener(g.Events.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(g.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{h.wk.isInteractingWithTool=!1,e.removeEventListener(g.Events.MOUSE_UP,this._endCallback),e.removeEventListener(g.Events.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(g.Events.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(g.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(g.Events.TOUCH_END,this._endCallback),e.removeEventListener(g.Events.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(g.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:a}=o;let r=(0,s.getAnnotations)(this.getToolName(),a);if(!r?.length)return n;if(r=this.filterInteractableAnnotationsForElement(a,r),!r?.length)return n;const c=this.getTargetId(o),h=o.getRenderingEngine(),g={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let a=0;a<r.length;a++){const s=r[a],{annotationUID:p,data:m}=s,{handles:w}=m,{points:b,activeHandleIndex:E}=w;g.annotationUID=p;const{color:I,lineWidth:y,lineDash:_}=this.getAnnotationStyle({annotation:s,styleSpecifier:g}),C=b.map((e=>o.worldToCanvas(e))),x=(0,v.getCanvasEllipseCorners)(C),{centerPointRadius:S}=this.configuration;if(m.cachedStats[c]&&null!=m.cachedStats[c].areaUnit){if(s.invalidated&&(this._throttledCalculateCachedStats(s,o,h,e),o instanceof i.VolumeViewport)){const{referencedImageId:e}=s.metadata;for(const t in m.cachedStats)if(t.startsWith("imageId")){h.getStackViewports().find((t=>{const n=i.utilities.imageIdToURI(e),o=t.hasImageURI(n),a=i.utilities.imageIdToURI(t.getCurrentImageId());return o&&a!==n}))&&delete m.cachedStats[t]}}}else m.cachedStats[c]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(s,o,h);if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let T;if(!(0,d.isAnnotationVisible)(p))continue;if((0,l.isAnnotationLocked)(p)||this.editData||null===E||(T=[C[E]]),T){const e="0";(0,u.drawHandles)(t,p,e,T,{color:I})}const A=`${p}-ellipse`,D="0";if((0,u.drawEllipseByCoordinates)(t,p,D,C,{color:I,lineDash:_,lineWidth:y},A),S>0){if(Math.min(Math.abs(x[0][0]-x[1][0])/2,Math.abs(x[0][1]-x[1][1])/2)>3*S){const e=this._getCanvasEllipseCenter(C);(0,u.drawCircle)(t,p,`${D}-center`,e,S,{color:I,lineDash:_,lineWidth:y})}}n=!0;const M=this.getLinkedTextBoxStyle(g,s);if(!M.visibility){m.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const R=this.configuration.getTextLines(m,c);if(!R||0===R.length)continue;let P;m.handles.textBox.hasMoved||(P=(0,f.getTextBoxCoordsCanvas)(x),m.handles.textBox.worldPosition=o.canvasToWorld(P));const O=o.worldToCanvas(m.handles.textBox.worldPosition),k="1",L=(0,u.drawLinkedTextBox)(t,p,k,R,O,C,{},M),{x:U,y:N,width:V,height:B}=L;m.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([U,N]),topRight:o.canvasToWorld([U+V,N]),bottomLeft:o.canvasToWorld([U,N+B]),bottomRight:o.canvasToWorld([U+V,N+B])}}return n},this._calculateCachedStats=(e,t,n)=>{if(!this.configuration.calculateStats)return;const o=e.data,{element:i}=t,{points:r}=o.handles,s=r.map((e=>t.worldToCanvas(e))),{viewPlaneNormal:l,viewUp:d}=t.getCamera(),[u,h]=(0,v.getCanvasEllipseCorners)(s),p=t.canvasToWorld(u),f=t.canvasToWorld(h),{cachedStats:w}=o,b=Object.keys(w),y=p,C=f;for(let n=0;n<b.length;n++){const o=b[n],i=this.getTargetImageData(o);if(!i)continue;const{dimensions:r,imageData:s,metadata:c,voxelManager:u}=i,h=_(s,y);h[0]=Math.floor(h[0]),h[1]=Math.floor(h[1]),h[2]=Math.floor(h[2]);const g=_(s,C);g[0]=Math.floor(g[0]),g[1]=Math.floor(g[1]),g[2]=Math.floor(g[2]),this.isHandleOutsideImage=!this._isInsideVolume(h,g,r);const x=[[Math.min(h[0],g[0]),Math.max(h[0],g[0])],[Math.min(h[1],g[1]),Math.max(h[1],g[1])],[Math.min(h[2],g[2]),Math.max(h[2],g[2])]],S={center:[(p[0]+f[0])/2,(p[1]+f[1])/2,(p[2]+f[2])/2],xRadius:Math.abs(p[0]-f[0])/2,yRadius:Math.abs(p[1]-f[1])/2,zRadius:Math.abs(p[2]-f[2])/2},{worldWidth:T,worldHeight:A}=(0,m.A)(l,d,y,C),D=0===T&&0===A,M=[h,g],{scale:R,areaUnit:P}=(0,a.Op)(i,M),O=Math.abs(Math.PI*(T/2)*(A/2))/R/R,k={isPreScaled:(0,I.u)(t,o),isSuvScaled:this.isSuvScaled(t,o,e.metadata.referencedImageId)},L=(0,E.j)(c.Modality,e.metadata.referencedImageId,k),U=u.forEach(this.configuration.statsCalculator.statsCallback,{boundsIJK:x,imageData:s,isInObject:e=>(0,v.pointInEllipse)(S,e,{fast:!0}),returnPoints:this.configuration.storePointData}),N=this.configuration.statsCalculator.getStatistics();w[o]={Modality:c.Modality,area:O,mean:N.mean?.value,max:N.max?.value,stdDev:N.stdDev?.value,statsArray:N.array,pointsInShape:U,isEmptyArea:D,areaUnit:P,modalityUnit:L}}const x=e.invalidated;return e.invalidated=!1,x&&(0,c.triggerAnnotationModified)(e,i,g.ChangeTypes.StatsUpdated),w},this._isInsideVolume=(e,t,n)=>i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n),this._throttledCalculateCachedStats=(0,r.A)(this._calculateCachedStats,100,{trailing:!0})}static{this.hydrate=(e,t,n)=>{const o=(0,i.getEnabledElementByViewportId)(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:r,viewPlaneNormal:l,instance:d,viewport:c}=this.hydrateBase(C,o,t,n),u={annotationUID:n?.annotationUID||i.utilities.uuidv4(),data:{handles:{points:t,activeHandleIndex:null},label:"",cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:d.getToolName(),viewPlaneNormal:l,FrameOfReferenceUID:a,referencedImageId:r,...n}};(0,s.addAnnotation)(u,c.element),(0,b.A)([c.id])}}_pointInEllipseCanvas(e,t){const n=e.width/2,o=e.height/2;if(n<=0||o<=0)return!1;const i=[e.left+n,e.top+o],a=[t[0]-i[0],t[1]-i[1]];return a[0]*a[0]/(n*n)+a[1]*a[1]/(o*o)<=1}_getCanvasEllipseCenter(e){const[t,n,o,i]=e,a=[o[0],n[1]],r=[i[0],t[1]];return[(a[0]+r[0])/2,(a[1]+r[1])/2]}}function x(e,t){const n=e.cachedStats[t],{area:o,mean:a,stdDev:r,max:s,isEmptyArea:l,areaUnit:d,modalityUnit:c}=n,u=[];if(o){const e=l?"Area: Oblique not supported":`Area: ${i.utilities.roundNumber(o)} ${d}`;u.push(e)}return a&&u.push(`Mean: ${i.utilities.roundNumber(a)} ${c}`),s&&u.push(`Max: ${i.utilities.roundNumber(s)} ${c}`),r&&u.push(`Std Dev: ${i.utilities.roundNumber(r)} ${c}`),u}const S=C},59320:(e,t,n)=>{"use strict";n.d(t,{A:()=>y});var o=n(99737),i=n(15327),a=n(4096),r=n(85817),s=n(27730),l=n(82056),d=n(2076),c=n(29601),u=n(44049),h=n(15305),g=n(17328),p=n(85204),f=n(60810),m=n(473),v=n(58640),w=n(7001);const{transformWorldToIndex:b}=i.utilities;class E extends r.EC{static{this.toolName="Height"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:I}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:s,renderingEngine:d}=r;(0,w.hideElementCursor)(o),this.isDrawing=!0;const{viewPlaneNormal:c,viewUp:u,position:h}=s.getCamera(),g=this.getReferencedImageId(s,a,c,u),p={highlighted:!0,invalidated:!0,metadata:{...s.getViewReference({points:[a]}),toolName:this.getToolName(),referencedImageId:g,viewUp:u,cameraPosition:h},data:{handles:{points:[[...a],[...a]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};(0,l.addAnnotation)(p,o);const m=(0,f.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:p,viewportIdsToRender:m,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),(0,v.A)(m),p},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,[l,d]=s.handles.points,c=r.worldToCanvas(l),u=r.worldToCanvas(d),g={start:{x:c[0],y:c[1]},end:{x:u[0],y:u[1]}};return h.distanceToPoint([g.start.x,g.start.y],[g.end.x,g.end.y],[n[0],n[1]])<=o},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,f.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1},this._activateModify(o),(0,w.hideElementCursor)(o);(0,i.getEnabledElement)(o);(0,v.A)(a),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,newAnnotation:r,hasMoved:s}=this.editData,{data:d}=o;if(r&&!s)return;d.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,w.resetElementCursor)(n);const c=(0,i.getEnabledElement)(n),{renderingEngine:h}=c;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,l.removeAnnotation)(o.annotationUID),(0,v.A)(a),r&&(0,u.triggerAnnotationCompleted)(o),this.editData=null,this.isDrawing=!1},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,handleIndex:r,movingTextBox:s}=this.editData,{data:l}=o;if(s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=l.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;l.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;l.handles.points[r]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const d=(0,i.getEnabledElement)(n),{renderingEngine:c}=d;(0,v.A)(a)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,w.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:a}=t;t.highlighted=!1,a.handles.activeHandleIndex=null;(0,i.getEnabledElement)(e);return(0,v.A)(n),o&&(0,u.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{p.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{p.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{p.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{p.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,l.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r=this.getTargetId(o),s=o.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<a.length;i++){const l=a[i],{annotationUID:h,data:p}=l,{points:f,activeHandleIndex:v}=p.handles;u.annotationUID=h;const{color:w,lineWidth:b,lineDash:E,shadow:I}=this.getAnnotationStyle({annotation:l,styleSpecifier:u}),y=f.map((e=>o.worldToCanvas(e)));let _;if(p.cachedStats[r]&&null!=p.cachedStats[r].unit?l.invalidated&&this._throttledCalculateCachedStats(l,s,e):(p.cachedStats[r]={length:null,unit:null},this._calculateCachedStats(l,s,e)),!(0,c.isAnnotationVisible)(h))continue;if((0,d.isAnnotationLocked)(h)||this.editData||null===v||(_=[y[v]]),_){const e="0";(0,g.drawHandles)(t,h,e,y,{color:w,lineDash:E,lineWidth:b})}const C="0";if((0,g.drawHeight)(t,h,C,y[0],y[1],{color:w,width:b,lineDash:E}),n=!0,!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;const x=this.getLinkedTextBoxStyle(u,l);if(!x.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const S=this.configuration.getTextLines(p,r);if(!p.handles.textBox.hasMoved){const e=(0,m.getTextBoxCoordsCanvas)(y);p.handles.textBox.worldPosition=o.canvasToWorld(e)}const T=o.worldToCanvas(p.handles.textBox.worldPosition),A="1",D=(0,g.drawLinkedTextBox)(t,h,A,S,T,y,{},x),{x:M,y:R,width:P,height:O}=D;p.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([M,R]),topRight:o.canvasToWorld([M+P,R]),bottomLeft:o.canvasToWorld([M,R+O]),bottomRight:o.canvasToWorld([M+P,R+O])}}return n},this._throttledCalculateCachedStats=(0,s.A)(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;let s,l=!1;n.worldPosition?l=!0:s=r.handles.points.findIndex((e=>e===n));const d=(0,f.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a),(0,w.hideElementCursor)(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:u}=c;(0,v.A)(d),e.preventDefault()}_calculateHeight(e,t){const n=t[0]-e[0],o=t[1]-e[1],i=t[2]-e[2];return 0==n?0!=o?Math.abs(i):0:0==o?Math.abs(i):0==i?Math.abs(o):void 0}_calculateCachedStats(e,t,n){const i=e.data,{element:r}=n.viewport,s=i.handles.points[0],l=i.handles.points[1],{cachedStats:d}=i,c=Object.keys(d);for(let e=0;e<c.length;e++){const t=c[e],n=this.getTargetImageData(t);if(!n)continue;const{imageData:o,dimensions:i}=n,r=b(o,s),u=b(o,l),h=[r,u],{scale:g,unit:p}=(0,a.Op)(n,h),f=this._calculateHeight(s,l)/g,m=this._isInsideVolume(r,u,i);this.isHandleOutsideImage=m,d[t]={height:f,unit:p}}const h=e.invalidated;return e.invalidated=!1,h&&(0,u.triggerAnnotationModified)(e,r,o.ChangeTypes.StatsUpdated),d}_isInsideVolume(e,t,n){return i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n)}}function I(e,t){const n=e.cachedStats[t],{height:o,unit:a}=n;if(null==o||isNaN(o))return;return[`${i.utilities.roundNumber(o)} ${a}`]}const y=E},33327:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var o=n(99737),i=n(15327),a=n(85817),r=n(82056),s=n(44049),l=n(17328),d=n(85204),c=n(60810),u=n(58640),h=n(7001);class g extends a.EC{static{this.toolName="KeyImage"}static{this.dataSeries={data:{seriesLevel:!0}}}static{this.dataPoint={data:{isPoint:!0}}}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:p,changeTextCallback:f,canvasPosition:[10,10],canvasSize:10,handleRadius:"6",seriesLevel:!1,isPoint:!1}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{element:n,currentPoints:o}=t,a=(0,i.getEnabledElement)(n),{viewport:l}=a,d=o.world,h=this.constructor.createAnnotationForViewport(l,{data:{handles:{points:[[...d]]},seriesLevel:this.configuration.seriesLevel,isPoint:this.configuration.isPoint}});(0,r.addAnnotation)(h,n);const g=(0,c.getViewportIdsWithToolToRender)(n,this.getToolName());return e.preventDefault(),(0,u.A)(g),this.configuration.getTextCallback((e=>{if(!e)return(0,r.removeAnnotation)(h.annotationUID),(0,u.A)(g),void(this.isDrawing=!1);h.data.text=e,(0,s.triggerAnnotationCompleted)(h),(0,u.A)(g)})),this.createMemo(n,h,{newAnnotation:!0}),h},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t;if(!s?.isPoint)return!1;const{canvasPosition:l,canvasSize:d}=this.configuration;return!!l?.length&&(Math.abs(n[0]-l[0]+d/2)<=d/2&&Math.abs(n[1]-l[1]+d/2)<=d/2)},this.toolSelectedCallback=(e,t)=>{t.highlighted=!0,e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,newAnnotation:l}=this.editData,{viewportId:d,renderingEngine:c}=(0,i.getEnabledElement)(n);this.eventDispatchDetail={viewportId:d,renderingEngineId:c.id},this._deactivateModify(n),(0,h.resetElementCursor)(n),l&&this.createMemo(n,o,{newAnnotation:l}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,r.removeAnnotation)(o.annotationUID),(0,u.A)(a),l&&(0,s.triggerAnnotationCompleted)(o)},this.doubleClickCallback=e=>{const t=e.detail,{element:n}=t;let o=(0,r.getAnnotations)(this.getToolName(),n);if(o=this.filterInteractableAnnotationsForElement(n,o),!o?.length)return;const i=o.find((e=>this.isPointNearTool(n,e,t.currentPoints.canvas,6)));if(!i)return;const a=i;this.createMemo(n,a),this.configuration.changeTextCallback(i,e.detail,this._doneChangingTextCallback.bind(this,n,a)),this.isDrawing=!1,this.doneEditMemo(),e.stopImmediatePropagation(),e.preventDefault()},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,{annotation:a,viewportIdsToRender:r,newAnnotation:s}=this.editData,{data:l}=a;this.createMemo(o,a,{newAnnotation:s}),l.handles.points[0]=[...i],a.invalidated=!0,(0,u.A)(r)},this._activateModify=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,r.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<a.length;e++){const i=a[e],{annotationUID:r,data:d}=i;s.annotationUID=r;const{color:c,lineWidth:u}=this.getAnnotationStyle({annotation:i,styleSpecifier:s}),{canvasPosition:h,canvasSize:g}=this.configuration,p="1";if(d?.isPoint){const e=d.handles.points[0],n=o.worldToCanvas(e);(0,l.drawHandles)(t,r,p,[n],{color:c,lineWidth:u,handleRadius:this.configuration.handleRadius})}else h?.length&&(0,l.drawArrow)(t,r,p,h.map((e=>e+g)),h,{color:c,width:1});if(n=!0,!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n}return n}}handleSelectedCallback(e,t){const n=e.detail,{element:o}=n;t.highlighted=!0;const i=(0,c.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},this._activateModify(o),(0,h.hideElementCursor)(o),(0,u.A)(i),e.preventDefault()}static setPoint(e,t=!e.data.isPoint,n){e.data.isPoint=t,(0,s.triggerAnnotationModified)(e,n)}_doneChangingTextCallback(e,t,n){t.data.text=n;const o=(0,c.getViewportIdsWithToolToRender)(e,this.getToolName());(0,u.A)(o),(0,s.triggerAnnotationModified)(t,e)}cancel(e){if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),(0,h.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,u.A)(n),o&&(0,s.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}}_isInsideVolume(e,t,n){return i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n)}}function p(e){return e(prompt("Enter your annotation:"))}function f(e,t,n){return n(prompt("Enter your annotation:"))}const m=g},37117:(e,t,n)=>{"use strict";n.d(t,{A:()=>w});var o=n(3823),i=n(99737),a=n(15327),r=n(85817),s=n(82056),l=n(17328),d=n(85204),c=n(60810),u=n(58640),h=n(44049),g=n(7001),p=n(29601);class f extends r.EC{static{this.toolName="Label"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:m,changeTextCallback:v,preventHandleOutsideImage:!1}}){super(e,t),this.isPointNearTool=(e,t,n,i)=>{const r=(0,a.getEnabledElement)(e),{viewport:s}=r,{annotationUID:l}=t,d=t.data.handles.points[0],c=s.worldToCanvas(d);if(o.Zc.distance(n,c)<i)return!0;const u=e.querySelector("svg");if(!u)return!1;const h=u.querySelector(`g[data-annotation-uid="${l}"]`);if(!h)return!1;const g=h,p=g.getBBox(),f=g.getAttribute("transform");let m=0,v=0;if(f){const e=f.match(/translate\(([-\d.]+)\s+([-\d.]+)\)/);e&&(m=parseFloat(e[1]),v=parseFloat(e[2]))}const w=p.x+m,b=p.y+v;return n[0]>=w&&n[0]<=w+p.width&&n[1]>=b&&n[1]<=b+p.height},this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,r=(0,a.getEnabledElement)(o),{viewport:l}=r;(0,g.hideElementCursor)(o),this.isDrawing=!0;const d=l.getCamera(),{viewPlaneNormal:p,viewUp:f}=d,m=this.getReferencedImageId(l,i,p,f),v=l.getFrameOfReferenceUID(),w={annotationUID:null,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...p],viewUp:[...f],FrameOfReferenceUID:v,referencedImageId:m,...l.getViewReference({points:[i]})},data:{text:"",handles:{points:[[...i],[...i]]},label:""}};(0,s.addAnnotation)(w,o);const b=(0,c.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:w,newAnnotation:!0,viewportIdsToRender:b,offset:[0,0,0]},e.preventDefault(),(0,u.A)(b),this.configuration.getTextCallback((e=>{if(!e)return(0,s.removeAnnotation)(w.annotationUID),(0,u.A)(b),void(this.isDrawing=!1);(0,g.resetElementCursor)(o),w.data.text=e,(0,h.triggerAnnotationCompleted)(w),(0,u.A)(b)})),this.createMemo(o,w,{newAnnotation:!0}),w},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o,currentPoints:i}=n;t.highlighted=!0;const a=(0,c.getViewportIdsWithToolToRender)(o,this.getToolName());let r=[0,0,0];if(i&&i.world){const e=i.world,n=t.data.handles.points[0];r=[n[0]-e[0],n[1]-e[1],n[2]-e[2]]}this.editData={annotation:t,viewportIdsToRender:a,offset:r},this._activateModify(o),(0,g.hideElementCursor)(o),(0,u.A)(a),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a}=this.editData;this._deactivateDraw(n),this._deactivateModify(n),(0,g.resetElementCursor)(n),a&&this.createMemo(n,o,{newAnnotation:a}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,s.removeAnnotation)(o.annotationUID),(0,u.A)(i),a&&(0,h.triggerAnnotationCompleted)(o)},this._dragCallback=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,{annotation:r,viewportIdsToRender:s,offset:l}=this.editData;r.data.handles.points[0]=l?[a[0]+l[0],a[1]+l[1],a[2]+l[2]]:[...a],r.invalidated=!0,(0,u.A)(s),(0,h.triggerAnnotationModified)(r,o,i.ChangeTypes.LabelChange)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),(0,g.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,u.A)(n),o&&(0,h.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(i.Events.MOUSE_UP,this._endCallback),e.addEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(i.Events.TOUCH_TAP,this._endCallback),e.addEventListener(i.Events.TOUCH_END,this._endCallback),e.addEventListener(i.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(i.Events.MOUSE_UP,this._endCallback),e.removeEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(i.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(i.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(i.Events.TOUCH_END,this._endCallback)},this._activateDraw=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(i.Events.MOUSE_UP,this._endCallback),e.addEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(i.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(i.Events.TOUCH_TAP,this._endCallback),e.addEventListener(i.Events.TOUCH_END,this._endCallback),e.addEventListener(i.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(i.Events.MOUSE_UP,this._endCallback),e.removeEventListener(i.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(i.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(i.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(i.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(i.Events.TOUCH_END,this._endCallback),e.removeEventListener(i.Events.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,s.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;a=this.filterInteractableAnnotationsForElement(i,a);const r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<a.length;e++){const i=a[e],{annotationUID:s,data:d}=i,c=d.handles.points[0];r.annotationUID=s;const u=o.worldToCanvas(c);if(n=!0,!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,p.isAnnotationVisible)(s))continue;if(!d.text)continue;const h=this.getLinkedTextBoxStyle(r,i),g="1";(0,l.drawTextBox)(t,s,g,[d.text],u,{...h,padding:0})}return n}}static{this.hydrate=(e,t,n,o)=>{const i=(0,a.getEnabledElementByViewportId)(e);if(!i)return;const{viewport:r}=i,l=r.getFrameOfReferenceUID(),{viewPlaneNormal:d,viewUp:c}=r.getCamera(),h=new this,g=h.getReferencedImageId(r,t,d,c),p={annotationUID:o?.annotationUID||a.utilities.uuidv4(),data:{text:n,handles:{points:[t]}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:h.getToolName(),viewPlaneNormal:d,FrameOfReferenceUID:l,referencedImageId:g,...o}};(0,s.addAnnotation)(p,r.element),(0,u.A)([r.id])}}handleSelectedCallback(e,t,n,o){}_doneChangingTextCallback(e,t,n){t.data.text=n;const o=(0,c.getViewportIdsWithToolToRender)(e,this.getToolName());(0,u.A)(o),(0,h.triggerAnnotationModified)(t,e)}_isInsideVolume(e,t,n){return a.utilities.indexWithinDimensions(e,n)&&a.utilities.indexWithinDimensions(t,n)}}function m(e){return e(prompt("Enter your annotation:"))}function v(e,t,n){return n(prompt("Enter your annotation:"))}f.toolName="Label";const w=f},14335:(e,t,n)=>{"use strict";n.d(t,{A:()=>y});var o=n(99737),i=n(15327),a=n(4096),r=n(85817),s=n(27730),l=n(82056),d=n(2076),c=n(29601),u=n(44049),h=n(15305),g=n(17328),p=n(85204),f=n(60810),m=n(473),v=n(58640),w=n(7001);const{transformWorldToIndex:b}=i.utilities;class E extends r.EC{static{this.toolName="Length"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:I,actions:{undo:{method:"undo",bindings:[{key:"z"}]},redo:{method:"redo",bindings:[{key:"y"}]}}}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:s}=r;(0,w.hideElementCursor)(o),this.isDrawing=!0;const{viewPlaneNormal:d,viewUp:c,position:u}=s.getCamera(),h=this.getReferencedImageId(s,a,d,c),g={highlighted:!0,invalidated:!0,metadata:{...s.getViewReference({points:[a]}),toolName:this.getToolName(),referencedImageId:h,viewUp:c,cameraPosition:u},data:{handles:{points:[[...a],[...a]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};(0,l.addAnnotation)(g,o);const p=(0,f.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),(0,v.A)(p),g},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,[l,d]=s.handles.points,c=r.worldToCanvas(l),u=r.worldToCanvas(d),g={start:{x:c[0],y:c[1]},end:{x:u[0],y:u[1]}};return h.distanceToPoint([g.start.x,g.start.y],[g.end.x,g.end.y],[n[0],n[1]])<=o},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=(0,f.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),(0,w.hideElementCursor)(o),(0,v.A)(i),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;a&&!r||(s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,w.resetElementCursor)(n),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,l.removeAnnotation)(o.annotationUID),(0,v.A)(i),this.doneEditMemo(),a&&(0,u.triggerAnnotationCompleted)(o),this.editData=null,this.isDrawing=!1)},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:a,handleIndex:r,movingTextBox:s,newAnnotation:l}=this.editData,{data:d}=i;if(this.createMemo(n,i,{newAnnotation:l}),s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),i.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;d.handles.points[r]=[...n],i.invalidated=!0}this.editData.hasMoved=!0,(0,v.A)(a),i.invalidated&&(0,u.triggerAnnotationModified)(i,n,o.ChangeTypes.HandlesUpdated)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,w.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,v.A)(n),o&&(0,u.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{p.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{p.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{p.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{p.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,l.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r=this.getTargetId(o),s=o.getRenderingEngine(),u={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<a.length;i++){const l=a[i],{annotationUID:h,data:p}=l,{points:f,activeHandleIndex:v}=p.handles;u.annotationUID=h;const{color:w,lineWidth:b,lineDash:E,shadow:I}=this.getAnnotationStyle({annotation:l,styleSpecifier:u}),y=f.map((e=>o.worldToCanvas(e)));if(p.cachedStats[r]&&null!=p.cachedStats[r].unit?l.invalidated&&this._throttledCalculateCachedStats(l,s,e):(p.cachedStats[r]={length:null,unit:null},this._calculateCachedStats(l,s,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let _;if(!(0,c.isAnnotationVisible)(h))continue;if((0,d.isAnnotationLocked)(h)||this.editData||null===v||(_=[y[v]]),_){const e="0";(0,g.drawHandles)(t,h,e,y,{color:w,lineDash:E,lineWidth:b})}const C=`${h}-line`,x="1";if((0,g.drawLine)(t,h,x,y[0],y[1],{color:w,width:b,lineDash:E,shadow:I},C),n=!0,!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;const S=this.getLinkedTextBoxStyle(u,l);if(!S.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const T=this.configuration.getTextLines(p,r);if(!p.handles.textBox.hasMoved){const e=(0,m.getTextBoxCoordsCanvas)(y);p.handles.textBox.worldPosition=o.canvasToWorld(e)}const A=o.worldToCanvas(p.handles.textBox.worldPosition),D="1",M=(0,g.drawLinkedTextBox)(t,h,D,T,A,y,{},S),{x:R,y:P,width:O,height:k}=M;p.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([R,P]),topRight:o.canvasToWorld([R+O,P]),bottomLeft:o.canvasToWorld([R,P+k]),bottomRight:o.canvasToWorld([R+O,P+k])}}return n},this._throttledCalculateCachedStats=(0,s.A)(this._calculateCachedStats,100,{trailing:!0})}static{this.hydrate=(e,t,n)=>{const o=(0,i.getEnabledElementByViewportId)(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:r,viewPlaneNormal:s,instance:d,viewport:c}=this.hydrateBase(E,o,t,n),u={annotationUID:n?.annotationUID||i.utilities.uuidv4(),data:{handles:{points:t}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:d.getToolName(),viewPlaneNormal:s,FrameOfReferenceUID:a,referencedImageId:r,...n}};(0,l.addAnnotation)(u,c.element),(0,v.A)([c.id])}}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=(0,f.getViewportIdsWithToolToRender)(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),(0,w.hideElementCursor)(i),(0,v.A)(l),e.preventDefault()}_calculateLength(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+o*o+i*i)}_calculateCachedStats(e,t,n){const i=e.data,{element:r}=n.viewport,s=i.handles.points[0],l=i.handles.points[1],{cachedStats:d}=i,c=Object.keys(d);for(let e=0;e<c.length;e++){const t=c[e],n=this.getTargetImageData(t);if(!n)continue;const{imageData:o,dimensions:i}=n,r=b(o,s),u=b(o,l),h=[r,u],{scale:g,unit:p}=(0,a.Op)(n,h),f=this._calculateLength(s,l)/g;this._isInsideVolume(r,u,i)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,d[t]={length:f,unit:p}}const h=e.invalidated;return e.invalidated=!1,h&&(0,u.triggerAnnotationModified)(e,r,o.ChangeTypes.StatsUpdated),d}_isInsideVolume(e,t,n){return i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n)}}function I(e,t){const n=e.cachedStats[t],{length:o,unit:a}=n;if(null==o||isNaN(o))return;return[`${i.utilities.roundNumber(o)} ${a}`]}const y=E},76358:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var o=n(15327),i=n(9136),a=n(38776),r=n(44049),s=n(99737),l=n(17328);class d extends i.A{static{this.toolName="LivewireContourSegmentationTool"}updateInterpolatedAnnotation(e,t){!this.editData&&e.invalidated&&e.data.handles.interpolationSources&&(e.data.contour.originalPolyline=e.data.contour.polyline,queueMicrotask((()=>{if(!e.data.handles.interpolationSources)return;const{points:n}=e.data.handles,{element:i}=t.viewport;this.setupBaseEditData(n[0],i,e);const{length:l}=n,{scissors:d}=this,{nearestEdge:c,repeatInterpolation:u}=this.configuration.interpolation;e.data.handles.originalPoints=n;const{worldToSlice:h,sliceToWorld:g}=this.editData,p=[];if(c){let e=h(n[n.length-1]);n.forEach(((t,i)=>{const a=h(t);e=a,p.push(a),d.startSearch(e),d.findPathToPoint(a),d.findPathToPoint(h(n[(i+3)%n.length]));const r=d.findMinNearby(a,c);o.utilities.isEqual(a,r)||(p[i]=r,e=r,n[i]=g(r))}))}const f=new a.j;for(let e=0;e<l;e++){d.startSearch(h(n[e]));const t=d.findPathToPoint(h(n[(e+1)%l]));f.addPoints(t)}this.updateAnnotation(f),this.scissors=null,this.scissorsNext=null,this.editData=null,e.data.handles.interpolationSources=null,u&&(0,r.triggerAnnotationModified)(e,t.viewport.element,s.ChangeTypes.InterpolationUpdated)})))}renderAnnotationInstance(e){const{enabledElement:t,svgDrawingHelper:n}=e,o=e.annotation,{annotationUID:i}=o,{viewport:a}=t,{worldToCanvas:r}=a,{showInterpolationPolyline:s}=this.configuration.interpolation||{};this.updateInterpolatedAnnotation?.(o,t);const{originalPolyline:d}=o.data.contour,c=super.renderAnnotationInstance(e);if(s&&d&&o.autoGenerated){const e=d.map(r);e.push(e[0]),(0,l.drawPolyline)(n,i,"interpolationContour-0",e,{color:"#70ffff",lineWidth:1,fillOpacity:0})}return c}isContourSegmentationTool(){return!0}}const c=d},9136:(e,t,n)=>{"use strict";n.d(t,{A:()=>_});var o=n(3823),i=n(15327),a=n(82056),r=n(17328),s=n(85204),l=n(99737),d=n(7001),c=n(76910),u=n(95527),h=n(58640),g=n(98013),p=n(93126),f=n(44049),m=n(78044),v=n(38776),w=n(60810),b=n(36320),E=n(473),I=n(53860);class y extends b.A{static{this.toolName="LivewireContour"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextLines:C,calculateStats:!0,preventHandleOutsideImage:!1,contourHoleAdditionModifierKey:l.KeyboardBindings.Shift,snapHandleNearby:2,interpolation:{enabled:!1,nearestEdge:2,showInterpolationPolyline:!1},decimate:{enabled:!1,epsilon:.1},actions:{cancelInProgress:{method:"cancelInProgress",bindings:[{key:"Escape"}]}}}}){super(e,t),this.isHandleOutsideImage=!1,this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,s=o*o,l=t.data.contour.polyline.map((e=>r.worldToCanvas(e)));let d=l[l.length-1];for(let e=0;e<l.length;e++){const t=l[e];if(u.lineSegment.distanceToPointSquared(d,t,n)<=s)return!0;d=t}return!1},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const a=(0,w.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:a,movingTextBox:!1};const r=(0,i.getEnabledElement)(o),{renderingEngine:s}=r;this._activateModify(o),(0,h.A)(a),e.preventDefault()},this.handleSelectedCallback=(e,t,n)=>{const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;let s,l=!1;if(n.worldPosition)l=!0;else{const{points:e}=r.handles;s=e.findIndex((e=>e===n))}const d=(0,w.getViewportIdsWithToolToRender)(a,this.getToolName());this.editData={annotation:t,viewportIdsToRender:d,handleIndex:s,movingTextBox:l},this._activateModify(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:u}=c;(0,h.A)(d),e.preventDefault()},this._endCallback=(e,t=!1)=>{const n=e.detail,{element:o}=n,{annotation:r,viewportIdsToRender:s,newAnnotation:c,contourHoleProcessingEnabled:u}=this.editData,{data:g}=r;this.doneEditMemo(),g.handles.activeHandleIndex=null,this._deactivateModify(o),this._deactivateDraw(o),(0,d.resetElementCursor)(o);const p=(0,i.getEnabledElement)(o);if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage||t)return(0,a.removeAnnotation)(r.annotationUID),this.clearEditData(),void(0,h.A)(s);(0,h.A)(s);const f=c?l.ChangeTypes.Completed:l.ChangeTypes.HandlesUpdated;this.triggerChangeEvent(r,p,f,u),this.clearEditData()},this.triggerChangeEvent=(e,t,n=l.ChangeTypes.StatsUpdated,o=!1)=>{n===l.ChangeTypes.Completed?(0,f.triggerContourAnnotationCompleted)(e,o):(0,f.triggerAnnotationModified)(e,t.viewport.element,n)},this._mouseDownCallback=e=>{const t=e.type===l.Events.MOUSE_DOUBLE_CLICK,{annotation:n,viewportIdsToRender:o,worldToSlice:a,sliceToWorld:r,newAnnotation:s}=this.editData;if(this.editData.closed)return;const d=e.detail,{element:c}=d,{currentPoints:g}=d,{canvas:p,world:f}=g;let m=f;const w=(0,i.getEnabledElement)(c),{viewport:b,renderingEngine:E}=w,I=this.editData.currentPath.getControlPoints();let y=I.length>=2&&t;if(this.doneEditMemo(),this.createMemo(c,n,{newAnnotation:s&&1===I.length}),I.length>=2){const e={index:-1,distSquared:1/0};for(let t=0,n=I.length;t<n;t++){const n=r(I[t]),o=b.worldToCanvas(n),i=u.point.distanceToPointSquared(p,o);i<=100&&i<e.distSquared&&(e.distSquared=i,e.index=t)}0===e.index&&(y=!0)}const{snapHandleNearby:_}=this.configuration;if(_&&!this.editData.closed){const e=new v.j,t=this.scissors.findMinNearby(a(f),1),n=this.scissors.findPathToPoint(t);e.addPoints(n),e.prependPath(this.editData.confirmedPath),m=r(t),this.editData.currentPath=e}this.editData.closed=this.editData.closed||y,this.editData.confirmedPath=this.editData.currentPath;const C=this.editData.currentPath.getLastPoint();this.editData.confirmedPath.addControlPoint(C),n.data.handles.points.push(r(C)),this.scissors.startSearch(a(m)),n.invalidated=!0,(0,h.A)(o),this.editData.closed&&(this.updateAnnotation(this.editData.confirmedPath),this._endCallback(e)),e.preventDefault()},this._mouseMoveCallback=e=>{const{element:t,currentPoints:n}=e.detail,{world:o,canvas:a}=n,{renderingEngine:r}=(0,i.getEnabledElement)(t),s=(0,w.getViewportIdsWithToolToRender)(t,this.getToolName());this.editData.lastCanvasPoint=a;const{width:l,height:d}=this.scissors,{worldToSlice:c}=this.editData,u=c(o);if(u[0]<0||u[1]<0||u[0]>=l||u[1]>=d)return;const g=this.scissors.findPathToPoint(u),p=new v.j;p.addPoints(g),p.prependPath(this.editData.confirmedPath),this.editData.currentPath=p,(0,h.A)(s),e.preventDefault()},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,movingTextBox:r,handleIndex:s,newAnnotation:l}=this.editData;this.createMemo(n,o,{newAnnotation:l});const{data:d}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===s)console.warn("Drag annotation not implemented");else{const{currentPoints:e}=t,i=e.world;this.editHandle(i,n,o,s)}this.editData.hasMoved=!0;const c=(0,i.getEnabledElement)(n),{renderingEngine:u}=c;(0,h.A)(a)},this.cancel=e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,d.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData;return o&&(0,a.removeAnnotation)(t.annotationUID),(0,h.A)(n),this.doneEditMemo(),this.scissors=null,t.annotationUID},this._activateModify=e=>{s.wk.isInteractingWithTool=!0,e.addEventListener(l.Events.MOUSE_UP,this._endCallback),e.addEventListener(l.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(l.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(l.Events.TOUCH_END,this._endCallback),e.addEventListener(l.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(l.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{s.wk.isInteractingWithTool=!1,e.removeEventListener(l.Events.MOUSE_UP,this._endCallback),e.removeEventListener(l.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(l.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(l.Events.TOUCH_END,this._endCallback),e.removeEventListener(l.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(l.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{s.wk.isInteractingWithTool=!0,e.addEventListener(l.Events.MOUSE_MOVE,this._mouseMoveCallback),e.addEventListener(l.Events.MOUSE_DOWN,this._mouseDownCallback),e.addEventListener(l.Events.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.addEventListener(l.Events.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=e=>{s.wk.isInteractingWithTool=!1,e.removeEventListener(l.Events.MOUSE_MOVE,this._mouseMoveCallback),e.removeEventListener(l.Events.MOUSE_DOWN,this._mouseDownCallback),e.removeEventListener(l.Events.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.removeEventListener(l.Events.TOUCH_TAP,this._mouseDownCallback)},this._calculateCachedStats=(e,t)=>{if(!this.configuration.calculateStats)return;const n=e.data;if(!n.contour.closed)return;const a=(0,i.getEnabledElement)(t),{viewport:r,renderingEngine:s}=a,{cachedStats:d}=n,{polyline:c}=n.contour,h=Object.keys(d);for(let e=0;e<h.length;e++){const t=h[e],n=this.getTargetImageData(t);if(!n)continue;const{metadata:a}=n,s=c.map((e=>r.worldToCanvas(e))),l=s[0],g=r.canvasToWorld(l),p=r.canvasToWorld([l[0]+1,l[1]]),f=r.canvasToWorld([l[0],l[1]+1]),m=o.eR.distance(g,p),v=o.eR.distance(g,f),{imageData:w}=n,{scale:b,areaUnit:E}=(0,I.getCalibratedLengthUnitsAndScale)(n,(()=>{const{maxX:e,maxY:t,minX:n,minY:o}=u.polyline.getAABB(s),a=r.canvasToWorld([n,o]),l=i.utilities.transformWorldToIndex(w,a),d=r.canvasToWorld([e,t]);return[l,i.utilities.transformWorldToIndex(w,d)]}));let y=u.polyline.getArea(s)/b/b;y*=m*v,d[t]={Modality:a.Modality,area:y,areaUnit:E}}const g=e.invalidated;return e.invalidated=!1,g&&this.triggerAnnotationModified(e,a,l.ChangeTypes.StatsUpdated),d},this._renderStats=(e,t,n,o)=>{const i=e.data,a=this.getTargetId(t);if(!i.contour.closed||!o.visibility)return;const s=this.configuration.getTextLines(i,a);if(!s||0===s.length)return;const l=i.handles.points.map((e=>t.worldToCanvas(e)));if(!i.handles.textBox.hasMoved){const e=(0,E.getTextBoxCoordsCanvas)(l);i.handles.textBox.worldPosition=t.canvasToWorld(e)}const d=t.worldToCanvas(i.handles.textBox.worldPosition),c=(0,r.drawLinkedTextBox)(n,e.annotationUID??"","textBox",s,d,l,{},o),{x:u,y:h,width:g,height:p}=c;i.handles.textBox.worldBoundingBox={topLeft:t.canvasToWorld([u,h]),topRight:t.canvasToWorld([u+g,h]),bottomLeft:t.canvasToWorld([u,h+p]),bottomRight:t.canvasToWorld([u+g,h+p])}},this.triggerAnnotationModified=(e,t,n=l.ChangeTypes.StatsUpdated)=>{const{viewportId:o,renderingEngineId:a}=t,r=l.Events.ANNOTATION_MODIFIED,s={annotation:e,viewportId:o,renderingEngineId:a,changeType:n};(0,i.triggerEvent)(i.eventTarget,r,s)},this._throttledCalculateCachedStats=(0,I.throttle)(this._calculateCachedStats,100,{trailing:!0})}setupBaseEditData(e,t,n,a,r){const s=(0,i.getEnabledElement)(t),{viewport:l}=s;this.isDrawing=!0;const d=l.getImageData(),{imageData:c}=d;let u,h,g,p,f;if(l instanceof i.VolumeViewport){if(!(l instanceof i.VolumeViewport))throw new Error("Viewport not supported");{const e=i.utilities.getCurrentVolumeViewportSlice(l),{sliceToIndexMatrix:t,indexToSliceMatrix:n}=e;u=e=>{const t=i.utilities.transformWorldToIndex(c,e),a=o.eR.transformMat4([0,0,0],t,n);return[a[0],a[1]]},h=e=>{const n=o.eR.transformMat4([0,0,0],[e[0],e[1],0],t);return i.utilities.transformIndexToWorld(c,n)},f=e.scalarData,g=e.width,p=e.height}}else g=d.dimensions[0],p=d.dimensions[1],u=e=>{const t=i.utilities.transformWorldToIndex(c,e);return[t[0],t[1]]},h=e=>i.utilities.transformIndexToWorld(c,[e[0],e[1],0]),f=d.scalarData;f=i.utilities.convertToGrayscale(f,g,p);const{voiRange:b}=l.getProperties(),E=u(e);this.scissors=m.f.createInstanceFromRawPixelData(f,g,p,b),a&&(this.scissorsNext=m.f.createInstanceFromRawPixelData(f,g,p,b),this.scissorsNext.startSearch(u(a))),this.scissors.startSearch(E);const I=!a,y=new v.j,_=new v.j,C=I?void 0:new v.j;y.addPoint(E),y.addControlPoint(E);const x=(0,w.getViewportIdsWithToolToRender)(t,this.getToolName()),S=l.worldToCanvas(e);this.editData={annotation:n,viewportIdsToRender:x,newAnnotation:I,hasMoved:!1,lastCanvasPoint:S,confirmedPath:y,currentPath:_,confirmedPathNext:C,closed:!1,handleIndex:this.editData?.handleIndex??n.handles?.activeHandleIndex,worldToSlice:u,sliceToWorld:h,contourHoleProcessingEnabled:r}}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,{world:i}=n,a=this.createAnnotation(e),r=(0,c.A)(e.detail.event)===this.configuration.contourHoleAdditionModifierKey;return this.setupBaseEditData(i,o,a,void 0,r),this.addAnnotation(a,o),this._activateDraw(o),e.preventDefault(),(0,h.A)(this.editData.viewportIdsToRender),a}clearEditData(){this.editData=null,this.scissors=null,this.scissorsNext=null,this.isDrawing=!1}editHandle(e,t,n,o){const{data:i}=n,{points:a}=i.handles,{length:r}=a,s=a[(o-1+r)%r],l=a[(o+1)%r];if(!this.editData?.confirmedPathNext){this.setupBaseEditData(s,t,n,l);const{polyline:e}=i.contour,a=new v.j,r=new v.j,{worldToSlice:d}=this.editData,c=(0,g.A)(n,o-1),u=(0,g.A)(n,o+1);if(-1===u||-1===c)throw new Error(`Can't find handle index ${-1===u&&l} ${-1===c&&s}`);0===o?r.addPoints(e.slice(u+1,c).map(d)):(a.addPoints(e.slice(0,c+1).map(d)),r.addPoints(e.slice(u,e.length).map(d))),this.editData.confirmedPath=a,this.editData.confirmedPathNext=r}const{editData:d,scissors:c}=this,{worldToSlice:u,sliceToWorld:h}=d,{activeHandleIndex:p}=i.handles;if(null==p)i.handles.activeHandleIndex=o;else if(p!==o)throw new Error(`Trying to edit a different handle than the one currently being edited ${o}!==${i.handles.activeHandleIndex}`);const f=u(e);if(f[0]<0||f[0]>=c.width||f[1]<0||f[1]>=c.height)return;a[o]=h(f);const m=c.findPathToPoint(f),w=this.scissorsNext.findPathToPoint(f),b=new v.j;b.prependPath(d.confirmedPath),0!==o&&b.addPoints(m),b.addPoints(w.reverse()),b.appendPath(d.confirmedPathNext),0===o&&b.addPoints(m),d.currentPath=b,n.invalidated=!0,d.hasMoved=!0,d.closed=!0}renderAnnotation(e,t){return this.updateAnnotation(this.editData?.currentPath),super.renderAnnotation(e,t)}isContourSegmentationTool(){return!1}createAnnotation(e){const t=super.createAnnotation(e),{world:n}=e.detail.currentPoints;return i.utilities.deepMerge(t,{data:{handles:{points:[[...n]]}}})}cancelInProgress(e,t,n){this.editData?this._endCallback(n,!0):this.undo()}renderAnnotationInstance(e){const{annotation:t,enabledElement:n,svgDrawingHelper:o,annotationStyle:i,targetId:a}=e,{viewport:s}=n,{element:l}=s,{worldToCanvas:d}=s,{annotationUID:c,data:u,highlighted:h}=t,{handles:g}=u,p=this.editData?.newAnnotation,{lineWidth:f,lineDash:m,color:v}=i;if(h||p&&t.annotationUID===this.editData?.annotation?.annotationUID){const e="0",t=g.points.map(d);(0,r.drawHandles)(o,c,e,t,{color:v,lineDash:m,lineWidth:f})}return super.renderAnnotationInstance(e),u.cachedStats[a]&&null!==u.cachedStats[a]?.areaUnit?t.invalidated&&this._throttledCalculateCachedStats(t,l):(u.cachedStats[a]={Modality:null,area:null,areaUnit:null},this._calculateCachedStats(t,l)),this._renderStats(t,s,o,i.textbox),!0}updateAnnotation(e){if(!this.editData||!e)return;const{annotation:t,sliceToWorld:n,worldToSlice:o,closed:i,newAnnotation:a}=this.editData;let{pointArray:r}=e;r.length>1&&(r=[...r,r[0]]);const s=a&&i?p.W.Clockwise:void 0;this.updateContourPolyline(t,{points:r,closed:i,targetWindingDirection:s},{canvasToWorld:n,worldToCanvas:o})}}const _=y;function C(e,t){const n=e.cachedStats[t],{area:o,areaUnit:a}=n,r=[];if(o){const e=`Area: ${i.utilities.roundNumber(o)} ${a}`;r.push(e)}return r}},61873:(e,t,n)=>{"use strict";n.d(t,{A:()=>E});var o=n(3823),i=n(15327),a=n(85817),r=n(82056),s=n(44049),l=n(4096),d=n(17328),c=n(85204),u=n(99737),h=n(60810),g=n(7001),p=n(58640),f=n(40634),m=n(18990);const{transformWorldToIndex:v}=i.utilities;class w extends a.EC{static{this.toolName="Probe"}static{this.probeDefaults={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:b,handleRadius:"6"}}}constructor(e={},t){super(e,a.EC.mergeDefaultProps(w.probeDefaults,t)),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,s=(0,i.getEnabledElement)(o),{viewport:l}=s;this.isDrawing=!0;const d=this.constructor.createAnnotationForViewport(l,{data:{handles:{points:[[...a]]}}});(0,r.addAnnotation)(d,o);const c=(0,h.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:d,newAnnotation:!0,viewportIdsToRender:c},this._activateModify(o),(0,g.hideElementCursor)(o),e.preventDefault(),(0,p.A)(c),d},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,newAnnotation:l}=this.editData,{viewportId:d,renderingEngine:c}=(0,i.getEnabledElement)(n);this.eventDispatchDetail={viewportId:d,renderingEngineId:c.id},this._deactivateModify(n),(0,g.resetElementCursor)(n),l&&this.createMemo(n,o,{newAnnotation:l}),this.editData=null,this.isDrawing=!1,this.doneEditMemo(),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,r.removeAnnotation)(o.annotationUID),(0,p.A)(a),l&&(0,s.triggerAnnotationCompleted)(o)},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,{annotation:a,viewportIdsToRender:r,newAnnotation:s}=this.editData,{data:l}=a;this.createMemo(o,a,{newAnnotation:s}),l.handles.points[0]=[...i],a.invalidated=!0,(0,p.A)(r)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),(0,g.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,p.A)(n),o&&(0,s.triggerAnnotationCompleted)(t),this.editData=null,t.annotationUID}},this._activateModify=e=>{c.wk.isInteractingWithTool=!0,e.addEventListener(u.Events.MOUSE_UP,this._endCallback),e.addEventListener(u.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(u.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(u.Events.TOUCH_END,this._endCallback),e.addEventListener(u.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(u.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{c.wk.isInteractingWithTool=!1,e.removeEventListener(u.Events.MOUSE_UP,this._endCallback),e.removeEventListener(u.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(u.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(u.Events.TOUCH_END,this._endCallback),e.removeEventListener(u.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(u.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:a}=o;let s=(0,r.getAnnotations)(this.getToolName(),a);if(!s?.length)return n;if(s=this.filterInteractableAnnotationsForElement(a,s),!s?.length)return n;const l=this.getTargetId(o),c=o.getRenderingEngine(),h={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let a=0;a<s.length;a++){const r=s[a],g=r.annotationUID,p=r.data,f=p.handles.points[0],m=o.worldToCanvas(f);h.annotationUID=g;const{color:v,lineWidth:w}=this.getAnnotationStyle({annotation:r,styleSpecifier:h});if(p.cachedStats||(p.cachedStats={}),p.cachedStats[l]&&null!==p.cachedStats[l].value){if(r.invalidated&&(this._calculateCachedStats(r,c,e),o instanceof i.VolumeViewport)){const{referencedImageId:e}=r.metadata;for(const t in p.cachedStats)if(t.startsWith("imageId")){c.getStackViewports().find((t=>{const n=i.utilities.imageIdToURI(e),o=t.hasImageURI(n),a=i.utilities.imageIdToURI(t.getCurrentImageId());return o&&a!==n}))&&delete p.cachedStats[t]}}}else p.cachedStats[l]={Modality:null,index:null,value:null},this._calculateCachedStats(r,c,e,u.ChangeTypes.StatsUpdated);if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;const b="0";(0,d.drawHandles)(t,g,b,[m],{color:v,lineWidth:w,handleRadius:this.configuration.handleRadius}),n=!0;const E=this.getLinkedTextBoxStyle(h,r);if(!E.visibility)continue;const I=this.configuration.getTextLines(p,l);if(I){const e=[m[0]+6,m[1]-6],n="0";(0,d.drawTextBox)(t,g,n,I,[e[0],e[1]],E)}}return n}}isPointNearTool(e,t,n,a){const r=(0,i.getEnabledElement)(e),{viewport:s}=r,{data:l}=t,d=l.handles.points[0],c=s.worldToCanvas(d);return o.Zc.distance(n,c)<a}toolSelectedCallback(){}static{this.hydrate=(e,t,n)=>{const o=(0,i.getEnabledElementByViewportId)(e);if(!o)return;const{FrameOfReferenceUID:a,referencedImageId:s,viewPlaneNormal:l,viewUp:d,instance:c,viewport:u}=this.hydrateBase(w,o,t,n),h={annotationUID:n?.annotationUID||i.utilities.uuidv4(),data:{handles:{points:t}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:l,FrameOfReferenceUID:a,referencedImageId:s,...n}};(0,r.addAnnotation)(h,u.element),(0,p.A)([u.id])}}getHandleNearImagePoint(e,t,n,a){const r=(0,i.getEnabledElement)(e),{viewport:s}=r,{data:l}=t,d=l.handles.points[0],c=s.worldToCanvas(d);if(!0===o.Zc.distance(n,c)<a)return d}handleSelectedCallback(e,t){const n=e.detail,{element:o}=n;t.highlighted=!0;const i=(0,h.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},this._activateModify(o),(0,g.hideElementCursor)(o),(0,p.A)(i),e.preventDefault()}_calculateCachedStats(e,t,n,a=u.ChangeTypes.StatsUpdated){const r=e.data,{renderingEngineId:d,viewport:c}=n,{element:h}=c,g=r.handles.points[0],{cachedStats:p}=r,w=Object.keys(p);for(let t=0;t<w.length;t++){const n=w[t],a={isPreScaled:(0,m.u)(c,n),isSuvScaled:this.isSuvScaled(c,n,e.metadata.referencedImageId)},r=this.getTargetImageData(n);if(!r)continue;const{dimensions:s,imageData:d,metadata:u,voxelManager:h}=r,b=u.Modality;let E=v(d,g);if(E=o.eR.round(E,E),i.utilities.indexWithinDimensions(E,s)){this.isHandleOutsideImage=!1;let t,o=h.getAtIJKPoint(E);if(n.startsWith("imageId:")){const e=n.split("imageId:")[1],t=i.utilities.imageIdToURI(e),o=i.utilities.getViewportsWithImageURI(t)[0];E[2]=o.getCurrentImageIdIndex()}if("US"===b){const e=(0,l.Xw)(r,[E]),n=e.values.every((e=>null!==e));o=n?e.values:o,t=n?e.units:"raw"}else t=(0,f.j)(b,e.metadata.referencedImageId,a);p[n]={index:E,value:o,Modality:b,modalityUnit:t}}else this.isHandleOutsideImage=!0,p[n]={index:E,Modality:b}}const b=e.invalidated;return e.invalidated=!1,b&&(0,s.triggerAnnotationModified)(e,h,a),p}}function b(e,t){const n=e.cachedStats[t],{index:o,value:a,modalityUnit:r}=n;if(void 0===a||!o)return;const s=[];if(s.push(`(${o[0]}, ${o[1]}, ${o[2]})`),a instanceof Array&&r instanceof Array)for(let e=0;e<a.length;e++)s.push(`${i.utilities.roundNumber(a[e])} ${r[e]}`);else s.push(`${i.utilities.roundNumber(a)} ${r}`);return s}const E=w},7750:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var o=n(15327),i=n(93759),a=n(10639),r=n(16171),s=n(99737);class l extends a.A{static{this.toolName="RegionSegmentPlus"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!1,positiveSeedVariance:.4,negativeSeedVariance:.9,subVolumePaddingPercentage:.1,islandRemoval:{enabled:!1}}}){super(e,t),this.mouseTimer=null,this.allowedToProceed=!1}mouseMoveCallback(e){if(this.mode!==s.ToolModes.Active)return;const t=e.detail,{currentPoints:n,element:o}=t,{world:i}=n;o.style.cursor="default",null!==this.mouseTimer&&(window.clearTimeout(this.mouseTimer),this.mouseTimer=null),this.mouseTimer=window.setTimeout((()=>{this.onMouseStable(e,i,o)}),this.configuration.mouseStabilityDelay||500)}async onMouseStable(e,t,n){await super.preMouseDownCallback(e);const i=o.cache.getVolume(this.growCutData.segmentation.referencedVolumeId),a=(0,r.sG)(i,t,{})||{positiveSeedIndices:new Set,negativeSeedIndices:new Set},{positiveSeedIndices:s,negativeSeedIndices:l}=a;let d;s.size/l.size>20||l.size<30?(d="not-allowed",this.allowedToProceed=!1):(d="copy",this.allowedToProceed=!0);const c=(0,o.getEnabledElement)(n);n&&(n.style.cursor=d,requestAnimationFrame((()=>{n.style.cursor!==d&&(n.style.cursor=d)}))),this.allowedToProceed&&(this.seeds=a),c&&c.viewport&&c.viewport.render()}async preMouseDownCallback(e){if(!this.allowedToProceed)return!1;const t=e.detail,{currentPoints:n,element:i}=t;(0,o.getEnabledElement)(i)&&(i.style.cursor="wait",requestAnimationFrame((()=>{"wait"!==i.style.cursor&&(i.style.cursor="wait")})));const{world:a}=n;return await super.preMouseDownCallback(e),this.growCutData=o.utilities.deepMerge(this.growCutData,{worldPoint:a,islandRemoval:{worldIslandPoints:[a]}}),this.growCutData.worldPoint=a,this.growCutData.islandRemoval={worldIslandPoints:[a]},await this.runGrowCut(),i&&(i.style.cursor="default"),!0}getRemoveIslandData(e){const{worldPoint:t}=e;return{worldIslandPoints:[t]}}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:t},worldPoint:n,options:o}=e,{subVolumePaddingPercentage:a}=this.configuration,r={...o,subVolumePaddingPercentage:a,seeds:this.seeds};return i.growCut.runOneClickGrowCut({referencedVolumeId:t,worldPosition:n,options:r})}}const d=l},9626:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var o=n(3823),i=n(15327),a=n(17328),r=n(7001),s=n(99737),l=n(58640),d=n(93759),c=n(10639);class u extends c.A{static{this.toolName="RegionSegment"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positiveSeedVariance:.5,negativeSeedVariance:.9}}){super(e,t),this._dragCallback=e=>{const t=e.detail,{element:n,currentPoints:o}=t,{world:a}=o,r=(0,i.getEnabledElement)(n),{viewport:s}=r;this.growCutData.circleBorderPoint=a,(0,l.A)([s.id])},this._endCallback=async e=>{const t=e.detail,{element:n}=t,o=(0,i.getEnabledElement)(n),{viewport:a}=o;this.runGrowCut(),this._deactivateDraw(n),this.growCutData=null,(0,r.resetElementCursor)(n),(0,l.A)([a.id])},this._deactivateDraw=e=>{e.removeEventListener(s.Events.MOUSE_UP,this._endCallback),e.removeEventListener(s.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(s.Events.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const t=e.detail,{element:n,currentPoints:o}=t,{world:a}=o,s=(0,i.getEnabledElement)(n),{viewport:d,renderingEngine:c}=s;return await super.preMouseDownCallback(e),Object.assign(this.growCutData,{circleCenterPoint:a,circleBorderPoint:a}),this._activateDraw(n),(0,r.hideElementCursor)(n),(0,l.A)([d.id]),!0}async getGrowCutLabelmap(e){const{segmentation:{referencedVolumeId:t},renderingEngineId:n,viewportId:a,circleCenterPoint:r,circleBorderPoint:s,options:l}=e,c=(0,i.getRenderingEngine)(n).getViewport(a),u={center:r,radius:o.eR.len(o.eR.sub(o.eR.create(),r,s))};return d.growCut.runGrowCutForSphere(t,u,c,l)}_activateDraw(e){e.addEventListener(s.Events.MOUSE_UP,this._endCallback),e.addEventListener(s.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(s.Events.MOUSE_CLICK,this._endCallback)}renderAnnotation(e,t){if(!this.growCutData)return;const{viewport:n}=e,{segmentation:r,circleCenterPoint:s,circleBorderPoint:l}=this.growCutData,d=n.worldToCanvas(s),c=n.worldToCanvas(l),u=o.Zc.sub(o.Zc.create(),c,d),h=o.Zc.len(u);if(i.utilities.isEqual(h,0))return;const{color:g}=this.getSegmentStyle({segmentationId:r.segmentationId,segmentIndex:r.segmentIndex,viewportId:n.id});(0,a.drawCircle)(t,"growcut","0",d,h,{color:g})}}const h=u},60580:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(3066);class a extends i.A{static{this.toolName="SplineContourSegmentationTool"}constructor(e){super(o.utilities.deepMerge({configuration:{calculateStats:!1}},e))}isContourSegmentationTool(){return!0}}const r=a},3066:(e,t,n)=>{"use strict";n.d(t,{A:()=>A});var o=n(15327),i=n(3823),a=n(82056),r=n(17328),s=n(85204),l=n(99737),d=n(7001),c=n(95527),u=n(27730),h=n(60810),g=n(473),p=n(4096),f=n(76910),m=n(93126),v=n(71543),w=n(63802),b=n(31147),E=n(34115),I=n(36320),y=n(53860);const _={resolution:20,controlPointAdditionDistance:6,controlPointDeletionDistance:6,showControlPointsConnectors:!1,controlPointAdditionEnabled:!0,controlPointDeletionEnabled:!0};var C,x;!function(e){e.Cardinal="CARDINAL",e.Linear="LINEAR",e.CatmullRom="CATMULLROM",e.BSpline="BSPLINE"}(C||(C={})),function(e){e.AddControlPoint="addControlPoint",e.DeleteControlPoint="deleteControlPoint"}(x||(x={}));class S extends I.A{static{this.toolName="SplineROI"}static{this.SplineTypes=C}static{this.Actions=x}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,calculateStats:!0,getTextLines:T,contourHoleAdditionModifierKey:l.KeyboardBindings.Shift,decimate:{enabled:!1,epsilon:.1},spline:{configuration:{[C.Cardinal]:{Class:v.A,scale:.5},[C.CatmullRom]:{Class:b.e},[C.Linear]:{Class:w.F},[C.BSpline]:{Class:E.k,controlPointAdditionEnabled:!1,controlPointDeletionEnabled:!1,showControlPointsConnectors:!0}},type:C.CatmullRom,drawPreviewEnabled:!0,lastControlPointDeletionKeys:["Backspace","Delete"]},actions:{[x.AddControlPoint]:{method:"addControlPointCallback",bindings:[{mouseButton:l.MouseBindings.Primary,modifierKey:l.KeyboardBindings.Shift}]},[x.DeleteControlPoint]:{method:"deleteControlPointCallback",bindings:[{mouseButton:l.MouseBindings.Primary,modifierKey:l.KeyboardBindings.Ctrl}]}}}}){super(e,t),this.isHandleOutsideImage=!1,this.fireChangeOnUpdate=null,this.isPointNearTool=(e,t,n,o)=>{const{instance:i}=t.data.spline;return i.isPointNearCurve(n,o)},this.toolSelectedCallback=(e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=(0,h.getViewportIdsWithToolToRender)(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),(0,y.triggerAnnotationRenderForViewportIds)(i),e.preventDefault()},this.handleSelectedCallback=(e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;if(n.worldPosition)s=!0;else{const{points:e}=a.handles;r=e.findIndex((e=>e===n))}const l=(0,h.getViewportIdsWithToolToRender)(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),(0,y.triggerAnnotationRenderForViewportIds)(l),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:r,newAnnotation:s,contourHoleProcessingEnabled:c}=this.editData,{data:u}=i;i.autoGenerated=!1,u.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,d.resetElementCursor)(n);const h=(0,o.getEnabledElement)(n),g=this.getTargetImageData(this.getTargetId(h.viewport)),{imageData:p,dimensions:f}=g;this.isHandleOutsideImage=u.handles.points.map((e=>o.utilities.transformWorldToIndex(p,e))).some((e=>!o.utilities.indexWithinDimensions(e,f))),this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,a.removeAnnotation)(i.annotationUID);const m=s?l.ChangeTypes.Completed:l.ChangeTypes.HandlesUpdated;this.fireChangeOnUpdate?(this.fireChangeOnUpdate.annotationUID=i.annotationUID,this.fireChangeOnUpdate.changeType=m):this.fireChangeOnUpdate={annotationUID:i.annotationUID,changeType:m,contourHoleProcessingEnabled:c},(0,y.triggerAnnotationRenderForViewportIds)(r),this.doneEditMemo(),this.editData=null,this.isDrawing=!1},this._keyDownCallback=e=>{const t=e.detail,{element:n}=t,o=t.key??"",{lastControlPointDeletionKeys:i}=this.configuration.spline;if(!i.includes(o))return;const{annotation:a}=this.editData,{data:r}=a;if(3!==r.handles.points.length){{const e=r.handles.points.length-1;this._deleteControlPointByIndex(n,a,e)}e.preventDefault()}else this.cancel(n)},this._mouseMoveCallback=e=>{const{drawPreviewEnabled:t}=this.configuration.spline;if(!t)return;const{element:n}=e.detail,{renderingEngine:i}=(0,o.getEnabledElement)(n),a=(0,h.getViewportIdsWithToolToRender)(n,this.getToolName());this.editData.lastCanvasPoint=e.detail.currentPoints.canvas,(0,y.triggerAnnotationRenderForViewportIds)(a),e.preventDefault()},this._mouseDownCallback=e=>{const t=e.type===l.Events.MOUSE_DOUBLE_CLICK,{annotation:n,viewportIdsToRender:o}=this.editData,{data:i}=n;if(i.contour.closed)return;this.doneEditMemo();const a=e.detail,{currentPoints:r,element:s}=a,{canvas:d,world:c}=r;let u=i.handles.points.length>=2&&t,h=!0;if(i.handles.points.length&&this.createMemo(s,n,{newAnnotation:1===i.handles.points.length}),i.handles.points.length>=3){this.createMemo(s,n);const{instance:e}=i.spline,t=e.getClosestControlPointWithinDistance(d,10);0===t?.index&&(h=!1,u=!0)}h&&i.handles.points.push(c),i.contour.closed=i.contour.closed||u,n.invalidated=!0,(0,y.triggerAnnotationRenderForViewportIds)(o),i.contour.closed&&this._endCallback(e),e.preventDefault()},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:a,handleIndex:r,movingTextBox:s,newAnnotation:l}=this.editData,{data:d}=i;if(this.createMemo(n,i,{newAnnotation:l}),s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;this.moveAnnotation(i,n)}else{const{currentPoints:e}=t,n=e.world;d.handles.points[r]=[...n],i.invalidated=!0}this.editData.hasMoved=!0;const c=(0,o.getEnabledElement)(n),{renderingEngine:u}=c;(0,y.triggerAnnotationRenderForViewportIds)(a)},this.triggerAnnotationCompleted=(e,t)=>{const n=l.Events.ANNOTATION_COMPLETED,i={annotation:e,changeType:l.ChangeTypes.Completed,contourHoleProcessingEnabled:t};(0,o.triggerEvent)(o.eventTarget,n,i)},this.triggerAnnotationModified=(e,t,n=l.ChangeTypes.StatsUpdated)=>{const{viewportId:i,renderingEngineId:a}=t,r=l.Events.ANNOTATION_MODIFIED,s={annotation:e,viewportId:i,renderingEngineId:a,changeType:n};(0,o.triggerEvent)(o.eventTarget,r,s)},this.triggerChangeEvent=(e,t,n=l.ChangeTypes.StatsUpdated,o)=>{n===l.ChangeTypes.Completed?this.triggerAnnotationCompleted(e,o):this.triggerAnnotationModified(e,t,n)},this._activateModify=e=>{s.wk.isInteractingWithTool=!0,e.addEventListener(l.Events.MOUSE_UP,this._endCallback),e.addEventListener(l.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(l.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(l.Events.TOUCH_END,this._endCallback),e.addEventListener(l.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(l.Events.TOUCH_TAP,this._endCallback)},this._deactivateModify=e=>{s.wk.isInteractingWithTool=!1,e.removeEventListener(l.Events.MOUSE_UP,this._endCallback),e.removeEventListener(l.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(l.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(l.Events.TOUCH_END,this._endCallback),e.removeEventListener(l.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(l.Events.TOUCH_TAP,this._endCallback)},this._activateDraw=e=>{s.wk.isInteractingWithTool=!0,e.addEventListener(l.Events.KEY_DOWN,this._keyDownCallback),e.addEventListener(l.Events.MOUSE_MOVE,this._mouseMoveCallback),e.addEventListener(l.Events.MOUSE_DOWN,this._mouseDownCallback),e.addEventListener(l.Events.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.addEventListener(l.Events.TOUCH_TAP,this._mouseDownCallback)},this._deactivateDraw=e=>{s.wk.isInteractingWithTool=!1,e.removeEventListener(l.Events.KEY_DOWN,this._keyDownCallback),e.removeEventListener(l.Events.MOUSE_MOVE,this._mouseMoveCallback),e.removeEventListener(l.Events.MOUSE_DOWN,this._mouseDownCallback),e.removeEventListener(l.Events.MOUSE_DOUBLE_CLICK,this._mouseDownCallback),e.removeEventListener(l.Events.TOUCH_TAP,this._mouseDownCallback)},this._renderStats=(e,t,n,o)=>{const i=e.data,a=this.getTargetId(t);if(!i.spline.instance.closed||!o.visibility)return;const s=this.configuration.getTextLines(i,a);if(!s||0===s.length)return;const l=i.handles.points.map((e=>t.worldToCanvas(e)));if(!i.handles.textBox.hasMoved){const e=(0,g.getTextBoxCoordsCanvas)(l);i.handles.textBox.worldPosition=t.canvasToWorld(e)}const d=t.worldToCanvas(i.handles.textBox.worldPosition),c=(0,r.drawLinkedTextBox)(n,e.annotationUID??"","textBox",s,d,l,{},o),{x:u,y:h,width:p,height:f}=c;i.handles.textBox.worldBoundingBox={topLeft:t.canvasToWorld([u,h]),topRight:t.canvasToWorld([u+p,h]),bottomLeft:t.canvasToWorld([u,h+f]),bottomRight:t.canvasToWorld([u+p,h+f])}},this.addControlPointCallback=(e,t)=>{const{data:n}=t,i=n.spline.type,a=this._getSplineConfig(i),r=a.controlPointAdditionDistance;if(!1===a.controlPointAdditionEnabled)return;const s=e.detail,{element:l}=s,d=(0,o.getEnabledElement)(l),{renderingEngine:c,viewport:u}=d,{canvasToWorld:g}=u,{instance:p}=n.spline,f=e.detail.currentPoints.canvas,m=p.getClosestPoint(f);if(m.distance>r)return;const{index:v,point:w}=p.addControlPointAtU(m.uValue);n.handles.points.splice(v,0,g(w)),t.invalidated=!0;const b=(0,h.getViewportIdsWithToolToRender)(l,this.getToolName());(0,y.triggerAnnotationRenderForViewportIds)(b)},this.deleteControlPointCallback=(e,t)=>{const n=t.data.spline.type,o=this._getSplineConfig(n),i=o.controlPointDeletionDistance;if(!1===o.controlPointDeletionEnabled)return;const a=e.detail,{element:r,currentPoints:s}=a,{canvas:l}=s,{instance:d}=t.data.spline,c=d.getClosestControlPointWithinDistance(l,i);c&&this._deleteControlPointByIndex(r,t,c.index)},this._calculateCachedStats=(e,t)=>{if(!this.configuration.calculateStats)return;const n=e.data;if(!n.contour.closed)return;const a=(0,o.getEnabledElement)(t);if(!a)return;const{viewport:r}=a,{cachedStats:s}=n,{polyline:d}=n.contour,u=Object.keys(s);for(let e=0;e<u.length;e++){const t=u[e],n=this.getTargetImageData(t);if(!n)continue;const{metadata:a}=n,l=d.map((e=>r.worldToCanvas(e))),h=l[0],g=r.canvasToWorld(h),f=r.canvasToWorld([h[0]+1,h[1]]),m=r.canvasToWorld([h[0],h[1]+1]),v=i.eR.distance(g,f),w=i.eR.distance(g,m),{imageData:b}=n,{scale:E,areaUnit:I}=(0,p.Op)(n,(()=>{const{maxX:e,maxY:t,minX:n,minY:i}=c.polyline.getAABB(l),a=r.canvasToWorld([n,i]),s=o.utilities.transformWorldToIndex(b,a),d=r.canvasToWorld([e,t]);return[s,o.utilities.transformWorldToIndex(b,d)]}));let y=c.polyline.getArea(l)/E/E;y*=v*w,s[t]={Modality:a.Modality,area:y,areaUnit:I}}const h=e.invalidated;return e.invalidated=!1,h&&this.triggerAnnotationModified(e,a,l.ChangeTypes.StatsUpdated),s},this._throttledCalculateCachedStats=(0,u.A)(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:i}=t,{canvas:a}=n,r=(0,f.A)(e.detail.event)===this.configuration.contourHoleAdditionModifierKey,s=(0,o.getEnabledElement)(i),{renderingEngine:l}=s,d=this.createAnnotation(e);this.isDrawing=!0,this.addAnnotation(d,i);const c=(0,h.getViewportIdsWithToolToRender)(i,this.getToolName());return this.editData={annotation:d,viewportIdsToRender:c,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,lastCanvasPoint:a,contourHoleProcessingEnabled:r},this._activateDraw(i),e.preventDefault(),(0,y.triggerAnnotationRenderForViewportIds)(c),d}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,d.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:i}=this.editData;i&&(0,a.removeAnnotation)(t.annotationUID),super.cancelAnnotation(t);const r=(0,o.getEnabledElement)(e),{renderingEngine:s}=r;return(0,y.triggerAnnotationRenderForViewportIds)(n),this.editData=null,t.annotationUID}isContourSegmentationTool(){return!1}renderAnnotationInstance(e){const{enabledElement:t,targetId:n,svgDrawingHelper:o,annotationStyle:i}=e,{viewport:s}=t,{worldToCanvas:l}=s,{element:d}=s,c=e.annotation,{annotationUID:u,data:h,highlighted:g}=c,{handles:p}=h,{points:f,activeHandleIndex:v}=p,w=this.editData?.newAnnotation,{lineWidth:b,lineDash:E,color:I,locked:y}=i,_=f.map((e=>l(e))),{drawPreviewEnabled:C}=this.configuration.spline,x=c.data.spline.type,S=this._getSplineConfig(x),T=c.data.spline.instance,A=(0,a.getChildAnnotations)(c);if(-1!==A.findIndex((e=>!e)))throw new Error(`Can't find annotation for child ${c.childAnnotationUIDs.join()}`);let D;if([c,...A].filter((e=>this._isSplineROIAnnotation(e))).forEach((e=>{const t=this._updateSplineInstance(d,e).getPolylinePoints();this.updateContourPolyline(e,{points:t,closed:h.contour.closed,targetWindingDirection:m.W.Clockwise},s,{updateWindingDirection:h.contour.closed})})),super.renderAnnotationInstance(e),h.cachedStats[n]&&null!=h.cachedStats[n].areaUnit?c.invalidated&&this._throttledCalculateCachedStats(c,d):(h.cachedStats[n]={Modality:null,area:null,areaUnit:null},this._calculateCachedStats(c,d)),y||this.editData||null===v||(D=[_[v]]),D||w||g){const e="0";(0,r.drawHandles)(o,u,e,_,{color:I,lineWidth:b,handleRadius:"3"})}if(C&&T.numControlPoints>1&&this.editData?.lastCanvasPoint&&!T.closed){const{lastCanvasPoint:e}=this.editData,t=T.getPreviewPolylinePoints(e,10);(0,r.drawPolyline)(o,u,"previewSplineChange",t,{color:"#9EA0CA",lineDash:E,lineWidth:1})}if(S.showControlPointsConnectors){const e=[..._];T.closed&&e.push(_[0]),(0,r.drawPolyline)(o,u,"controlPointsConnectors",e,{color:"rgba(255, 255, 255, 0.5)",lineWidth:1})}return this._renderStats(c,s,o,i.textbox),this.fireChangeOnUpdate?.annotationUID===u&&(this.triggerChangeEvent(c,t,this.fireChangeOnUpdate.changeType,this.fireChangeOnUpdate.contourHoleProcessingEnabled),this.fireChangeOnUpdate=null),c.invalidated=!1,!0}createInterpolatedSplineControl(e){if(e.data.handles.points?.length)return;const{polyline:t}=e.data.contour;if(!t||!t.length)return;e.data.handles.points=[];const{points:n}=e.data.handles,o=Math.max(10,Math.floor(t.length/20));for(let e=0;e<t.length-o;e+=o)n.push(t[e]);n.push(t[t.length-1])}createAnnotation(e){const t=super.createAnnotation(e),{world:n}=e.detail.currentPoints,{type:i}=this.configuration.spline,a=this._getSplineConfig(i),r=new a.Class,s=()=>({type:a.type,instance:r,resolution:a.resolution});let l;return this.configuration.interpolation?.enabled&&(l=e=>{e.data.spline||=s(),this.createInterpolatedSplineControl(e)}),o.utilities.deepMerge(t,{data:{handles:{points:[[...n]]},spline:s(),cachedStats:{}},onInterpolationComplete:l})}_deleteControlPointByIndex(e,t,n){const i=(0,o.getEnabledElement)(e),{points:r}=t.data.handles;3===r.length?(0,a.removeAnnotation)(t.annotationUID):r.splice(n,1);const{renderingEngine:s}=i,l=(0,h.getViewportIdsWithToolToRender)(e,this.getToolName());t.invalidated=!0,(0,y.triggerAnnotationRenderForViewportIds)(l)}_isSplineROIAnnotation(e){return!!e.data?.spline}_getSplineConfig(e){const{configuration:t}=this,n=t.spline.configuration;return Object.assign({type:e},_,n[e])}_updateSplineInstance(e,t){const n=(0,o.getEnabledElement)(e),{viewport:i}=n,{worldToCanvas:a}=i,{data:r}=t,{type:s,instance:l}=t.data.spline,d=this._getSplineConfig(s),c=r.handles.points.map(a),u=void 0!==d.resolution?parseInt(d.resolution):void 0,h=void 0!==d.scale?parseFloat(d.scale):void 0;return l.setControlPoints(c),l.closed=!!r.contour.closed,l.fixedResolution||void 0===u||l.resolution===u||(l.resolution=u,t.invalidated=!0),l instanceof v.A&&!l.fixedScale&&void 0!==h&&l.scale!==h&&(l.scale=h,t.invalidated=!0),l}static{this.hydrate=(e,t,n)=>{const i=(0,o.getEnabledElementByViewportId)(e);if(!i)return;if(t.length<3)return void console.warn("Spline requires at least 3 control points");const{FrameOfReferenceUID:r,referencedImageId:s,viewPlaneNormal:l,viewUp:d,instance:c,viewport:u}=this.hydrateBase(S,i,t,n),h=n?.splineType||C.CatmullRom,g=new(0,c._getSplineConfig(h).Class),p={annotationUID:n?.annotationUID||o.utilities.uuidv4(),data:{handles:{points:t},label:"",cachedStats:{},spline:{type:h,instance:g},contour:{closed:!0}},highlighted:!1,autoGenerated:!1,invalidated:!0,isLocked:!1,isVisible:!0,metadata:{toolName:c.getToolName(),viewPlaneNormal:l,FrameOfReferenceUID:r,referencedImageId:s,...n}};(0,a.addAnnotation)(p,u.element),(0,y.triggerAnnotationRenderForViewportIds)([u.id])}}}function T(e,t){const n=e.cachedStats[t],{area:i,isEmptyArea:a,areaUnit:r}=n,s=[];if(i){const e=a?"Area: Oblique not supported":`Area: ${o.utilities.roundNumber(i)} ${r}`;s.push(e)}return s}const A=S},94504:(e,t,n)=>{"use strict";n.d(t,{A:()=>E});var o=n(99737),i=n(15327),a=n(85817),r=n(27730),s=n(82056),l=n(44049),d=n(17328),c=n(85204),u=n(60810),h=n(82216),g=n(58640),p=n(7001),f=n(4096),m=n(95527);const{transformWorldToIndex:v}=i.utilities;class w extends a.EC{static{this.toolName="UltrasoundDirectionalTool"}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:b,displayBothAxesDistances:!1}}){super(e,t),this.addNewAnnotation=e=>{if(this.startedDrawing)return;this.startedDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:l,renderingEngine:d}=r;if(!(l instanceof i.StackViewport))throw new Error("UltrasoundDirectionalTool can only be used on a StackViewport");(0,p.hideElementCursor)(o),this.isDrawing=!0;const c=l.getCamera(),{viewPlaneNormal:h,viewUp:f}=c,m=this.getReferencedImageId(l,a,h,f),v=l.getFrameOfReferenceUID(),w={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...h],viewUp:[...f],FrameOfReferenceUID:v,referencedImageId:m},data:{handles:{points:[[...a],[...a]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};(0,s.addAnnotation)(w,o);const b=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName());return this.editData={annotation:w,viewportIdsToRender:b,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),(0,g.A)(b),w},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,[l,d]=s.handles.points,c=r.worldToCanvas(l),u=r.worldToCanvas(d),h={start:{x:c[0],y:c[1]},end:{x:u[0],y:u[1]}};return m.lineSegment.distanceToPoint([h.start.x,h.start.y],[h.end.x,h.end.y],[n[0],n[1]])<=o},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,newAnnotation:r,hasMoved:d}=this.editData,{data:c}=o;if(r&&!d)return;if(this.startedDrawing&&1===c.handles.points.length)return void(this.editData.handleIndex=1);this.startedDrawing=!1,c.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,p.resetElementCursor)(n);const u=(0,i.getEnabledElement)(n),{renderingEngine:h}=u;this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,s.removeAnnotation)(o.annotationUID),(0,g.A)(a),r&&(0,l.triggerAnnotationCompleted)(o),this.editData=null,this.isDrawing=!1},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:a,handleIndex:r,movingTextBox:s}=this.editData,{data:l}=o;if(s){const{deltaPoints:e}=t,n=e.world,{textBox:o}=l.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===r){const{deltaPoints:e}=t,n=e.world;l.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;l.handles.points[r]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const d=(0,i.getEnabledElement)(n),{renderingEngine:c}=d;(0,g.A)(a)},this.cancel=e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,p.resetElementCursor)(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;return t.highlighted=!1,i.handles.activeHandleIndex=null,(0,g.A)(n),o&&(0,l.triggerAnnotationCompleted)(t),this.editData=null,this.startedDrawing=!1,t.annotationUID}},this._activateModify=e=>{c.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=e=>{c.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._activateDraw=e=>{c.wk.isInteractingWithTool=!0,e.addEventListener(o.Events.MOUSE_UP,this._endCallback),e.addEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(o.Events.TOUCH_TAP,this._endCallback),e.addEventListener(o.Events.TOUCH_END,this._endCallback),e.addEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{c.wk.isInteractingWithTool=!1,e.removeEventListener(o.Events.MOUSE_UP,this._endCallback),e.removeEventListener(o.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(o.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(o.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(o.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(o.Events.TOUCH_END,this._endCallback),e.removeEventListener(o.Events.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:i}=o;let a=(0,s.getAnnotations)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r=this.getTargetId(o),l=o.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<a.length;i++){const s=a[i],{annotationUID:u,data:h}=s,{points:g}=h.handles;c.annotationUID=u;const p=this.getStyle("color",c,s),f=g.map((e=>o.worldToCanvas(e)));if(h.cachedStats[r]&&null!=h.cachedStats[r].xValues?s.invalidated&&this._throttledCalculateCachedStats(s,l,e):(h.cachedStats[r]={xValues:[0,0],yValues:[0,0],isHorizontal:!1,units:[""],isUnitless:!1},this._calculateCachedStats(s,l,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let m="0";if((0,d.drawHandle)(t,u,m,f[0],{color:p},0),n=!0,2!==f.length)return n;m="1",(0,d.drawHandle)(t,u,m,f[1],{color:p},1);if(h.cachedStats[r].isUnitless){const e=`${u}-line-1`,n="1";(0,d.drawLine)(t,u,n,f[0],f[1],{color:p,width:1,shadow:this.configuration.shadow},e)}else{const e=f[0],n=f[1],o=n[1]-e[1],i=n[0]-e[0];let a=[0,0];a=h.cachedStats[r].isHorizontal?[e[0]+i,e[1]]:[e[0],e[1]+o];let s=`${u}-line-1`,l="1";(0,d.drawLine)(t,u,l,f[0],a,{color:p,width:1,shadow:this.configuration.shadow},s),s=`${u}-line-2`,l="2",(0,d.drawLine)(t,u,l,f[1],a,{color:p,width:1,lineDash:[1,1],shadow:this.configuration.shadow},s)}const v=this.getLinkedTextBoxStyle(c,s);if(!v.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const w=this.configuration.getTextLines(h,r,this.configuration);if(!h.handles.textBox.hasMoved){const e=f[1];h.handles.textBox.worldPosition=o.canvasToWorld(e)}const b=o.worldToCanvas(h.handles.textBox.worldPosition),E="1",I=(0,d.drawLinkedTextBox)(t,u,E,w,b,f,{},v),{x:y,y:_,width:C,height:x}=I;h.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([y,_]),topRight:o.canvasToWorld([y+C,_]),bottomLeft:o.canvasToWorld([y,_+x]),bottomRight:o.canvasToWorld([y+C,_+x])}}return n},this._throttledCalculateCachedStats=(0,r.A)(this._calculateCachedStats,100,{trailing:!0})}toolSelectedCallback(e,t,n,o){}handleSelectedCallback(e,t,n){const o=e.detail,{element:a}=o,{data:r}=t;t.highlighted=!0;const s=(0,u.getViewportIdsWithToolToRender)(a,this.getToolName());let l,d=!1;n.worldPosition?d=!0:l=r.handles.points.findIndex((e=>e===n)),this.editData={handleIndex:l,annotation:t,viewportIdsToRender:s},this._activateModify(a),(0,p.hideElementCursor)(a);const c=(0,i.getEnabledElement)(a),{renderingEngine:h}=c;(0,g.A)(s),e.preventDefault()}_calculateCachedStats(e,t,n){const i=e.data,{element:a}=n.viewport;if(2!==i.handles.points.length)return;const{cachedStats:r}=i,s=Object.keys(r);for(let e=0;e<s.length;e++){const t=s[e],o=this.getTargetImageData(t);if(!o)continue;const{imageData:a}=o,l=i.handles.points[0],d=i.handles.points[1],c=v(a,l),u=v(a,d),{values:g,units:p}=(0,f.Xw)(o,[c]),{values:m,units:w}=(0,f.Xw)(o,[u]);let b,E,I,y,_=!1;if(p[0]!==w[0]||p[1]!==w[1]||"raw"===p[0]&&"raw"===w[0]){const e=(0,h.distanceToPoint)(l,d);b=[e,0],E=[e,0],I=["px"],_=!0}else{const e=n.viewport.worldToCanvas(l),t=n.viewport.worldToCanvas(d),o=t[1]-e[1],i=t[0]-e[0];y=Math.abs(i)>Math.abs(o),b=[g[0],m[0]],E=[g[1],m[1]],I=[p[0],p[1]]}r[t]={xValues:b,yValues:E,isHorizontal:y,units:I,isUnitless:_}}const d=e.invalidated;return e.invalidated=!1,d&&(0,l.triggerAnnotationModified)(e,a,o.ChangeTypes.StatsUpdated),r}}function b(e,t,n){const o=e.cachedStats[t],{xValues:a,yValues:r,units:s,isUnitless:l,isHorizontal:d}=o;if(l)return[`${i.utilities.roundNumber(a[0])} px`];if(n.displayBothAxesDistances){const e=Math.abs(a[1]-a[0]),t=Math.abs(r[1]-r[0]);return[`${i.utilities.roundNumber(e)} ${s[0]}`,`${i.utilities.roundNumber(t)} ${s[1]}`]}if(d){const e=Math.abs(a[1]-a[0]);return[`${i.utilities.roundNumber(e)} ${s[0]}`]}{const e=Math.abs(r[1]-r[0]);return[`${i.utilities.roundNumber(e)} ${s[1]}`]}}const E=w},11811:(e,t,n)=>{"use strict";n.d(t,{A:()=>v});var o=n(3823),i=n(15327),a=n(85817),r=n(27730),s=n(6802),l=n(17328),d=n(85204),c=n(99737),u=n(60810),h=n(33657),g=n(7001),p=n(58640),f=n(62514);class m extends a.EC{static{this.toolName="VideoRedaction"}constructor(e={}){super(e,{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:o}=t,a=n.world,r=(0,i.getEnabledElement)(o),{viewport:l}=r;this.isDrawing=!0;const d=this.constructor.createAnnotationForViewport(l,{data:{handles:{points:[[...a],[...a],[...a],[...a]]}}});(0,s.lC)(d,o);const c=(0,u.getViewportIdsWithToolToRender)(o,this.getToolName(),!1);return this.editData={annotation:d,viewportUIDsToRender:c,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),(0,g.hideElementCursor)(o),e.preventDefault(),(0,p.A)(c),d},this.getHandleNearImagePoint=(e,t,n,a)=>{const r=(0,i.getEnabledElement)(e),{viewport:s}=r,{data:l}=t,{points:d}=l.handles;for(let e=0;e<d.length;e++){const t=d[e],i=s.worldToCanvas(t);if(!0===o.Zc.distance(n,i)<a)return l.handles.activeHandleIndex=e,t}l.handles.activeHandleIndex=null},this.isPointNearTool=(e,t,n,o)=>{const a=(0,i.getEnabledElement)(e),{viewport:r}=a,{data:s}=t,{points:l}=s.handles,d=r.worldToCanvas(l[0]),c=r.worldToCanvas(l[3]),u=this._getRectangleImageCoordinates([d,c]),g=[n[0],n[1]],{left:p,top:f,width:m,height:v}=u;if(h.distanceToPoint([p,f,m,v],g)<=o)return!0},this.toolSelectedCallback=(e,t,n="mouse")=>{const o=e.detail,{element:i}=o,{data:a}=t;a.active=!0;const r=(0,u.getViewportIdsWithToolToRender)(i,this.getToolName(),!1);this.editData={annotation:t,viewportUIDsToRender:r},this._activateModify(i),(0,g.hideElementCursor)(i),(0,p.A)(r),e.preventDefault()},this.handleSelectedCallback=(e,t,n,o="mouse")=>{const i=e.detail,{element:a}=i,{data:r}=t;r.active=!0;let s,l=!1;n.worldPosition?l=!0:s=r.handles.points.findIndex((e=>e===n));const d=(0,u.getViewportIdsWithToolToRender)(a,this.getToolName(),!1);this.editData={annotation:t,viewportUIDsToRender:d,handleIndex:s},this._activateModify(a),(0,g.hideElementCursor)(a),(0,p.A)(d),e.preventDefault()},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportUIDsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:l}=o;a&&!r||(this.doneEditMemo(),l.active=!1,l.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,g.resetElementCursor)(n),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,s.O8)(o.annotationUID),(0,p.A)(i))},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportUIDsToRender:a,handleIndex:r,newAnnotation:s}=this.editData;this.createMemo(n,o,{newAnnotation:s});const{data:l}=o;if(void 0===r){const{deltaPoints:e}=t,n=e.world,{points:o}=l.handles;o.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),l.invalidated=!0}else{const{currentPoints:e}=t,o=(0,i.getEnabledElement)(n),{worldToCanvas:a,canvasToWorld:s}=o.viewport,d=e.world,{points:c}=l.handles;let u,h,g,p,f,m,v,w;switch(c[r]=[...d],r){case 0:case 3:u=a(c[0]),p=a(c[3]),h=[p[0],u[1]],g=[u[0],p[1]],m=s(h),v=s(g),c[1]=m,c[2]=v;break;case 1:case 2:h=a(c[1]),g=a(c[2]),u=[g[0],h[1]],p=[h[0],g[1]],f=s(u),w=s(p),c[0]=f,c[3]=w}l.invalidated=!0}this.editData.hasMoved=!0;(0,i.getEnabledElement)(n);(0,p.A)(a)},this._activateDraw=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(c.Events.MOUSE_UP,this._endCallback),e.addEventListener(c.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(c.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(c.Events.TOUCH_END,this._endCallback),e.addEventListener(c.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(c.Events.MOUSE_UP,this._endCallback),e.removeEventListener(c.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(c.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(c.Events.TOUCH_END,this._endCallback),e.removeEventListener(c.Events.TOUCH_DRAG,this._dragCallback)},this._activateModify=e=>{d.wk.isInteractingWithTool=!0,e.addEventListener(c.Events.MOUSE_UP,this._endCallback),e.addEventListener(c.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(c.Events.TOUCH_END,this._endCallback),e.addEventListener(c.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateModify=e=>{d.wk.isInteractingWithTool=!1,e.removeEventListener(c.Events.MOUSE_UP,this._endCallback),e.removeEventListener(c.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(c.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(c.Events.TOUCH_END,this._endCallback),e.removeEventListener(c.Events.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(e,t)=>{const n=!1,{viewport:o}=e,{element:i}=o;let a=(0,s.Rh)(this.getToolName(),i);if(!a?.length)return n;if(a=this.filterInteractableAnnotationsForElement(i,a),!a?.length)return n;const r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<a.length;e++){const n=a[e],{annotationUID:i}=n,s=n.data,{points:d,activeHandleIndex:c}=s.handles,u=d.map((e=>o.worldToCanvas(e))),h=this.getStyle("lineWidth",r,n),g=this.getStyle("lineDash",r,n),p=this.getStyle("color",r,n);if(!o.getRenderingEngine())return void console.warn("Rendering Engine has been destroyed");let f;if(this.editData||null===c||(f=[u[c]]),f){const e="0";(0,l.drawHandles)(t,i,e,f,{color:p})}const m="0";(0,l.drawRedactionRect)(t,i,m,u[0],u[3],{color:"black",lineDash:g,lineWidth:h})}},this._getRectangleImageCoordinates=e=>{const[t,n]=e;return{left:Math.min(t[0],n[0]),top:Math.min(t[1],n[1]),width:Math.abs(t[0]-n[0]),height:Math.abs(t[1]-n[1])}},this._calculateCachedStats=(e,t,n,a,r)=>{const{data:s}=e,{viewportUID:l,renderingEngineUID:d,sceneUID:u}=r,h=s.handles.points[0],g=s.handles.points[3],{cachedStats:p}=s,m=Object.keys(p);for(let e=0;e<m.length;e++){const i=m[e],{imageVolume:r}=this._getImageVolumeFromTargetUID(i,a),{dimensions:s,scalarData:l,vtkImageData:d,metadata:c}=r,u=o.eR.fromValues(0,0,0),v=o.eR.fromValues(0,0,0);if(d.worldToIndexVec3(h,u),u[0]=Math.floor(u[0]),u[1]=Math.floor(u[1]),u[2]=Math.floor(u[2]),d.worldToIndexVec3(g,v),v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]),this._isInsideVolume(u,v,s)){this.isHandleOutsideImage=!1;const e=Math.min(u[0],v[0]),o=Math.max(u[0],v[0]),a=Math.min(u[1],v[1]),r=Math.max(u[1],v[1]),d=Math.min(u[2],v[2]),m=Math.max(u[2],v[2]),{worldWidth:w,worldHeight:b}=(0,f.A)(t,n,h,g),E=w*b;let I=0,y=0,_=0;const C=s[0],x=s[0]*s[1];for(let t=d;t<=m;t++)for(let n=a;n<=r;n++)for(let i=e;i<=o;i++){I++,y+=l[t*x+n*C+i]}y/=I;for(let t=d;t<=m;t++)for(let n=a;n<=r;n++)for(let i=e;i<=o;i++){const e=l[t*x+n*C+i]-y;_+=e*e}_/=I,_=Math.sqrt(_),p[i]={Modality:c.Modality,area:E,mean:y,stdDev:_}}else this.isHandleOutsideImage=!0,p[i]={Modality:c.Modality}}const v=e.invalidated;if(e.invalidated=!1,v){const t=c.Events.ANNOTATION_MODIFIED,n={annotation:e,viewportUID:l,renderingEngineUID:d,sceneUID:u,changeType:c.ChangeTypes.StatsUpdated};(0,i.triggerEvent)(i.eventTarget,t,n)}return p},this._isInsideVolume=(e,t,n)=>i.utilities.indexWithinDimensions(e,n)&&i.utilities.indexWithinDimensions(t,n),this._getTargetVolumeUID=e=>{if(this.configuration.volumeUID)return this.configuration.volumeUID;const t=e.getVolumeActors();return t||t.length?t[0].uid:void 0},this._throttledCalculateCachedStats=(0,r.A)(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),(0,g.resetElementCursor)(e);const{annotation:t,viewportUIDsToRender:n}=this.editData,{data:o}=t;return o.active=!1,o.handles.activeHandleIndex=null,(0,p.A)(n),this.editData=null,t.metadata.annotationUID}_getImageVolumeFromTargetUID(e,t){let n;if(e.startsWith("stackTarget")){const o=e.indexOf(":"),i=e.substring(o+1);n=t.getViewport(i).getImageData()}else n=i.cache.getVolume(e);return{imageVolume:n,viewport:undefined}}_getTargetStackUID(e){return`stackTarget:${e.uid}`}}const v=m},31787:(e,t,n)=>{"use strict";n.d(t,{A:()=>v});var o=n(3823),i=n(15327),a=n(17328),r=n(7001),s=n(99737),l=n(58640),d=n(93759),c=n(10639);const u=[-1/0,-995],h=[0,1900],g=[1e3,1900],{transformWorldToIndex:p,transformIndexToWorld:f}=i.utilities;class m extends c.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{isPartialVolume:!0,positivePixelRange:h,negativePixelRange:u,islandRemoval:{enabled:!0,islandPixelRange:g}}}){super(e,t),this._dragCallback=e=>{const t=e.detail,{element:n,currentPoints:o}=t,{world:a}=o,r=(0,i.getEnabledElement)(n),{viewport:s}=r,d=this._getHorizontalLineWorldPoints(r,a);this.growCutData.horizontalLines[1]=d,(0,l.A)([s.id])},this._endCallback=async e=>{const t=e.detail,{element:n}=t,o=(0,i.getEnabledElement)(n),{viewport:a}=o;await this.runGrowCut(),this._deactivateDraw(n),this.growCutData=null,(0,r.resetElementCursor)(n),(0,l.A)([a.id])},this._deactivateDraw=e=>{e.removeEventListener(s.Events.MOUSE_UP,this._endCallback),e.removeEventListener(s.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(s.Events.MOUSE_CLICK,this._endCallback)}}async preMouseDownCallback(e){const t=e.detail,{element:n,currentPoints:o}=t,{world:a}=o,s=(0,i.getEnabledElement)(n),{viewport:d,renderingEngine:c}=s,u=this._getHorizontalLineWorldPoints(s,a);return await super.preMouseDownCallback(e),this.growCutData.horizontalLines=[u,u],this._activateDraw(n),(0,r.hideElementCursor)(n),(0,l.A)([d.id]),!0}renderAnnotation(e,t){if(!this.growCutData)return;const{segmentation:n,horizontalLines:o}=this.growCutData;if(2!==o.length)return;const{viewport:i}=e,{segmentationId:r,segmentIndex:s}=n,[l,d]=o,[c,u]=l,[h,g]=d,p=[c,u,g,h].map((e=>i.worldToCanvas(e))),{color:f,fillColor:m,lineWidth:v,fillOpacity:w,lineDash:b}=this.getSegmentStyle({segmentationId:r,segmentIndex:s,viewportId:i.id});(0,a.drawPolyline)(t,"growCutRect","0",p,{color:f,fillColor:m,fillOpacity:w,lineWidth:v,lineDash:b,closePath:!0})}async getGrowCutLabelmap(e){const{segmentation:{segmentIndex:t,referencedVolumeId:n},renderingEngineId:o,viewportId:a,horizontalLines:r}=e,s=(0,i.getRenderingEngine)(o).getViewport(a),[l,c]=r,u=[l[0],l[1],c[1],c[0]],h=i.cache.getVolume(n),{topLeft:g,bottomRight:f}=this._getWorldBoundingBoxFromProjectedSquare(s,u),m={boundingBox:{ijkTopLeft:p(h.imageData,g),ijkBottomRight:p(h.imageData,f)}},v=this.configuration,w={positiveSeedValue:t,negativeSeedValue:255,negativePixelRange:v.negativePixelRange,positivePixelRange:v.positivePixelRange};return d.growCut.runGrowCutForBoundingBox(n,m,w)}getRemoveIslandData(){const{segmentation:{segmentIndex:e,referencedVolumeId:t,labelmapVolumeId:n}}=this.growCutData,o=i.cache.getVolume(t),a=i.cache.getVolume(n),r=o.voxelManager.getCompleteScalarDataArray(),s=a.voxelManager.getCompleteScalarDataArray(),{islandPixelRange:l}=this.configuration.islandRemoval,d=[];for(let t=0,n=s.length;t<n;t++){if(s[t]!==e)continue;const n=r[t];n>=l[0]&&n<=l[1]&&d.push(t)}return{islandPointIndexes:d}}_activateDraw(e){e.addEventListener(s.Events.MOUSE_UP,this._endCallback),e.addEventListener(s.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(s.Events.MOUSE_CLICK,this._endCallback)}_projectWorldPointAcrossSlices(e,t,n){const o=this._getViewportVolume(e),{dimensions:a}=o,r=p(o.imageData,t),s=n.findIndex((e=>i.utilities.isEqual(Math.abs(e),1)));if(-1===s)throw new Error("Non-orthogonal direction vector");const l=[...r],d=[...r];return l[s]=0,d[s]=a[s]-1,[l,d]}_getCuboidIJKEdgePointsFromProjectedWorldPoint(e,t){const{viewPlaneNormal:n}=e.getCamera();return this._projectWorldPointAcrossSlices(e,t,n)}_getWorldCuboidCornerPoints(e,t){const n=[],o=this._getViewportVolume(e);return t.forEach((t=>{const i=this._getCuboidIJKEdgePointsFromProjectedWorldPoint(e,t).map((e=>f(o.imageData,e)));n.push(...i)})),n}_getWorldBoundingBoxFromProjectedSquare(e,t){const n=this._getWorldCuboidCornerPoints(e,t),i=[...n[0]],a=[...n[0]];return n.forEach((e=>{o.eR.min(i,i,e),o.eR.max(a,a,e)})),{topLeft:i,bottomRight:a}}_getViewportVolume(e){if(!(e instanceof i.BaseVolumeViewport))throw new Error("Viewport is not a BaseVolumeViewport");const t=e.getAllVolumeIds()[0];return i.cache.getVolume(t)}_getHorizontalLineIJKPoints(e,t){const{viewport:n}=e,a=this._getViewportVolume(n),{dimensions:r}=a,s=p(a.imageData,t),{viewUp:l,viewPlaneNormal:d}=n.getCamera(),c=o.eR.cross(o.eR.create(),l,d).findIndex((e=>i.utilities.isEqual(Math.abs(e),1))),u=[...s],h=[...s];return u[c]=0,h[c]=r[c]-1,[u,h]}_getHorizontalLineWorldPoints(e,t){const{viewport:n}=e,o=this._getViewportVolume(n),[i,a]=this._getHorizontalLineIJKPoints(e,t);return[f(o.imageData,i),f(o.imageData,a)]}}m.toolName="WholeBodySegment";const v=m},34115:(e,t,n)=>{"use strict";n.d(t,{A:()=>r,k:()=>r});var o=n(3823),i=n(57163);const a=o.pB.multiplyScalar(o.pB.create(),o.pB.fromValues(1,4,1,0,-3,0,3,0,3,-6,3,0,-1,3,-3,1),1/6);class r extends i.m{getTransformMatrix(){return a}}},71543:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,h:()=>i});var o=n(57163);class i extends o.m{constructor(e){super(e),this._scale=e?.scale??.5,this._fixedScale=e?.fixedScale??!1}get scale(){return this._scale}set scale(e){this._fixedScale||this._scale===e||(this._scale=e,this.invalidated=!0)}get fixedScale(){return this._fixedScale}getTransformMatrix(){const{scale:e}=this,t=2*e;return[0,1,0,0,-e,0,e,0,t,e-3,3-t,-e,-e,2-e,e-2,e]}}},31147:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,e:()=>i});var o=n(71543);class i extends o.A{constructor(){super({scale:.5,fixedScale:!0})}}},57163:(e,t,n)=>{"use strict";n.d(t,{A:()=>r,m:()=>r});var o=n(3823),i=n(56091),a=n(95527);class r extends i.e{getPreviewCurveSegments(e,t){const n=this._getNumCurveSegments()+1,o=Math.max(0,n-2),i=t?n:n-1,a=this.getTransformMatrix(),r=[...this.controlPoints],s=[];t||r.push(e);for(let e=o;e<=i;e++){const n=this._getCurveSegment(e,a,r,t);s.push(n)}return s}getSplineCurves(){const e=this._getNumCurveSegments(),t=new Array(e);if(e<=0)return[];const n=this.getTransformMatrix();let o=0;for(let i=0;i<e;i++){const e=this._getCurveSegment(i,n);e.previousCurveSegmentsLength=o,t[i]=e,o+=e.length}return t}_getNumCurveSegments(e=this.controlPoints,t=this.closed){return t?e.length:Math.max(0,e.length-1)}_getPoint(e,t,n=this.controlPoints,i=this.closed){const a=this._getNumCurveSegments(n,i),r=Math.floor(e);let s=r%a;const l=e-r;if(s<0||s>=a){if(!this.closed)return;s=(a+s)%a}const{p0:d,p1:c,p2:u,p3:h}=this._getCurveSegmentPoints(s,n,i),g=l*l,p=g*l,f=o.ln.fromValues(1,l,g,p),m=o.ln.transformMat4(o.ln.create(),f,t);return[o.ln.dot(m,o.ln.fromValues(d[0],c[0],u[0],h[0])),o.ln.dot(m,o.ln.fromValues(d[1],c[1],u[1],h[1]))]}_getCurveSegmentPoints(e,t=this.controlPoints,n=this.closed){const o=this._getNumCurveSegments(t,n),i=e-1,r=n?(e+1)%o:e+1,s=r+1,l=t[e],d=t[r];let c,u;return c=i>=0?t[i]:n?t[t.length-1]:a.point.mirror(d,l),u=s<t.length?t[s]:n?t[0]:a.point.mirror(l,d),{p0:c,p1:l,p2:d,p3:u}}_getLineSegments(e,t,n=this.controlPoints,o=this.closed){const i=this._getNumCurveSegments(n,o),a=this.resolution+1,r=1/a;let s=e+1;o||e!==i-1||(s-=1e-8);const l=[];let d,c,u=0;for(let i=0,h=e;i<=a;i++,h+=r){h=h>s?s:h;const e=this._getPoint(h,t,n,o);if(!i){d=e;continue}c=e;const a=c[0]-d[0],r=c[1]-d[1],g=Math.sqrt(a**2+r**2),p={minX:d[0]<=c[0]?d[0]:c[0],maxX:d[0]>=c[0]?d[0]:c[0],minY:d[1]<=c[1]?d[1]:c[1],maxY:d[1]>=c[1]?d[1]:c[1]};l.push({points:{start:d,end:c},aabb:p,length:g,previousLineSegmentsLength:u}),d=c,u+=g}return l}_getCurveSegment(e,t=this.getTransformMatrix(),n=this.controlPoints,o=this.closed){const{p0:i,p1:a,p2:r,p3:s}=this._getCurveSegmentPoints(e,n,o),l=this._getLineSegments(e,t,n,o);let d=0,c=1/0,u=1/0,h=-1/0,g=-1/0;return l.forEach((({aabb:e,length:t})=>{c=Math.min(c,e.minX),u=Math.min(u,e.minY),h=Math.max(h,e.maxX),g=Math.max(g,e.maxY),d+=t})),{controlPoints:{p0:i,p1:a,p2:r,p3:s},aabb:{minX:c,minY:u,maxX:h,maxY:g},length:d,previousCurveSegmentsLength:0,lineSegments:l}}}},63802:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,F:()=>i});var o=n(71543);class i extends o.A{constructor(){super({resolution:0,fixedResolution:!0,scale:0,fixedScale:!0})}}},33941:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(711);const i=[1,0,0,-2,2,0,1,-2,1];class a extends o.s{hasTangentPoints(){return!0}getTransformMatrix(){return i}}},711:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,s:()=>i});var o=n(56091);class i extends o.e{getSplineCurves(){return[]}getLineSegments(){return[]}getPreviewCurveSegments(e,t){return[]}}},56091:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,e:()=>i});var o=n(95527);class i{constructor(e){this._controlPoints=[],this._invalidated=!1,this._length=0,this._controlPoints=[],this._resolution=e?.resolution??20,this._fixedResolution=e?.fixedResolution??!1,this._closed=e?.closed??!1,this._invalidated=!0}get controlPoints(){return this._controlPoints}get numControlPoints(){return this._controlPoints.length}get resolution(){return this._resolution}set resolution(e){this._fixedResolution||this._resolution===e||(this._resolution=e,this.invalidated=!0)}get fixedResolution(){return this._fixedResolution}get closed(){return this._closed}set closed(e){this._closed!==e&&(this._closed=e,this.invalidated=!0)}get aabb(){return this._update(),this._aabb}get length(){return this._update(),this._length}get invalidated(){return this._invalidated}set invalidated(e){this._invalidated=e}hasTangentPoints(){return!1}addControlPoint(e){this._controlPoints.push([e[0],e[1]]),this.invalidated=!0}addControlPoints(e){e.forEach((e=>this.addControlPoint(e)))}addControlPointAtU(e){const t=this._getLineSegmentAt(e),{start:n,end:o}=t.points,i=Math.floor(e),a=this._curveSegments[i],r=e-Math.floor(i),s=[n[0]+r*(o[0]-n[0]),n[1]+r*(o[1]-n[1])],l=this._controlPoints.indexOf(a.controlPoints.p1)+1;return this._controlPoints.splice(l,0,s),this.invalidated=!0,{index:l,point:s}}deleteControlPointByIndex(e){const t=this._closed?3:1;return e>=0&&e<this._controlPoints.length&&this._controlPoints.length>t&&(this._controlPoints.splice(e,1),this.invalidated=!0,!0)}clearControlPoints(){this._controlPoints=[],this.invalidated=!0}setControlPoints(e){this.clearControlPoints(),this.addControlPoints(e)}updateControlPoint(e,t){if(e<0||e>=this._controlPoints.length)throw new Error("Index out of bounds");this._controlPoints[e]=[...t],this.invalidated=!0}getControlPoints(){return this._controlPoints.map((e=>[e[0],e[1]]))}getClosestControlPoint(e){const t=this._controlPoints;let n=1/0,o=-1;for(let i=0,a=t.length;i<a;i++){const a=t[i],r=e[0]-a[0],s=e[1]-a[1],l=r*r+s*s;l<n&&(n=l,o=i)}return{index:o,point:-1===o?void 0:[...t[o]],distance:Math.sqrt(n)}}getClosestControlPointWithinDistance(e,t){const n=this.getClosestControlPoint(e);return n.distance<=t?n:void 0}getClosestPoint(e){this._update();const t=this._getCurveSegmmentsDistanceSquaredInfo(e);if(!t.length)return;let n;t.sort(((e,t)=>e.distanceSquared-t.distanceSquared));let i,a,r=-1,s=1/0;for(let l=0;l<t.length;l++){const d=t[l];if(d.distanceSquared>s)continue;const{curveSegmentIndex:c,curveSegment:u}=d,{lineSegments:h}=u;for(let t=0;t<h.length;t++){const l=h[t],{point:u,distanceSquared:g}=o.lineSegment.distanceToPointSquaredInfo(l.points.start,l.points.end,e);g<s&&(a=l,r=c,i=d.curveSegment,n=u,s=g)}}return{point:n,uValue:r+(a.previousLineSegmentsLength+o.point.distanceToPoint(a.points.start,n))/i.length,distance:Math.sqrt(s)}}getClosestPointOnControlPointLines(e){const t=[...this._controlPoints];if(this._closed&&t.push(this._controlPoints[0]),!t.length)return;let n,i=1/0,a=t[0];for(let r=1,s=t.length;r<s;r++){const s=t[r],{point:l,distanceSquared:d}=o.lineSegment.distanceToPointSquaredInfo(a,s,e);d<i&&(n=l,i=d),a=s}return{point:n,distance:Math.sqrt(i)}}getPolylinePoints(){return this._update(),this._convertCurveSegmentsToPolyline(this._curveSegments)}getPreviewPolylinePoints(e,t){if(this._closed)return[];this._update();const n=this.getClosestControlPointWithinDistance(e,t),o=0===n?.index,i=this.getPreviewCurveSegments(e,o);return i?.length?this._convertCurveSegmentsToPolyline(i):[]}isPointNearCurve(e,t){this._update();const n=this._getCurveSegmmentsWithinDistance(e,t),i=t*t;for(let t=0;t<n.length;t++){const{lineSegments:a}=n[t];for(let t=0;t<a.length;t++){const n=a[t];if(o.lineSegment.distanceToPointSquared(n.points.start,n.points.end,e)<=i)return!0}}return!1}containsPoint(e){this._update();if(this._controlPoints.length<3)return!1;const t=[...this._curveSegments],n=this._getClosingCurveSegmentWithStraightLineSegment();n&&t.push(n);let o=0;for(let n=0;n<t.length;n++){const i=t[n],{aabb:a}=i;if(!(e[0]<=a.maxX&&e[1]>=a.minY&&e[1]<a.maxY))continue;const{lineSegments:r}=i;for(let t=0;t<r.length;t++){const n=r[t],{aabb:i}=n;if(e[0]<=i.maxX&&e[1]>=i.minY&&e[1]<i.maxY){const{start:t,end:i}=n.points,a=t[0]===i[0],r=(e[1]-t[1])*(i[0]-t[0])/(i[1]-t[1])+t[0];o+=a||e[0]<=r?1:0}}}return o%2==1}_update(){if(!this._invalidated)return;const e=this.getSplineCurves();let t=0,n=1/0,o=1/0,i=-1/0,a=-1/0;for(let r=0,s=e.length;r<s;r++){const{aabb:s,length:l}=e[r];n=n<=s.minX?n:s.minX,o=o<=s.minY?o:s.minY,i=i>=s.maxX?i:s.maxX,a=a>=s.maxY?a:s.maxY,t+=l}this._curveSegments=e,this._aabb={minX:n,minY:o,maxX:i,maxY:a},this._length=t,this._invalidated=!1}_convertCurveSegmentsToPolyline(e){this._update();const t=[];return e.forEach((({lineSegments:e},n)=>{e.forEach(((e,o)=>{0===n&&0===o&&t.push([...e.points.start]),t.push([...e.points.end])}))})),t}_getCurveSegmmentsDistanceSquaredInfo(e){this._update();const t=[],{_curveSegments:n}=this;for(let i=0;i<n.length;i++){const a=n[i],r=o.aabb.distanceToPointSquared(a.aabb,e);t.push({curveSegmentIndex:i,curveSegment:a,distanceSquared:r})}return t}_getCurveSegmmentsWithinDistance(e,t){this._update();const n=t*t;if(o.aabb.distanceToPointSquared(this.aabb,e)>n)return[];const i=this._getCurveSegmmentsDistanceSquaredInfo(e),a=[];for(let e=0,t=i.length;e<t;e++){const{curveSegment:t,distanceSquared:o}=i[e];o<=n&&a.push(t)}return a}_getLineSegmentAt(e){this._update();const t=Math.floor(e),n=e-t,o=this._curveSegments[t],{lineSegments:i}=o,a=o.length*n;for(let e=0;e<i.length;e++){const t=i[e],n=t.previousLineSegmentsLength+t.length;if(a>=t.previousLineSegmentsLength&&a<=n)return t}}_getClosingCurveSegmentWithStraightLineSegment(){if(this.closed)return;const e=this._controlPoints,t=e[0],n=e[e.length-1],o={points:{start:[...t],end:[...n]},aabb:{minX:Math.min(t[0],n[0]),minY:Math.min(t[1],n[1]),maxX:Math.max(t[0],n[0]),maxY:Math.max(t[1],n[1])}};return{aabb:{minX:o.aabb.minX,minY:o.aabb.minY,maxX:o.aabb.maxX,maxY:o.aabb.maxY},lineSegments:[o]}}}},3040:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BSpline:()=>o.A,CardinalSpline:()=>i.h,CatmullRomSpline:()=>a.A,CubicSpline:()=>r.A,LinearSpline:()=>s.A,QuadraticBezier:()=>l.A,QuadraticSpline:()=>d.A,Spline:()=>c.A});var o=n(34115),i=n(71543),a=n(31147),r=n(57163),s=n(63802),l=n(33941),d=n(711),c=n(56091)},6030:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var o=n(15327),i=n(37234),a=n(82056),r=n(56069),s=n(94418),l=n(76712),d=n(49310);class c extends i.A{constructor(){super(...arguments),this.onImageSpacingCalibrated=e=>{const{element:t,imageId:n}=e.detail,i=o.utilities.imageIdToURI(n),s=(0,a.getAnnotationManager)();s.getFramesOfReference().forEach((e=>{const n=s.getAnnotations(e)[this.getToolName()];n&&n.length&&(n.forEach((e=>{if(!e.metadata?.referencedImageId)return;o.utilities.imageIdToURI(e.metadata.referencedImageId)===i&&(e.invalidated=!0,e.data.cachedStats={})})),(0,r.A)(t))}))}}filterInteractableAnnotationsForElement(e,t){if(!t?.length)return[];const n=(0,o.getEnabledElement)(e),{viewport:i}=n;return(0,s.A)(i,t)}createAnnotation(e){const t=e.detail,{currentPoints:n,element:i}=t,{world:a}=n,r=(0,o.getEnabledElement)(i),{viewport:s}=r,l=s.getCamera(),{viewPlaneNormal:d,viewUp:c,position:u}=l,h=this.getReferencedImageId(s,a,d,c),g=s.getViewReference({points:[a]});return{highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),...g,referencedImageId:h,viewUp:c,cameraPosition:u},data:{cachedStats:{},handles:{points:[],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}}}getReferencedImageId(e,t,n,i){const a=this.getTargetId(e);let r=a.split(/^[a-zA-Z]+:/)[1];if(e instanceof o.BaseVolumeViewport){const e=o.utilities.getVolumeId(a),i=o.cache.getVolume(e);r=o.utilities.getClosestImageId(i,t,n)}return r}getStyle(e,t,n){return(0,l.h)(e,t,(0,d.getState)(n),this.mode)}}c.toolName="AnnotationDisplayTool";const u=c},37234:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(15327),i=n(49892);const{DefaultHistoryMemo:a}=o.utilities.HistoryMemo;class r{static{this.defaults={configuration:{strategies:{},defaultStrategy:void 0,activeStrategy:void 0,strategyOptions:{}}}}constructor(e,t){const n=r.mergeDefaultProps(r.defaults,t),a=o.utilities.deepMerge(n,e),{configuration:s={},supportedInteractionTypes:l,toolGroupId:d}=a;this.toolGroupId=d,this.supportedInteractionTypes=l||[],this.configuration=Object.assign({},s),this.mode=i.A.Disabled}static mergeDefaultProps(e={},t){return t?o.utilities.deepMerge(e,t):e}get toolName(){return this.getToolName()}getToolName(){return this.constructor.toolName}applyActiveStrategy(e,t){const{strategies:n,activeStrategy:o}=this.configuration;return n[o]?.call(this,e,t)}applyActiveStrategyCallback(e,t,n,...o){const{strategies:i,activeStrategy:a}=this.configuration;if(!i[a])throw new Error(`applyActiveStrategyCallback: active strategy ${a} not found, check tool configuration or spellings`);return i[a][n]?.call(this,e,t,...o)}setConfiguration(e){this.configuration=o.utilities.deepMerge(this.configuration,e)}setActiveStrategy(e){this.setConfiguration({activeStrategy:e})}getTargetImageData(e){if(e.startsWith("imageId:")){const t=e.split("imageId:")[1],n=o.utilities.imageIdToURI(t);let i=o.utilities.getViewportsWithImageURI(n);if(!i||!i.length)return;if(i=i.filter((e=>e.getCurrentImageId()===t)),!i||!i.length)return;return i[0].getImageData()}if(e.startsWith("volumeId:")){const t=o.utilities.getVolumeId(e),n=o.utilities.getViewportsWithVolumeId(t);if(!n||!n.length)return;return n[0].getImageData()}if(e.startsWith("videoId:")){const t=o.utilities.imageIdToURI(e),n=o.utilities.getViewportsWithImageURI(t);if(!n||!n.length)return;return n[0].getImageData()}throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}getTargetId(e){const t=e.getViewReferenceId?.();if(t)return t;throw new Error("getTargetId: viewport must have a getViewReferenceId method")}undo(){this.doneEditMemo(),a.undo()}redo(){a.redo()}static createZoomPanMemo(e){const t={pan:e.getPan(),zoom:e.getZoom()},n={restoreMemo:()=>{const n=e.getPan(),o=e.getZoom();e.setZoom(t.zoom),e.setPan(t.pan),e.render(),t.pan=n,t.zoom=o}};return a.push(n),n}doneEditMemo(){this.memo?.commitMemo?.()&&a.push(this.memo),this.memo=null}}r.toolName="BaseTool";const s=r},85817:(e,t,n)=>{"use strict";n.d(t,{EC:()=>i.A,oS:()=>o.A,wh:()=>a.A});var o=n(37234),i=n(91350),a=n(6030)},25894:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var o=n(15327),i=n(18682),a=n(22384),r=n(33283),s=n(87420),l=n(36625),d=n(27479);let c=!1;new Map;const u={render:async function(e,t){const{segmentationId:n}=t,o=(0,r.T)(n);if(!o)return;let s=o.representationData[i.A.Contour];if(s||!(0,l.Qy)()?.canComputeRequestedRepresentation(n,i.A.Contour)||c)s||(0,l.Qy)()||console.debug(`No contour data found for segmentationId ${n} and PolySeg add-on is not configured. Unable to convert from other representations to contour. Please register PolySeg using cornerstoneTools.init({ addons: { polySeg } }) to enable automatic conversion.`);else{c=!0;const t=(0,l.Qy)();s=await(0,d.d)(n,i.A.Contour,(()=>t.computeContourData(n,{viewport:e})),(()=>{})),c=!1}s&&s.geometryIds?.length&&(0,a.d)(e,s.geometryIds,s.annotationUIDsMap,t)},removeRepresentation:function(e,t,n=!1){const i=(0,o.getEnabledElementByViewportId)(e);if(!i)return;const{viewport:a}=i;n&&((0,s.A)(e,t),a.render())}}},684:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>S});var o=n(15327),i=n(63597),a=n(88234),r=n(26228),s=n(50409),l=n(97577),d=n(33283),c=n(92686),u=n(18682),h=n(47098),g=n(60740),p=n(59452),f=n(36625),m=n(27479),v=n(49906),w=n(59475);const b=255,E=new Map;let I=!1;function y(e,t,n){const{segmentationId:o}=n,{cfun:i,ofun:a}=n.config,{colorLUTIndex:l}=n,d=(0,r.getActiveSegmentation)(e),p=d?.segmentationId===o,f=c.Y.getStyle({viewportId:e,type:u.A.Labelmap,segmentationId:o}),m=c.Y.getRenderInactiveSegmentations(e),v=(0,s.B)(l),w=Math.min(256,v.length),{outlineWidth:E,renderOutline:I,outlineOpacity:y,activeSegmentOutlineWidthDelta:x}=_(f,p),S=(0,h.s)(e,{segmentationId:o,type:u.A.Labelmap});for(let t=0;t<w;t++){const n=t,r=v[n],s=c.Y.getStyle({viewportId:e,type:u.A.Labelmap,segmentationId:o,segmentIndex:n}),{fillAlpha:l,outlineWidth:d,renderFill:h,renderOutline:g}=_(f,p,s),{forceOpacityUpdate:m,forceColorUpdate:w}=C(e,o,n,{fillAlpha:l,renderFill:h,renderOutline:g,segmentColor:r,outlineWidth:d,segmentsHidden:S,cfun:i,ofun:a});if(w&&i.addRGBPoint(n,r[0]/b,r[1]/b,r[2]/b),m)if(h){const e=S.has(n)?0:r[3]/255*l;a.removePoint(n),a.addPointLong(n,e,.5,1)}else a.addPointLong(n,.01,.5,1)}a.setClamping(!1);const T=t.actor,{preLoad:A}=T.get?.("preLoad")||{preLoad:null};if(A?A({cfun:i,ofun:a,actor:T}):(T.getProperty().setRGBTransferFunction(0,i),T.getProperty().setScalarOpacity(0,a),T.getProperty().setInterpolationTypeToNearest()),I){T.getProperty().setUseLabelOutline(I),T.getProperty().setLabelOutlineOpacity(y);const e=(0,g.Q)(n.segmentationId),t=new Array(w-1);for(let n=1;n<w;n++){S.has(n)?t[n-1]=0:t[n-1]=n===e?E+x:E}T.getProperty().setLabelOutlineThickness(t),T.modified(),T.getProperty().modified(),T.getMapper().modified()}else T.getProperty().setLabelOutlineThickness(new Array(w-1).fill(0));const D=p||m;T.setVisibility(D)}function _(e,t,n){const o={...e,...n||{}};return{fillAlpha:t?o.fillAlpha:o.fillAlphaInactive,outlineWidth:t?o.outlineWidth:o.outlineWidthInactive,renderFill:t?o.renderFill:o.renderFillInactive,renderOutline:t?o.renderOutline:o.renderOutlineInactive,outlineOpacity:t?o.outlineOpacity:o.outlineOpacityInactive,activeSegmentOutlineWidthDelta:o.activeSegmentOutlineWidthDelta}}function C(e,t,n,{fillAlpha:o,renderFill:i,renderOutline:a,segmentColor:r,outlineWidth:s,segmentsHidden:l,cfun:d,ofun:c}){const u=`${e}-${t}-${n}`,h=E.get(u);if(!h)return E.set(u,{fillAlpha:o,renderFill:i,renderOutline:a,outlineWidth:s,segmentColor:r.slice(),segmentsHidden:new Set(l),cfunMTime:d.getMTime(),ofunMTime:c.getMTime()}),{forceOpacityUpdate:!0,forceColorUpdate:!0};const{fillAlpha:g,renderFill:p,renderOutline:f,outlineWidth:m,segmentColor:v,segmentsHidden:w,cfunMTime:b,ofunMTime:I}=h,y=v[0]!==r[0]||v[1]!==r[1]||v[2]!==r[2],_=v[3]!==r[3]||g!==o||p!==i||f!==a||m!==s||w!==l;return(_||y)&&E.set(u,{fillAlpha:o,renderFill:i,renderOutline:a,outlineWidth:s,segmentColor:r.slice(),segmentsHidden:new Set(l),cfunMTime:d.getMTime(),ofunMTime:c.getMTime()}),{forceOpacityUpdate:_,forceColorUpdate:y}}async function x(e,t,n,o){return await(0,i.A)(e.element,t,n,o)||void 0}const S={render:async function(e,t){const{segmentationId:n,config:i}=t,a=(0,d.T)(n);if(!a)return void console.warn("No segmentation found for segmentationId: ",n);let r=a.representationData[u.A.Labelmap],s=(0,p.ED)(e.id,n);if(r||!(0,f.Qy)()?.canComputeRequestedRepresentation(n,u.A.Labelmap)||I)r||(0,f.Qy)()||console.debug(`No labelmap data found for segmentationId ${n} and PolySeg add-on is not configured. Unable to convert from other representations to labelmap. Please register PolySeg using cornerstoneTools.init({ addons: { polySeg } }) to enable automatic conversion.`);else{I=!0;const t=(0,f.Qy)();if(r=await(0,m.d)(n,u.A.Labelmap,(()=>t.computeLabelmapData(n,{viewport:e})),(()=>null),(()=>{w._6.processLabelmapRepresentationAddition(e.id,n),setTimeout((()=>{(0,v.triggerSegmentationDataModified)(n)}),0)})),!r)throw new Error(`No labelmap data found for segmentationId ${n}.`);I=!1}if(r){if(e instanceof o.VolumeViewport)s?.length||await x(e,r,n,i),s=(0,p.ED)(e.id,n);else{const t=(0,l.aF)(e.id,n);if(!t?.length)return;s||await x(e,r,n,i),s=(0,p.ED)(e.id,n)}if(s?.length)for(const n of s)y(e.id,n,t)}},removeRepresentation:function(e,t,n=!1){const i=(0,o.getEnabledElementByViewportId)(e);if(E.forEach(((e,n)=>{n.includes(t)&&E.delete(n)})),!i)return;const{viewport:r}=i;(0,a.A)(r.element,t),n&&r.render()}}},67014:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>h});var o=n(15327),i=n(18682),a=n(20552),r=n(18796),s=n(33283),l=n(50409),d=n(36625),c=n(27479),u=n(47098);const h={render:async function(e,t){const{segmentationId:n,type:a}=t,h=(0,s.T)(n);if(!h)return;let g=h.representationData[i.A.Surface];if(!g&&(0,d.Qy)()?.canComputeRequestedRepresentation(n,i.A.Surface)){const t=(0,d.Qy)();if(g=await(0,c.d)(n,i.A.Surface,(()=>t.computeSurfaceData(n,{viewport:e})),(()=>t.updateSurfaceData(n,{viewport:e}))),!g)throw new Error(`No Surface data found for segmentationId ${n} even we tried to compute it`)}else g||(0,d.Qy)()||console.debug(`No surface data found for segmentationId ${n} and PolySeg add-on is not configured. Unable to convert from other representations to surface. Please register PolySeg using cornerstoneTools.init({ addons: { polySeg } }) to enable automatic conversion.`);if(!g)return void console.warn(`No Surface data found for segmentationId ${n}. Skipping render.`);const{geometryIds:p}=g;p?.size||console.warn(`No Surfaces found for segmentationId ${n}. Skipping render.`);const{colorLUTIndex:f}=t,m=(0,l.B)(f),v=[];p.forEach((t=>{const i=o.cache.getGeometry(t);if(!i?.data)return void console.warn(`No Surfaces found for geometryId ${t}. Skipping render.`);const{segmentIndex:s}=i.data,l=(0,u.s)(e.id,{segmentationId:n,type:a}).has(s),d=i.data,c=m[s];d.color=c.slice(0,3),d.visible=!l,v.push(d),(0,r.A)(e.element,d,n)})),e.render()},removeRepresentation:function(e,t,n=!1){const i=(0,o.getEnabledElementByViewportId)(e);if(!i)return;const{viewport:r}=i;(0,a.A)(r.element,t),n&&r.render()}}},49975:(e,t,n)=>{"use strict";n.d(t,{A5:()=>d.A,CH:()=>i.A,Du:()=>r.A,E0:()=>A.A,EC:()=>o.EC,EV:()=>F.A,FE:()=>b.A,Fz:()=>ie.A,G2:()=>Z.A,IX:()=>oe.A,Ix:()=>N.A,J2:()=>P.A,LW:()=>C.A,M$:()=>p.A,Mu:()=>y.A,N:()=>E.A,N7:()=>S.A,Nk:()=>m.A,Np:()=>H.A,OQ:()=>c.A,Oh:()=>I.A,So:()=>a.A,TG:()=>s.A,TR:()=>Y.A,Tc:()=>$.A,Uj:()=>te.A,Vl:()=>M.A,X8:()=>f.A,Xr:()=>ne.A,Ys:()=>U.A,ae:()=>l.A,ao:()=>V.A,cN:()=>v.A,dB:()=>j.A,eh:()=>g.A,ep:()=>h.A,ex:()=>k.A,hz:()=>_.A,il:()=>q.A,j$:()=>T.A,ls:()=>ee.A,m8:()=>x.A,mX:()=>X.A,nJ:()=>R.A,oS:()=>o.oS,oi:()=>W.A,pq:()=>Q.A,qD:()=>D.A,qT:()=>O.A,qi:()=>L.A,sR:()=>z.A,td:()=>K.A,u9:()=>ae.A,uJ:()=>u.A,wR:()=>G.A,wh:()=>o.wh,xI:()=>w.A,yT:()=>B.A,zH:()=>J.A});var o=n(85817),i=n(38782),a=n(26884),r=n(43159),s=n(17819),l=n(89460),d=n(82058),c=n(26938),u=n(66944),h=n(14840),g=n(72674),p=n(45152),f=n(36797),m=n(43185),v=n(32302),w=n(85735),b=n(26039),E=n(3751),I=n(30588),y=n(25072),_=n(37117),C=n(14335),x=n(59320),S=n(61873),T=n(40487),A=n(4010),D=n(78684),M=n(31137),R=n(8467),P=n(3066),O=n(60580),k=n(28220),L=n(37590),U=n(9136),N=n(76358),V=n(24146),B=n(9608),F=n(99718),W=n(94504),H=n(33327),j=n(68760),G=n(9626),z=n(7750),$=n(31787),q=n(23631),K=n(56526),Z=n(66917),J=n(10804),Y=n(40336),X=n(67847),Q=n(65284),ee=n(48736),te=n(61777),ne=n(36913),oe=n(12905),ie=n(38502),ae=(n(99522),n(987))},48736:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var o=n(15327),i=n(3823),a=n(99737),r=n(17492),s=n(1989),l=n(56789),d=n(33852),c=n(17328),u=n(7001),h=n(58640),g=n(23631),p=n(40905);class f extends g.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:l.kr,ERASE_INSIDE_CIRCLE:d.r,FILL_INSIDE_SPHERE:r.Jq,ERASE_INSIDE_SPHERE:s._,THRESHOLD_INSIDE_CIRCLE:l.q,THRESHOLD_INSIDE_SPHERE:r.rd,THRESHOLD_INSIDE_SPHERE_WITH_ISLAND_REMOVAL:r.Sw},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:25,useCenterSegmentIndex:!1,preview:{enabled:!1,previewColors:{0:[255,255,255,128]},previewTimeMs:250,previewMoveDistance:8,dragMoveDistance:4,dragTimeMs:500},actions:{[a.StrategyCallbacks.AcceptPreview]:{method:a.StrategyCallbacks.AcceptPreview,bindings:[{key:"Enter"}]},[a.StrategyCallbacks.RejectPreview]:{method:a.StrategyCallbacks.RejectPreview,bindings:[{key:"Escape"}]},[a.StrategyCallbacks.Interpolate]:{method:a.StrategyCallbacks.Interpolate,bindings:[{key:"i"}],configuration:{useBallStructuringElement:!0,noUseDistanceTransform:!0,noUseExtrapolation:!0}},interpolateExtrapolation:{method:a.StrategyCallbacks.Interpolate,bindings:[{key:"e"}],configuration:{}}}}}){super(e,t),this.onSetToolPassive=e=>{this.disableCursor()},this.onSetToolEnabled=()=>{this.disableCursor()},this.onSetToolDisabled=e=>{this.disableCursor()},this.preMouseDownCallback=e=>{const t=e.detail,{element:n}=t,i=(0,o.getEnabledElement)(n);this._editData=this.createEditData(n),this._activateDraw(n),(0,u.hideElementCursor)(n),e.preventDefault(),this._previewData.isDrag=!1,this._previewData.timerStart=Date.now();const r=this._hoverData||this.createHoverData(n);(0,h.A)(r.viewportIdsToRender);const s=this.getOperationData(n);return this.applyActiveStrategyCallback(i,s,a.StrategyCallbacks.OnInteractionStart),!0},this.mouseMoveCallback=e=>{if(this.mode===a.ToolModes.Active){if(this.updateCursor(e),!this.configuration.preview.enabled)return;const{previewTimeMs:t,previewMoveDistance:n,dragMoveDistance:o}=this.configuration.preview,{currentPoints:a,element:r}=e.detail,{canvas:s}=a,{startPoint:l,timer:d,timerStart:c,isDrag:u}=this._previewData;if(u)return;const h=i.Zc.distance(s,l),g=Date.now()-c;if((h>n||g>t&&h>o)&&(d&&(window.clearTimeout(d),this._previewData.timer=null),u||this.rejectPreview(r)),!this._previewData.timer){const e=window.setTimeout(this.previewCallback,250);Object.assign(this._previewData,{timerStart:Date.now(),timer:e,startPoint:s,element:r})}}},this.previewCallback=()=>{if(this._previewData.isDrag)return void(this._previewData.timer=null);this._previewData.timer=null;const e=this.getOperationData(this._previewData.element),t=(0,o.getEnabledElement)(this._previewData.element);if(!t)return;const{viewport:n}=t,i=this.configuration.activeStrategy,r=(0,p.S)({operationData:e,viewport:n,strategy:i});if(!e)return;const s=this.createMemo(e.segmentationId,r.segmentationVoxelManager);this._previewData.preview=this.applyActiveStrategyCallback((0,o.getEnabledElement)(this._previewData.element),{...e,...r,memo:s},a.StrategyCallbacks.Preview)},this._dragCallback=e=>{const t=e.detail,{element:n,currentPoints:a}=t,r=(0,o.getEnabledElement)(n);this.updateCursor(e);const{viewportIdsToRender:s}=this._hoverData;(0,h.A)(s);const l=i.Zc.distance(a.canvas,this._previewData.startPoint),{dragTimeMs:d,dragMoveDistance:c}=this.configuration.preview;!this._previewData.isDrag&&Date.now()-this._previewData.timerStart<d&&l<c||(this._previewData.timer&&(window.clearTimeout(this._previewData.timer),this._previewData.timer=null),this._previewData.preview=this.applyActiveStrategy(r,this.getOperationData(n)),this._previewData.element=n,this._previewData.timerStart=Date.now()+d,this._previewData.isDrag=!0,this._previewData.startPoint=a.canvas)},this._endCallback=e=>{const t=e.detail,{element:n}=t,i=(0,o.getEnabledElement)(n),r=this.getOperationData(n);this._previewData.preview||this._previewData.isDrag||this.applyActiveStrategy(i,r),this.doneEditMemo(),this._deactivateDraw(n),(0,u.resetElementCursor)(n),this.updateCursor(e),this._editData=null,this.applyActiveStrategyCallback(i,r,a.StrategyCallbacks.OnInteractionEnd),this._previewData.isDrag||this.acceptPreview(n)},this._activateDraw=e=>{e.addEventListener(a.Events.MOUSE_UP,this._endCallback),e.addEventListener(a.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(a.Events.MOUSE_CLICK,this._endCallback)},this._deactivateDraw=e=>{e.removeEventListener(a.Events.MOUSE_UP,this._endCallback),e.removeEventListener(a.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(a.Events.MOUSE_CLICK,this._endCallback)}}disableCursor(){this._hoverData=void 0,this.rejectPreview()}updateCursor(e){const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas;this._hoverData=this.createHoverData(n,i),this._calculateCursor(n,i),this._hoverData&&(0,h.A)(this._hoverData.viewportIdsToRender)}_calculateCursor(e,t){const n=(0,o.getEnabledElement)(e),{viewport:a}=n,{canvasToWorld:r}=a,s=a.getCamera(),{brushSize:l}=this.configuration,d=i.eR.fromValues(s.viewUp[0],s.viewUp[1],s.viewUp[2]),c=i.eR.fromValues(s.viewPlaneNormal[0],s.viewPlaneNormal[1],s.viewPlaneNormal[2]),u=i.eR.create();i.eR.cross(u,d,c);const h=r([t[0],t[1]]),g=i.eR.create(),p=i.eR.create(),f=i.eR.create(),m=i.eR.create();for(let e=0;e<=2;e++)g[e]=h[e]-d[e]*l,p[e]=h[e]+d[e]*l,f[e]=h[e]-u[e]*l,m[e]=h[e]+u[e]*l;if(!this._hoverData)return;const{brushCursor:v}=this._hoverData,{data:w}=v;void 0===w.handles&&(w.handles={}),w.handles.points=[g,p,f,m];const b=this.configuration.activeStrategy,E=this.configuration.strategies[b];"function"==typeof E?.computeInnerCircleRadius&&E.computeInnerCircleRadius({configuration:this.configuration,viewport:a}),w.invalidated=!1}getStatistics(e,t){if(!e)return;const n=(0,o.getEnabledElement)(e);return this.applyActiveStrategyCallback(n,this.getOperationData(e),a.StrategyCallbacks.GetStatistics,t)}rejectPreview(e=this._previewData.element){if(!e)return;this.doneEditMemo();const t=(0,o.getEnabledElement)(e);this.applyActiveStrategyCallback(t,this.getOperationData(e),a.StrategyCallbacks.RejectPreview),this._previewData.preview=null,this._previewData.isDrag=!1}acceptPreview(e=this._previewData.element){e&&super.acceptPreview(e)}interpolate(e,t){if(!e)return;const n=(0,o.getEnabledElement)(e);this._previewData.preview=this.applyActiveStrategyCallback(n,this.getOperationData(e),a.StrategyCallbacks.Interpolate,t.configuration),this._previewData.isDrag=!0}invalidateBrushCursor(){if(void 0===this._hoverData)return;const{data:e}=this._hoverData.brushCursor,{viewport:t}=this._hoverData;e.invalidated=!0;const{segmentColor:n}=this.getActiveSegmentationData(t)||{};this._hoverData.brushCursor.metadata.segmentColor=n}renderAnnotation(e,t){if(!this._hoverData)return;const{viewport:n}=e;if(!this._hoverData.viewportIdsToRender.includes(n.id))return;const o=this._hoverData.brushCursor;if(!0===o.data.invalidated){const{centerCanvas:e}=this._hoverData,{element:t}=n;this._calculateCursor(t,e)}const i=o.metadata;if(!i)return;const a=i.brushCursorUID,r=o.data,{points:s}=r.handles,l=s.map((e=>n.worldToCanvas(e))),d=l[0],u=l[1],h=[Math.floor((d[0]+u[0])/2),Math.floor((d[1]+u[1])/2)],g=Math.abs(d[1]-Math.floor((d[1]+u[1])/2)),p=`rgb(${i.segmentColor?.slice(0,3)||[0,0,0]})`;if(!n.getRenderingEngine())return void console.warn("Rendering Engine has been destroyed");(0,c.drawCircle)(t,a,"0",h,g,{color:p,lineDash:0===this.centerSegmentIndexInfo.segmentIndex?[1,2]:null});const{dynamicRadiusInCanvas:f}=this.configuration?.threshold||{dynamicRadiusInCanvas:0};if(f){const e="1";(0,c.drawCircle)(t,a,e,h,f,{color:p})}}}f.toolName="Brush";const m=f},65284:(e,t,n)=>{"use strict";n.d(t,{A:()=>T});var o=n(15327),i=n(3823),a=n(82056),r=n(2076),s=n(17328),l=n(60810),d=n(62514),c=n(473),u=n(27730),h=n(29601),g=n(7001),p=n(58640),f=n(44049),m=n(31137),v=n(77081),w=n(4096),b=n(18990),E=n(11683),I=n(73262),y=n(13165),_=n(40634);const{transformWorldToIndex:C}=o.utilities;class x extends m.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{storePointData:!1,numSlicesToPropagate:10,calculatePointsInsideVolume:!1,getTextLines:S,statsCalculator:I.BasicStatsCalculator,showTextBox:!1}}){super(e,t),this.isHandleOutsideImage=!1,this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:i}=t,r=n.world,s=(0,o.getEnabledElement)(i),{viewport:d,renderingEngine:c}=s;this.isDrawing=!0;const u=d.getCamera(),{viewPlaneNormal:h,viewUp:f}=u;let m,v,w;if(d instanceof o.StackViewport)throw new Error("Stack Viewport Not implemented");{const e=this.getTargetId(d);w=o.utilities.getVolumeId(e),v=o.cache.getVolume(w),m=o.utilities.getClosestImageId(v,r,h)}const b=o.utilities.getSpacingInNormalDirection(v,h),E=this._getStartCoordinate(r,b,h),I=this._getEndCoordinate(r,b,h),y=d.getFrameOfReferenceUID(),_={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...h],viewUp:[...f],FrameOfReferenceUID:y,referencedImageId:m,volumeId:w,spacingInNormal:b,enabledElement:s},data:{label:"",startCoordinate:E,endCoordinate:I,handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...r],[...r]],activeHandleIndex:null},cachedStats:{pointsInVolume:[],projectionPoints:[],statistics:[]},labelmapUID:null}};this._computeProjectionPoints(_,v),(0,a.addAnnotation)(_,i);const C=(0,l.getViewportIdsWithToolToRender)(i,this.getToolName());return this.editData={annotation:_,viewportIdsToRender:C,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),(0,g.hideElementCursor)(i),e.preventDefault(),(0,p.A)(C),_},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:r,newAnnotation:s,hasMoved:l}=this.editData,{data:d}=i;if(s&&!l)return;i.highlighted=!1,d.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,g.resetElementCursor)(n);const c=(0,o.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,a.removeAnnotation)(i.annotationUID);const u=this.getTargetId(c.viewport),h=o.cache.getVolume(u.split(/volumeId:|\?/)[1]);this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(i,h,u,c),(0,p.A)(r),s&&(0,f.triggerAnnotationCompleted)(i)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:i}=e;let l=(0,a.getAnnotations)(this.getToolName(),i.element);if(!l?.length)return n;l=(0,y.filterAnnotationsWithinSamePlane)(l,i.getCamera());const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let a=0;a<l.length;a++){const u=l[a],{annotationUID:g,data:p,metadata:f}=u,{startCoordinate:m,endCoordinate:w}=p,{points:b,activeHandleIndex:E}=p.handles;d.annotationUID=g;const I=this.getStyle("lineWidth",d,u),y=this.getStyle("lineDash",d,u),_=this.getStyle("color",d,u),C=b.map((e=>i.worldToCanvas(e))),x=C[0],S=(0,v.getCanvasCircleRadius)(C),{centerPointRadius:T}=this.configuration,A=(0,v.getCanvasCircleCorners)(C),D=i.getCamera().focalPoint,M=i.getCamera().viewPlaneNormal;let R=m,P=w;Array.isArray(m)&&(R=this._getCoordinateForViewplaneNormal(R,M),p.startCoordinate=R),Array.isArray(w)&&(P=this._getCoordinateForViewplaneNormal(P,M),p.endCoordinate=P);const O=o.utilities.roundToPrecision(p.startCoordinate),k=o.utilities.roundToPrecision(p.endCoordinate),L=this._getCoordinateForViewplaneNormal(D,M),U=o.utilities.roundToPrecision(L);if(U<Math.min(O,k)||U>Math.max(O,k))continue;const N=o.utilities.roundToPrecision((p.startCoordinate+p.endCoordinate)/2);let V,B=!1;if(U===N&&(B=!0),p.handles.points[0][this._getIndexOfCoordinatesForViewplaneNormal(M)]=N,u.invalidated&&this._throttledCalculateCachedStats(u,e),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,h.isAnnotationVisible)(g))continue;if((0,r.isAnnotationLocked)(g)||this.editData||null===E||!B||(V=[C[E]]),V){const e="0";(0,s.drawHandles)(t,g,e,V,{color:_})}let F=I,W=y;B?(F=I,W=[]):W=[5,5];const H="0";if((0,s.drawCircle)(t,g,H,x,S,{color:_,lineDash:W,lineWidth:F}),T>0&&S>3*T&&(0,s.drawCircle)(t,g,`${H}-center`,x,T,{color:_,lineDash:y,lineWidth:I}),n=!0,1==this.configuration.showTextBox&&1==this.configuration.calculatePointsInsideVolume){const e=this.getLinkedTextBoxStyle(d,u);if(!e.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const n=this.configuration.getTextLines(p,{metadata:f});if(!n||0===n.length)continue;let o;p.handles.textBox.hasMoved||(o=(0,c.getTextBoxCoordsCanvas)(A),p.handles.textBox.worldPosition=i.canvasToWorld(o));const a=i.worldToCanvas(p.handles.textBox.worldPosition),r="1",l=(0,s.drawLinkedTextBox)(t,g,r,n,a,C,{},e),{x:h,y:m,width:v,height:w}=l;p.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([h,m]),topRight:i.canvasToWorld([h+v,m]),bottomLeft:i.canvasToWorld([h,m+w]),bottomRight:i.canvasToWorld([h+v,m+w])}}}return n},this._throttledCalculateCachedStats=(0,u.A)(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,t){const{data:n,metadata:a}=e,{viewPlaneNormal:r,spacingInNormal:s}=a,{imageData:l}=t,{startCoordinate:d,endCoordinate:c}=n,{points:u}=n.handles,h=C(l,u[0]),g=C(l,u[0]),p=o.utilities.deepClone(u),f=i.eR.create();l.indexToWorldVec3(h,f);const m=i.eR.create();l.indexToWorldVec3(g,m),2==this._getIndexOfCoordinatesForViewplaneNormal(r)?(f[2]=d,m[2]=c,p[0][2]=d,p[1][2]=d):0==this._getIndexOfCoordinatesForViewplaneNormal(r)?(f[0]=d,m[0]=c,p[0][0]=d,p[1][0]=d):1==this._getIndexOfCoordinatesForViewplaneNormal(r)&&(f[1]=d,m[1]=c,p[0][1]=d,p[1][1]=d);const v=i.eR.distance(f,m),w=[];for(let e=0;e<v;e+=s)w.push(p.map((t=>{const n=i.eR.create();return i.eR.scaleAndAdd(n,t,r,e),Array.from(n)})));n.cachedStats.projectionPoints=w}_computePointsInsideVolume(e,t,n,o){const{data:i,metadata:a}=e,{viewPlaneNormal:r,viewUp:s}=a,{viewport:l}=o,c=i.cachedStats.projectionPoints,u=[[]],h=this.getTargetImageData(n),g=i.handles.points.map((e=>l.worldToCanvas(e))),[p,f]=(0,v.getCanvasCircleCorners)(g),m=l.canvasToWorld(p),I=l.canvasToWorld(f),{worldWidth:y,worldHeight:x}=(0,d.A)(r,s,m,I),S=(0,w.Op)(h,i.handles),T=(0,w.CQ)(h),A=Math.abs(Math.PI*(y/S.scale/2)*(x/T/S.scale/2)),D={isPreScaled:(0,b.u)(l,n),isSuvScaled:this.isSuvScaled(l,n,e.metadata.referencedImageId)},M=(0,_.j)(a.Modality,e.metadata.referencedImageId,D);for(let e=0;e<c.length;e++){if(!t)continue;const n=c[e][0],o=c[e].map((e=>l.worldToCanvas(e))),[i,a]=(0,v.getCanvasCircleCorners)(o),s=l.canvasToWorld(i),d=l.canvasToWorld(a),h=s,g=d,{dimensions:p,imageData:f,voxelManager:m}=t,w=C(f,h),b=C(f,n),I=this._getIndexOfCoordinatesForViewplaneNormal(r);w[0]=Math.floor(w[0]),w[1]=Math.floor(w[1]),w[2]=Math.floor(w[2]),w[I]=b[I];const y=C(f,g);if(y[0]=Math.floor(y[0]),y[1]=Math.floor(y[1]),y[2]=Math.floor(y[2]),y[I]=b[I],this._isInsideVolume(w,y,p)){const e=[[Math.min(w[0],y[0]),Math.max(w[0],y[0])],[Math.min(w[1],y[1]),Math.max(w[1],y[1])],[Math.min(w[2],y[2]),Math.max(w[2],y[2])]],t={center:n,xRadius:Math.abs(s[0]-d[0])/2,yRadius:Math.abs(s[1]-d[1])/2,zRadius:Math.abs(s[2]-d[2])/2},o=m.forEach(this.configuration.statsCalculator.statsCallback,{isInObject:e=>(0,E.pointInEllipse)(t,e),boundsIJK:e,imageData:f,returnPoints:this.configuration.storePointData});u.push(o)}}const R=this.configuration.statsCalculator.getStatistics();i.cachedStats.pointsInVolume=u,i.cachedStats.statistics={Modality:a.Modality,area:A,mean:R.mean?.value,stdDev:R.stdDev?.value,max:R.max?.value,statsArray:R.array,areaUnit:S.areaUnit,modalityUnit:M}}_calculateCachedStatsTool(e,t){const n=e.data,{viewport:i}=t,{cachedStats:a}=n,r=this.getTargetId(i),s=o.cache.getVolume(r.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,s),this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(e,s,r,t),e.invalidated=!1,(0,f.triggerAnnotationModified)(e,i.element),a}_getStartCoordinate(e,t,n){const o=this.configuration.numSlicesToPropagate,a=Math.round(o/2),r=i.eR.create();i.eR.scaleAndAdd(r,e,n,a*-t);return this._getCoordinateForViewplaneNormal(r,n)}_getEndCoordinate(e,t,n){const o=this.configuration.numSlicesToPropagate,a=o-Math.round(o/2),r=i.eR.create();i.eR.scaleAndAdd(r,e,n,a*t);return this._getCoordinateForViewplaneNormal(r,n)}_getIndexOfCoordinatesForViewplaneNormal(e){const t=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])];return t.indexOf(Math.max(...t))}_getCoordinateForViewplaneNormal(e,t){return e[this._getIndexOfCoordinatesForViewplaneNormal(t)]}}function S(e,t={}){const n=e.cachedStats.statistics,{area:i,mean:a,max:r,stdDev:s,areaUnit:l,modalityUnit:d}=n;if(void 0===a)return;const c=[];return c.push(`Area: ${o.utilities.roundNumber(i)} ${l}`),c.push(`Mean: ${o.utilities.roundNumber(a)} ${d}`),c.push(`Max: ${o.utilities.roundNumber(r)} ${d}`),c.push(`Std Dev: ${o.utilities.roundNumber(s)} ${d}`),c}x.toolName="CircleROIStartEndThreshold";const T=x},66917:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var o=n(15327),i=(n(85817),n(56789)),a=n(33852),r=n(99737),s=n(17328),l=n(7001),d=n(58640),c=n(44595),u=n(98870),h=n(23631);class g extends h.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:i.kr,ERASE_INSIDE:a.r},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,t),this.preMouseDownCallback=e=>{if(!0===this.isDrawing)return;const t=e.detail,{currentPoints:n,element:i}=t,a=n.world,r=n.canvas,s=(0,o.getEnabledElement)(i),{viewport:h}=s;this.isDrawing=!0;const g=h.getCamera(),{viewPlaneNormal:p,viewUp:f}=g,m=c.activeSegmentation.getActiveSegmentation(h.id);if(!m)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:v}=m,w=c.segmentIndex.getActiveSegmentIndex(v),b=c.segmentLocking.getLockedSegmentIndices(v),E=c.config.color.getSegmentIndexColor(h.id,v,w),{representationData:I}=(0,u.getSegmentation)(v),y=I.Labelmap;if(!y)throw new Error("No labelmap data found for the active segmentation, create one before using scissors tool");const _={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:[...p],viewUp:[...f],FrameOfReferenceUID:h.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:E},data:{handles:{points:[[...a],[...a],[...a],[...a]],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},C=[h.id];if(this.editData={annotation:_,centerCanvas:r,segmentIndex:w,segmentationId:v,segmentsLocked:b,segmentColor:E,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},h instanceof o.BaseVolumeViewport){const{volumeId:e}=y,t=o.cache.getVolume(e);this.editData={...this.editData,volumeId:e,referencedVolumeId:t.referencedVolumeId}}else{const e=(0,u.getCurrentLabelmapImageIdForViewport)(h.id,v);this.editData={...this.editData,imageId:e}}return this._activateDraw(i),(0,l.hideElementCursor)(i),e.preventDefault(),(0,d.A)(C),!0},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:i}=t,a=i.canvas,r=(0,o.getEnabledElement)(n),{renderingEngine:s,viewport:l}=r,{canvasToWorld:c}=l,{annotation:u,viewportIdsToRender:h,centerCanvas:g}=this.editData,{data:p}=u,f=Math.abs(a[0]-g[0]),m=Math.abs(a[1]-g[1]),v=Math.sqrt(f*f+m*m),w=[g[0],g[1]+v],b=[g[0],g[1]-v],E=[g[0]-v,g[1]],I=[g[0]+v,g[1]];p.handles.points=[c(w),c(b),c(E),c(I)],u.invalidated=!0,this.editData.hasMoved=!0,(0,d.A)(h)},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=i,{viewPlaneNormal:d,viewUp:c}=i.metadata;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateDraw(n),(0,l.resetElementCursor)(n);const u=(0,o.getEnabledElement)(n),h={...this.editData,points:s.handles.points,viewPlaneNormal:d,viewUp:c,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(u,h),this.doneEditMemo()},this._activateDraw=e=>{e.addEventListener(r.Events.MOUSE_UP,this._endCallback),e.addEventListener(r.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(r.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(r.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(r.Events.TOUCH_TAP,this._endCallback),e.addEventListener(r.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(r.Events.TOUCH_END,this._endCallback)},this._deactivateDraw=e=>{e.removeEventListener(r.Events.MOUSE_UP,this._endCallback),e.removeEventListener(r.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(r.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(r.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(r.Events.TOUCH_END,this._endCallback),e.removeEventListener(r.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(r.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{viewportIdsToRender:i}=this.editData;if(!i.includes(o.id))return n;const{annotation:a}=this.editData,r=a.metadata,l=a.annotationUID,d=a.data,{points:c}=d.handles,u=c.map((e=>o.worldToCanvas(e))),h=u[0],g=u[1],p=[Math.floor((h[0]+g[0])/2),Math.floor((h[1]+g[1])/2)],f=Math.abs(h[1]-Math.floor((h[1]+g[1])/2)),m=`rgb(${r.segmentColor.slice(0,3)})`;if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;return(0,s.drawCircle)(t,l,"0",p,f,{color:m}),n=!0,n}}}g.toolName="CircleScissor";const p=g},61777:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var o=n(15327),i=n(85817),a=n(99737),r=n(49906),s=n(44595),l=n(84882),d=n(98870);const{transformWorldToIndex:c,isEqual:u}=o.utilities;class h extends i.oS{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"]}){super(e,t),this.preMouseDownCallback=e=>{const t=e.detail,{currentPoints:n,element:i}=t,u=n.world,h=(0,o.getEnabledElement)(i),{viewport:g}=h,p=g.getCamera(),{viewPlaneNormal:f}=p,m=s.activeSegmentation.getActiveSegmentation(g.id);if(!m)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:v}=m,w=s.segmentIndex.getActiveSegmentIndex(v),b=s.segmentLocking.getLockedSegmentIndices(v),{representationData:E}=(0,d.getSegmentation)(v);let I,y,_,C;if(this.doneEditMemo(),g instanceof o.BaseVolumeViewport){const{volumeId:e}=E[a.SegmentationRepresentations.Labelmap],t=o.cache.getVolume(e);({dimensions:I,direction:y}=t),C=t.voxelManager,_=c(t.imageData,u)}else{const e=(0,d.getCurrentLabelmapImageIdForViewport)(g.id,v);if(!e)throw new Error("No active segmentation imageId detected, create one before using scissors tool");const{imageData:t}=g.getImageData();I=t.getDimensions(),y=t.getDirection();const n=o.cache.getImage(e);C=n.voxelManager,_=c(t,u)}const x=this.getFixedDimension(f,y);if(void 0===x)return void console.warn("Oblique paint fill not yet supported");const{floodFillGetter:S,getLabelValue:T,getScalarDataPositionFromPlane:A,inPlaneSeedPoint:D,fixedDimensionValue:M}=this.generateHelpers(C,I,_,x);if(_[0]<0||_[0]>=I[0]||_[1]<0||_[1]>=I[1]||_[2]<0||_[2]>=I[2])return;const R=T(_[0],_[1],_[2]);if(b.includes(R))return;const P=(0,l.A)(S,D),{flooded:O}=P;O.forEach((e=>{const t=A(e[0],e[1]);C.setAtIndex(t,w)}));const k=this.getFramesModified(x,M,P);return(0,r.triggerSegmentationDataModified)(v,k),!0},this.getFramesModified=(e,t,n)=>{const{flooded:o}=n;if(2===e)return[t];let i=1/0,a=-1/0;for(let e=0;e<o.length;e++){const t=o[e][1];t<i&&(i=t),t>a&&(a=t)}const r=[];for(let e=i;e<=a;e++)r.push(e);return r},this.generateHelpers=(e,t,n,o=2)=>{let i,a;switch(o){case 0:i=n[0],a=[n[1],n[2]];break;case 1:i=n[1],a=[n[0],n[2]];break;case 2:i=n[2],a=[n[0],n[1]];break;default:throw new Error(`Invalid fixedDimension: ${o}`)}const r=(t,n,o)=>e.getAtIJK(t,n,o),s=this.generateFloodFillGetter(t,o,i,r);return{getScalarDataPositionFromPlane:this.generateGetScalarDataPositionFromPlane(((t,n,o)=>e.toIndex([t,n,o])),o,i),getLabelValue:r,floodFillGetter:s,inPlaneSeedPoint:a,fixedDimensionValue:i}},this.generateFloodFillGetter=(e,t,n,o)=>{let i;switch(t){case 0:i=(t,i)=>{if(!(t>=e[1]||t<0||i>=e[2]||i<0))return o(n,t,i)};break;case 1:i=(t,i)=>{if(!(t>=e[0]||t<0||i>=e[2]||i<0))return o(t,n,i)};break;case 2:i=(t,i)=>{if(!(t>=e[0]||t<0||i>=e[1]||i<0))return o(t,i,n)};break;default:throw new Error(`Invalid fixedDimension: ${t}`)}return i},this.generateGetScalarDataPositionFromPlane=(e,t,n)=>{let o;switch(t){case 0:o=(t,o)=>e(n,t,o);break;case 1:o=(t,o)=>e(t,n,o);break;case 2:o=(t,o)=>e(t,o,n);break;default:throw new Error(`Invalid fixedDimension: ${t}`)}return o}}getFixedDimension(e,t){const n=t.slice(0,3),o=t.slice(3,6),i=t.slice(6,9),a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],r=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])];if(u(a,r))return 0;const s=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];if(u(a,s))return 1;const l=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];return u(a,l)?2:void 0}}h.toolName="PaintFill";const g=h},67847:(e,t,n)=>{"use strict";n.d(t,{A:()=>x});var o=n(15327),i=n(4096),a=n(3823),r=n(6802),s=n(2076),l=n(17328),d=n(60810),c=n(27730),u=n(473),h=n(35489),g=n(29601),p=n(7001),f=n(58640),m=n(44049),v=n(4010),w=n(18990),b=n(73262),E=n(13165),I=n(40634);const{transformWorldToIndex:y}=o.utilities;class _ extends v.A{constructor(e={},t={configuration:{storePointData:!1,numSlicesToPropagate:10,computePointsInsideVolume:!1,getTextLines:C,statsCalculator:b.BasicStatsCalculator,showTextBox:!1}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:i}=t,a=n.world,s=(0,o.getEnabledElement)(i),{viewport:l,renderingEngine:c}=s;this.isDrawing=!0;const u=l.getCamera(),{viewPlaneNormal:h,viewUp:g}=u;let m,v,w;if(l instanceof o.StackViewport)throw new Error("Stack Viewport Not implemented");{const e=this.getTargetId(l);w=o.utilities.getVolumeId(e),v=o.cache.getVolume(w),m=o.utilities.getClosestImageId(v,a,h)}const b=o.utilities.getSpacingInNormalDirection(v,h),E=this._getStartCoordinate(a,h),I=this._getEndCoordinate(a,b,h),y=l.getFrameOfReferenceUID(),_={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...h],enabledElement:s,viewUp:[...g],FrameOfReferenceUID:y,referencedImageId:m,toolName:this.getToolName(),volumeId:w,spacingInNormal:b},data:{label:"",startCoordinate:E,endCoordinate:I,cachedStats:{pointsInVolume:[],projectionPoints:[],projectionPointsImageIds:[m],statistics:[]},handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...a],[...a],[...a],[...a]],activeHandleIndex:null},labelmapUID:null}};this._computeProjectionPoints(_,v),(0,r.lC)(_,i);const C=(0,d.getViewportIdsWithToolToRender)(i,this.getToolName());return this.editData={annotation:_,viewportIdsToRender:C,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(i),(0,p.hideElementCursor)(i),e.preventDefault(),(0,f.A)(C),_},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:a,newAnnotation:s,hasMoved:l}=this.editData,{data:d}=i;if(s&&!l)return;d.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),(0,p.resetElementCursor)(n);const c=(0,o.getEnabledElement)(n);this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&(0,r.O8)(i.annotationUID);const u=this.getTargetId(c.viewport),h=o.cache.getVolume(u.split(/volumeId:|\?/)[1]);this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(i,u,h,c),(0,f.A)(a),s&&(0,m.triggerAnnotationCompleted)(i)},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:i}=e;let a=(0,r.Rh)(this.getToolName(),i.element);if(!a?.length)return n;a=(0,E.filterAnnotationsWithinSamePlane)(a,i.getCamera());const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let r=0;r<a.length;r++){const c=a[r],{annotationUID:h,data:p,metadata:f}=c,{startCoordinate:m,endCoordinate:v}=p,{points:w,activeHandleIndex:b}=p.handles,E=w.map((e=>i.worldToCanvas(e)));d.annotationUID=h;const I=this.getStyle("lineWidth",d,c),y=this.getStyle("lineDash",d,c),_=this.getStyle("color",d,c),C=i.getCamera().focalPoint,x=i.getCamera().viewPlaneNormal;let S=m,T=v;if(Array.isArray(m)){S=this._getCoordinateForViewplaneNormal(S,x);const e=this._getIndexOfCoordinatesForViewplaneNormal(x);p.handles.points.forEach((t=>{t[e]=S})),p.startCoordinate=S}Array.isArray(v)&&(T=this._getCoordinateForViewplaneNormal(T,x),p.endCoordinate=T,p.endCoordinate=T);const A=o.utilities.roundToPrecision(S),D=o.utilities.roundToPrecision(T),M=this._getCoordinateForViewplaneNormal(C,x),R=o.utilities.roundToPrecision(M);if(R<Math.min(A,D)||R>Math.max(A,D))continue;c.invalidated&&this._throttledCalculateCachedStats(c,e);let P,O=!1;if(R!==A&&R!==D||(O=!0),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!(0,g.isAnnotationVisible)(h))continue;if((0,s.isAnnotationLocked)(h)||this.editData||null===b||!O||(P=[E[b]]),P){const e="0";(0,l.drawHandles)(t,h,e,P,{color:_})}let k=y;O||(k=2);const L="0";if((0,l.drawRect)(t,h,L,E[0],E[3],{color:_,lineDash:k,lineWidth:I}),n=!0,this.configuration.showTextBox&&this.configuration.calculatePointsInsideVolume){const e=this.getLinkedTextBoxStyle(d,c);if(!e.visibility){p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const n=this.configuration.getTextLines(p,{metadata:f});if(!n||0===n.length)continue;if(!p.handles.textBox.hasMoved){const e=(0,u.getTextBoxCoordsCanvas)(E);p.handles.textBox.worldPosition=i.canvasToWorld(e)}const o=i.worldToCanvas(p.handles.textBox.worldPosition),a="1",r=(0,l.drawLinkedTextBox)(t,h,a,n,o,E,{},e),{x:s,y:g,width:m,height:v}=r;p.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([s,g]),topRight:i.canvasToWorld([s+m,g]),bottomLeft:i.canvasToWorld([s,g+v]),bottomRight:i.canvasToWorld([s+m,g+v])}}}return n},this._throttledCalculateCachedStats=(0,c.A)(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,t){const{data:n,metadata:o}=e,{viewPlaneNormal:i,spacingInNormal:r}=o,{imageData:s}=t,{startCoordinate:l,endCoordinate:d}=n,{points:c}=n.handles,u=y(s,c[0]),h=y(s,c[0]),g=a.eR.create();s.indexToWorldVec3(u,g);const p=a.eR.create();s.indexToWorldVec3(h,p),2==this._getIndexOfCoordinatesForViewplaneNormal(i)?(g[2]=l,p[2]=d):0==this._getIndexOfCoordinatesForViewplaneNormal(i)?(g[0]=l,p[0]=d):1==this._getIndexOfCoordinatesForViewplaneNormal(i)&&(g[1]=l,p[1]=d);const f=a.eR.distance(g,p),m=[];for(let e=0;e<f;e+=r)m.push(c.map((t=>{const n=a.eR.create();return a.eR.scaleAndAdd(n,t,i,e),Array.from(n)})));n.cachedStats.projectionPoints=m}_computePointsInsideVolume(e,t,n,o){const{data:a,metadata:r}=e,{viewPlaneNormal:s,viewUp:l}=r,{viewport:d}=o,c=a.cachedStats.projectionPoints,u=[[]],g=this.getTargetImageData(t),p=a.handles.points[0],f=a.handles.points[3],{worldWidth:m,worldHeight:v}=(0,h.A)(s,l,p,f),b=(0,i.Op)(g,a.habdles),E=Math.abs(m*v)/(b.scale*b.scale),_={isPreScaled:(0,w.u)(d,t),isSuvScaled:this.isSuvScaled(d,t,e.metadata.referencedImageId)},C=(0,I.j)(r.Modality,e.metadata.referencedImageId,_);for(let e=0;e<c.length;e++){if(!n)continue;const t=c[e][0],{dimensions:o,imageData:i,voxelManager:a}=n,r=y(i,p),l=y(i,t),d=this._getIndexOfCoordinatesForViewplaneNormal(s);r[0]=Math.floor(r[0]),r[1]=Math.floor(r[1]),r[2]=Math.floor(r[2]),r[d]=l[d];const h=y(i,f);if(h[0]=Math.floor(h[0]),h[1]=Math.floor(h[1]),h[2]=Math.floor(h[2]),h[d]=l[d],this._isInsideVolume(r,h,o)){this.isHandleOutsideImage=!1;const e=[[Math.min(r[0],h[0]),Math.max(r[0],h[0])],[Math.min(r[1],h[1]),Math.max(r[1],h[1])],[Math.min(r[2],h[2]),Math.max(r[2],h[2])]],t=a.forEach(this.configuration.statsCalculator.statsCallback,{boundsIJK:e,imageData:i,returnPoints:this.configuration.storePointData});u.push(t)}}const x=this.configuration.statsCalculator.getStatistics();a.cachedStats.pointsInVolume=u,a.cachedStats.statistics={Modality:r.Modality,area:E,mean:x.mean?.value,stdDev:x.stdDev?.value,max:x.max?.value,statsArray:x.array,areaUnit:b.areaUnit,modalityUnit:C}}_calculateCachedStatsTool(e,t){const n=e.data,{viewport:i}=t,{cachedStats:a}=n,r=this.getTargetId(i),s=o.cache.getVolume(r.split(/volumeId:|\?/)[1]);return this._computeProjectionPoints(e,s),this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(e,r,s,t),this.configuration.calculatePointsInsideVolume&&this._computePointsInsideVolume(e,r,s,t),e.invalidated=!1,(0,m.triggerAnnotationModified)(e,i.element),a}_getStartCoordinate(e,t){const n=e;return this._getCoordinateForViewplaneNormal(n,t)}_getEndCoordinate(e,t,n){const o=this.configuration.numSlicesToPropagate,i=a.eR.create();a.eR.scaleAndAdd(i,e,n,o*t);return this._getCoordinateForViewplaneNormal(i,n)}_getIndexOfCoordinatesForViewplaneNormal(e){const t=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])];return t.indexOf(Math.max(...t))}_getCoordinateForViewplaneNormal(e,t){return e[this._getIndexOfCoordinatesForViewplaneNormal(t)]}}function C(e,t={}){const n=e.cachedStats.statistics,{area:i,mean:a,max:r,stdDev:s,areaUnit:l,modalityUnit:d}=n;if(void 0===a)return;const c=[];return c.push(`Area: ${o.utilities.roundNumber(i)} ${l}`),c.push(`Mean: ${o.utilities.roundNumber(a)} ${d}`),c.push(`Max: ${o.utilities.roundNumber(r)} ${d}`),c.push(`Std Dev: ${o.utilities.roundNumber(s)} ${d}`),c}_.toolName="RectangleROIStartEndThreshold";const x=_},40336:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var o=n(15327),i=n(6802),a=n(2076),r=n(17328),s=n(60810),l=n(7001),d=n(58640),c=n(29601),u=n(44049),h=n(4010);class g extends h.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}){super(e,t),this.addNewAnnotation=e=>{const t=e.detail,{currentPoints:n,element:a}=t,r=n.world,c=(0,o.getEnabledElement)(a),{viewport:u,renderingEngine:h}=c;this.isDrawing=!0;const g=u.getCamera(),{viewPlaneNormal:p,viewUp:f}=g,m=this.getTargetId(u);let v,w;if(u instanceof o.StackViewport)v=m.split("imageId:")[1];else{w=o.utilities.getVolumeId(m);const e=o.cache.getVolume(w);v=o.utilities.getClosestImageId(e,r,p)}const b=u.getFrameOfReferenceUID(),E={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...p],enabledElement:c,viewUp:[...f],FrameOfReferenceUID:b,referencedImageId:v,toolName:this.getToolName(),volumeId:w},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...r],[...r],[...r],[...r]],activeHandleIndex:null},segmentationId:null}};(0,i.lC)(E,a);const I=(0,s.getViewportIdsWithToolToRender)(a,this.getToolName());return this.editData={annotation:E,viewportIdsToRender:I,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),(0,l.hideElementCursor)(a),e.preventDefault(),(0,d.A)(I),E},this.renderAnnotation=(e,t)=>{let n=!1;const{viewport:o}=e,{element:s}=o;let l=(0,i.Rh)(this.getToolName(),s);if(!l?.length)return n;if(l=this.filterInteractableAnnotationsForElement(s,l),!l?.length)return n;const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<l.length;e++){const i=l[e],{annotationUID:h,data:g}=i,{points:p,activeHandleIndex:f}=g.handles,m=p.map((e=>o.worldToCanvas(e)));d.annotationUID=h;const v=this.getStyle("lineWidth",d,i),w=this.getStyle("lineDash",d,i),b=this.getStyle("color",d,i);if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let E;if((0,u.triggerAnnotationModified)(i,s),!(0,c.isAnnotationVisible)(h))continue;if((0,a.isAnnotationLocked)(h)||this.editData||null===f||(E=[m[f]]),E){const e="0";(0,r.drawHandles)(t,h,e,E,{color:b})}const I="0";(0,r.drawRect)(t,h,I,m[0],m[3],{color:b,lineDash:w,lineWidth:v}),n=!0}return n}}}g.toolName="RectangleROIThreshold";const p=g},56526:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var o=n(15327),i=(n(85817),n(10088)),a=n(47347),r=n(60810),s=n(99737),l=n(17328),d=n(7001),c=n(58640),u=n(44595),h=n(98870),g=n(23631);class p extends g.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:i.pY,ERASE_INSIDE:a.M},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,t),this.preMouseDownCallback=e=>{if(!0===this.isDrawing)return;const t=e.detail,{currentPoints:n,element:i}=t,a=n.world,l=(0,o.getEnabledElement)(i),{viewport:g}=l;this.isDrawing=!0;const p=g.getCamera(),{viewPlaneNormal:f,viewUp:m}=p,v=u.activeSegmentation.getActiveSegmentation(g.id);if(!v)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:w}=v,b=u.segmentIndex.getActiveSegmentIndex(w),E=u.segmentLocking.getLockedSegmentIndices(w),I=u.config.color.getSegmentIndexColor(g.id,w,b),{representationData:y}=(0,h.getSegmentation)(w),_=y[s.SegmentationRepresentations.Labelmap],C={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...f],viewUp:[...m],FrameOfReferenceUID:g.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:I},data:{handles:{points:[[...a],[...a],[...a],[...a]],activeHandleIndex:null}}},x=(0,r.getViewportIdsWithToolToRender)(i,this.getToolName());if(this.editData={annotation:C,segmentIndex:b,segmentationId:w,segmentsLocked:E,segmentColor:I,viewportIdsToRender:x,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null},g instanceof o.BaseVolumeViewport){const{volumeId:e}=_,t=o.cache.getVolume(e);this.editData={...this.editData,volumeId:e,referencedVolumeId:t.referencedVolumeId}}else{const e=(0,h.getCurrentLabelmapImageIdForViewport)(g.id,w);this.editData={...this.editData,imageId:e}}return this._activateDraw(i),(0,d.hideElementCursor)(i),e.preventDefault(),(0,c.A)(x),!0},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:i,viewportIdsToRender:a,handleIndex:r}=this.editData,{data:s}=i,{currentPoints:l}=t,d=(0,o.getEnabledElement)(n),{worldToCanvas:u,canvasToWorld:h}=d.viewport,g=l.world,{points:p}=s.handles;let f,m,v,w,b,E,I,y;switch(p[r]=[...g],r){case 0:case 3:f=u(p[0]),w=u(p[3]),m=[w[0],f[1]],v=[f[0],w[1]],E=h(m),I=h(v),p[1]=E,p[2]=I;break;case 1:case 2:m=u(p[1]),v=u(p[2]),f=[v[0],m[1]],w=[m[0],v[1]],b=h(f),y=h(w),p[0]=b,p[3]=y}i.invalidated=!0,this.editData.hasMoved=!0,(0,c.A)(a)},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=i;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateDraw(n),(0,d.resetElementCursor)(n);const l=(0,o.getEnabledElement)(n),c={...this.editData,points:s.handles.points,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(l,c),this.doneEditMemo()},this._activateDraw=e=>{e.addEventListener(s.Events.MOUSE_UP,this._endCallback),e.addEventListener(s.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(s.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(s.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(s.Events.TOUCH_END,this._endCallback),e.addEventListener(s.Events.TOUCH_DRAG,this._dragCallback),e.addEventListener(s.Events.TOUCH_TAP,this._endCallback)},this._deactivateDraw=e=>{e.removeEventListener(s.Events.MOUSE_UP,this._endCallback),e.removeEventListener(s.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(s.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(s.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(s.Events.TOUCH_TAP,this._endCallback),e.removeEventListener(s.Events.TOUCH_END,this._endCallback),e.removeEventListener(s.Events.TOUCH_DRAG,this._dragCallback)},this.renderAnnotation=(e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{annotation:i}=this.editData,a=i.metadata,r=i.annotationUID,s=i.data,{points:d}=s.handles,c=d.map((e=>o.worldToCanvas(e))),u=`rgb(${a.segmentColor.slice(0,3)})`;if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;return(0,l.drawRect)(t,r,"0",c[0],c[3],{color:u}),n=!0,n}}}p.toolName="RectangleScissor";const f=p},38502:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var o=n(15327),i=n(82056),a=n(2076),r=n(29601),s=n(17328),l=n(60810),d=n(473),c=n(7001),u=n(58640),h=n(25072),g=n(93733);class p extends h.A{static{this.toolName="SegmentBidirectional"}constructor(e={}){super(e),this.renderAnnotation=(e,t)=>{let n=!0;const{viewport:o}=e,{element:l}=o,c=o.id;let u=(0,i.getAnnotations)(this.getToolName(),l);if(!u?.length)return n;if(u=this.filterInteractableAnnotationsForElement(l,u),!u?.length)return n;const h=this.getTargetId(o),p=o.getRenderingEngine(),f={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let i=0;i<u.length;i++){const l=u[i],{annotationUID:m,data:v}=l,{points:w,activeHandleIndex:b}=v.handles,E=w.map((e=>o.worldToCanvas(e)));f.annotationUID=m;const{segmentIndex:I,segmentationId:y}=l.metadata,{lineWidth:_,lineDash:C,shadow:x}=this.getAnnotationStyle({annotation:l,styleSpecifier:f}),S=`rgb(${(0,g.getSegmentIndexColor)(c,y,I).slice(0,3).join(",")})`;if(v.cachedStats[h]&&null!=v.cachedStats[h].unit?l.invalidated&&this._throttledCalculateCachedStats(l,p,e):(v.cachedStats[h]={length:null,width:null,unit:null},this._calculateCachedStats(l,p,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;let T;if(!(0,r.isAnnotationVisible)(m))continue;if((0,a.isAnnotationLocked)(m)||this.editData||null===b||(T=[E[b]]),T){const e="0";(0,s.drawHandles)(t,m,e,T,{color:S})}const A=`${m}-line-1`,D=`${m}-line-2`,M="0";(0,s.drawLine)(t,m,M,E[0],E[1],{color:S,lineWidth:_,lineDash:C,shadow:x},A);const R="1";(0,s.drawLine)(t,m,R,E[2],E[3],{color:S,lineWidth:_,lineDash:C,shadow:x},D),n=!0;const P=this.getLinkedTextBoxStyle(f,l);if(!P.visibility){v.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}P.color=S;const O=this.configuration.getTextLines(v,h);if(!O||0===O.length)continue;let k;v.handles.textBox.hasMoved||(k=(0,d.getTextBoxCoordsCanvas)(E),v.handles.textBox.worldPosition=o.canvasToWorld(k));const L=o.worldToCanvas(v.handles.textBox.worldPosition),U="1",N=(0,s.drawLinkedTextBox)(t,m,U,O,L,E,{},P),{x:V,y:B,width:F,height:W}=N;v.handles.textBox.worldBoundingBox={topLeft:o.canvasToWorld([V,B]),topRight:o.canvasToWorld([V+F,B]),bottomLeft:o.canvasToWorld([V,B+W]),bottomRight:o.canvasToWorld([V+F,B+W])}}return n}}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:a}=t,r=n.world,s=(0,o.getEnabledElement)(a),{viewport:d}=s;this.isDrawing=!0;const h=d.getCamera(),{viewPlaneNormal:g,viewUp:p}=h,f=this.getReferencedImageId(d,r,g,p),m=d.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...g],viewUp:[...p],FrameOfReferenceUID:m,referencedImageId:f,...d.getViewReference({points:[r]})},data:{handles:{points:[[...r],[...r],[...r],[...r]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};(0,i.addAnnotation)(v,a);const w=(0,l.getViewportIdsWithToolToRender)(a,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:w,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(a),(0,c.hideElementCursor)(a),e.preventDefault(),(0,u.A)(w),v}static{this.hydrate=(e,t,n)=>{const a=(0,o.getEnabledElementByViewportId)(e);if(!a)return;const{viewport:r}=a,s=(0,i.getAllAnnotations)().filter((e=>"SegmentBidirectional"===e.metadata.toolName)),l=s.find((e=>{const{metadata:t}=e;return t.segmentIndex===n?.segmentIndex&&t.segmentationId===n?.segmentationId}));l&&(0,i.removeAnnotation)(l.annotationUID);const{FrameOfReferenceUID:d,referencedImageId:c,viewPlaneNormal:h,instance:g}=this.hydrateBase(p,a,t[0],n),[f,m]=t,[v,w]=f,[b,E]=m,I=[v,w,b,E],y={annotationUID:n?.annotationUID||o.utilities.uuidv4(),data:{handles:{points:I,activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},cachedStats:{}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{segmentIndex:n?.segmentIndex,segmentationId:n?.segmentationId,toolName:g.getToolName(),viewPlaneNormal:h,FrameOfReferenceUID:d,referencedImageId:c,...n}};return(0,i.addAnnotation)(y,r.element),(0,u.A)([r.id]),y}}}const f=p},987:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var o=n(15327),i=n(85817),a=n(49906),r=n(58640),s=n(26228),l=n(93759),d=n(85204),c=n(17328);class u extends i.oS{constructor(e={data:{handles:{textBox:{worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,searchRadius:6}}){super(e,t),this.mouseMoveCallback=e=>(this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout((()=>{this._setHoveredSegment(e),this.hoverTimer=null}),this.configuration.hoverTimeout),!0),this.onSetToolEnabled=()=>{this.onSetToolActive()},this.onSetToolActive=()=>{this.hoverTimer=null},this.onSetToolDisabled=()=>{this.hoverTimer=null},this.data=e.data??{handles:{textBox:{worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}},this.hoverTimer=null}_setHoveredSegment(e={}){if(d.wk.isInteractingWithTool)return;const{element:t,currentPoints:n}=e.detail,i=n.world,a=(0,o.getEnabledElement)(t);if(!a)return;const{viewport:r}=a,l=(0,s.getActiveSegmentation)(r.id);l&&this._setHoveredSegmentForType(l,i,r)}_setHoveredSegmentForType(e,t,n){if(!n.getImageData())return;const{segmentationId:o}=e,i=(0,l.getSegmentIndexAtWorldPoint)(o,t,{viewport:n}),s=e.segments[i],d=s?.label,c=n.worldToCanvas(t);if(this._editData={hoveredSegmentIndex:i,hoveredSegmentLabel:d,canvasCoordinates:c,worldPoint:t},!i||0===i)return;const u=n.getRenderingEngine().getViewports().map((e=>e.id));(0,a.triggerSegmentationModified)(o),(0,r.A)(u)}renderAnnotation(e,t){if(!this._editData)return;const{viewport:n}=e,{hoveredSegmentIndex:o,hoveredSegmentLabel:i,canvasCoordinates:a,worldPoint:r}=this._editData;if(!o)return;const s=n.worldToCanvas(r),l=(0,c.drawLinkedTextBox)(t,"segmentSelectLabelAnnotation","segmentSelectLabelTextBox",[i||"(unnamed segment)"],s,[a],{},{}),d=a[0],u=a[1],{width:h,height:g}=l;this.data.handles.textBox.worldBoundingBox={topLeft:n.canvasToWorld([d,u]),topRight:n.canvasToWorld([d+h,u]),bottomLeft:n.canvasToWorld([d,u+g]),bottomRight:n.canvasToWorld([d+h,u+g])}}}u.toolName="SegmentLabelTool";const h=u},12905:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var o=n(15327),i=n(85817),a=n(49906),r=n(58640),s=n(26228),l=n(70930),d=n(93759),c=n(85204),u=n(99737);class h extends i.oS{static{this.SelectMode={Inside:"Inside",Border:"Border"}}constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{hoverTimeout:100,mode:h.SelectMode.Border,searchRadius:6}}){super(e,t),this.mouseMoveCallback=e=>{if(this.mode===u.ToolModes.Active)return this.hoverTimer&&clearTimeout(this.hoverTimer),this.hoverTimer=setTimeout((()=>{this._setActiveSegment(e),this.hoverTimer=null}),this.configuration.hoverTimeout),!0},this.onSetToolEnabled=()=>{this.onSetToolActive()},this.onSetToolActive=()=>{this.hoverTimer=null},this.onSetToolDisabled=()=>{this.hoverTimer=null},this.hoverTimer=null}_setActiveSegment(e={}){if(c.wk.isInteractingWithTool)return;const{element:t,currentPoints:n}=e.detail,i=n.world,a=(0,o.getEnabledElement)(t);if(!a)return;const{viewport:r}=a,l=(0,s.getActiveSegmentation)(r.id);l&&this._setActiveSegmentForType(l,i,r)}_setActiveSegmentForType(e,t,n){if(!n.getImageData())return;const{segmentationId:o,representationData:i}=e;let s;if(this.configuration.mode===h.SelectMode.Inside?s=(0,d.getSegmentIndexAtWorldPoint)(o,t,{viewport:n}):i.Labelmap?s=(0,d.getSegmentIndexAtLabelmapBorder)(o,t,{viewport:n,searchRadius:this.configuration.searchRadius}):i.Contour?s=(0,d.getHoveredContourSegmentationAnnotation)(o):i.Surface,!s||0===s)return;(0,l.setActiveSegmentIndex)(o,s);const c=n.getRenderingEngine().getViewports().map((e=>e.id));(0,a.triggerSegmentationModified)(o),(0,r.A)(c)}}h.toolName="SegmentSelectTool";const g=h},10804:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var o=n(15327),i=n(17492),a=n(1989),r=n(99737),s=n(17328),l=n(7001),d=n(58640),c=n(44595),u=n(98870),h=n(23631);class g extends h.A{constructor(e={},t={supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:i.Jq,ERASE_INSIDE:a._},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}){super(e,t),this.preMouseDownCallback=e=>{if(!0===this.isDrawing)return;this.doneEditMemo();const t=e.detail,{currentPoints:n,element:i}=t,a=n.world,r=n.canvas,s=(0,o.getEnabledElement)(i),{viewport:h}=s;this.isDrawing=!0;const g=h.getCamera(),{viewPlaneNormal:p,viewUp:f}=g,m=c.activeSegmentation.getActiveSegmentation(h.id);if(!m)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:v}=m,w=c.segmentIndex.getActiveSegmentIndex(v),b=c.segmentLocking.getLockedSegmentIndices(v),E=c.config.color.getSegmentIndexColor(h.id,v,w);this.isDrawing=!0;const I={metadata:{viewPlaneNormal:[...p],viewUp:[...f],FrameOfReferenceUID:h.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:E},data:{invalidated:!0,handles:{points:[[...a],[...a],[...a],[...a]],activeHandleIndex:null},cachedStats:{},highlighted:!0}},y=[h.id];this.editData={annotation:I,centerCanvas:r,segmentIndex:w,segmentationId:v,segmentsLocked:b,segmentColor:E,toolGroupId:this.toolGroupId,viewportIdsToRender:y,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1,volumeId:null,referencedVolumeId:null,imageId:null};const{representationData:_}=(0,u.getSegmentation)(v),C=this.getEditData({viewport:h,representationData:_,segmentsLocked:b,segmentationId:v});return this.editData={...this.editData,...C},this._activateDraw(i),(0,l.hideElementCursor)(i),e.preventDefault(),(0,d.A)(y),!0},this._dragCallback=e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:i}=t,a=i.canvas,r=(0,o.getEnabledElement)(n),{renderingEngine:s,viewport:l}=r,{canvasToWorld:c}=l,{annotation:u,viewportIdsToRender:h,centerCanvas:g}=this.editData,{data:p}=u,f=Math.abs(a[0]-g[0]),m=Math.abs(a[1]-g[1]),v=Math.sqrt(f*f+m*m),w=[g[0],g[1]+v],b=[g[0],g[1]-v],E=[g[0]-v,g[1]],I=[g[0]+v,g[1]];p.handles.points=[c(w),c(b),c(E),c(I)],u.invalidated=!0,this.editData.hasMoved=!0,(0,d.A)(h)},this._endCallback=e=>{const t=e.detail,{element:n}=t,{annotation:i,newAnnotation:a,hasMoved:r,segmentIndex:s,segmentsLocked:d}=this.editData,{data:c}=i,{viewPlaneNormal:u,viewUp:h}=i.metadata;if(a&&!r)return;i.highlighted=!1,c.handles.activeHandleIndex=null,this._deactivateDraw(n),(0,l.resetElementCursor)(n);const g=(0,o.getEnabledElement)(n),p={...this.editData,points:c.handles.points,segmentIndex:s,segmentsLocked:d,viewPlaneNormal:u,viewUp:h,createMemo:this.createMemo.bind(this)};this.editData=null,this.isDrawing=!1,this.applyActiveStrategy(g,p),this.doneEditMemo()},this._activateDraw=e=>{e.addEventListener(r.Events.MOUSE_UP,this._endCallback),e.addEventListener(r.Events.MOUSE_DRAG,this._dragCallback),e.addEventListener(r.Events.MOUSE_CLICK,this._endCallback),e.addEventListener(r.Events.MOUSE_MOVE,this._dragCallback),e.addEventListener(r.Events.TOUCH_END,this._endCallback),e.addEventListener(r.Events.TOUCH_TAP,this._endCallback),e.addEventListener(r.Events.TOUCH_DRAG,this._dragCallback)},this._deactivateDraw=e=>{e.removeEventListener(r.Events.MOUSE_UP,this._endCallback),e.removeEventListener(r.Events.MOUSE_DRAG,this._dragCallback),e.removeEventListener(r.Events.MOUSE_CLICK,this._endCallback),e.removeEventListener(r.Events.MOUSE_MOVE,this._dragCallback),e.removeEventListener(r.Events.TOUCH_END,this._endCallback),e.removeEventListener(r.Events.TOUCH_DRAG,this._dragCallback),e.removeEventListener(r.Events.TOUCH_TAP,this._endCallback)},this.renderAnnotation=(e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{viewportIdsToRender:i}=this.editData;if(!i.includes(o.id))return n;const{annotation:a}=this.editData,r=a.metadata,l=a.annotationUID,d=a.data,{points:c}=d.handles,u=c.map((e=>o.worldToCanvas(e))),h=u[0],g=u[1],p=[Math.floor((h[0]+g[0])/2),Math.floor((h[1]+g[1])/2)],f=Math.abs(h[1]-Math.floor((h[1]+g[1])/2)),m=`rgb(${r.segmentColor.slice(0,3)})`;if(!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;return(0,s.drawCircle)(t,l,"0",p,f,{color:m}),n=!0,n}}}g.toolName="SphereScissor";const p=g},62753:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(15327),i=n(84093),a=n(33283),r=n(83075);const s={[i.A.EnsureImageVolumeFor3DManipulation]:e=>{const{operationData:t,viewport:n}=e;let i;if(n){i=n.getImageIds();if(!o.utilities.isValidVolume(i))throw new Error("Volume is not reconstructable for sphere manipulation")}else{i=(0,a.T)(t.segmentationId).representationData.Labelmap.imageIds.map((e=>o.cache.getImage(e).referencedImageId))}const s=(0,r.A)(i);if(!s)throw new Error("Failed to create or get image volume");t.imageVoxelManager=s.voxelManager,t.imageData=s.imageData}}},38732:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(84093),a=n(30722);const r={[i.A.EnsureSegmentationVolumeFor3DManipulation]:e=>{const{operationData:t,viewport:n}=e,{segmentationId:i,imageIds:r}=t,s=n?n.getImageIds():r.map((e=>o.cache.getImage(e).referencedImageId));if(!o.utilities.isValidVolume(s))throw new Error("Volume is not reconstructable for sphere manipulation");const l=(0,a.A)(i);l&&(t.segmentationVoxelManager=l.voxelManager,t.segmentationImageData=l.imageData)}}},56789:(e,t,n)=>{"use strict";n.d(t,{N5:()=>b,kr:()=>v,mu:()=>p,pB:()=>f,q:()=>w});var o=n(3823),i=n(15327),a=n(11683),r=n(72282),s=n(55887),l=n(99737),d=n(11990),c=n(62783);const{transformWorldToIndex:u,isEqual:h}=i.utilities,g={[l.StrategyCallbacks.Initialize]:e=>{const{points:t,viewport:n,segmentationImageData:i}=e;if(!t)return;const s=o.eR.fromValues(0,0,0);t.forEach((e=>{o.eR.add(s,s,e)})),o.eR.scale(s,s,1/t.length),e.centerWorld=s,e.centerIJK=u(i,s);const l=t.map((e=>n.worldToCanvas(e))),[d,c]=(0,a.getCanvasEllipseCorners)(l),h=n.canvasToWorld(d),g=n.canvasToWorld(c),f=t.map((e=>u(i,e))),m=(0,r.getBoundingBoxAroundShapeIJK)(f,i.getDimensions());e.isInObject=p({topLeftWorld:h,bottomRightWorld:g,center:s}),e.isInObjectBoundsIJK=m}};function p(e){const{topLeftWorld:t,bottomRightWorld:n,center:o}=e,i=Math.abs(t[0]-n[0])/2,r=Math.abs(t[1]-n[1])/2,s=Math.abs(t[2]-n[2])/2,l=Math.max(i,r,s);if(h(i,l)&&h(r,l)&&h(s,l)){const e={center:o,radius:l,radius2:l*l};return t=>(0,c.d)(e,t)}const d={center:o,xRadius:i,yRadius:r,zRadius:s},{precalculated:u}=(0,a.precalculatePointInEllipse)(d,{});return u}const f=new s.A("Circle",d.A.regionFill,d.A.setValue,g,d.A.determineSegmentIndex,d.A.preview,d.A.labelmapStatistics),m=new s.A("CircleThreshold",d.A.regionFill,d.A.setValue,g,d.A.determineSegmentIndex,d.A.dynamicThreshold,d.A.threshold,d.A.preview,d.A.islandRemoval,d.A.labelmapStatistics),v=f.strategyFunction,w=m.strategyFunction;function b(){throw new Error("Not yet implemented")}},10088:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>f,pY:()=>p});var o=n(3823),i=n(15327),a=n(72282),r=(n(49906),n(40905),n(26384)),s=n(55887),l=n(99737),d=n(11990);const{transformWorldToIndex:c}=i.utilities,u={[l.StrategyCallbacks.Initialize]:e=>{const{points:t,imageVoxelManager:n,viewport:s,segmentationImageData:l,segmentationVoxelManager:d}=e;if(!t)return;const u=o.eR.fromValues(0,0,0);t.forEach((e=>{o.eR.add(u,u,e)})),o.eR.scale(u,u,1/t.length),e.centerWorld=u,e.centerIJK=c(l,u);const{boundsIJK:h,pointInShapeFn:g}=function(e,t,n){let o=t.map((e=>c(n,e)));o=o.map((e=>e.map((e=>Math.round(e)))));const s=(0,a.getBoundingBoxAroundShapeIJK)(o,n.getDimensions()),l=e instanceof i.StackViewport,d=l||(0,r.l)(o),u=n.getDirection(),h=n.getSpacing(),{viewPlaneNormal:g}=e.getCamera(),p=i.utilities.getSpacingInNormalDirection({direction:u,spacing:h},g),f=(0,a.getBoundingBoxAroundShapeWorld)(t);let[[m,v],[w,b],[E,I]]=f;m-=p,v+=p,w-=p,b+=p,E-=p,I+=p;const y=d?()=>!0:e=>{const[t,n,o]=e;return t>=m&&t<=v&&(n>=w&&n<=b)&&(o>=E&&o<=I)};return{boundsIJK:s,pointInShapeFn:y}}(s,t,l);e.isInObject=g,e.isInObjectBoundsIJK=h}};const h=new s.A("Rectangle",d.A.regionFill,d.A.setValue,u,d.A.determineSegmentIndex,d.A.preview,d.A.labelmapStatistics),g=new s.A("RectangleThreshold",d.A.regionFill,d.A.setValue,u,d.A.determineSegmentIndex,d.A.dynamicThreshold,d.A.threshold,d.A.preview,d.A.islandRemoval,d.A.labelmapStatistics),p=h.strategyFunction,f=g.strategyFunction},99522:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fillInsideCircle:()=>i.kr,fillInsideRectangle:()=>o.pY,fillOutsideCircle:()=>i.N5,thresholdInsideRectangle:()=>o.VQ});var o=n(10088),i=n(56789)},93126:(e,t,n)=>{"use strict";var o;n.d(t,{W:()=>o}),function(e){e[e.CounterClockwise=-1]="CounterClockwise",e[e.Unknown=0]="Unknown",e[e.Clockwise=1]="Clockwise"}(o||(o={}))},13369:()=>{},16678:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(94021),a=n(99737);class r{static setStartRange(e,t,n=e.getCurrentImageIdIndex()){this.setRange(e,t,n)}static setEndRange(e,t,n=e.getCurrentImageIdIndex()){this.setRange(e,t,void 0,n)}static setRange(e,t,n,r){const{metadata:s}=t;void 0===n&&(n=s.sliceIndex<r?s.sliceIndex:0,void 0===r&&(r=e.getNumberOfSlices()-1));const l=e.getSliceIndexForImage(s.multiSliceReference);void 0===r&&(r=l>=n?l:e.getNumberOfSlices()-1),r=Math.max(n,r),s.sliceIndex=Math.min(n,r),s.referencedImageId=e.getCurrentImageId(s.sliceIndex),s.referencedImageURI=void 0,r===s.sliceIndex?s.multiSliceReference=void 0:r!==s.multiSliceReference?.sliceIndex&&(s.multiSliceReference={referencedImageId:e.getCurrentImageId(r),sliceIndex:r});const d={viewportId:e.id,renderingEngineId:e.renderingEngineId,changeType:a.ChangeTypes.MetadataReferenceModified,annotation:t};(0,o.triggerEvent)(o.eventTarget,i.A.ANNOTATION_MODIFIED,d),this.setViewportFrameRange(e,s)}static setSingle(e,t,n=e.getCurrentImageIdIndex()){this.setRange(e,t,n,n)}static getFrameRange(e){const{metadata:t}=e,{sliceIndex:n,multiSliceReference:o}=t,i=o?.sliceIndex;return i?[n+1,i+1]:n+1}static getFrameRangeStr(e){const t=this.getFrameRange(e);return Array.isArray(t)?`${t[0]}-${t[1]}`:String(t)}static setViewportFrameRange(e,t){e.setFrameRange&&t.multiSliceReference?.sliceIndex&&e.setFrameRange(t.sliceIndex+1,t.multiSliceReference.sliceIndex+1)}}},64485:(e,t,n)=>{"use strict";n.d(t,{i:()=>r,x:()=>l});var o=n(15327),i=n(82056),a=n(3823);function r(e,t,n,a){const r=e.getViewReference(),{viewPlaneNormal:l,FrameOfReferenceUID:d}=r,c={annotationUID:a?.annotationUID||o.utilities.uuidv4(),data:{handles:{points:n}},highlighted:!1,autoGenerated:!1,invalidated:!1,isLocked:!1,isVisible:!0,metadata:{toolName:t,viewPlaneNormal:l,FrameOfReferenceUID:d,referencedImageId:s(e,n[0],l),...a}};return(0,i.addAnnotation)(c,e.element),c}function s(e,t,n){let i;if(e instanceof o.StackViewport)i=l(e,t,n);else{if(!(e instanceof o.BaseVolumeViewport))throw new Error("getReferencedImageId: viewport must be a StackViewport or BaseVolumeViewport");{const a=function(e){const t=e.getViewReferenceId?.();if(t)return t;if(e instanceof o.BaseVolumeViewport)return`volumeId:${function(e){const t=e.getActors();if(!t)return;return t.find((e=>"vtkVolume"===e.actor.getClassName()))?.uid}(e)}`;throw new Error("getTargetId: viewport must have a getTargetId method")}(e),r=o.utilities.getVolumeId(a),s=o.cache.getVolume(r);i=o.utilities.getClosestImageId(s,t,n)}}return i}function l(e,t,n){const i=e.getImageIds();if(!i||!i.length)return;const r=i.map((e=>{const{imagePositionPatient:i}=o.metaData.get("imagePlaneModule",e),r=function(e,t,n){const o=a.eR.create();a.eR.sub(o,e,t);const i=a.eR.dot(o,n);return Math.abs(i)}(t,i,n);return{imageId:e,distance:r}}));return r.sort(((e,t)=>e.distance-t.distance)),r[0].imageId}},76802:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o=function(e,t){const n=e.findIndex((([e,t])=>e===t));if(-1===n)throw new Error("3D bounding boxes not supported in an oblique plane");return e[n][0]-=t,e[n][1]+=t,e}},87063:(e,t,n)=>{"use strict";n.d(t,{C:()=>s,g:()=>r});var o=n(15327);const{EPSILON:i}=o.CONSTANTS;function a(e,t,n=!1){let o=1/0,a=n?-1/0:0,r=1/0,s=n?-1/0:0,l=1/0,d=n?-1/0:0;const c=3===e[0]?.length;for(let t=0;t<e.length;t++){const n=e[t];o=Math.min(n[0],o),a=Math.max(n[0],a),r=Math.min(n[1],r),s=Math.max(n[1],s),c&&(l=Math.min(n[2]??l,l),d=Math.max(n[2]??d,d))}return t?(o=Math.max(n?t[0]+i:0,o),a=Math.min(n?t[0]-i:t[0]-1,a),r=Math.max(n?t[1]+i:0,r),s=Math.min(n?t[1]-i:t[1]-1,s),c&&3===t.length&&(l=Math.max(n?t[2]+i:0,l),d=Math.min(n?t[2]-i:t[2]-1,d))):n||(o=Math.max(0,o),a=Math.min(1/0,a),r=Math.max(0,r),s=Math.min(1/0,s),c&&(l=Math.max(0,l),d=Math.min(1/0,d))),c?[[o,a],[r,s],[l,d]]:[[o,a],[r,s],null]}function r(e,t){return a(e,t,!1)}function s(e,t){return a(e,t,!0)}},72282:(e,t,n)=>{"use strict";n.r(t),n.d(t,{extend2DBoundingBoxInViewAxis:()=>o.A,getBoundingBoxAroundShape:()=>i.g,getBoundingBoxAroundShapeIJK:()=>i.g,getBoundingBoxAroundShapeWorld:()=>i.C});var o=n(76802),i=n(87063)},58271:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(15327);const{calibratedPixelSpacingMetadataProvider:i}=o.utilities;function a(e,t,n){"number"==typeof n&&(n={type:o.Enums.CalibrationTypes.USER,scale:n}),i.add(e,n);t.getStackViewports().forEach((t=>{t.getImageIds().includes(e)&&t.calibrateSpacing(e)}))}},14655:(e,t,n)=>{"use strict";var o;n.d(t,{A:()=>i}),function(e){e.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",e.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED"}(o||(o={}));const i=o},67108:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Events:()=>i.A,addToolState:()=>a.Pi,getToolState:()=>a.k6,playClip:()=>o.n,stopClip:()=>o.D});var o=n(53322),i=n(14655),a=n(36085)},53322:(e,t,n)=>{"use strict";n.d(t,{D:()=>h,n:()=>u});var o=n(3823),i=n(15327),a=n(14655),r=n(36085);const{ViewportStatus:s}=i.Enums,{triggerEvent:l}=i.utilities,d=!0,c=new Map;function u(e,t){let n,u;if(void 0===e)throw new Error("playClip: element must not be undefined");const h=(0,i.getEnabledElement)(e);if(!h)throw new Error("playClip: element must be a valid Cornerstone enabled element");t||(t={}),t.dynamicCineEnabled=t.dynamicCineEnabled??!0;const{viewport:v}=h,w=function(e,t){if(e instanceof i.StackViewport)return function(e,t){const n=e.getImageIds();return{get numScrollSteps(){return n.length},get currentStepIndex(){return e.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(n){this.waitForRenderedCount<=t&&e.viewportStatus!==s.RENDERED?this.waitForRenderedCount++:(this.waitForRenderedCount=0,i.utilities.scroll(e,{delta:n,debounceLoading:d}))}}}(e,t.waitForRendered??30);if(e instanceof i.VolumeViewport){const n=m(e);return t.dynamicCineEnabled&&n?.isDynamicVolume()?function(e){return{get numScrollSteps(){return e.numDimensionGroups},get currentStepIndex(){return e.dimensionGroupNumber-1},get frameTimeVectorEnabled(){return!1},scroll(t){e.scroll(t)}}}(n):function(e,t){const{volumeId:n}=t,a={viewPlaneNormal:o.eR.create(),scrollInfo:null},r=()=>{const t=e.getCamera();if(!a.scrollInfo||!o.eR.equals(t.viewPlaneNormal,a.viewPlaneNormal)){const o=i.utilities.getVolumeViewportScrollInfo(e,n);a.viewPlaneNormal=t.viewPlaneNormal,a.scrollInfo=o}return a.scrollInfo};return{get numScrollSteps(){return r().numScrollSteps},get currentStepIndex(){return r().currentStepIndex},get frameTimeVectorEnabled(){const n=e.getCamera(),i=t.direction.slice(6,9).map((e=>-e)),a=o.eR.dot(i,n.viewPlaneNormal);return o.Fd.equals(a,1)},scroll(t){r().currentStepIndex+=t,i.utilities.scroll(e,{delta:t})}}}(e,n)}if(e instanceof i.VideoViewport)return function(e,t){return{get numScrollSteps(){return e.getNumberOfSlices()},get currentStepIndex(){return e.getSliceIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(n){this.waitForRenderedCount<=t&&e.viewportStatus!==s.RENDERED?this.waitForRenderedCount++:(this.waitForRenderedCount=0,i.utilities.scroll(e,{delta:n,debounceLoading:d}))},play:t=>(t&&e.setPlaybackRate(t/24),e.play(),e.getFrameRate())}}(e,t.waitForRendered??30);throw new Error("Unknown viewport type")}(v,t);let b=(0,r.k6)(e);const E=t.dynamicCineEnabled;if(E&&p(e),b?g(e,{stopDynamicCine:!E,viewportId:v.id}):(b={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:t.frameTimeVector??void 0,speed:t.frameTimeVectorSpeedMultiplier??1,reverse:t.reverse??!1,loop:t.loop??!0},(0,r.Pi)(e,b)),b.dynamicCineEnabled=t.dynamicCineEnabled,(t.framesPerSecond<0||t.framesPerSecond>0)&&(b.framesPerSecond=Number(t.framesPerSecond),b.reverse=b.framesPerSecond<0,b.ignoreFrameTimeVector=!0),!0!==b.ignoreFrameTimeVector&&b.frameTimeVector&&b.frameTimeVector.length===w.numScrollSteps&&w.frameTimeVectorEnabled){const{timeouts:e,isTimeVarying:t}=function(e,t){let n,o,i,a=0;const r=e.length,s=[];let l=!1;("number"!=typeof t||t<=0)&&(t=1);for(n=1;n<r;n++)i=Number(e[n])/t|0,s.push(i),1===n?o=i:i!==o&&(l=!0),a+=i;s.length>0&&(i=l?a/s.length|0:s[0],s.push(i));return{timeouts:s,isTimeVarying:l}}(b.frameTimeVector,b.speed);n=e,u=t}const I=()=>{const{numScrollSteps:t,currentStepIndex:n}=w;let o=n+(b.reverse?-1:1);const i=o<0||o>=t;if(!b.loop&&i){g(e,{stopDynamicCine:!E,viewportId:v.id});const t={element:e};return void l(e,a.A.CLIP_STOPPED,t)}o>=t?o=0:o<0&&(o=t-1);const r=o-n;if(r)try{w.scroll(r)}catch(t){return console.warn("Play clip not scrolling",t),f(b),void l(e,a.A.CLIP_STOPPED,y)}};if(E){const t=m(v);t&&c.set(t.volumeId,e)}w.play?b.framesPerSecond=w.play(t.framesPerSecond):n&&n.length>0&&u?(b.usingFrameTimeVector=!0,b.intervalId=window.setTimeout((function e(){b.intervalId=window.setTimeout(e,n[w.currentStepIndex]),I()}),0)):(b.usingFrameTimeVector=!1,b.intervalId=window.setInterval(I,1e3/Math.abs(b.framesPerSecond)));const y={element:e};l(e,a.A.CLIP_STARTED,y)}function h(e,t={}){g(e,{stopDynamicCine:!0,...t})}function g(e,t={stopDynamicCine:!0,viewportId:void 0}){const{stopDynamicCine:n,viewportId:o}=t,a=(0,i.getEnabledElement)(e);let s;const l=a?.viewport;if(a){const{viewport:e}=a;s=(0,r.k6)(e.element)}else{if(!o)return;s=(0,r.CS)(o)}s&&f(s),l instanceof i.VideoViewport?l.pause():n&&l instanceof i.BaseVolumeViewport&&p(e)}function p(e){const{viewport:t}=(0,i.getEnabledElement)(e);if(t instanceof i.VolumeViewport){const n=m(t);if(n?.isDynamicVolume()){const t=c.get(n.volumeId);c.delete(n.volumeId),t&&t!==e&&h(t)}}}function f(e){const t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function m(e){if(!(e instanceof i.VolumeViewport))return;const t=e.getAllVolumeIds();if(!t?.length)return;const n=t.find((e=>i.cache.getVolume(e)?.isDynamicVolume())),o=n??t[0];return i.cache.getVolume(o)}},36085:(e,t,n)=>{"use strict";n.d(t,{CS:()=>s,Pi:()=>a,k6:()=>r});var o=n(15327);const i={};function a(e,t){const n=(0,o.getEnabledElement)(e),{viewportId:a}=n;i[a]=t}function r(e){const t=(0,o.getEnabledElement)(e),{viewportId:n}=t;return i[n]}function s(e){return i[e]}},62854:(e,t,n)=>{"use strict";function o(e,t){const{segmentation:n}=e.data,{segmentation:o}=t.data;return n.segmentationId===o.segmentationId&&n.segmentIndex===o.segmentIndex}n.d(t,{A:()=>o})},64843:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addContourSegmentationAnnotation:()=>a.V,areSameSegment:()=>o.A,isContourSegmentationAnnotation:()=>i.A,removeContourSegmentationAnnotation:()=>r.M});var o=n(62854),i=n(78130),a=n(85263),r=n(37354)},78130:(e,t,n)=>{"use strict";function o(e){return!!e.data?.segmentation}n.d(t,{A:()=>o})},37354:(e,t,n)=>{"use strict";n.d(t,{M:()=>i});var o=n(33283);function i(e){if(!e.data.segmentation)throw new Error("removeContourSegmentationAnnotation: annotation does not have a segmentation data");const{segmentationId:t,segmentIndex:n}=e.data.segmentation,i=(0,o.T)(t),{annotationUIDsMap:a}=i?.representationData.Contour||{},r=a?.get(n);r&&(r.delete(e.annotationUID),r.size||a.delete(n))}},93843:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o=function(e,t){let n=0;for(let t=0;t<e.length-1;t++){const o=e[t],i=e[t+1];n+=Math.sqrt(Math.pow(i[0]-o[0],2)+Math.pow(i[1]-o[1],2))}if(t){const t=e[0],o=e[e.length-1];n+=Math.sqrt(Math.pow(o[0]-t[0],2)+Math.pow(o[1]-t[1],2))}return n}},46228:(e,t,n)=>{"use strict";function o(e,t,n){let i=-1;if(t.forEach(((t,n)=>{i>=0||t.a==e.b&&(i=n)})),i>=0){const e=t[i];return t.splice(i,1),n.push(e.b),n[0]==e.b?{remainingLines:t,contourPoints:n,type:"CLOSED_PLANAR"}:o(e,t,n)}return{remainingLines:t,contourPoints:n,type:"OPEN_PLANAR"}}function i(e){if(0==e.length)return[];const t=[],n=e.shift();t.push(n.a),t.push(n.b);const a=o(n,e,t);if(0==a.remainingLines.length)return[{type:a.type,contourPoints:a.contourPoints}];{const e=i(a.remainingLines);return e.push({type:a.type,contourPoints:a.contourPoints}),e}}n.d(t,{Ay:()=>a});const a={findContours:i,findContoursFromReducedSet:function(e){return i(e)}}},98013:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(3823);const{isEqual:a}=o.utilities;function r(e,t){const{polyline:n}=e.data.contour,{points:o}=e.data.handles,{length:r}=o;if(t===r)return n.length;if(t<0&&(t=(t+r)%r),0===t)return 0;const s=o[t],l=n.findIndex((e=>a(s,e)));if(-1!==l)return l;let d=1/0;return n.reduce(((e,t,n)=>{const o=i.eR.squaredDistance(t,s);return o<d?(d=o,n):e}),-1)}},15451:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(55659);function i(e,t){const n=(0,o.A)(e),i=[];return n.forEach((e=>{const n=e.length,o=new Array(n);for(let i=0;i<n;i++)o[i]=t.worldToCanvas(e[i]);i.push(o)})),i}},55659:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(82056);function i(e){return(e.childAnnotationUIDs??[]).map((e=>(0,o.getAnnotation)(e).data.contour.polyline))}},37546:(e,t,n)=>{"use strict";function o(e,t=!1){const n=e.getPoints(),o=e.getLines(),i=new Array(n.getNumberOfPoints()).fill(0).map(((e,t)=>n.getPoint(t).slice())),a=new Array(o.getNumberOfCells()).fill(0).map(((e,t)=>{const n=o.getCell(3*t).slice();return{a:n[0],b:n[1]}}));if(t)return{points:i,lines:a};const r=[];for(const[e,t]of i.entries()){const n=r.findIndex((e=>e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]));if(n>=0)a.map((t=>(t.a===e&&(t.a=n),t.b===e&&(t.b=n),t)));else{const n=r.length;r.push(t),a.map((t=>(t.a===e&&(t.a=n),t.b===e&&(t.b=n),t)))}}return{points:r,lines:a.filter((e=>e.a!==e.b))}}n.d(t,{v:()=>o})},54889:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnotationToPointData:()=>b,acceptAutogeneratedInterpolations:()=>C,areCoplanarContours:()=>i,calculatePerimeter:()=>S.A,contourFinder:()=>a.Ay,detectContourHoles:()=>l,findHandlePolylineIndex:()=>x.A,generateContourSetsFromLabelmap:()=>m,getContourHolesDataCanvas:()=>I.A,getContourHolesDataWorld:()=>E.A,getDeduplicatedVTKPolyDataPoints:()=>r.v,updateContourPolyline:()=>y.A});var o=n(3823);function i(e,t){const{viewPlaneNormal:n}=e.metadata,{viewPlaneNormal:i}=t.metadata,a=o.eR.dot(n,i);if(!o.Fd.equals(1,Math.abs(a)))return!1;const{polyline:r}=e.data.contour,{polyline:s}=t.data.contour,l=o.eR.dot(n,r[0]),d=o.eR.dot(n,s[0]);return o.Fd.equals(l,d)}var a=n(46228),r=n(37546);const s=(e,t)=>{const n=e[0],o=e[1];let i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const r=t[e][0],s=t[e][1],l=t[a][0],d=t[a][1];s>o!=d>o&&n<(l-r)*(o-s)/(d-s)+r&&(i=!i)}return i};const l={processContourHoles:function(e,t,n=!0){const o=e.filter((e=>"CLOSED_PLANAR"!==e.type)),i=e.filter((e=>"CLOSED_PLANAR"===e.type)),a=[];let r=[];return i.forEach(((e,n)=>{const o=[];i.forEach(((i,a)=>{n!=a&&function(e,t,n){const o=[];e.contourPoints.forEach((e=>{o.push([n[e][0],n[e][1]])}));let i=0;return t.contourPoints.forEach((e=>{s([n[e][0],n[e][1]],o)||i++})),0===i}(e,i,t)&&o.push(a)})),o.length>0?a.push({contour:e,holes:o}):r.push(n)})),n&&(a.forEach((e=>{e.contour.type="CLOSEDPLANAR_XOR",o.push(e.contour),e.holes.forEach((e=>{i[e].type="CLOSEDPLANAR_XOR",o.push(i[e]),r=r.filter((t=>t!==e))}))})),r.forEach((e=>{o.push(i[e])}))),o}};var d=n(15327),c=n(18682),u=n(99737),h=n(44460),g=n(54285),p=n(30722);const{Labelmap:f}=c.A;async function m({segmentations:e}){(0,h.D)(),(0,g.sg)(u.WorkerTypes.GENERATE_CONTOUR_SETS,0);const{representationData:t,segments:n=[0,1],segmentationId:o}=e;let{volumeId:i}=t[f];if(!i){const e=(0,p.A)(o);e&&(i=e.volumeId)}const a=d.cache.getVolume(i);if(!a)return void console.warn(`No volume found for ${i}`);const r={scalarData:a.voxelManager.getCompleteScalarDataArray(),dimensions:a.dimensions,spacing:a.imageData.getSpacing(),origin:a.imageData.getOrigin(),direction:a.imageData.getDirection()},s=Array.isArray(n)?n.filter((e=>null!==e)).map((e=>e.segmentIndex||e)):Object.values(n).filter((e=>null!==e)).map((e=>e.segmentIndex||e)),l=await(0,d.getWebWorkerManager)().executeTask("compute","generateContourSetsFromLabelmapVolume",{segmentation:r,indices:s,mode:"individual"}),c=a.imageIds.map((e=>{const t=d.cache.getImage(e)?.referencedImageId;return t?d.cache.getImage(t):void 0})),m=c.map((e=>d.utilities.getImageDataMetadata(e))),v=l.map((e=>{const t=n[e.segment.segmentIndex]||{};if(!e.sliceContours.length)return null;const o=e.sliceContours[0].polyData.points[0];let i;if(o){const e=m.findIndex((e=>{const{scanAxisNormal:t,origin:n}=e,i=d.utilities.planar.planeEquation(t,n);return d.utilities.planar.isPointOnPlane(o,i)}));-1!==e&&(i=c[e].imageId)}return{label:t.label,color:t.color,metadata:{FrameOfReferenceUID:a.metadata.FrameOfReferenceUID,referencedImageId:i},sliceContours:e.sliceContours.map((e=>({contours:e.contours,polyData:e.polyData,FrameNumber:e.sliceIndex+1,sliceIndex:e.sliceIndex,FrameOfReferenceUID:a.metadata.FrameOfReferenceUID,referencedImageId:i})))}})).filter((e=>null!==e));return(0,g.sg)(u.WorkerTypes.GENERATE_CONTOUR_SETS,100),v}var v=n(109);class w{static{this.TOOL_NAMES={}}constructor(){}static convert(e,t,n){!function(e){if(!e?.data)throw new Error("Tool data is empty");if(!e.metadata||e.metadata.referencedImageId)throw new Error("Tool data is not associated with any imageId")}(e);const{toolName:o}=e.metadata,i=w.TOOL_NAMES[o];if(!i)throw new Error(`Unknown tool type: ${o}, cannot convert to RTSSReport`);const a=i.getContourSequence(e,n);return{ReferencedROINumber:t+1,ROIDisplayColor:[Math.floor(255*Math.random()),Math.floor(255*Math.random()),Math.floor(255*Math.random())],ContourSequence:a}}static register(e){w.TOOL_NAMES[e.toolName]=e}}w.register(v.A);const b=w;var E=n(55659),I=n(15451),y=n(72967),_=n(27740);function C(e,t){_.A.acceptAutoGenerated(e,t)}var x=n(98013),S=n(93843)},72967:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(95527),a=n(82056);function r(e,t,n,r){const{canvasToWorld:s,worldToCanvas:l}=n,{data:d}=e,{targetWindingDirection:c}=t;let{points:u}=t,h=i.polyline.getWindingDirection(u);r?.decimate?.enabled&&(u=i.polyline.decimate(t.points,r?.decimate?.epsilon));let{closed:g}=t;const p=u.length,f=new Array(p),m=(i.polyline.getWindingDirection(u),(0,a.getParentAnnotation)(e));if(void 0===g){let e=!1;if(u.length>3){const t=i.point.distanceToPointSquared(u[0],u[p-1]);e=o.utilities.isEqual(0,t)}g=e}if(!1!==r?.updateWindingDirection){let e=m?-1*m.data.contour.windingDirection:c;void 0===e&&(e=h),e!==h&&u.reverse();const t=(d.handles?.points??[]).map(l);if(t.length>2){i.polyline.getWindingDirection(t)!==e&&d.handles.points.reverse()}h=e}for(let e=0;e<p;e++)f[e]=s(u[e]);d.contour.polyline=f,d.contour.closed=g,d.contour.windingDirection=h,(0,a.invalidateAnnotation)(e)}},473:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getTextBoxCoordsCanvas:()=>o.A});var o=n(1239)},94593:(e,t,n)=>{"use strict";n.d(t,{G:()=>r,H:()=>s});var o=n(15327);function i(e,t){const n=e.getScalarDataLength(),o=new Float32Array(n);for(const i of t){const t=e.getDimensionGroupScalarData(i);for(let e=0;e<n;e++)o[e]+=t[e]}return o}const a={[o.Enums.GenerateImageType.SUM]:(e,t,n)=>{const o=i(e,t);for(let e=0;e<o.length;e++)n(e,o[e])},[o.Enums.GenerateImageType.AVERAGE]:(e,t,n)=>{const o=function(e,t){const n=i(e,t),o=t.length;for(let e=0;e<n.length;e++)n[e]/=o;return n}(e,t);for(let e=0;e<o.length;e++)n(e,o[e])},[o.Enums.GenerateImageType.SUBTRACT]:(e,t,n)=>{if(2!==t.length)throw new Error("Please provide only 2 dimension groups for subtraction.");const o=e.getScalarDataLength(),i=e.getDimensionGroupScalarData(t[0]),a=e.getDimensionGroupScalarData(t[1]);for(let e=0;e<o;e++){n(e,i[e]-a[e])}}};function r(e,t,n){const{dimensionGroupNumbers:o,frameNumbers:i}=n;i&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead.");const r=o||i||Array.from({length:e.numDimensionGroups},((e,t)=>t+1));if(r.length<=1)throw new Error("Please provide two or more dimension groups");const s=e.voxelManager,l=s.getScalarDataLength(),d=a[t];if(!d)throw new Error(`Unsupported operation: ${t}`);const c=new Float32Array(l);return d(s,r,((e,t)=>{c[e]=t})),c}function s(e,t,n){const{dimensionGroupNumbers:o,frameNumbers:i,targetVolume:r}=n;if(!r)throw new Error("A target volume must be provided");i&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead.");const s=o||i||Array.from({length:e.numDimensionGroups},((e,t)=>t+1));if(s.length<=1)throw new Error("Please provide two or more dimension groups");const l=e.voxelManager,d=r.voxelManager,c=a[t];if(!c)throw new Error(`Unsupported operation: ${t}`);c(l,s,((e,t)=>{d.setAtIndex(e,t)})),d.resetModifiedSlices();for(let e=0;e<r.dimensions[2];e++)d.modifiedSlices.add(e)}},41362:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(15327),i=n(64063);const a=function(e,t){const n=t.dimensionGroupNumbers||t.frameNumbers||Array.from({length:e.numDimensionGroups},((e,t)=>t+1));if(t.frameNumbers&&console.warn("Warning: frameNumbers parameter is deprecated. Please use dimensionGroupNumbers instead."),!t.maskVolumeId&&!t.worldCoordinate)throw new Error("You should provide either maskVolumeId or imageCoordinate");if(t.maskVolumeId&&t.worldCoordinate)throw new Error("You can only use one of maskVolumeId or imageCoordinate");if(t.maskVolumeId){const a=o.cache.getVolume(t.maskVolumeId);if(!a)throw new Error("Segmentation volume not found");const[r,s]=function(e,t,n){const{imageData:o}=n,a=n.voxelManager,r=a.getScalarDataLength(),s=[];s.length=r;let l=0;for(let e=0,t=r;e<t;e++)0!==a.getAtIndex(e)&&(s[l++]=e);s.length=l;const d=[],c=t.voxelManager.getScalarDataLength()===r&&JSON.stringify(t.spacing)===JSON.stringify(n.spacing),u=[];if(c){for(let n=0;n<s.length;n++){const o=[],i=s[n];for(let n=0;n<e.length;n++)o.push(t.voxelManager.getAtIndexAndDimensionGroup(i,e[n]));d.push(o),u.push(a.toIJK(i))}return[d,u]}const h=({pointLPS:n,value:o,pointIJK:a})=>{if(0===o)return;const r=(0,i.Q5)(t.imageData,t.dimensions,t.spacing,n);let s=0;const l=new Map;e.forEach((e=>l.set(e,0)));const c=({index:n})=>{for(let o=0;o<e.length;o++){const i=t.voxelManager.getAtIndexAndDimensionGroup(n,e[o]),a=e[o];l.set(a,l.get(a)+i)}s++};t.voxelManager.forEach(c,{imageData:t.imageData,boundsIJK:r});const h=[];l.forEach((e=>{h.push(e/s)})),u.push(a),d.push(h)};return n.voxelManager.forEach(h,{imageData:o}),[d,u]}(n,e,a);return[r,s]}if(t.worldCoordinate){const i=function(e,t,n){const{dimensions:i,imageData:a}=n,r=a.worldToIndex(t);if(r[0]=Math.floor(r[0]),r[1]=Math.floor(r[1]),r[2]=Math.floor(r[2]),!o.utilities.indexWithinDimensions(r,i))throw new Error("outside bounds");const s=i[0],l=i[0]*i[1],d=[];return e.forEach((e=>{const t=r[2]*l+r[1]*s+r[0];d.push(n.voxelManager.getAtIndexAndDimensionGroup(t,e))})),d}(n,t.worldCoordinate,e);return i}}},83052:(e,t,n)=>{"use strict";n.r(t),n.d(t,{generateImageFromTimeData:()=>i.G,getDataInTime:()=>o.A,updateVolumeFromTimeData:()=>i.H});var o=n(41362),i=n(94593)},41293:(e,t,n)=>{"use strict";n.d(t,{S:()=>r,s:()=>s});var o=n(15327),i=n(82056),a=n(77609);function r(e,t,n=5){const i=(0,o.getEnabledElement)(e);if(!i)throw new Error("getAnnotationNearPoint: enabledElement not found");return s(i,t,n)}function s(e,t,n){const{renderingEngineId:o,viewportId:i}=e,r=a.getToolGroupForViewport(i,o);if(!r)return null;const{_toolInstances:s}=r;for(const o in s){const i=l(s[o],e,t,n);if(i)return i}return null}function l(e,t,n,o){const{viewport:a}=t,r=(0,i.getAnnotations)(e.constructor.toolName,a?.element),s=a?.getCurrentImageId?.();if(r?.length){const{element:i}=t.viewport;for(const t of r){const a=t.metadata?.referencedImageId;if(!(s&&a&&s!==a||!e.isPointNearTool)&&(e.isPointNearTool(i,t,n,o,"")||e.getHandleNearImagePoint(i,t,n,o)))return t}}return null}},4096:(e,t,n)=>{"use strict";n.d(t,{CQ:()=>p,Op:()=>h,Xw:()=>g});var o=n(15327);const{CalibrationTypes:i}=o.Enums,a="px",r="voxels",s=[1,2,3,4],l=["3,3","4,7"],d=["4,3","4,7"],c={0:"px",1:"percent",2:"dB",3:"cm",4:"seconds",5:"hertz",6:"dB/seconds",7:"cm/sec",8:"cm²",9:"cm²/s",12:"degrees"},u="²",h=(e,t)=>{const{calibration:n,hasPixelSpacing:d}=e;let h=d?"mm":a;const g=d?"mm³":r;let p=h+u,f=1,m="";if(!n||!n.type&&!n.sequenceOfUltrasoundRegions)return{unit:h,areaUnit:p,scale:f,volumeUnit:g};if(n.type===i.UNCALIBRATED)return{unit:a,areaUnit:a+u,scale:f,volumeUnit:r};if(n.sequenceOfUltrasoundRegions){let e,i;if(Array.isArray(t)&&2===t.length)[e,i]=t;else if("function"==typeof t){const n=t();e=n[0],i=n[1]}let d=n.sequenceOfUltrasoundRegions.filter((t=>e[0]>=t.regionLocationMinX0&&e[0]<=t.regionLocationMaxX1&&e[1]>=t.regionLocationMinY0&&e[1]<=t.regionLocationMaxY1&&i[0]>=t.regionLocationMinX0&&i[0]<=t.regionLocationMaxX1&&i[1]>=t.regionLocationMinY0&&i[1]<=t.regionLocationMaxY1));if(!d?.length)return{unit:h,areaUnit:p,scale:f,volumeUnit:g};if(d=d.filter((e=>s.includes(e.regionDataType)&&l.includes(`${e.physicalUnitsXDirection},${e.physicalUnitsYDirection}`))),!d.length)return{unit:a,areaUnit:a+u,scale:f,volumeUnit:r};const v=d[0],w=Math.abs(v.physicalDeltaX),b=Math.abs(v.physicalDeltaY);if(!o.utilities.isEqual(w,b,.001))return{unit:a,areaUnit:a+u,scale:f,volumeUnit:r};f=1/w,m="US Region",h=c[v.physicalUnitsXDirection]||"unknown",p=h+u}else n.scale&&(f=n.scale);return[i.ERMF,i.USER,i.ERROR,i.PROJECTION,i.CALIBRATED,i.UNKNOWN].includes(n?.type)&&(m=n.type),{unit:h+(m?` ${m}`:""),areaUnit:p+(m?` ${m}`:""),scale:f,volumeUnit:g+(m?` ${m}`:"")}},g=(e,t)=>{const[n]=t,{calibration:o}=e;let i=["raw"],a=[null],r="";if(!o||!o.type&&!o.sequenceOfUltrasoundRegions)return{units:i,values:a};if(o.sequenceOfUltrasoundRegions){const e=o.sequenceOfUltrasoundRegions.filter((e=>s.includes(e.regionDataType)&&d.includes(`${e.physicalUnitsXDirection},${e.physicalUnitsYDirection}`)));if(!e?.length)return{units:i,values:a};const t=e.find((e=>n[0]>=e.regionLocationMinX0&&n[0]<=e.regionLocationMaxX1&&n[1]>=e.regionLocationMinY0&&n[1]<=e.regionLocationMaxY1));if(!t)return{units:i,values:a};const{referencePixelX0:l=0,referencePixelY0:u=0}=t,{physicalDeltaX:h,physicalDeltaY:g}=t,p=(n[1]-t.regionLocationMinY0-u)*g;r="US Region",a=[(n[0]-t.regionLocationMinX0-l)*h,p],i=[c[t.physicalUnitsXDirection],c[t.physicalUnitsYDirection]]}return{units:i,values:a,calibrationType:r}},p=e=>e.calibration?.aspect||1},40634:(e,t,n)=>{"use strict";n.d(t,{N:()=>i,j:()=>a});var o=n(15327);function i(e,t){return a(o.metaData.get("generalSeriesModule",e).modality,e,t)}function a(e,t,n){return"CT"===e?"HU":"PT"===e?function(e,t){if(!t.isPreScaled)return"raw";if(t.isSuvScaled)return"SUV";const n=o.metaData.get("generalSeriesModule",e);if("PT"===n?.modality){const t=o.metaData.get("petSeriesModule",e);return t?.units||"unitless"}return"unknown"}(t,n):""}},4296:(e,t,n)=>{"use strict";n.d(t,{R:()=>l,l:()=>d});var o=n(15327),i=n(3823),a=n(72282);const{transformWorldToIndex:r}=o.utilities;function s(e,t,n){const[o,s]=e,l=i.eR.fromValues((o[0]+s[0])/2,(o[1]+s[1])/2,(o[2]+s[2])/2),d=i.eR.distance(o,s)/2,{boundsIJK:c,topLeftWorld:u,bottomRightWorld:h}=function(e,t,n,o,s){const l=e.getDimensions(),{row:d,column:c,normal:u}=t,h=i.eR.create(),g=i.eR.create();i.eR.scaleAndAdd(h,o,u,s),i.eR.scaleAndAdd(g,o,u,-s),i.eR.scaleAndAdd(h,h,c,-s),i.eR.scaleAndAdd(g,g,c,s),i.eR.scaleAndAdd(h,h,d,-s),i.eR.scaleAndAdd(g,g,d,s);const p=r(e,h),f=r(e,g),m=n.map((t=>r(e,t))),v=(0,a.getBoundingBoxAroundShapeIJK)([p,f,...m],l);return{boundsIJK:v,topLeftWorld:h,bottomRightWorld:g}}(t,n,e,l,d);return{boundsIJK:c,centerWorld:l,radiusWorld:d,topLeftWorld:u,bottomRightWorld:h}}function l(e,t){const n=t.getDirection(),o=i.eR.fromValues(n[0],n[1],n[2]),a=i.eR.fromValues(n[3],n[4],n[5]),r=i.eR.fromValues(n[6],n[7],n[8]);return s(e,t,{row:o,column:a,normal:i.eR.negate(i.eR.create(),r)})}function d(e,t,n){if(!n)throw new Error("viewport is required in order to calculate the sphere bounds");const o=n.getCamera(),a=i.eR.fromValues(o.viewUp[0],o.viewUp[1],o.viewUp[2]),r=i.eR.fromValues(o.viewPlaneNormal[0],o.viewPlaneNormal[1],o.viewPlaneNormal[2]),l=i.eR.create();i.eR.cross(l,a,r);return s(e,t,{row:l,normal:r,column:i.eR.negate(i.eR.create(),a)})}},15295:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(15327);const{isEqual:i}=o.utilities;function a(e){const{metadata:t}=e;return(0,o.getEnabledElements)().filter((e=>{if(e.FrameOfReferenceUID===t.FrameOfReferenceUID){const n=e.viewport,{viewPlaneNormal:o,viewUp:a}=n.getCamera();return i(o,t.viewPlaneNormal)&&(!t.viewUp||i(a,t.viewUp))}})).map((e=>e.viewport))}},53860:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnotationMultiSlice:()=>f.A,IslandRemoval:()=>V.A,annotationHydration:()=>v.i,boundingBox:()=>S,calibrateImageSpacing:()=>l.A,cine:()=>x,contourSegmentation:()=>L,contours:()=>w,debounce:()=>a.A,drawing:()=>E,dynamicVolume:()=>P,geometricSurfaceUtils:()=>F,getAnnotationNearPoint:()=>i.S,getAnnotationNearPointOnEnabledElement:()=>i.s,getCalibratedAspect:()=>d.CQ,getCalibratedLengthUnitsAndScale:()=>d.Op,getCalibratedProbeUnitsAndValue:()=>d.Xw,getClosestImageIdForStackViewport:()=>v.x,getOrCreateImageVolume:()=>j.A,getPixelValueUnits:()=>B.j,getPixelValueUnitsImageId:()=>B.N,getSphereBoundsInfo:()=>g.R,getViewportForAnnotation:()=>m.A,isObject:()=>s.A,math:()=>I,moveAnnotationToViewPlane:()=>H.T,normalizeViewportPlane:()=>N.A,orientation:()=>C,planar:()=>y,planarFreehandROITool:()=>T,pointInSurroundingSphereCallback:()=>U.i,pointToString:()=>p.l,polyDataUtils:()=>O,rectangleROITool:()=>A,roundNumber:()=>G,segmentation:()=>b,setAnnotationLabel:()=>W.A,stackContextPrefetch:()=>D.N,stackPrefetch:()=>D.S,throttle:()=>r.A,touch:()=>R,triggerAnnotationRender:()=>h.A,triggerAnnotationRenderForToolGroupIds:()=>u.A,triggerAnnotationRenderForViewportIds:()=>c.A,triggerEvent:()=>o.triggerEvent,viewport:()=>M,viewportFilters:()=>_,voi:()=>k});var o=n(15327),i=n(41293),a=n(52905),r=n(27730),s=n(45217),l=n(58271),d=n(4096),c=n(58640),u=n(94779),h=n(56069),g=n(4296),p=n(38726),f=n(16678),m=n(40133),v=n(64485),w=n(54889),b=n(93759),E=n(473),I=n(95527),y=n(13165),_=n(60810),C=n(90141),x=n(67108),S=n(72282),T=n(55002),A=n(74866),D=n(71132),M=n(19027),R=n(76260),P=n(83052),O=n(32994),k=n(97213),L=n(64843),U=n(10261),N=n(27963),V=n(67912),B=n(40634),F=n(5565),W=n(1355),H=n(79646),j=n(83075);const G=o.utilities.roundNumber},95527:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BasicStatsCalculator:()=>i,aabb:()=>o,angle:()=>h,circle:()=>a,ellipse:()=>r,lineSegment:()=>s,point:()=>l,polyline:()=>d,rectangle:()=>c,vec2:()=>u});var o=n(88638),i=n(73262),a=n(77081),r=n(11683),s=n(15305),l=n(82216),d=n(92984),c=n(33657),u=n(23324),h=n(83923)},92984:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addCanvasPointsToArray:()=>I.A,containsPoint:()=>i.A,containsPoints:()=>a.A,decimate:()=>p.A,getAABB:()=>r.A,getArea:()=>s.A,getClosestLineSegmentIntersection:()=>w.A,getFirstLineSegmentIntersectionIndexes:()=>f.A,getLineSegmentIntersectionsCoordinates:()=>v.A,getLineSegmentIntersectionsIndexes:()=>m.A,getNormal2:()=>u.A,getNormal3:()=>c.A,getSignedArea:()=>l.A,getSubPixelSpacingAndXYDirections:()=>b.A,getWindingDirection:()=>d.A,intersectPolyline:()=>g.A,isClosed:()=>o.A,isPointInsidePolyline3D:()=>_.i,mergePolylines:()=>h.S,pointCanProjectOnLine:()=>y.A,pointsAreWithinCloseContourProximity:()=>E.A,projectTo2D:()=>C.p,subtractPolylines:()=>h.Y});var o=n(19246),i=n(46513),a=n(42436),r=n(98122),s=n(86909),l=n(63113),d=n(4239),c=n(43490),u=n(11377),h=n(68385),g=n(405),p=n(99944),f=n(4338),m=n(37135),v=n(50932),w=n(32979),b=n(61785),E=n(82265),I=n(97792),y=n(80514),_=n(8361),C=n(28502)},90554:(e,t,n)=>{"use strict";function o(e,t){let n=[0,0],o=Number.MAX_SAFE_INTEGER;return e.forEach((function(e){const i=function(e,t){const[n,o]=e,[i,a]=t;return Math.sqrt(Math.pow(n-i,2)+Math.pow(o-a,2))}(t,e);i<o&&(o=i,n=[...e])})),n}n.d(t,{A:()=>o})},79646:(e,t,n)=>{"use strict";n.d(t,{T:()=>a});var o=n(15327),i=n(9175);function a(e,t){const{data:n}=e,{points:a}=n.handles,{focalPoint:r,viewPlaneNormal:s}=t.getCamera(),l=i.dot(i.sub(i.create(),a[0],r),s);return a.forEach((e=>{i.add(e,e,i.scale(i.create(),[-s[0],-s[1],-s[2]],l))})),t instanceof o.StackViewport&&(e.metadata.referencedImageId=t.getCurrentImageId()),e}},27963:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(15327);const{isEqual:i}=o.utilities,a={toIJK:e=>e,fromIJK:e=>e,type:"acquistion"},r={toIJK:([e,t,n])=>[n,e,t],fromIJK:([e,t,n])=>[t,n,e],type:"jk"},s={toIJK:([e,t,n])=>[e,n,t],fromIJK:([e,t,n])=>[e,n,t],type:"ik"};function l(e,t){if(!(e instanceof o.BaseVolumeViewport))return{...a,boundsIJKPrime:t};const{viewPlaneNormal:n}=e.getCamera(),l=i(Math.abs(n[0]),1)&&r||i(Math.abs(n[1]),1)&&s||i(Math.abs(n[2]),1)&&a;return l?{...l,boundsIJKPrime:l.fromIJK(t)}:{toIJK:null,boundsIJKPrime:null,fromIJK:null,error:`Only mappings orthogonal to acquisition plane are permitted, but requested ${n}`}}},7193:(e,t,n)=>{"use strict";function o(e){let t="";const n=e[0]<0?"R":"L",o=e[1]<0?"A":"P",i=e[2]<0?"F":"H",a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],r=1e-4;for(let e=0;e<3;e++)if(a[0]>r&&a[0]>a[1]&&a[0]>a[2])t+=n,a[0]=0;else if(a[1]>r&&a[1]>a[0]&&a[1]>a[2])t+=o,a[1]=0;else if(a[2]>r&&a[2]>a[0]&&a[2]>a[1])t+=i,a[2]=0;else if(a[0]>r&&a[1]>r&&a[0]===a[1])t+=n+o,a[0]=0,a[1]=0;else if(a[0]>r&&a[2]>r&&a[0]===a[2])t+=n+i,a[0]=0,a[2]=0;else{if(!(a[1]>r&&a[2]>r&&a[1]===a[2]))break;t+=o+i,a[1]=0,a[2]=0}return t}n.d(t,{A:()=>o})},90141:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getOrientationStringLPS:()=>o.A,invertOrientationStringLPS:()=>i.A});var o=n(7193),i=n(80405)},80405:(e,t,n)=>{"use strict";function o(e){let t=e.replace("H","f");return t=t.replace("F","h"),t=t.replace("R","l"),t=t.replace("L","r"),t=t.replace("A","p"),t=t.replace("P","a"),t=t.toUpperCase(),t}n.d(t,{A:()=>o})},55002:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i,smoothAnnotation:()=>o.A});var o=n(61587);const i={smoothAnnotation:o.A}},10261:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var o=n(15327),i=n(3823),a=n(62783),r=n(72282);const{transformWorldToIndex:s}=o.utilities;function l(e,t,n,l){const{boundsIJK:d,centerWorld:c,radiusWorld:u}=function(e,t,n){const[o,a]=e,l=i.eR.fromValues((o[0]+a[0])/2,(o[1]+a[1])/2,(o[2]+a[2])/2),d=i.eR.distance(o,a)/2;let c;if(!n){const e=s(t,l),n=t.getSpacing(),o=Math.min(...n),i=Math.ceil(d/o);return c=[[e[0]-i,e[0]+i],[e[1]-i,e[1]+i],[e[2]-i,e[2]+i]],{boundsIJK:c,centerWorld:l,radiusWorld:d}}return c=function(e,t,n,o,a){const[l,d]=n,c=e.getDimensions(),u=t.getCamera(),h=i.eR.fromValues(u.viewUp[0],u.viewUp[1],u.viewUp[2]),g=i.eR.fromValues(u.viewPlaneNormal[0],u.viewPlaneNormal[1],u.viewPlaneNormal[2]),p=i.eR.create();i.eR.cross(p,h,g);const f=i.eR.create(),m=i.eR.create();i.eR.scaleAndAdd(f,d,g,a),i.eR.scaleAndAdd(m,l,g,-a),i.eR.scaleAndAdd(f,f,p,-a),i.eR.scaleAndAdd(m,m,p,a);const v=[s(e,f),s(e,m)],w=(0,r.getBoundingBoxAroundShape)(v,c);return w}(t,n,e,0,d),{boundsIJK:c,centerWorld:l,radiusWorld:d}}(t,e,l),h={center:c,radius:u},g=e.getDimensions();o.utilities.VoxelManager.createScalarVolumeVoxelManager({dimensions:g,scalarData:e.getPointData().getScalars().getData()}).forEach(n,{boundsIJK:d,isInObject:e=>(0,a.d)(h,e),imageData:e})}},38726:(e,t,n)=>{"use strict";function o(e,t=5){return parseFloat(e[0]).toFixed(t)+","+parseFloat(e[1]).toFixed(t)+","+parseFloat(e[2]).toFixed(t)+","}n.d(t,{l:()=>o})},32994:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getPoint:()=>i,getPolyDataPointIndexes:()=>a,getPolyDataPoints:()=>r});var o=n(3823);function i(e,t){const n=3*t;if(n<e.length)return o.eR.fromValues(e[n],e[n+1],e[n+2])}function a(e){const t=e.getLines().getData();let n=0;const o=new Map;for(;n<t.length;){const e=t[n++],i=[];for(let o=0;o<e;o++)i.push(t[n+o]);o.set(i[0],i),n+=e}const i=[],a=e=>{for(const[t,n]of e.entries())if(void 0!==n)return t;return-1};let r=a(o);for(;-1!==r;){const e=[r];for(;o.has(r);){const t=o.get(r)[1];o.has(t)&&e.push(t),o.delete(r),r=t}i.push(e),r=a(o)}return i.length?i:void 0}function r(e){const t=a(e);if(!t)return;const n=e.getPoints().getData();return t.map((e=>e.map((e=>i(n,e)))))}},37162:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(15327),i=n(87063),a=n(76802);const r=function(e,t,n={}){const r=[];return e.forEach((e=>{const{data:s}=e,{points:l}=s.handles,{imageData:d,dimensions:c}=t;let u=l;if(s.cachedStats?.projectionPoints){const{projectionPoints:e}=s.cachedStats;u=[].concat(...e)}const h=u.map((e=>o.utilities.transformWorldToIndex(d,e)));let g=(0,i.g)(h,c);n.numSlicesToProject&&!s.cachedStats?.projectionPoints&&(g=(0,a.A)(g,n.numSlicesToProject)),r.push(g)})),1===r.length?r[0]:r.reduce(((e,t)=>({iMin:Math.min(e.iMin,t.iMin),jMin:Math.min(e.jMin,t.jMin),kMin:Math.min(e.kMin,t.kMin),iMax:Math.max(e.iMax,t.iMax),jMax:Math.max(e.jMax,t.jMax),kMax:Math.max(e.kMax,t.kMax)})),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})}},74866:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getBoundsIJKFromRectangleAnnotations:()=>o.A,isAxisAlignedRectangle:()=>i.l});var o=n(37162),i=n(26384)},44460:(e,t,n)=>{"use strict";n.d(t,{D:()=>r});var o=n(15327),i=n(36625);let a=!1;function r(){if(a)return;a=!0;const e=(0,o.getWebWorkerManager)(),t=(0,i.zj)().computeWorker,r={maxWorkerInstances:1,autoTerminateOnIdle:t?.autoTerminateOnIdle??{enabled:!0,idleTimeThreshold:2e3}};e.registerWorker("compute",(()=>new Worker(new URL(n.p+n.u(3694),n.b),{name:"compute",type:void 0})),r)}},27740:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var o=n(15327),i=n(47807),a=n(51893),r=n(73816),s=n(56229),l=n(75183),d=n(40133),c=n(85263);const{uuidv4:u}=o.utilities,h=[l.A.HandlesUpdated,l.A.InterpolationUpdated];class g{static{this.toolNames=[]}static addTool(e){this.toolNames.includes(e)||this.toolNames.push(e)}static acceptAutoGenerated(e,t={}){const{toolNames:n,segmentationId:o,segmentIndex:a,sliceIndex:r}=t;for(const t of n||g.toolNames){const n=i.state.getAnnotations(t,e);if(n?.length)for(const e of n){const{interpolationUID:t,data:n,autoGenerated:i,metadata:s}=e;t&&(e.interpolationCompleted=!0),i&&(a&&a!==n.segmentation.segmentIndex||void 0!==r&&s&&r!==s.sliceIndex||o&&o!==n.segmentation.segmentationId||((0,c.V)(e),e.autoGenerated=!1))}}}static{this.handleAnnotationCompleted=e=>{const t=e.detail.annotation;if(!t?.metadata)return;const{toolName:n,originalToolName:o}=t.metadata;if(!this.toolNames.includes(n)&&!this.toolNames.includes(o))return;const i=(0,d.A)(t);if(!i)return void console.warn("Unable to find viewport for",t);const l={viewport:i,sliceData:p(i),annotation:t,interpolationUID:t.interpolationUID},c=!!t.interpolationUID;if(t.autoGenerated=!1,c)return(0,s.A)(l),void(0,r.A)(l);const h=[{key:"segmentIndex",value:t.data.segmentation.segmentIndex,parentKey:e=>e.data.segmentation},{key:"viewPlaneNormal",value:t.metadata.viewPlaneNormal,parentKey:e=>e.metadata},{key:"viewUp",value:t.metadata.viewUp,parentKey:e=>e.metadata}];let g=(0,a.A)(l,h);const{sliceIndex:f}=t.metadata,m=new Set;g.forEach((e=>{if(e.interpolationCompleted||e.metadata.sliceIndex===f){const{interpolationUID:t}=e;m.add(t)}})),g=g.filter((e=>!m.has(e.interpolationUID))),t.interpolationUID=g[0]?.interpolationUID||u(),l.interpolationUID=t.interpolationUID,(0,r.A)(l)}}static{this.handleAnnotationUpdate=e=>{const t=e.detail.annotation,{changeType:n=l.A.HandlesUpdated}=e.detail;if(!t?.metadata)return;const{toolName:o,originalToolName:i}=t.metadata;if(!this.toolNames.includes(o)&&!this.toolNames.includes(i)||!h.includes(n))return;const a=(0,d.A)(t);if(!a)return void console.warn("Unable to find matching viewport for annotation interpolation",t);t.autoGenerated&&((0,c.V)(t),t.autoGenerated=!1);const s={viewport:a,sliceData:p(a),annotation:t,interpolationUID:t.interpolationUID,isInterpolationUpdate:n===l.A.InterpolationUpdated};(0,r.A)(s)}}static{this.handleAnnotationDelete=e=>{const t=e.detail.annotation;if(!t?.metadata)return;const{toolName:n}=t.metadata;if(!this.toolNames.includes(n)||t.autoGenerated)return;const o=(0,d.A)(t);if(!o)return void console.warn("No viewport, can't delete interpolated results",t);const i={viewport:o,sliceData:p(o),annotation:t,interpolationUID:t.interpolationUID};t.autoGenerated=!1,(0,s.A)(i)}}}function p(e){return{numberOfSlices:e.getNumberOfSlices(),imageIndex:e.getCurrentImageIdIndex()}}},13179:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(68915);class i{static{this.calculators=new Map}static{this.indices=[]}static{this.mode="collective"}static statsInit(e){const{storePointData:t,indices:n,mode:i}=e;this.mode=i,this.indices=n,this.calculators.clear(),"individual"===this.mode?n.forEach((e=>{this.calculators.set(e,new o.C3({storePointData:t}))})):this.calculators.set(n,new o.C3({storePointData:t}))}static statsCallback(e){const{segmentIndex:t,...n}=e;if(!t)throw new Error("Segment index is required for stats calculation");const o="individual"===this.mode?this.calculators.get(t):this.calculators.get(this.indices);if(!o)throw new Error(`No calculator found for segment ${t}`);o.statsCallback(n)}static getStatistics(e){if("individual"===this.mode){const t={};return this.calculators.forEach(((n,o)=>{t[o]=n.getStatistics(e)})),t}return this.calculators.get(this.indices).getStatistics(e)}}},68915:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>d,C3:()=>l});var o=n(69013),i=n(4096);function a(e,t){const{value:n}=t,{maxIJKs:o}=e,i=o.length;if("number"!=typeof n||i>=10&&n<o[0].value)return;const a={value:t.value,pointLPS:t.pointLPS?[t.pointLPS[0],t.pointLPS[1],t.pointLPS[2]]:void 0,pointIJK:t.pointIJK?[t.pointIJK[0],t.pointIJK[1],t.pointIJK[2]]:void 0};if(!i||n>=o[i-1].value)o.push(a);else for(let e=0;e<i;e++)if(n<=o[e].value){o.splice(e,0,a);break}i>=10&&o.splice(0,1)}function r(e,t,n){const{spacing:o,calibration:a}=n,{volumeUnit:r}=(0,i.Op)({calibration:a,hasPixelSpacing:!0},[]),s=o?o[0]*o[1]*o[2]*1e3:1;return t.volume={value:Array.isArray(t.count.value)?t.count.value.map((e=>e*s)):t.count.value*s,unit:r,name:"volume",label:"Volume"},t.maxIJKs=e.maxIJKs.filter((e=>void 0!==e.pointIJK)),t.array.push(t.volume),e.maxIJKs=[],t}class s extends o.O{static{this.volumetricState={maxIJKs:[]}}static statsInit(e){super.statsInit(e),this.volumetricState={maxIJKs:[]}}static statsCallback(e){super.statsCallback(e),a(this.volumetricState,e)}static getStatistics(e){const t={...e,unit:e?.unit||"none",calibration:e?.calibration,hasPixelSpacing:e?.hasPixelSpacing},n=super.getStatistics(t);return r(this.volumetricState,n,t)}}class l extends o.B{constructor(e){super(e),this.volumetricState={maxIJKs:[]}}statsInit(e){super.statsInit(e),this.volumetricState={maxIJKs:[]}}statsCallback(e){super.statsCallback(e),a(this.volumetricState,e)}getStatistics(e){const t={...e,unit:e?.unit||"none",calibration:e?.calibration,hasPixelSpacing:e?.hasPixelSpacing},n=super.getStatistics(t);return r(this.volumetricState,n,t)}}const d=s},17014:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,M:()=>s});var o=n(77609),i=n(58640),a=n(15327),r=n(14957);function s(e,t,n){const s=(0,o.getToolGroup)(e);if(void 0===s)return;(0,r.n)(e,n).forEach((e=>{e.configuration.brushSize=t,e.invalidateBrushCursor()}));const l=s.getViewportsInfo(),d=Object.keys(l).map((e=>l[e]));if(!d.length)return;const{renderingEngineId:c}=d[0],u=s.getViewportIds();(0,a.getRenderingEngine)(c);(0,i.A)(u)}function l(e,t){const n=(0,o.getToolGroup)(e);if(void 0===n)return;const i=n._toolInstances;if(!Object.keys(i).length)return;const a=(0,r.n)(e,t)[0];return a?a.configuration.brushSize:void 0}},49492:(e,t,n)=>{"use strict";n.d(t,{K:()=>r,Q:()=>s});var o=n(77609),i=n(58640),a=n(14957);function r(e,t){const n=(0,o.getToolGroup)(e);if(void 0===n)return;(0,a.n)(e).forEach((e=>{e.configuration.activeStrategy.toLowerCase().includes("threshold")&&(e.configuration={...e.configuration,threshold:{...e.configuration.threshold,...t}})}));if(!n.getViewportsInfo().length)return;const r=n.getViewportIds();(0,i.A)(r)}function s(e){const t=(0,o.getToolGroup)(e);if(void 0===t)return;const n=t._toolInstances;if(!Object.keys(n).length)return;const i=(0,a.n)(e)[0];return i?i.configuration.threshold.range:void 0}},88274:(e,t,n)=>{"use strict";n.d(t,{B:()=>u});var o=n(15327),i=n(54285),a=n(99737),r=n(44460),s=n(4334),l=n(33283),d=n(30722),c=n(83075);async function u({segmentationIds:e,segmentIndex:t}){(0,r.D)(),(0,i.sg)(a.WorkerTypes.COMPUTE_STATISTICS,0);const n=(0,l.T)(e[0]),{imageIds:u}=n.representationData.Labelmap;if(!o.utilities.isValidVolume(u))throw new Error("Invalid volume - TMTV cannot be calculated");const h=await async function({segmentationIds:e,segmentIndex:t}){const n=e.map((e=>(0,d.A)(e))),r=(0,s.A)(n,t);if(!r)throw new Error("Invalid volume - TMTV cannot be calculated");const{imageData:u,dimensions:h,direction:g,origin:p,voxelManager:f}=r,m=u.getSpacing(),v={scalarData:f.getCompleteScalarDataArray(),dimensions:h,spacing:m,origin:p,direction:g},w=function(e){const t=(0,l.T)(e);if(!t)return null;let n;const i=t.representationData.Labelmap;if("imageIds"in i){const{imageIds:e}=i,t=o.cache.getImage(e[0]),a=o.cache.getVolumeContainingImageId(t.referencedImageId);if(a?.volume)return a.volume;n=e.map((e=>o.cache.getImage(e).referencedImageId))}else if("volumeId"in i){const{volumeId:e,referencedVolumeId:t}=i;if(t){const e=o.cache.getVolume(t);if(e)return e}const a=o.cache.getVolume(e);a&&(n=a.imageIds.map((e=>o.cache.getImage(e).referencedImageId)))}return(0,c.A)(n)}(e[0]),b={dimensions:w.dimensions,spacing:w.spacing,origin:w.origin,direction:w.direction,scalarData:w.voxelManager.getCompleteScalarDataArray()};if(0===b.scalarData.length||0===v.scalarData.length)return{[t]:{name:"TMTV",value:0}};const E=await(0,o.getWebWorkerManager)().executeTask("compute","computeMetabolicStats",{segmentationInfo:v,imageInfo:b});return(0,i.sg)(a.WorkerTypes.COMPUTE_STATISTICS,100),E}({segmentationIds:e,segmentIndex:t});return h}},13276:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(54889),i=n(60199),a=n(30722);async function r(e){const t=await(0,o.generateContourSetsFromLabelmap)({segmentations:e});if(!t?.length||!t[0].sliceContours.length)return;const{segments:n=[null,{label:"Unspecified",color:null,containedSegmentIndices:null}]}=e,r=(0,a.A)(e.segmentationId);if(!r)return;const s=n.findIndex((e=>!!e));return-1!==s?(n[s].segmentIndex=s,(0,i.A)(t[0],r.volumeId,n[s])):void 0}},14514:(e,t,n)=>{"use strict";function o(e,t){const{majorAxis:n,minorAxis:o,label:i="",sliceIndex:a}=e,[r,s]=n,[l,d]=o,c=[r,s,l,d];return{highlighted:!0,invalidated:!0,metadata:{toolName:"Bidirectional",...t.getViewReference({sliceIndex:a})},data:{handles:{points:c,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:i,cachedStats:{}},isLocked:!1,isVisible:!0}}n.d(t,{A:()=>o})},2397:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createLabelmapMemo:()=>s,createRleMemo:()=>d,restoreMemo:()=>l});var o=n(15327),i=n(49906);n(94021);const{VoxelManager:a,RLEVoxelMap:r}=o.utilities;function s(e,t){return d(e,t)}function l(e){const{segmentationVoxelManager:t,undoVoxelManager:n,redoVoxelManager:o}=this,a=!1===e?o:n;a.forEach((({value:e,pointIJK:n})=>{t.setAtIJKPoint(n,e)}));const r=a.getArrayOfModifiedSlices();(0,i.triggerSegmentationDataModified)(this.segmentationId,r)}function d(e,t){return{segmentationId:e,restoreMemo:l,commitMemo:c,segmentationVoxelManager:t,voxelManager:a.createRLEHistoryVoxelManager(t),id:o.utilities.uuidv4(),operationType:"labelmap"}}function c(){if(this.redoVoxelManager)return!0;if(!this.voxelManager.modifiedSlices.size)return!1;const{segmentationVoxelManager:e}=this,t=a.createRLEHistoryVoxelManager(e);r.copyMap(t.map,this.voxelManager.map);for(const e of this.voxelManager.modifiedSlices.keys())t.modifiedSlices.add(e);this.undoVoxelManager=t;const n=a.createRLEVolumeVoxelManager({dimensions:this.segmentationVoxelManager.dimensions});return this.redoVoxelManager=n,t.forEach((({index:t,pointIJK:o,value:i})=>{const a=e.getAtIJKPoint(o);a!==i&&n.setAtIndex(t,a)})),!0}},97492:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);async function i(e){const{viewportId:t,renderingEngineId:n,options:i}=e;let{segmentationId:a}=e;const r=(0,o.getEnabledElementByIds)(t,n);if(!r)throw new Error("element disabled");const{viewport:s}=r;if(!(s instanceof o.VolumeViewport))throw new Error("Segmentation only supports VolumeViewport");const{uid:l}=s.getDefaultActor();if(void 0===a&&(a=`${l}-based-segmentation-${i?.volumeId??o.utilities.uuidv4().slice(0,8)}`),i){const e=structuredClone(i);await o.volumeLoader.createLocalVolume(a,e)}else{const e=s.getVolumeId();o.volumeLoader.createAndCacheDerivedLabelmapVolume(e,{volumeId:a})}return a}},4334:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);const i=function(e,t=1,n="mergedLabelmap"){e.forEach((({direction:t,dimensions:n,origin:i,spacing:a})=>{if(!(o.utilities.isEqual(n,e[0].dimensions)&&o.utilities.isEqual(t,e[0].direction)&&o.utilities.isEqual(a,e[0].spacing)&&o.utilities.isEqual(i,e[0].origin)))throw new Error("labelmaps must have the same size and shape")}));const i=e[0],a=new(i.voxelManager.getConstructor())(i.voxelManager.getScalarDataLength());e.forEach((e=>{const n=e.voxelManager,o=n.getScalarDataLength();for(let e=0;e<o;e++)n.getAtIndex(e)===t&&(a[e]=t)}));const r={scalarData:a,metadata:i.metadata,spacing:i.spacing,origin:i.origin,direction:i.direction,dimensions:i.dimensions},s=o.cache.getVolume(n);let l;return s?(l=s,l.voxelManager.setCompleteScalarDataArray(a)):l=o.volumeLoader.createLocalVolume(n,r),l}},60199:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});var o=n(3823),i=n(82594);const a=.01;function r(e,t,n){const{sliceContours:o}=e,{segmentIndex:a,containedSegmentIndices:r}=n;let l;const d=(0,i.Hs)(t,a,r);for(const e of o){const t=s(e,d,l);t&&(l=t)}return l&&Object.assign(l,n),l}function s(e,t,n={maxMajor:0,maxMinor:0}){const{points:r}=e.polyData,{maxMinor:s,maxMajor:l}=n;let d,c=l*l,u=s*s;for(let e=0;e<r.length;e++)for(let n=e+1;n<r.length;n++){const s=r[e],l=r[n],h=o.eR.sqrDist(s,l);h<c||(h-a<c+a&&d||t.testCenter(s,l)&&(0,i.pW)(s,l,t)&&(c=h-a,d=[e,n],u=0))}if(!d)return;c=Math.sqrt(c+a);const h=r[d[0]],g=r[d[1]],p=o.eR.sub(o.eR.create(),h,g);let f;o.eR.scale(p,p,1/c);for(let e=0;e<r.length;e++)for(let n=e+1;n<r.length;n++){const s=r[e],l=r[n],d=o.eR.sqrDist(s,l);if(d<=u)continue;const c=o.eR.sub(o.eR.create(),s,l);Math.abs(o.eR.dot(c,p))/Math.sqrt(d)>a||t.testCenter(s,l)&&(0,i.pW)(s,l,t)&&(u=d,f=[e,n])}if(!f)return;u=Math.sqrt(u);return{majorAxis:[h,g],minorAxis:[r[f[0]],r[f[1]]],maxMajor:c,maxMinor:u,...e}}},84882:(e,t,n)=>{"use strict";function o(e,t,n){return(new Array(n+1).join(t)+e).slice(-n)}n.d(t,{A:()=>i});const i=function(e,t,n={}){const i=n.onFlood,a=n.onBoundary,r=n.equals,s=n.filter,l=n.diagonals||!1,d=v(t),c=function(){const e=function(e){const t=[],n=function(e){return e.split("").map((function(e){return parseInt(e,10)-1}))};for(let i=0;i<Math.pow(3,e);i+=1){const a=o(i.toString(3),"0",e);t.push(n(a))}return t}(t.length);return e.filter((function(e){const t=function(e){let t=0;for(let n=0;n<e.length;n+=1)0!==e[n]&&(t+=1);return t}(e);return 0!==t&&(1===t||l)}))}(),u=[],h=[],g=new Set,p=n.bounds;for(u.push({currentArgs:t});u.length>0;)f(u.pop());return{flooded:h};function f(e){const t=e.currentArgs,n=e.previousArgs;m(t)||(function(e){const[t,n,o=0]=e,i=t+32768+65536*(n+32768+65536*(o+32768));g.add(i)}(t),function(e){const t=v(e);return r?r(t,d):t===d}(t)?(function(e){h.push(e),i&&i(...e)}(t),function(e){for(let t=0;t<c.length;t+=1){const n=c[t],o=e.slice(0);for(let t=0;t<e.length;t+=1)o[t]+=n[t];!1!==s?.(o)&&(m(o)||u.push({currentArgs:o,previousArgs:e}))}}(t)):function(e){const[t,n,o=0]=e,i=t+32768+65536*(n+32768+65536*(o+32768));p?.set(i,e),a&&a(...e)}(n))}function m(e){const[t,n,o=0]=e,i=t+32768+65536*(n+32768+65536*(o+32768));return g.has(i)}function v(t){return e(...t)}}},14957:(e,t,n)=>{"use strict";n.d(t,{n:()=>a});var o=n(77609),i=n(48736);function a(e,t){const n=(0,o.getToolGroup)(e);if(void 0===n)return;const a=n._toolInstances;if(!Object.keys(a).length)return;if(t&&a[t])return[a[t]];return Object.values(a).filter((e=>e instanceof i.A))}},20527:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var o=n(6802),i=n(98870);function a(e){const t=(0,i.getSegmentation)(e),{annotationUIDsMap:n}=t.representationData.Contour;for(const[e,t]of n.entries()){if(Array.from(t).find((e=>(0,o.gw)(e).highlighted)))return e}}},83075:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(15327);const i=function(e){if(!e||e.length<=1)return;if(!o.utilities.isValidVolume(e))return;const t=o.cache.generateVolumeId(e);let n=o.cache.getVolume(t);return n||(n=o.volumeLoader.createAndCacheVolumeFromImagesSync(t,e),n)}},30722:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(15327),i=n(33283);const a=function(e){const{representationData:t}=(0,i.T)(e);let n,{volumeId:a}=t.Labelmap;if(a&&(n=o.cache.getVolume(a),n))return n;const{imageIds:r}=t.Labelmap;if(a=o.cache.generateVolumeId(r),!r||1===r.length)return;return o.utilities.isValidVolume(r)?(n=o.volumeLoader.createAndCacheVolumeFromImagesSync(a,r),n):void 0}},12853:(e,t,n)=>{"use strict";n.d(t,{b:()=>i});var o=n(15327);function i(e){const t=o.cache.getVolume(e);if(!t)return null;const n=t.referencedVolumeId;let i;if(n)i=o.cache.getVolume(n);else{const e=t.imageIds,n=o.cache.getImage(e[0]).referencedImageId,a=o.cache.getVolumeContainingImageId(n);i=a?.volume}return i}},46507:(e,t,n)=>{"use strict";n.d(t,{T:()=>r});var o=n(15327),i=n(98870),a=n(91963);function r(e,t,{viewport:n,searchRadius:r}){const l=(0,i.getSegmentation)(e).representationData.Labelmap;if(n instanceof o.BaseVolumeViewport){const{volumeId:e}=l,i=o.cache.getVolume(e);if(!i)return;const a=i.voxelManager,d=i.imageData,c=o.utilities.transformWorldToIndex(d,t),u=a.getAtIJK(c[0],c[1],c[2]),h=function(e,t,n,i,a){const r=(t,a)=>{const r=[e[0]+t,e[1]+a],s=n.canvasToWorld(r),l=i.get("voxelManager").voxelManager,d=o.utilities.transformWorldToIndex(i,s);return l.getAtIJK(d[0],d[1],d[2])};return s(r,t,a)}(n.worldToCanvas(t),u,n,d,r);return h?u:void 0}const d=(0,i.getCurrentLabelmapImageIdForViewport)(n.id,e);if(!o.cache.getImage(d))return;const c=(0,a.wV)(n.id,e),u=c?.actor.getMapper().getInputData(),h=o.utilities.transformWorldToIndex(u,t),g=u.getDimensions(),p=u.voxelManager||o.utilities.VoxelManager.createScalarVolumeVoxelManager({dimensions:g,scalarData:u.getPointData().getScalars().getData()}),f=p.getAtIJKPoint(h),m=function(e,t,n,o,i){const a=(t,o,i)=>{const a=[e[0]+t,e[1]+o,e[2]+i];return n.getAtIJK(a[0],a[1],a[2])};return s(a,o,i)}(h,0,p,f);return m?f:void 0}function s(e,t,n=1){const o=Array.from({length:2*n+1},((e,t)=>t-n));for(const n of o)for(const i of o)for(const a of o){if(0===n&&0===i&&0===a)continue;const o=e(n,i,a);if(void 0!==o&&t!==o)return!0}return!1}},71751:(e,t,n)=>{"use strict";n.d(t,{hX:()=>d});var o=n(15327),i=n(99737),a=n(98870),r=n(6802),s=n(92984),l=n(59452);function d(e,t,n={}){const d=(0,a.getSegmentation)(e),c=d.representationData,u=n?.representationType??Object.keys(c)[0];if(!u)throw new Error(`Segmentation ${e} does not have any representations`);switch(u){case i.SegmentationRepresentations.Labelmap:return function(e,t,{viewport:n}){const i=e.representationData.Labelmap;if(n instanceof o.BaseVolumeViewport){const{volumeId:e}=i,n=o.cache.getVolume(e);if(!n)return;return n.imageData.getScalarValueFromWorld(t)}const r=(0,a.getCurrentLabelmapImageIdsForViewport)(n.id,e.segmentationId);if(r.length>1)return void console.warn("Segment selection for labelmaps with multiple imageIds in stack viewports is not supported yet.");const s=r[0];if(!o.cache.getImage(s))return;const d=(0,l.wV)(n.id,e.segmentationId),c=d?.actor.getMapper().getInputData(),u=o.utilities.transformWorldToIndex(c,t),h=c.getDimensions(),g=c.voxelManager||o.utilities.VoxelManager.createScalarVolumeVoxelManager({dimensions:h,scalarData:c.getPointData().getScalars().getData()});return g.getAtIJKPoint(u)}(d,t,n);case i.SegmentationRepresentations.Contour:return function(e,t,{viewport:n}){const i=e.representationData.Contour,a=Array.from(i.annotationUIDsMap.keys()),{viewPlaneNormal:l}=n.getCamera();for(const e of a){const n=i.annotationUIDsMap.get(e);if(n)for(const i of n){const n=(0,r.gw)(i);if(!n)continue;const{polyline:a}=n.data.contour;if(o.utilities.isEqual(l,n.metadata.viewPlaneNormal)&&(0,s.isPointInsidePolyline3D)(t,a))return Number(e)}}}(d,t,n);default:return}}},78773:(e,t,n)=>{"use strict";n.d(t,{T:()=>s});var o=n(15327),i=n(99737),a=n(44460),r=n(54285);async function s({segmentationId:e,segmentIndices:t,mode:n="individual"}){(0,a.D)(),(0,r.sg)(i.WorkerTypes.COMPUTE_LARGEST_BIDIRECTIONAL,0);const s=(0,r.yR)(e,t);if(!s)return;const{operationData:l,segImageIds:d,reconstructableVolume:c,indices:u}=s,h=c?await async function({operationData:e,indices:t,mode:n}){const i=(0,r.o9)(e),{segmentationVoxelManager:a,segmentationImageData:s}=i,l={scalarData:a.getCompleteScalarDataArray(),dimensions:s.getDimensions(),spacing:s.getSpacing(),origin:s.getOrigin(),direction:s.getDirection()},d=await(0,o.getWebWorkerManager)().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:l,indices:t,mode:n});return d}({operationData:l,indices:u,mode:n}):await async function({segImageIds:e,indices:t,mode:n}){const{segmentationInfo:i}=(0,r.Dn)(e),a=await(0,o.getWebWorkerManager)().executeTask("compute","getSegmentLargestBidirectionalInternal",{segmentationInfo:i,indices:t,mode:n,isStack:!0});return a}({segImageIds:d,indices:u,mode:n});return(0,r.sg)(i.WorkerTypes.COMPUTE_LARGEST_BIDIRECTIONAL,100),h}},38440:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var o=n(15327),i=n(54285),a=n(40634),r=n(68915),s=n(99737),l=n(44460);const d=Math.pow(3e3/(4*Math.PI),1/3);const c=(e,t)=>{if(!e.array)return;const n=e.array.findIndex((e=>e.name===t.name));-1!==n?e.array[n]=t:e.array.push(t)},u=({stats:e,unit:t,spacing:n,segmentationImageData:o,imageVoxelManager:i})=>{if(e.mean.unit=t,e.max.unit=t,e.min.unit=t,"SUV"!==t)return e;const a=n.map((e=>Math.max(1,Math.round(1.1*d/e))));for(const r of e.maxIJKs){const s=h(r,a,o,i,n);if(!s)continue;const{mean:l}=s;(!e.peakValue||e.peakValue.value<=l.value)&&(e.peakValue={name:"peakValue",label:"Peak Value",value:l.value,unit:t},e.peakPoint={name:"peakLPS",label:"Peak SUV Point",value:r.pointLPS?[...r.pointLPS]:null,unit:null},c(e,e.peakValue),c(e,e.peakPoint))}if(e.volume&&e.mean){const n=e.volume.value,o=e.mean.value;e.lesionGlycolysis={name:"lesionGlycolysis",label:"Lesion Glycolysis",value:n*o,unit:`${e.volume.unit}·${t}`},c(e,e.lesionGlycolysis)}return e};function h(e,t,n,i,a){const{pointIJK:s,pointLPS:l}=e;if(!s)return;const d=s.map(((e,n)=>[e-t[n],e+t[n]]));return r.Ay.statsInit({storePointData:!1}),o.utilities.pointInShapeCallback(n,{pointInShapeFn:(e,n)=>{const o=(n[0]-s[0])/t[0],i=(n[1]-s[1])/t[1],a=(n[2]-s[2])/t[2];return o*o+i*i+a*a<=1},callback:({pointIJK:e,pointLPS:t})=>{const n=i.getAtIJKPoint(e);void 0!==n&&r.Ay.statsCallback({value:n,pointLPS:t,pointIJK:e})},boundsIJK:d}),r.Ay.getStatistics({spacing:a})}const g=async function({segmentationId:e,segmentIndices:t,mode:n="collective"}){(0,l.D)(),(0,i.sg)(s.WorkerTypes.COMPUTE_STATISTICS,0);const d=(0,i.yR)(e,t);if(!d)return;const{operationData:c,segVolumeId:h,segImageIds:g,reconstructableVolume:p,indices:f}=d,{refImageId:m,modalityUnitOptions:v}=(0,i.FI)(h,g),w=(0,a.N)(m,v);return p?await async function({operationData:e,indices:t,unit:n,mode:a}){const l=(0,i.o9)(e),{segmentationVoxelManager:d,imageVoxelManager:c,segmentationImageData:h,imageData:g}=l;if(!d||!h)return;const p=h.getSpacing(),{boundsIJK:f}=d;if(!f)return r.Ay.getStatistics({spacing:p});const m={scalarData:d.getCompleteScalarDataArray(),dimensions:h.getDimensions(),spacing:h.getSpacing(),origin:h.getOrigin(),direction:h.getDirection()},v={scalarData:c.getCompleteScalarDataArray(),dimensions:g.getDimensions(),spacing:g.getSpacing(),origin:g.getOrigin(),direction:g.getDirection()},w=await(0,o.getWebWorkerManager)().executeTask("compute","calculateSegmentsStatisticsVolume",{segmentationInfo:m,imageInfo:v,indices:t,mode:a});if((0,i.sg)(s.WorkerTypes.COMPUTE_STATISTICS,100),"collective"===a)return u({stats:w,unit:n,spacing:p,segmentationImageData:h,imageVoxelManager:c});{const e={};return Object.entries(w).forEach((([t,o])=>{e[t]=u({stats:o,unit:n,spacing:p,segmentationImageData:h,imageVoxelManager:c})})),e}}({operationData:c,indices:f,unit:w,mode:n}):await async function({segImageIds:e,indices:t,unit:n,mode:a}){(0,i.sg)(s.WorkerTypes.COMPUTE_STATISTICS,0);const{segmentationInfo:r,imageInfo:l}=(0,i.Dn)(e),d=await(0,o.getWebWorkerManager)().executeTask("compute","calculateSegmentsStatisticsStack",{segmentationInfo:r,imageInfo:l,indices:t,mode:a});(0,i.sg)(s.WorkerTypes.COMPUTE_STATISTICS,100);const c=r[0].spacing,h=r[0],g=l[0].voxelManager;if("collective"===a)return u({stats:d,unit:n,spacing:c,segmentationImageData:h,imageVoxelManager:g});{const e={};return Object.entries(d).forEach((([t,o])=>{e[t]=u({stats:o,unit:n,spacing:c,segmentationImageData:h,imageVoxelManager:g})})),e}}({segImageIds:g,indices:f,unit:w,mode:n})}},25758:(e,t,n)=>{"use strict";n.d(t,{O:()=>s});var o=n(15327),i=n(99737),a=n(64063),r=n(33283);function s(e){const t=(0,a.R1)(e);if(t)return t;const n=(0,r.T)(e);if(!n)throw new Error(`No segmentation found for segmentationId ${e}`);let s;if(n.representationData.Labelmap)s=function(e,t){const n=e.representationData[i.SegmentationRepresentations.Labelmap],a=new Set;n.imageIds?function(e,t){t.forEach((t=>{o.cache.getImage(t).voxelManager.getScalarData().forEach((t=>{0!==t&&e.add(t)}))}))}(a,n.imageIds):function(e,t){const n=o.cache.getVolume(t);n.voxelManager.forEach((({value:t})=>{0!==t&&e.add(t)}))}(a,t);return Array.from(a).map(Number).sort(((e,t)=>e-t))}(n,e);else if(n.representationData.Contour)s=function(e){const{annotationUIDsMap:t,geometryIds:n}=e.representationData.Contour||{};if(!n)throw new Error(`No geometryIds found for segmentationId ${e.segmentationId}`);const i=new Set([...t.keys()]);return n.forEach((e=>{const t=o.cache.getGeometry(e);i.add(t.data.segmentIndex)})),Array.from(i).sort(((e,t)=>e-t))}(n);else{if(!n.representationData.Surface)throw new Error(`Unsupported segmentation type: ${n.representationData}`);s=function(e){const t=e.representationData.Surface?.geometryIds??[];return Array.from(t.keys()).map(Number).sort(((e,t)=>e-t))}(n)}return(0,a.Dm)(e,s),s}},2733:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const o="\nconst MAX_STRENGTH = 65535f;\n\n// Workgroup size - X*Y*Z must be multiple of 32 for better performance\noverride workGroupSizeX = 1u;\noverride workGroupSizeY = 1u;\noverride workGroupSizeZ = 1u;\n\n// Compare the current voxel to neighbors using a 9x9x9 window\noverride windowSize = 9i;\n\nstruct Params {\n  size: vec3u,\n  iteration: u32,\n}\n\n// New structure to track bounds of modified voxels\nstruct Bounds {\n  minX: atomic<i32>,\n  minY: atomic<i32>,\n  minZ: atomic<i32>,\n  maxX: atomic<i32>,\n  maxY: atomic<i32>,\n  maxZ: atomic<i32>,\n}\n\n@group(0) @binding(0) var<uniform> params: Params;\n@group(0) @binding(1) var<storage> volumePixelData: array<f32>;\n@group(0) @binding(2) var<storage, read_write> labelmap: array<u32>;\n@group(0) @binding(3) var<storage, read_write> strengthData: array<f32>;\n@group(0) @binding(4) var<storage> prevLabelmap: array<u32>;\n@group(0) @binding(5) var<storage> prevStrengthData: array<f32>;\n@group(0) @binding(6) var<storage, read_write> updatedVoxelsCounter: array<atomic<u32>>;\n@group(0) @binding(7) var<storage, read_write> modifiedBounds: Bounds;\n\nfn getPixelIndex(ijkPos: vec3u) -> u32 {\n  let numPixelsPerSlice = params.size.x * params.size.y;\n  return ijkPos.x + ijkPos.y * params.size.x + ijkPos.z * numPixelsPerSlice;\n}\n\nfn updateBounds(position: vec3i) {\n  // Atomically update min bounds (use min operation)\n  let oldMinX = atomicMin(&modifiedBounds.minX, position.x);\n  let oldMinY = atomicMin(&modifiedBounds.minY, position.y);\n  let oldMinZ = atomicMin(&modifiedBounds.minZ, position.z);\n\n  // Atomically update max bounds (use max operation)\n  let oldMaxX = atomicMax(&modifiedBounds.maxX, position.x);\n  let oldMaxY = atomicMax(&modifiedBounds.maxY, position.y);\n  let oldMaxZ = atomicMax(&modifiedBounds.maxZ, position.z);\n}\n\n@compute @workgroup_size(workGroupSizeX, workGroupSizeY, workGroupSizeZ)\nfn main(\n  @builtin(global_invocation_id) globalId: vec3u,\n) {\n  // Make sure it will not get out of bounds for volume with sizes that\n  // are not multiple of workGroupSize\n  if (\n    globalId.x >= params.size.x ||\n    globalId.y >= params.size.y ||\n    globalId.z >= params.size.z\n  ) {\n    return;\n  }\n\n  // Initialize bounds for the first iteration\n  if (params.iteration == 0 && globalId.x == 0 && globalId.y == 0 && globalId.z == 0) {\n    // Initialize to opposite extremes to ensure any update will improve the bounds\n    atomicStore(&modifiedBounds.minX, i32(params.size.x));\n    atomicStore(&modifiedBounds.minY, i32(params.size.y));\n    atomicStore(&modifiedBounds.minZ, i32(params.size.z));\n    atomicStore(&modifiedBounds.maxX, -1);\n    atomicStore(&modifiedBounds.maxY, -1);\n    atomicStore(&modifiedBounds.maxZ, -1);\n  }\n\n  let currentCoord = vec3i(globalId);\n  let currentPixelIndex = getPixelIndex(globalId);\n\n  let numPixels = arrayLength(&volumePixelData);\n  let currentPixelValue = volumePixelData[currentPixelIndex];\n\n  if (params.iteration == 0) {\n    // All non-zero initial labels are given maximum strength\n    strengthData[currentPixelIndex] = select(MAX_STRENGTH, 0., labelmap[currentPixelIndex] == 0);\n\n    // Update bounds for non-zero initial labels\n    if (labelmap[currentPixelIndex] != 0) {\n      updateBounds(currentCoord);\n    }\n    return;\n  }\n\n  // It should at least copy the values from previous state\n  var newLabel = prevLabelmap[currentPixelIndex];\n  var newStrength = prevStrengthData[currentPixelIndex];\n\n  let window = i32(ceil(f32(windowSize - 1) * .5));\n  let minWindow = -1i * window;\n  let maxWindow = 1i * window;\n\n  for (var k = minWindow; k <= maxWindow; k++) {\n    for (var j = minWindow; j <= maxWindow; j++) {\n      for (var i = minWindow; i <= maxWindow; i++) {\n        // Skip current voxel\n        if (i == 0 && j == 0 && k == 0) {\n          continue;\n        }\n\n        let neighborCoord = currentCoord + vec3i(i, j, k);\n\n        //  Boundary conditions. Do not grow outside of the volume\n        if (\n          neighborCoord.x < 0i || neighborCoord.x >= i32(params.size.x) ||\n          neighborCoord.y < 0i || neighborCoord.y >= i32(params.size.y) ||\n          neighborCoord.z < 0i || neighborCoord.z >= i32(params.size.z)\n        ) {\n          continue;\n        }\n\n        let neighborIndex = getPixelIndex(vec3u(neighborCoord));\n        let neighborPixelValue = volumePixelData[neighborIndex];\n        let prevNeighborStrength = prevStrengthData[neighborIndex];\n        let strengthCost = abs(neighborPixelValue - currentPixelValue);\n        let takeoverStrength = prevNeighborStrength - strengthCost;\n\n        if (takeoverStrength > newStrength) {\n          newLabel = prevLabelmap[neighborIndex];\n          newStrength = takeoverStrength;\n        }\n      }\n    }\n  }\n\n  if (labelmap[currentPixelIndex] != newLabel) {\n    atomicAdd(&updatedVoxelsCounter[params.iteration], 1u);\n\n    // Update bounds for modified voxels\n    updateBounds(currentCoord);\n  }\n\n  labelmap[currentPixelIndex] = newLabel;\n  strengthData[currentPixelIndex] = newStrength;\n}\n"},95373:(e,t,n)=>{"use strict";n.r(t),n.d(t,{run:()=>o.e,runGrowCutForBoundingBox:()=>a.z,runGrowCutForSphere:()=>i.n,runOneClickGrowCut:()=>r.HW});var o=n(66499),i=n(73569),a=n(20271),r=n(16171)},66499:(e,t,n)=>{"use strict";n.d(t,{e:()=>s});var o=n(15327),i=n(2733);const a=2136746229.76,r={windowSize:3,maxProcessingTime:3e4,inspection:{numCyclesInterval:5,numCyclesBelowThreshold:3,threshold:1e-4}};async function s(e,t,n=r){const s=[8,8,4],{windowSize:l,maxProcessingTime:d}=Object.assign({},r,n),c=Object.assign({},r.inspection,n.inspection),u=o.cache.getVolume(e),h=o.cache.getVolume(t),[g,p,f]=u.dimensions;if(h.dimensions[0]!==g||h.dimensions[1]!==p||h.dimensions[2]!==f)throw new Error("Volume and labelmap must have the same size");let m=Math.floor(Math.sqrt(p**2+g**2+f**2)/2);m=Math.min(m,500);const v=h.voxelManager.getCompleteScalarDataArray();let w=u.voxelManager.getCompleteScalarDataArray();w instanceof Float32Array||(w=new Float32Array(w));const b={maxStorageBufferBindingSize:a,maxBufferSize:a},E=await(navigator.gpu?.requestAdapter()),I=await E.requestDevice({requiredLimits:b}),y=w.byteLength,_=m*Uint32Array.BYTES_PER_ELEMENT,C=6*Int32Array.BYTES_PER_ELEMENT,x=I.createShaderModule({code:i.A}),S=new Uint32Array([g,p,f,0]),T=I.createBuffer({size:S.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),A=I.createBuffer({size:y,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});I.queue.writeBuffer(A,0,w);const D=[0,1].map((()=>I.createBuffer({size:y,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST})));I.queue.writeBuffer(D[0],0,new Uint32Array(v));const M=[0,1].map((()=>I.createBuffer({size:y,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}))),R=I.createBuffer({size:_,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),P=I.createBuffer({size:C,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),O=new Int32Array([g,p,f,-1,-1,-1]);I.queue.writeBuffer(P,0,O);const k=I.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:4,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:5,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:6,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:7,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]}),L=[0,1].map((e=>{const t=D[e],n=M[e],o=D[(e+1)%2],i=M[(e+1)%2];return I.createBindGroup({layout:k,entries:[{binding:0,resource:{buffer:T}},{binding:1,resource:{buffer:A}},{binding:2,resource:{buffer:t}},{binding:3,resource:{buffer:n}},{binding:4,resource:{buffer:o}},{binding:5,resource:{buffer:i}},{binding:6,resource:{buffer:R}},{binding:7,resource:{buffer:P}}]})})),U=I.createComputePipeline({layout:I.createPipelineLayout({bindGroupLayouts:[k]}),compute:{module:x,entryPoint:"main",constants:{workGroupSizeX:s[0],workGroupSizeY:s[1],workGroupSizeZ:s[2],windowSize:l}}}),N=[Math.ceil(g/s[0]),Math.ceil(p/s[1]),Math.ceil(f/s[2])],V=I.createBuffer({size:_,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),B=d?performance.now()+d:0;let F=c.numCyclesInterval,W=0;for(let e=0;e<m;e++){S[3]=e,I.queue.writeBuffer(T,0,S);const t=I.createCommandEncoder(),n=t.beginComputePass();n.setPipeline(U),n.setBindGroup(0,L[e%2]),n.dispatchWorkgroups(N[0],N[1],N[2]),n.end(),t.copyBufferToBuffer(R,e*Uint32Array.BYTES_PER_ELEMENT,V,e*Uint32Array.BYTES_PER_ELEMENT,Uint32Array.BYTES_PER_ELEMENT),I.queue.submit([t.finish()]);if(e>0&&!(e%F)){await V.mapAsync(GPUMapMode.READ,0,_);const t=V.getMappedRange(0,_),n=new Uint32Array(t.slice(0))[e]/w.length;if(V.unmap(),e>=1&&n<c.threshold){if(F=1,W++,W===c.numCyclesBelowThreshold)break}else F=c.numCyclesInterval}if(B&&performance.now()>B){console.warn(`Exceeded processing time limit (${d})ms`);break}}const H=I.createCommandEncoder(),j=(m+1)%2,G=I.createBuffer({size:y,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),z=I.createBuffer({size:C,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});H.copyBufferToBuffer(D[j],0,G,0,y),H.copyBufferToBuffer(P,0,z,0,C),I.queue.submit([H.finish()]),await G.mapAsync(GPUMapMode.READ,0,y);const $=G.getMappedRange(0,y),q=new Uint32Array($);v.set(q),G.unmap(),await z.mapAsync(GPUMapMode.READ,0,C);const K=z.getMappedRange(0,C),Z=new Int32Array(K.slice(0));z.unmap();const J=Z[0],Y=Z[1],X=Z[2],Q=Z[3],ee=Z[4],te=Z[5];h.voxelManager.setCompleteScalarDataArray(v),h.voxelManager.clearBounds(),h.voxelManager.setBounds([[J,Q],[Y,ee],[X,te]])}},20271:(e,t,n)=>{"use strict";n.d(t,{z:()=>c});var o=n(15327),i=n(66499);const a=254,r=255,s=[-1/0,-995],l=[0,1900];async function d(e,t){const n=o.volumeLoader.createAndCacheDerivedLabelmapVolume(e.volumeId);return function(e,t,n){const{positiveSeedValue:o=a,positivePixelRange:i=l}=n,r=e.voxelManager.getCompleteScalarDataArray(),[s,d,c]=(t.voxelManager.getCompleteScalarDataArray(),t.dimensions),u=Math.floor(c/2),h=Math.max(u-3,0),g=Math.max(h+5,c),p=s*d;for(let e=h;e<g;e++){const n=e*p;for(let e=0;e<d;e++){const a=e*s;for(let e=0;e<s;e++){const s=n+a+e,l=r[s];l>=i[0]&&l<=i[1]&&t.voxelManager.setAtIndex(s,o)}}}}(e,n,t),function(e,t,n){const{negativeSeedValue:o=r,negativePixelRange:i=s}=n,a=e.voxelManager.getCompleteScalarDataArray(),[l,d,c]=t.dimensions,u=Math.floor(c/2),h=new Array(l*d).fill(!1),g=u*l*d,p=(e,n)=>{const r=[[e,n]];for(;r.length;){const[e,n]=r.shift(),s=n*l+e;if(e<0||e>=l||n<0||n>=d||h[s])continue;h[s]=!0;const c=g+s,u=a[c];u<i[0]||u>i[1]||(t.voxelManager.setAtIndex(c,o),r.push([e-1,n]),r.push([e+1,n]),r.push([e,n-1]),r.push([e,n+1]))}},f=(e,t,n,o)=>{for(let r=e;r!==t;r+=n){const e=o*l+r,t=a[g+e];if(t<i[0]||t>i[1])break;h[e]||p(r,o)}};for(let e=0;e<d;e++)f(0,l-1,1,e),f(l-1,0,-1,e)}(e,n,t),n}async function c(e,t,n){const{boundingBox:a}=t,{ijkTopLeft:r,ijkBottomRight:s}=a,l={minX:r[0],maxX:s[0],minY:r[1],maxY:s[1],minZ:r[2],maxZ:s[2]},c=o.utilities.createSubVolume(e,l,{targetBuffer:{type:"Float32Array"}}),u=await d(c,n);return await(0,i.e)(c.volumeId,u.volumeId),u}},73569:(e,t,n)=>{"use strict";n.d(t,{n:()=>p});var o=n(3823),i=n(15327),a=n(66499),r=n(4296);const{transformWorldToIndex:s}=i.utilities,l=254,d=255,c=.1,u=.8;function h(e,t){const n=e.imageData.getDirection(),i=o.eR.fromValues(n[3],n[4],n[5]),{center:a,radius:l}=t,d=e.imageData,c=o.eR.scaleAndAdd(o.eR.create(),a,i,-l),u=o.eR.scaleAndAdd(o.eR.create(),a,i,l);return function(e,t){const{topLeftWorld:n,bottomRightWorld:o}=t,i=s(e.imageData,n),a=s(e.imageData,o);return{...t,topLeftIJK:i,bottomRightIJK:a}}(e,(0,r.R)([u,c],d))}async function g(e,t,n,a){const r=await i.volumeLoader.createAndCacheDerivedLabelmapVolume(e.volumeId);return function(e,t,n,o){const i=e.voxelManager.getCompleteScalarDataArray(),a=n.center,[r,d,u]=e.dimensions,h=r*d,g=s(e.imageData,a),p=i[g[2]*h+g[1]*r+g[0]],f=o.positiveSeedValue??l,m=o.positiveSeedVariance??c,v=Math.abs(p*m),w=p-v,b=p+v,E=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],I=g[2]*h+g[1]*r+g[0];t.voxelManager.setAtIndex(I,f);const y=[g];for(;y.length;){const e=y.shift(),[n,o,a]=e;for(let e=0,s=E.length;e<s;e++){const s=E[e],l=n+s[0],c=o+s[1],g=a+s[2];if(l<0||l>=r||c<0||c>=d||g<0||g>=u)continue;const p=g*h+c*r+l,m=i[p];t.voxelManager.getAtIndex(p)===f||m<w||m>b||(t.voxelManager.setAtIndex(p,f),y.push([l,c,g]))}}}(e,r,t,a),function(e,t,n,a,r){const l=e.voxelManager.getCompleteScalarDataArray(),[c,h,g]=t.dimensions,p=c*h,{worldVecRowDir:f,worldVecSliceDir:m}=i.utilities.getVolumeDirectionVectors(t.imageData,a.getCamera()),v=s(e.imageData,n.center),w=l[v[2]*c*h+v[1]*c+v[0]],b=r.negativeSeedVariance??u,E=r?.negativeSeedValue??d,I=Math.abs(w*b),y=w-I,_=w+I,C=2*Math.PI/360,x=o.Yu.setAxisAngle(o.Yu.create(),m,C),S=o.eR.clone(f);for(let e=0;e<360;e++){const e=o.eR.scaleAndAdd(o.eR.create(),n.center,S,n.radius),i=s(t.imageData,e),[a,r,d]=i;if(o.eR.transformQuat(S,S,x),a<0||a>=c||r<0||r>=h||d<0||d>=g)continue;const u=a+r*c+d*p,f=l[u];(f<y||f>_)&&t.voxelManager.setAtIndex(u,E)}}(e,r,t,n,a),r}async function p(e,t,n,o){const r=function(e,t,n){const o=e.imageData,a=n.getCamera(),{ijkVecRowDir:r,ijkVecColDir:s}=i.utilities.getVolumeDirectionVectors(o,a);if([r,s].some((e=>!i.utilities.isEqual(Math.abs(e[0]),1)&&!i.utilities.isEqual(Math.abs(e[1]),1)&&!i.utilities.isEqual(Math.abs(e[2]),1))))return void console.warn("Oblique view is not supported!");const{boundsIJK:l}=h(e,t),d={minX:l[0][0],maxX:l[0][1]+1,minY:l[1][0],maxY:l[1][1]+1,minZ:l[2][0],maxZ:l[2][1]+1};return i.utilities.createSubVolume(e.volumeId,d,{targetBuffer:{type:"Float32Array"}})}(i.cache.getVolume(e),t,n),s=await g(r,t,n,o);return await(0,a.e)(r.volumeId,s.volumeId),s}},16171:(e,t,n)=>{"use strict";n.d(t,{HW:()=>d,sG:()=>l});var o=n(15327),i=n(66499),a=n(10564);const{transformWorldToIndex:r}=o.utilities,s=1e5;function l(e,t,n){const{dimensions:i,imageData:l}=e,[d,c,u]=i,h=e.voxelManager,g=h.getCompleteScalarDataArray(),p=d*c,f=n?.initialNeighborhoodRadius??a.Sp,m=n?.positiveStdDevMultiplier??a.ee,v=n?.negativeStdDevMultiplier??a.ag,w=n?.negativeSeedMargin??a.BX,b=n?.negativeSeedsTargetPatches??a.Zi,E=r(l,t).map(Math.round),I=h.toIndex(E);if(E[0]<0||E[0]>=d||E[1]<0||E[1]>=c||E[2]<0||E[2]>=u)return console.warn("Click position is outside volume bounds."),null;const y=o.utilities.calculateNeighborhoodStats(g,i,E,f);0===y.count&&(y.mean=g[I],y.stdDev=0);const _=y.mean-m*y.stdDev,C=y.mean+m*y.stdDev,x=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]];let S=1/0,T=1/0,A=1/0,D=-1/0,M=-1/0,R=-1/0;const P=new Set,O=[],k=g[I];if(!(k>=_&&k<=C))return console.warn("Clicked voxel intensity is outside the calculated positive range. No positive seeds generated."),{positiveSeedIndices:new Set,negativeSeedIndices:new Set};P.add(I),O.push(E),S=D=E[0],T=M=E[1],A=R=E[2];let L=0;for(;L<O.length&&P.size<s;){const[e,t,n]=O[L++];S=Math.min(e,S),T=Math.min(t,T),A=Math.min(n,A),D=Math.max(e,D),M=Math.max(t,M),R=Math.max(n,R);for(let o=0;o<x.length;o++){const[i,a,r]=x[o],l=e+i,h=t+a,f=n+r;if(l<0||l>=d||h<0||h>=c||f<0||f>=u)continue;const m=f*p+h*d+l;if(P.has(m))continue;const v=g[m];v>=_&&v<=C&&(P.add(m),P.size<s&&O.push([l,h,f]))}}if(P.size>=s&&console.debug(`Reached maximum number of positive seeds (${s}). Stopping BFS.`),0===P.size)return console.warn("No positive seeds found after BFS."),{positiveSeedIndices:new Set,negativeSeedIndices:new Set};let U=0,N=0;P.forEach((e=>{const t=g[e];U+=t,N+=t*t}));const V=P.size,B=U/V,F=N/V-B*B,W=v*Math.sqrt(Math.max(0,F)),H=Math.max(0,S-w),j=Math.max(0,T-w),G=Math.max(0,A-w),z=Math.min(d-1,D+w),$=Math.min(c-1,M+w),q=Math.min(u-1,R+w),K=new Set;let Z=0,J=0;const Y=b*a.gN;for(;J<b&&Z<Y;){Z++;const e=Math.floor(Math.random()*(z-H+1)+H),t=Math.floor(Math.random()*($-j+1)+j),n=Math.floor(Math.random()*(q-G+1)+G),o=n*p+t*d+e;if(P.has(o)||K.has(o))continue;const i=g[o];if(Math.abs(i-B)>W){let o=!1;for(let i=-1;i<=1;i++){const a=t+i;if(!(a<0||a>=c))for(let t=-1;t<=1;t++){const i=e+t;if(i<0||i>=d)continue;const r=n*p+a*d+i;P.has(r)||K.has(r)||(K.add(r),o=!0)}}o&&J++}}return 0===K.size&&console.warn("Could not find any negative seeds. GrowCut might fail or produce poor results."),console.debug("positiveSeedIndices",P.size),console.debug("negativeSeedIndices",K.size),{positiveSeedIndices:P,negativeSeedIndices:K}}async function d({referencedVolumeId:e,worldPosition:t,options:n}){const r=o.cache.getVolume(e),d=o.volumeLoader.createAndCacheDerivedLabelmapVolume(e);d.voxelManager.forEach((({index:e,value:t})=>{0!==t&&d.voxelManager.setAtIndex(e,0)}));const c=n.seeds??l(r,t,n),u=n?.positiveSeedValue??a.VD,h=n?.negativeSeedValue??a.bs;if(!c)return null;const{positiveSeedIndices:g,negativeSeedIndices:p}=c;return g.size<10||g.size>s||p.size<10?(console.warn("Not enough seeds found. GrowCut might fail or produce poor results."),d):(g.forEach((e=>{d.voxelManager.setAtIndex(e,u)})),p.forEach((e=>{d.voxelManager.setAtIndex(e,h)})),await(0,i.e)(e,d.volumeId,n),d)}},93759:(e,t,n)=>{"use strict";n.r(t),n.d(t,{IslandRemoval:()=>x.A,LabelmapMemo:()=>C,SegmentStatsCalculator:()=>h.A,VolumetricCalculator:()=>u.Ay,computeMetabolicStats:()=>k.B,computeStackLabelmapFromVolume:()=>M._,computeVolumeLabelmapFromStack:()=>R.a,contourAndFindLargestBidirectional:()=>p.A,createBidirectionalToolData:()=>f.A,createLabelmapVolumeForViewport:()=>r.A,createMergedLabelmapForIndex:()=>a.A,floodFill:()=>l.A,getBrushSizeForToolGroup:()=>d.A,getBrushThresholdForToolGroup:()=>c.Q,getBrushToolInstances:()=>y.n,getHoveredContourSegmentationAnnotation:()=>I.L,getOrCreateImageVolume:()=>T.A,getOrCreateSegmentationVolume:()=>S.A,getReferenceVolumeForSegmentationVolume:()=>P.b,getSegmentIndexAtLabelmapBorder:()=>E.T,getSegmentIndexAtWorldPoint:()=>b.hX,getSegmentLargestBidirectional:()=>O.T,getStatistics:()=>A.A,getUniqueSegmentIndices:()=>w.O,growCut:()=>_,invalidateBrushCursor:()=>v.E,rectangleROIThresholdVolumeByRange:()=>i.A,segmentContourAction:()=>m.A,setBrushSizeForToolGroup:()=>d.M,setBrushThresholdForToolGroup:()=>c.K,thresholdSegmentationByRange:()=>g.A,thresholdVolumeByRange:()=>o.A,triggerSegmentationRender:()=>s.h6,triggerSegmentationRenderBySegmentationId:()=>s.fy,validateLabelmap:()=>D});var o=n(8582),i=n(52323),a=n(4334),r=n(97492),s=n(24917),l=n(84882),d=n(17014),c=n(49492),u=n(68915),h=n(13179),g=n(73706),p=n(13276),f=n(14514),m=n(22592),v=n(35706),w=n(25758),b=n(71751),E=n(46507),I=n(20527),y=n(14957),_=n(95373),C=n(2397),x=n(67912),S=n(30722),T=n(83075),A=n(38440),D=n(21345),M=n(93690),R=n(6994),P=n(12853),O=n(78773),k=n(88274)},35706:(e,t,n)=>{"use strict";n.d(t,{E:()=>r});var o=n(77609),i=n(58640),a=n(14957);function r(e){const t=(0,o.getToolGroup)(e);if(void 0===t)return;(0,a.n)(e).forEach((e=>{e.invalidateBrushCursor()}));const n=t.getViewportsInfo();if(!Object.keys(n).map((e=>n[e])).length)return;const r=t.getViewportIds();(0,i.A)(r)}},82594:(e,t,n)=>{"use strict";n.d(t,{Hs:()=>r,pW:()=>a});var o=n(15327),i=n(3823);function a(e,t,n){const o=n.toIJK(e),a=n.toIJK(t),r=i.eR.create(),{testIJK:s}=n,l=i.eR.sub(i.eR.create(),o,a),d=Math.round(Math.max(...l.map(Math.abs)));if(d<2)return!0;const c=i.eR.scale(i.eR.create(),l,1/d);for(let e=1;e<d;e++)if(i.eR.scaleAndAdd(r,a,c,e),!s(r))return!1;return!0}function r(e,t,n){const a=o.cache.getVolume(e);if(a)return function({dimensions:e,imageData:t,voxelManager:n,segmentIndex:o,containedSegmentIndices:a}){const r=e[0],s=r*e[1];return{testCenter:(e,l)=>{const d=i.eR.add(i.eR.create(),e,l).map((e=>e/2)),c=t.worldToIndex(d).map(Math.round),[u,h,g]=c,p=u+h*r+g*s,f=n.getAtIndex(p);return f===o||a?.has(f)},toIJK:e=>t.worldToIndex(e),testIJK:e=>{const[t,i,l]=e,d=Math.round(t)+Math.round(i)*r+Math.round(l)*s,c=n.getAtIndex(d);return c===o||a?.has(c)}}}({dimensions:a.dimensions,imageData:a.imageData,voxelManager:a.voxelManager,segmentIndex:t,containedSegmentIndices:n});console.warn(`No volume found for ${e}`)}},67912:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(15327),i=n(27963);const{RLEVoxelMap:a,VoxelManager:r}=o.utilities;var s;!function(e){e[e.SEGMENT=-1]="SEGMENT",e[e.ISLAND=-2]="ISLAND",e[e.INTERIOR=-3]="INTERIOR",e[e.EXTERIOR=-4]="EXTERIOR",e[e.INTERIOR_SMALL=-5]="INTERIOR_SMALL",e[e.INTERIOR_TEST=-6]="INTERIOR_TEST"}(s||(s={}));class l{constructor(e){this.fillInternalEdge=!1,this.maxInternalRemove=128,this.maxInternalRemove=e?.maxInternalRemove??this.maxInternalRemove,this.fillInternalEdge=e?.fillInternalEdge??this.fillInternalEdge}initialize(e,t,n){const o=!!t.sourceVoxelManager,l=o?t.sourceVoxelManager:t,d=o?t:r.createRLEHistoryVoxelManager(l),{segmentIndex:c=1,previewSegmentIndex:u=1}=n,h=n.points||l.getPoints();if(!h?.length)return;const g=l.getBoundsIJK().map(((e,t)=>[Math.min(e[0],...h.map((e=>e[t]))),Math.max(e[1],...h.map((e=>e[t])))]));if(g.find((e=>e[0]<0||e[1]>65535)))return;const{toIJK:p,fromIJK:f,boundsIJKPrime:m,error:v}=(0,i.A)(e,g);if(v)return void console.warn("Not performing island removal for planes not orthogonal to acquisition plane",v);const[w,b,E]=f(l.dimensions),I=new a(w,b,E);return I.fillFrom(((e,t,n)=>{const o=l.toIndex(p([e,t,n])),i=l.getAtIndex(o);if(i===u||i===c)return s.SEGMENT}),m),I.normalizer={toIJK:p,fromIJK:f,boundsIJKPrime:m},this.segmentSet=I,this.previewVoxelManager=d,this.segmentIndex=c,this.previewSegmentIndex=u??c,this.selectedPoints=h,!0}floodFillSegmentIsland(){const{selectedPoints:e,segmentSet:t}=this;let n=0;const{fromIJK:o}=t.normalizer;return e.forEach((e=>{const i=o(e),a=t.toIndex(i),[r,l,d]=i;t.get(a)===s.SEGMENT&&(n+=t.floodFill(r,l,d,s.ISLAND))})),n}removeExternalIslands(){const{previewVoxelManager:e,segmentSet:t}=this,{toIJK:n}=t.normalizer;t.forEach(((o,i)=>{const[,a,r]=t.toIJK(o);if(i.value!==s.ISLAND)for(let t=i.start;t<i.end;t++){const o=n([t,a,r]),i=e.getAtIJKPoint(o);e.setAtIJKPoint(o,void 0===i?0:null)}}),{rowModified:!0})}removeInternalIslands(){const{segmentSet:e,previewVoxelManager:t,previewSegmentIndex:n}=this,{height:o,normalizer:i,width:a}=e,{toIJK:r}=i;return e.forEachRow(((t,n)=>{let o;for(const i of[...n])if(i.value===s.ISLAND)if(o){for(let n=o.end;n<i.start;n++)e.set(t+n,s.INTERIOR);o=i}else{if(this.fillInternalEdge&&i.start>0)for(let n=0;n<i.start;n++)e.set(t+n,s.INTERIOR);o=i}if(this.fillInternalEdge&&o?.end<a)for(let n=o.end;n<a;n++)e.set(t+n,s.INTERIOR)})),e.forEach(((t,n)=>{if(n.value!==s.INTERIOR)return;const[,i,a]=e.toIJK(t),r=i>0?e.getRun(i-1,a):null,d=i+1<o?e.getRun(i+1,a):null,c=i===o-1,u=0===i,h=l.covers(n,r)||u&&this.fillInternalEdge,g=l.covers(n,d)||c&&this.fillInternalEdge;!(n.end-n.start>2)||h&&g||e.floodFill(n.start,i,a,s.EXTERIOR,{singlePlane:!0})})),e.forEach(((t,n)=>{if(n.value!==s.INTERIOR)return;const[,o,i]=e.toIJK(t),a=e.floodFill(n.start,o,i,s.INTERIOR_TEST)>this.maxInternalRemove?s.EXTERIOR:s.INTERIOR_SMALL;e.floodFill(n.start,o,i,a)})),e.forEach(((o,i)=>{if(i.value===s.INTERIOR_SMALL)for(let a=i.start;a<i.end;a++){const i=r(e.toIJK(o+a));t.setAtIJKPoint(i,n)}})),t.getArrayOfModifiedSlices()}static covers(e,t){if(!t)return!1;let{start:n}=e;const{end:o}=e;for(const e of t)if(n>=e.start&&n<e.end&&(n=e.end,n>=o))return!0;return!1}}},52323:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(47807),i=n(67847),a=n(40336),r=n(8582),s=n(37162);const l=function(e,t,n,l){const d=e.map((e=>o.state.getAnnotation(e)));let c;!function(e){const t=[a.A.toolName,i.A.toolName];for(const n of e){const e=n.metadata.toolName;if(!t.includes(e))throw new Error("rectangleROIThresholdVolumeByRange only supports RectangleROIThreshold and RectangleROIStartEndThreshold annotations")}}(d);for(let e=0;e<n.length;e++){n[e].volume.voxelManager.getScalarDataLength()!==t.voxelManager.getScalarDataLength()&&0!==e||(c=(0,s.A)(d,n[e].volume,l))}const u=(0,r.A)(t,n,{...l,boundsIJK:c,segmentationId:l.segmentationId});return u.modified(),u}},22592:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var o=n(15327),i=n(47807),a=n(13276),r=n(14514),s=n(25072),l=n(70758),d=n(60740);async function c(e,t){console.warn("Deprecation Alert: There is a new getSegmentLargestBidirectional function that handles volume, stack and individual segment cases properly. This function is deprecated and will be removed in a future version.");const{data:n}=t,d=(0,o.getEnabledElement)(e),c=(n.getSegment||u)(d,n);if(!c)return;const h=d.viewport.getFrameOfReferenceUID(),g=(0,l.K)(),{segmentIndex:p,segmentationId:f}=c,m=i.state.getAnnotations(this.toolName||s.A.toolName,h);let v=!1;const w=m.filter((e=>{const t=e.data.segment;return!!t&&(t.segmentationId===f&&t.segmentIndex===p&&(v=!0,e.data.segment=t),!0)}));let b;if(v||w.push({data:{segment:c}}),w.forEach((async e=>{const t=[],n=e.data.segment,{segmentIndex:o,segmentationId:s}=n;t[o]=n,i.state.removeAnnotation(e.annotationUID);const l=await(0,a.A)({...g.find((e=>e.segmentationId===s)),segments:t});if(!l)return;const u=(0,r.A)(l,d.viewport);u.annotationUID=e.annotationUID,u.data.segment=n;const p=i.state.addAnnotation(u,h);if(n.segmentIndex===c.segmentIndex&&n.segmentationId===c.segmentationId){b=l;const{style:e}=c;e&&i.config.style.setAnnotationStyles(p,e)}})),b){const{sliceIndex:t}=b,n=d.viewport.getImageIds();o.utilities.jumpToSlice(e,{imageIndex:n.length-1-t}),d.viewport.render()}else console.warn("No bidirectional found");return b}function u(e,t){const n=(0,l.K)();if(!n.length)return;const o=t.segmentationId||n[0].segmentationId,i=t.segmentIndex??(0,d.Q)(o);if(!i)return;const a=t.segmentData?.get(i);return{label:`Segment ${i}`,segmentIndex:i,segmentationId:o,...a}}},73706:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(49906),i=n(64063);const a=function(e,t,n,a,r){if(!r)throw new Error("Segmentation ID is required to be passed inside thresholdSegmentationByRange");const{baseVolumeIdx:s,volumeInfoList:l}=(0,i.zf)(e,n),{voxelManager:d}=l[s],c=d,u=e.voxelManager.getScalarDataLength(),h=e.voxelManager;return l.forEach((e=>{const{volumeSize:n}=e;n===u?function(e,t,n,o){const{lower:i,upper:a}=o,r=e.getScalarDataLength();for(let o=0;o<r;o++)if(e.getAtIndex[o]===n){const r=t.getAtIndex(o);e.setAtIndex(o,r>=i&&r<=a?n:0)}}(h,c,t,e):function(e,t,n,o,a,r,s){const{imageData:l,lower:d,upper:c,dimensions:u}=o;let h,g,p;const f=e.getScalarDataLength();for(let t=0;t<f;t++)if(f.getAtIndex(t)===n){const o=(0,i.Q5)(l,u,a[r].spacing,a[r].imageData.getPoint(t)),f=({value:e})=>{h+=1,e>=p.lower&&e<=p.upper&&(g+=1)};h=0,g=0,p={lower:d,upper:c};let m=!1;e.forEach(f,{imageData:l,boundsIJK:o}),m=0===s?g>0:g===h,e.setAtIndex(t,m?n:0)}}(h,0,t,e,l,s,a)})),(0,o.triggerSegmentationDataModified)(r),e}},8582:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(49906),i=n(64063);const a=function(e,t,n){const{imageData:a}=e,{overwrite:r,boundsIJK:s,segmentationId:l}=n;if(!l)throw new Error("Segmentation ID is required to be passed inside thresholdVolumeByRange as options");const d=n?.overlapType||0,c=e.voxelManager,u=e.voxelManager.getScalarDataLength();if(r)for(let e=0;e<u;e++)c.setAtIndex(e,0);const{baseVolumeIdx:h,volumeInfoList:g}=(0,i.zf)(e,t);let p,f,m;const v=(e,t,n)=>{const{imageData:o,dimensions:a,lower:r,upper:s}=e,l=(0,i.Q5)(o,a,t,n);f=0,p=0,m={lower:r,upper:s};let c=!1;const{voxelManager:u}=o.get("voxelManager");return u.forEach((({value:e})=>{f+=1,e>=m.lower&&e<=m.upper&&(p+=1)}),{imageData:o,boundsIJK:l}),0===d?c=p>0:1==d&&(c=p===f),c},w=(e,t)=>{const{imageData:n,lower:o,upper:i}=e,a=n.get("voxelManager").voxelManager,r=a.toIndex(t),s=a.getAtIndex(r);return!(s<=o||s>=i)};return e.voxelManager.forEach((({index:e,pointIJK:t,pointLPS:o})=>{let i=g.length>0;for(let e=0;e<g.length&&(i=g[e].volumeSize===u?w(g[e],t):v(g[e],g[h].spacing,o),i);e++);i&&c.setAtIndex(e,n.segmentIndex||1)}),{imageData:a,boundsIJK:s}),(0,o.triggerSegmentationDataModified)(n.segmentationId),e}},64063:(e,t,n)=>{"use strict";n.d(t,{Dm:()=>u,HM:()=>d,Q5:()=>r,R1:()=>c,zf:()=>s});var o=n(15327),i=n(87063);const a=(e,t)=>JSON.stringify(e)===JSON.stringify(t);function r(e,t,n,a){const r=n[0]/2,s=n[1]/2,l=n[2]/2,d=new Array(8);d[0]=o.utilities.transformWorldToIndex(e,[a[0]-r,a[1]-s,a[2]-l]);const c=[[1,-1,-1],[-1,1,-1],[1,1,-1],[-1,-1,1],[1,-1,1],[-1,1,1],[1,1,1]];for(let t=0;t<7;t++){const[n,i,u]=c[t];d[t+1]=o.utilities.transformWorldToIndex(e,[a[0]+n*r,a[1]+i*s,a[2]+u*l])}return(0,i.g)(d,t)}function s(e,t){const{spacing:n}=e,o=e.voxelManager.getScalarDataLength(),i=[];let r=0;for(let e=0;e<t.length;e++){const{imageData:s,spacing:l,dimensions:d,voxelManager:c}=t[e].volume,u=t[e].volume.voxelManager.getScalarDataLength();u===o&&a(l,n)&&(r=e);const h=t[e].lower,g=t[e].upper;i.push({imageData:s,lower:h,upper:g,spacing:l,dimensions:d,volumeSize:u,voxelManager:c})}return{volumeInfoList:i,baseVolumeIdx:r}}const l=new Map,d=e=>{const t=l.get(e);t&&(t.isDirty=!0)},c=e=>{const t=l.get(e);return t&&!t.isDirty?t.indices:null},u=(e,t)=>{l.set(e,{indices:t,isDirty:!1})}},54285:(e,t,n)=>{"use strict";n.d(t,{Dn:()=>h,FI:()=>g,o9:()=>u,sg:()=>d,yR:()=>c});var o=n(15327),i=n(60740),a=n(33283),r=n(40905),s=n(38732),l=n(62753);const d=(e,t)=>{(0,o.triggerEvent)(o.eventTarget,o.Enums.Events.WEB_WORKER_PROGRESS,{progress:t,type:e})},c=(e,t)=>{const n=(0,a.T)(e),{representationData:r}=n,{Labelmap:s}=r;if(!s)return console.debug("No labelmap found for segmentation",e),null;const l=s.volumeId,d=s.imageIds,c={segmentationId:e,volumeId:l,imageIds:d};let u=!1;if(d){const e=d.map((e=>o.cache.getImage(e).referencedImageId));u=o.utilities.isValidVolume(e)}let h=t;return h?Array.isArray(h)||(h=[h,255]):h=[(0,i.Q)(e)],{operationData:c,segVolumeId:l,segImageIds:d,reconstructableVolume:u,indices:h}},u=e=>(0,r.S)({operationData:e,strategy:{ensureSegmentationVolumeFor3DManipulation:s.A.ensureSegmentationVolumeFor3DManipulation,ensureImageVolumeFor3DManipulation:l.A.ensureImageVolumeFor3DManipulation}}),h=e=>{const t=[],n=[];for(const i of e){const e=o.cache.getImage(i),a=e.getPixelData(),{origin:r,direction:s,spacing:l,dimensions:d}=o.utilities.getImageDataMetadata(e);t.push({scalarData:a,dimensions:d,spacing:l,origin:r,direction:s});const c=e.referencedImageId;if(c){const e=o.cache.getImage(c);if(!e)continue;const t=e.getPixelData(),i=e.voxelManager,a=[e.rowPixelSpacing,e.columnPixelSpacing];n.push({scalarData:t,dimensions:i?i.dimensions:[e.columns,e.rows,1],spacing:a})}}return{segmentationInfo:t,imageInfo:n}},g=(e,t)=>{let n;if(e){const t=o.cache.getVolume(e).imageIds,i=o.cache.getImage(t[0]);i&&(n=i.referencedImageId)}else if(t?.length){n=o.cache.getImage(t[0]).referencedImageId}const i=o.cache.getImage(n),a=o.metaData.get("scalingModule",n);return{refImageId:n,modalityUnitOptions:{isPreScaled:Boolean(i.preScale?.scaled),isSuvScaled:"number"==typeof a?.suvbw}}}},21345:(e,t,n)=>{"use strict";n.r(t),n.d(t,{validate:()=>r,validatePublic:()=>a});var o=n(15327);function i(e){if("volumeId"in e){if(!o.cache.getVolume(e.volumeId))throw new Error(`volumeId of ${e.volumeId} not found in cache, you should load and cache volume before adding segmentation`)}else{if(!("imageIds"in e))throw new Error("The segmentationInput.representationData is undefined, please provide a valid representationData");if(!e.imageIds)throw new Error("The segmentationInput.representationData.imageIds is undefined, please provide a valid representationData.imageIds for stack data")}}function a(e){if(!e.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");i(e.representation.data)}function r(e){i(e)}},1355:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(44049),i=n(99737);function a(e,t,n){e.data.label=n,(0,o.triggerAnnotationModified)(e,t,i.ChangeTypes.LabelChange)}},71132:(e,t,n)=>{"use strict";n.d(t,{N:()=>i.A,S:()=>o.A});var o=n(34331),i=n(52734)},52734:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var o=n(15327),i=n(30045),a=n(94762);let r,s={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1};const l=5;function d(e){const t=(0,a.bV)(e);if(!t)return;if(!t?.imageIds?.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const n=(0,i.k)(e);if(!n)return;const r=n||{};if(r.enabled=r.enabled&&(r.indicesToRequest?.length??0)>0,!1===r.enabled)return;function l(e){const t=r.indicesToRequest.indexOf(e);t>-1&&r.indicesToRequest.splice(t,1)}const c=r.indicesToRequest.slice(),{currentImageIdIndex:h}=t;if(c.forEach((e=>{const n=t.imageIds[e];if(!n)return;(Math.abs(h-e)<6?o.cache.getImageLoadObject(n):o.cache.isLoaded(n))&&l(e)})),!r.indicesToRequest.length)return;s.preserveExistingPool||o.imageLoadPoolManager.filterRequests((0,a.Pg)(t));const g=(n,i)=>o.imageLoader.loadAndCacheImage(n,i).then((()=>function(n){l(t.imageIds.indexOf(n));const i=o.cache.getCachedImageBasedOnImageURI(n),{stats:a}=r,s=i?.image?.decodeTimeInMS||0;if(s){a.imageIds.set(n,s),a.decodeTimeInMS+=s;const e=i?.image?.loadTimeInMS||0;a.loadTimeInMS+=e}if(!r.indicesToRequest.length&&i?.sizeInBytes){const{sizeInBytes:t}=i,n=o.cache.getMaxCacheSize()/4/t;if(r.cacheFill){if(a.imageIds.size){a.fillTime=Date.now()-a.start;const{size:e}=a.imageIds;a.fillSize=e}}else a.initialTime=Date.now()-a.start,a.initialSize=a.imageIds.size,u(e,n),d(e)}}(n)));r.indicesToRequest.forEach((e=>{const n=t.imageIds[e],i={requestType:a.y9};o.imageLoadPoolManager.addRequest(g.bind(null,n,i),a.y9,{imageId:n},a.Lr)}))}function c(e){clearTimeout(r),r=setTimeout((function(){const t=e.target;try{u(t),d(t)}catch(e){return}}),l)}const u=(e,t)=>{const n=(0,a.bV)(e);if(!n)return;if(!n.imageIds?.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const{currentImageIdIndex:o}=n;let{maxAfter:r=2,minBefore:l=2}=s;const{directionExtraImages:d=10}=s,c=(0,i.k)(e)||{indicesToRequest:[],currentImageIdIndex:o,stackCount:0,enabled:!0,direction:1,stats:{start:Date.now(),imageIds:new Map,decodeTimeInMS:0,loadTimeInMS:0,totalBytes:0}},u=o-c.currentImageIdIndex;if(c.direction=u<0?-1:1,c.currentImageIdIndex=o,c.enabled=!0,c.stackCount<100&&(c.stackCount+=d),Math.abs(u)>r||!u)if(c.stackCount=0,t){const e=o/n.imageIds.length;l=Math.ceil(t*e),r=Math.ceil(t*(1-e)),c.cacheFill=!0}else c.cacheFill=!1;else u<0?(l+=c.stackCount,r=0):(r+=c.stackCount,l=0);const h=Math.max(0,o-l),g=Math.min(n.imageIds.length-1,o+r),p=[];for(let e=o+1;e<=g;e++)p.push(e);for(let e=o-1;e>=h;e--)p.push(e);c.indicesToRequest=p,(0,i.P)(e,c)};const h={enable:e=>{const t=(0,a.bV)(e);if(!t)return;if(!t.imageIds?.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");u(e),d(e),e.removeEventListener(o.Enums.Events.STACK_NEW_IMAGE,c),e.addEventListener(o.Enums.Events.STACK_NEW_IMAGE,c);const n=(0,a.m0)(e);o.eventTarget.removeEventListener(o.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n),o.eventTarget.addEventListener(o.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n)},disable:function(e){clearTimeout(r),e.removeEventListener(o.Enums.Events.STACK_NEW_IMAGE,c);const t=(0,a.m0)(e);o.eventTarget.removeEventListener(o.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);const n=(0,i.k)(e);n&&(n.enabled=!1)},getConfiguration:function(){return s},setConfiguration:function(e){s=e}}},34331:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var o=n(15327),i=n(30045),a=n(94762);let r,s={maxImagesToPrefetch:1/0,preserveExistingPool:!0};const l=10;function d(e){const t=(0,i.k)(e);if(!t)return;const n=t||{},r=(0,a.bV)(e);if(!r?.imageIds?.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const{currentImageIdIndex:l}=r;if(n.enabled=n.enabled&&(n.indicesToRequest?.length??0)>0,!1===n.enabled)return;function d(e){const t=n.indicesToRequest.indexOf(e);t>-1&&n.indicesToRequest.splice(t,1)}t.indicesToRequest.sort(((e,t)=>e-t));if(n.indicesToRequest.slice().forEach((function(e){const t=r.imageIds[e];if(!t)return;(Math.abs(l-e)<6?o.cache.getImageLoadObject(t):o.cache.isLoaded(t))&&d(e)})),!n.indicesToRequest.length)return;s.preserveExistingPool||o.imageLoadPoolManager.clearRequestStack(a.y9);const c=(0,a.zo)(n.indicesToRequest,r.currentImageIdIndex);let u,h;let g=c.low,p=c.high;const f=[];for(;g>=0||p<n.indicesToRequest.length;){const e=r.currentImageIdIndex,t=!(e-n.indicesToRequest[g]>s.maxImagesToPrefetch)&&g>=0,o=!(n.indicesToRequest[p]-e>s.maxImagesToPrefetch)&&p<n.indicesToRequest.length;if(!o&&!t)break;t&&(h=n.indicesToRequest[g--],u=r.imageIds[h],f.push(u)),o&&(h=n.indicesToRequest[p++],u=r.imageIds[h],f.push(u))}const m=(e,t)=>o.imageLoader.loadAndCacheImage(e,t);f.forEach((e=>{const t={requestType:a.y9};o.imageLoadPoolManager.addRequest(m.bind(null,e,t),a.y9,{imageId:e},a.Lr)}))}function c(e){clearTimeout(r),r=setTimeout((function(){const t=e.target;try{d(t)}catch(e){return}}),l)}const u={enable:function(e){const t=(0,a.bV)(e);if(!t||!t.imageIds||0===t.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const n={indicesToRequest:(0,a.y1)(0,t.imageIds.length-1),enabled:!0,direction:1},r=n.indicesToRequest.indexOf(t.currentImageIdIndex);n.indicesToRequest.splice(r,1),(0,i.P)(e,n),d(e),e.removeEventListener(o.Enums.Events.STACK_NEW_IMAGE,c),e.addEventListener(o.Enums.Events.STACK_NEW_IMAGE,c);const s=(0,a.m0)(e);o.eventTarget.removeEventListener(o.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,s),o.eventTarget.addEventListener(o.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,s)},disable:function(e){clearTimeout(r),e.removeEventListener(o.Enums.Events.STACK_NEW_IMAGE,c);const t=(0,a.m0)(e);o.eventTarget.removeEventListener(o.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);const n=(0,i.k)(e);n&&n.indicesToRequest.length&&(n.enabled=!1,o.imageLoadPoolManager.clearRequestStack(a.y9))},getConfiguration:function(){return s},setConfiguration:function(e){s=e}}},76260:(e,t,n)=>{"use strict";function o(e,t){const n=d(e),o=d(t);return{page:u(n.page,o.page),client:u(n.client,o.client),canvas:u(n.canvas,o.canvas),world:(i=n.world,a=o.world,[i[0]-a[0],i[1]-a[1],i[2]-a[2]])};var i,a}function i(e,t){const n=d(e),o=d(t);return{page:g(n.page,o.page),client:g(n.client,o.client),canvas:g(n.canvas,o.canvas),world:p(n.world,o.world)}}function a(e,t){}function r(e,t){const n=h(e),o=h(t);return{page:n.page-o.page,client:n.client-o.client,canvas:n.canvas-o.canvas,world:n.world-o.world}}function s(e){return JSON.parse(JSON.stringify(e))}function l(e){return JSON.parse(JSON.stringify(e))}function d(e){return e.reduce(((t,n)=>({page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length]})),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function c(e){return e.reduce(((t,n)=>({page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length],touch:{identifier:null,radiusX:t.touch.radiusX+n.touch.radiusX/e.length,radiusY:t.touch.radiusY+n.touch.radiusY/e.length,force:t.touch.force+n.touch.force/e.length,rotationAngle:t.touch.rotationAngle+n.touch.rotationAngle/e.length}})),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function u(e,t){return[e[0]-t[0],e[1]-t[1]]}function h(e){const t=[];for(let n=0;n<e.length;n++)for(let o=0;o<e.length;o++)n<o&&t.push({page:g(e[n].page,e[o].page),client:g(e[n].client,e[o].client),canvas:g(e[n].canvas,e[o].canvas),world:p(e[n].world,e[o].world)});return t.reduce(((e,n)=>({page:e.page+n.page/t.length,client:e.client+n.client/t.length,canvas:e.canvas+n.canvas/t.length,world:e.world+n.world/t.length})),{page:0,client:0,canvas:0,world:0})}function g(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2))}function p(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2))}n.r(t),n.d(t,{copyPoints:()=>l,copyPointsList:()=>s,getDeltaDistance:()=>i,getDeltaDistanceBetweenIPoints:()=>r,getDeltaPoints:()=>o,getDeltaRotation:()=>a,getMeanPoints:()=>d,getMeanTouchPoints:()=>c})},56069:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(39011);const i=function(e){o.o.renderViewport(e)}},94779:(e,t,n)=>{"use strict";n.d(t,{A:()=>s,_:()=>r});var o=n(15327),i=n(56069),a=n(77609);function r(e){e.forEach((e=>{const t=(0,a.getToolGroup)(e);if(!t)return void console.warn(`ToolGroup not available for ${e}`);t.getViewportsInfo().forEach((e=>{const{renderingEngineId:t,viewportId:n}=e,a=(0,o.getRenderingEngine)(t);if(!a)return void console.warn(`RenderingEngine not available for ${t}`);const r=a.getViewport(n);(0,i.A)(r.element)}))}))}const s=r},58640:(e,t,n)=>{"use strict";n.d(t,{A:()=>r,t:()=>a});var o=n(15327),i=n(56069);function a(e){e.length&&e.forEach((e=>{const t=(0,o.getEnabledElementByViewportId)(e);if(!t)return void console.warn(`Viewport not available for ${e}`);const{viewport:n}=t;if(!n)return void console.warn(`Viewport not available for ${e}`);const a=n.element;(0,i.A)(a)}))}const r=a},3198:(e,t,n)=>{"use strict";function o(e,t){const n=e.length,o=[];for(let i=0;i<n;i++){const n=e[i];n.getFrameOfReferenceUID()===t&&o.push(n)}return o}n.d(t,{A:()=>o})},67514:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n(3823);const i=function(e,t,n=.999){return e.filter((e=>{const i=e.getCamera();return Math.abs(o.eR.dot(i.viewPlaneNormal,t.viewPlaneNormal))>n}))}},9356:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var o=n(99737),i=n(77609);const{Active:a,Passive:r,Enabled:s}=o.ToolModes;function l(e,t){const n=e.length,o=[];for(let a=0;a<n;a++){const n=e[a],r=(0,i.getToolGroupForViewport)(n.id,n.renderingEngineId);if(!r)continue;d(r,t)&&o.push(n)}return o}function d(e,t){const{toolOptions:n}=e,o=n[t];if(!o)return!1;const i=o.mode;return i===a||i===r||i===s}},60810:(e,t,n)=>{"use strict";n.r(t),n.d(t,{filterViewportsWithFrameOfReferenceUID:()=>o.A,filterViewportsWithParallelNormals:()=>r.A,filterViewportsWithToolEnabled:()=>i.A,getViewportIdsWithToolToRender:()=>a.A});var o=n(3198),i=n(9356),a=n(14543),r=n(67514)},19027:(e,t,n)=>{"use strict";n.r(t),n.d(t,{isViewportPreScaled:()=>o.u});var o=n(18990)},4848:(e,t,n)=>{"use strict";n.d(t,{P:()=>h});var o=n(3823),i=n(15327),a=n(57227),r=n(20646),s=n(33517),l=n(62184),d=n(79457),c=n(44845);const u={MULTIPLIER:1,RANGE_TEXT_POSITION:r.U.Right,TICKS_BAR_SIZE:50};class h extends c.A{constructor(e){super(e),this._isMouseOver=!1,this._isInteracting=!1,this._mouseOverCallback=e=>{this._isMouseOver=!0,this.showTicks(),e.stopPropagation()},this._mouseOutCallback=e=>{this._isMouseOver=!1,this.hideTicks(),e.stopPropagation()},this._mouseDownCallback=e=>{this._isInteracting=!0,this.showTicks(),this._addVOIEventListeners(e),e.stopPropagation()},this._mouseDragCallback=(e,t)=>{const n=this.getVOIMultipliers(),a=this._getPointsFromMouseEvent(e),{points:r,voiRange:s}=t,l=o.Zc.sub(o.Zc.create(),a.local,r.local),d=l[0]*n[0],c=l[1]*n[1];if(!d&&!c)return;const{lower:u,upper:h}=s;let{windowWidth:g,windowCenter:p}=i.utilities.windowLevel.toWindowLevel(u,h);g=Math.max(g+d,1),p+=c;const f=i.utilities.windowLevel.toLowHighRange(g,p);this.voiRange=f,e.stopPropagation(),e.preventDefault()},this._mouseUpCallback=e=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),e.stopPropagation()},this._eventListenersManager=new i.utilities.eventListener.MultiTargetEventListenerManager,this._colormaps=h.getColormapsMap(e),this._activeColormapName=h.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=e.ticks?.position??u.RANGE_TEXT_POSITION,this._canvas.appendTo(this.rootElement),this._ticksBar.appendTo(this.rootElement),this._addRootElementEventListeners()}get activeColormapName(){return this._activeColormapName}set activeColormapName(e){if(e===this._activeColormapName)return;const t=this._colormaps.get(e);t?(this._activeColormapName=e,this._canvas.colormap=t):console.warn(`Invalid colormap name (${e})`)}get imageRange(){return this._canvas.imageRange}set imageRange(e){this._canvas.imageRange=e,this._ticksBar.imageRange=e}get voiRange(){return this._canvas.voiRange}set voiRange(e){const{voiRange:t}=this._canvas;(0,a.kB)(e)&&!(0,a.bh)(e,t)&&(this._canvas.voiRange=e,this._ticksBar.voiRange=e,this.onVoiChange(e))}get showFullImageRange(){return this._canvas.showFullImageRange}set showFullImageRange(e){this._canvas.showFullImageRange=e,this._ticksBar.showFullPixelValueRange=e}destroy(){super.destroy(),this._eventListenersManager.reset()}createRootElement(){const e=document.createElement("div");return Object.assign(e.style,{position:"relative",fontSize:"0",width:"100%",height:"100%"}),e}onContainerResize(){super.onContainerResize(),this.updateTicksBar(),this._canvas.size=this.containerSize}getVOIMultipliers(){return[u.MULTIPLIER,u.MULTIPLIER]}onVoiChange(e){}showTicks(){this.updateTicksBar(),this._ticksBar.visible=!0}hideTicks(){this._isInteracting||this._isMouseOver||(this._ticksBar.visible=!1)}static getColormapsMap(e){const{colormaps:t}=e;return t.reduce(((e,t)=>e.set(t.Name,t)),new Map)}static getInitialColormapName(e){const{activeColormapName:t,colormaps:n}=e;return!!t&&n.some((e=>e.Name===t))?t:n[0].Name}_createCanvas(e){const{imageRange:t,voiRange:n,showFullPixelValueRange:o}=e,i=this._colormaps.get(this._activeColormapName);return new s.n({colormap:i,imageRange:t,voiRange:n,showFullPixelValueRange:o})}_createTicksBar(e){const t=e.ticks;return new l.f({imageRange:e.imageRange,voiRange:e.voiRange,ticks:t,showFullPixelValueRange:e.showFullPixelValueRange})}_getPointsFromMouseEvent(e){const{rootElement:t}=this,n=[e.clientX,e.clientY],o=[e.pageX,e.pageY],i=t.getBoundingClientRect();return{client:n,page:o,local:[o[0]-i.left-window.pageXOffset,o[1]-i.top-window.pageYOffset]}}updateTicksBar(){const{width:e,height:t}=this.containerSize;if(0===e&&0===t)return;const{_ticksBar:n,_rangeTextPosition:o}=this,i=e>=t,a=i?e:u.TICKS_BAR_SIZE,s=i?u.TICKS_BAR_SIZE:t;if(!(0,d.A)(e,t,o))throw new Error("Invalid rangeTextPosition value for the current colobar orientation");let l,c;n.size={width:a,height:s},i?(c=0,l=o===r.U.Top?-s:t):(l=0,c=o===r.U.Left?-a:e),n.top=l,n.left=c}_addRootElementEventListeners(){const{_eventListenersManager:e}=this,{rootElement:t}=this;e.addEventListener(t,"mouseover",this._mouseOverCallback),e.addEventListener(t,"mouseout",this._mouseOutCallback),e.addEventListener(t,"mousedown",this._mouseDownCallback)}_addVOIEventListeners(e){const{_eventListenersManager:t}=this,n={points:this._getPointsFromMouseEvent(e),voiRange:{...this._canvas.voiRange}};this._removeVOIEventListeners(),t.addEventListener(document,"voi.mouseup",this._mouseUpCallback),t.addEventListener(document,"voi.mousemove",(e=>this._mouseDragCallback(e,n)))}_removeVOIEventListeners(){const{_eventListenersManager:e}=this;e.removeEventListener(document,"voi.mouseup"),e.removeEventListener(document,"voi.mousemove")}}},91994:(e,t,n)=>{"use strict";n.d(t,{b:()=>l});var o=n(15327),i=n(4848),a=n(22658);const{Events:r}=o.Enums,s={lower:-1e3,upper:1e3};class l extends i.P{constructor(e){const{element:t,volumeId:n}=e,o=l._getImageRange(t,n),i=l._getVOIRange(t,n);super({...e,imageRange:o,voiRange:i}),this.autoHideTicks=()=>{if(this._hideTicksTimeoutId)return;const e=this._hideTicksTime-Date.now();e<=0?this.hideTicks():this._hideTicksTimeoutId=window.setTimeout((()=>{this._hideTicksTimeoutId=0,this.autoHideTicks()}),e)},this._stackNewImageCallback=()=>{this.imageRange=l._getImageRange(this._element)},this._imageVolumeModifiedCallback=e=>{const{volumeId:t}=e.detail;if(t!==this._volumeId)return;const{_element:n}=this;this.imageRange=l._getImageRange(n,t)},this._viewportVOIModifiedCallback=e=>{const{viewportId:t,volumeId:n,range:o,colormap:i}=e.detail,{viewport:a}=this.enabledElement;t===a.id&&n===this._volumeId&&(this.voiRange=o,i&&(this.activeColormapName=i.name),this.showAndAutoHideTicks())},this._viewportColormapModifiedCallback=e=>{const{viewportId:t,colormap:n,volumeId:o}=e.detail,{viewport:i}=this.enabledElement;t===i.id&&o===this._volumeId&&(this.activeColormapName=n.name)},this._element=t,this._volumeId=n,this._addCornerstoneEventListener()}get element(){return this._element}get enabledElement(){return(0,o.getEnabledElement)(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return(0,a.j)(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:t}=this.enabledElement;if(t instanceof o.StackViewport)t.setProperties({voiRange:e}),t.render();else if(t instanceof o.VolumeViewport){const{_volumeId:n}=this,i=o.utilities.getViewportsWithVolumeId(n);t.setProperties({voiRange:e},n),i.forEach((e=>e.render()))}}static _getImageRange(e,t){const n=(0,o.getEnabledElement)(e),{viewport:i}=n,a=i.getImageActor(t);if(!a)return s;const r=a.getMapper().getInputData().getPointData().getScalars();let l;if(r)l=r.getRange();else{if(!t)throw new Error("volumeId is required when scalarData is not available");const e=o.cache.getVolume(t),[n,i]=e.voxelManager.getRange();l=[n,i]}return 0===l[0]&&0===l[1]?s:{lower:l[0],upper:l[1]}}static _getVOIRange(e,t){const n=(0,o.getEnabledElement)(e),{viewport:i}=n,a=i.getImageActor(t);if(!a)return s;const r=a.getProperty().getRGBTransferFunction(0).getRange();return 0===r[0]&&0===r[1]?s:{lower:r[0],upper:r[1]}}showAndAutoHideTicks(e=1e3){this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;o.eventTarget.addEventListener(r.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(r.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(r.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.addEventListener(r.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}destroy(){super.destroy();const{_element:e}=this;o.eventTarget.removeEventListener(r.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.removeEventListener(r.STACK_NEW_IMAGE,this._stackNewImageCallback),e.removeEventListener(r.VOI_MODIFIED,this._viewportVOIModifiedCallback),e.removeEventListener(r.COLORMAP_MODIFIED,this._viewportColormapModifiedCallback)}}},20646:(e,t,n)=>{"use strict";var o;n.d(t,{U:()=>o}),function(e){e.Top="top",e.Left="left",e.Bottom="bottom",e.Right="right"}(o||(o={}))},51807:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ColorbarRangeTextPosition:()=>o.U});var o=n(20646)},28802:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Colorbar:()=>i.P,Enums:()=>o,ViewportColorbar:()=>a.b});var o=n(51807),i=n(4848),a=n(91994)},97213:(e,t,n)=>{"use strict";n.r(t),n.d(t,{colorbar:()=>o,windowLevel:()=>i});var o=n(28802),i=n(72936)},95995:(e,t,n)=>{"use strict";function o(e,t,n){const o=e.length;let i=n,a=t,r=0;if(o<2)return{min:i,max:a,mean:(t+n)/2};for(let t=0;t<o;t++){const n=e[t];i=Math.min(i,n),a=Math.max(a,n),r+=n}return{min:i,max:a,mean:r/o}}n.d(t,{a:()=>o})},41433:(e,t,n)=>{"use strict";n.d(t,{u:()=>i});var o=n(15327);function i(e){if(e instanceof o.VolumeViewport)return function(e){const{scalarData:t,width:n,height:i}=o.utilities.getCurrentVolumeViewportSlice(e),{min:a,max:r}=o.utilities.getMinMax(t);return{scalarData:t,minPixelValue:a,maxPixelValue:r,width:n,height:i,rows:n,columns:i}}(e);if(e instanceof o.StackViewport)return function(e){const t=e.getImageData(),{scalarData:n}=t,{min:i,max:a}=o.utilities.getMinMax(n),r=t.dimensions[0],s=t.dimensions[1],{rows:l,columns:d,color:c}=e.getCornerstoneImage();return{scalarData:n,width:r,height:s,minPixelValue:i,maxPixelValue:a,rows:l,columns:d,color:c}}(e);throw new Error("Viewport not supported")}},98148:(e,t,n)=>{"use strict";function o(e,t,n,o,i){const a=[];let r=0;const s=e.scalarData;let l,d,c;if(e.color)for(d=0;d<i;d++)for(c=0;c<o;c++){l=4*((d+n)*e.columns+(c+t));const o=s[l],i=s[l+1],u=s[l+2];a[r++]=.2126*o+.7152*i+.0722*u}else for(d=0;d<i;d++)for(c=0;c<o;c++)l=(d+n)*e.columns+(c+t),a[r++]=s[l];return a}n.d(t,{l:()=>o})},72936:(e,t,n)=>{"use strict";n.r(t),n.d(t,{calculateMinMaxMean:()=>i.a,extractWindowLevelRegionToolData:()=>a.u,getLuminanceFromRegion:()=>o.l});var o=n(98148),i=n(95995),a=n(41433)},81810:(e,t,n)=>{"use strict";var o,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},a=n(86326),r=(o=a)&&o.__esModule?o:{default:o};t.A=function(e){var t=e.fill,n=void 0===t?"currentColor":t,o=e.width,a=void 0===o?24:o,s=e.height,l=void 0===s?24:s,d=e.style,c=void 0===d?{}:d,u=function(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}(e,["fill","width","height","style"]);return r.default.createElement("svg",i({viewBox:"0 0 24 24",style:i({fill:n,width:a,height:l},c)},u),r.default.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}},69767:(e,t,n)=>{"use strict";var o,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},a=n(86326),r=(o=a)&&o.__esModule?o:{default:o};t.A=function(e){var t=e.fill,n=void 0===t?"currentColor":t,o=e.width,a=void 0===o?24:o,s=e.height,l=void 0===s?24:s,d=e.style,c=void 0===d?{}:d,u=function(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}(e,["fill","width","height","style"]);return r.default.createElement("svg",i({viewBox:"0 0 24 24",style:i({fill:n,width:a,height:l},c)},u),r.default.createElement("path",{d:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"}))}},83562:(e,t,n)=>{"use strict";function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,(i=o.key,a=void 0,"symbol"==typeof(a=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(i,"string"))?a:String(a)),o)}var i,a}function a(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function s(e){for(var t=new Uint8Array(e.length),n=0,o=e.length;n<o;n++)t[n]=e.charCodeAt(n);return t}function l(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(n+t.length>e.length)return!1;for(var o=n,i=0;i<t.length;i++){if(t[i]!==e[o])return!1;o+=1}return!0}function d(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,o=arguments.length>3?arguments[3]:void 0,i=e.length;o&&(i=Math.min(n+o,e.length));for(var a=n;a<i;a++)if(e[a]===t[0]&&l(e,t,a))return a;return-1}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return"".concat(e()+e(),"-").concat(e(),"-").concat(e(),"-").concat(e(),"-").concat(e()).concat(e()).concat(e())}(),n="Content-Type: ".concat(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/dicom"),o="\r\n--".concat(t,"\r\n").concat(n,"\r\n\r\n"),i="\r\n--".concat(t,"--"),a=s(o),r=s(i),l=a.length,d=r.length,c=0,u=e.map((function(e){var t=new Uint8Array(e),n=t.length;return c+=l+n+d,t})),h=new Uint8Array(c);h.set(a,0);var g=0;return u.forEach((function(e){h.set(a,g),h.set(e,g+l),g+=l+e.length})),h.set(r,g),{data:h.buffer,boundary:t}}function u(e){var t=ArrayBuffer.isView(e)?e:new Uint8Array(e),n=s("\r\n\r\n"),o=d(t,n,0,1e3);if(-1===o)throw new Error("Response message has no multipart mime header");var i=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(arguments.length>2?arguments[2]:void 0)||e.length-t,o="",i=t;i<t+n;i++)o+=String.fromCharCode(e[i]);return o}(t,0,o),a=function(e){for(var t=e.split("\r\n"),n=0;n<t.length;n++)if("--"===t[n].substr(0,2))return t[n];return null}(i);if(!a)throw new Error("Header of response message does not specify boundary");for(var r,l=s(a),c=l.length,u=[],h=c;-1!==r&&-1!==(r=d(t,l,h));){var g=d(t,n,h,1e3);if(-1===g)throw new Error("Response message part has no mime header");h=g+n.length;var p=e.slice(h,r-2);u.push(p),h=r+c}return u}function h(e){return"object"===o(e)&&null!==e}function g(e){return 0===Object.keys(e).length&&e.constructor===Object}n.d(t,{FH:()=>v});var p=function(e){return e[0]},f={DICOM:"application/dicom",DICOM_JSON:"application/dicom+json",OCTET_STREAM:"application/octet-stream",PDF:"application/pdf",JPEG:"image/jpeg",PNG:"image/png"},m=function(){};var v={DICOMwebClient:function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.baseURL=t.url,this.baseURL||console.error("no DICOMweb base url provided - calls that require a URL will fail"),"username"in t&&(this.username=t.username,"password"in t||console.error("no password provided to authenticate with DICOMweb service"),this.password=t.password),"qidoURLPrefix"in t?(m("use URL prefix for QIDO-RS: ".concat(t.qidoURLPrefix)),this.qidoURL="".concat(this.baseURL,"/").concat(t.qidoURLPrefix)):this.qidoURL=this.baseURL,"wadoURLPrefix"in t?(m("use URL prefix for WADO-RS: ".concat(t.wadoURLPrefix)),this.wadoURL="".concat(this.baseURL,"/").concat(t.wadoURLPrefix)):this.wadoURL=this.baseURL,"stowURLPrefix"in t?(m("use URL prefix for STOW-RS: ".concat(t.stowURLPrefix)),this.stowURL="".concat(this.baseURL,"/").concat(t.stowURLPrefix)):this.stowURL=this.baseURL,t.singlepart?(m("use singlepart",t.singlepart),this.singlepart=!0===t.singlepart?"bulkdata,video,image":t.singlepart):this.singlepart="","requestHooks"in t&&(this.requestHooks=t.requestHooks),this.headers=t.headers||{},this.errorInterceptor=t.errorInterceptor||function(){},this.verbose=!1!==t.verbose,this.setDebug(t.debug)}var t,n,r;return t=e,n=[{key:"setDebug",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.debugLevel=!!e,m=t||e?console.log:function(){}}},{key:"getDebug",value:function(){return this.debugLevel}},{key:"setVerbose",value:function(e){this.verbose=e}},{key:"getVerbose",value:function(){return this.verbose}},{key:"_httpRequest",value:function(e,t){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=this.errorInterceptor,s=this.requestHooks;return new Promise((function(l,d){var c=a.request?a.request:new XMLHttpRequest;c.open(t,e,!0),"responseType"in a&&(c.responseType=a.responseType),"object"===o(i)&&Object.keys(i).forEach((function(e){c.setRequestHeader(e,i[e])}));var h,g=n.headers;if(Object.keys(g).forEach((function(e){c.setRequestHeader(e,g[e])})),c.onloadstart=function(){m("upload started: ",e)},c.onloadend=function(){m("upload finished")},c.onreadystatechange=function(){if(4===c.readyState)if(200===c.status){var e=c.getResponseHeader("Content-Type");e&&-1!==e.indexOf("multipart")?l(u(c.response)):"arraybuffer"===c.responseType?l([c.response]):l(c.response)}else if(202===c.status)n.verbose&&console.warn("some resources already existed: ",c),l(c.response);else if(204===c.status)n.verbose&&console.warn("empty response for request: ",c),l([]);else{var t=new Error("request failed");t.request=c,t.response=c.response,t.status=c.status,n.verbose&&(console.error("request failed: ",c),console.error(t),console.error(t.response)),r(t),d(t)}},"progressCallback"in a&&"function"==typeof a.progressCallback&&(c.onprogress=a.progressCallback),s&&function(e){var t=Array.isArray(e)&&e.every((function(e){return"function"==typeof e&&2===e.length}));return t||console.warn("Request hooks should have the following signature: function requestHook(request, metadata) { return request; }"),t}(s)){var p=Object.assign({},i,n.headers),f={method:t,url:e,headers:p},v=(h=s,function(e){return h.reduce((function(e,t){return t(e,f)}),e)});c=v(c)}"withCredentials"in a&&a.withCredentials&&(c.withCredentials=!0),"data"in a?c.send(a.data):c.send()}))}},{key:"_httpGet",value:function(e,t,n,o,i){return this._httpRequest(e,"get",t,{responseType:n,progressCallback:o,withCredentials:i})}},{key:"_httpGetApplicationJson",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,r=t;"object"===o(n)&&(g(n)||(r+=e._parseQueryParameters(n)));var s={Accept:f.DICOM_JSON};return this._httpGet(r,s,"json",i,a)}},{key:"_httpGetApplicationPdf",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,r=t;"object"===o(n)&&(g(n)||(r+=e._parseQueryParameters(n)));var s={Accept:f.PDF};return this._httpGet(r,s,"json",i,a)}},{key:"_httpGetImage",value:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,s=t;"object"===o(i)&&(g(i)||(s+=e._parseQueryParameters(i)));var l={Accept:e._buildAcceptHeaderFieldValue(n,["image/","image/*","image/jpeg","image/jp2","image/gif","image/png"])};return this._httpGet(s,l,"arraybuffer",a,r)}},{key:"_httpGetText",value:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,s=t;"object"===o(i)&&(g(i)||(s+=e._parseQueryParameters(i)));var l={Accept:e._buildAcceptHeaderFieldValue(n,["text/","text/*","text/html","text/plain","text/rtf","text/xml"])};return this._httpGet(s,l,"arraybuffer",a,r)}},{key:"_httpGetVideo",value:function(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,s=t;"object"===o(i)&&(g(i)||(s+=e._parseQueryParameters(i)));var l={Accept:e._buildAcceptHeaderFieldValue(n,["video/","video/*","video/mpeg","video/mp4","video/H265"])};return this._httpGet(s,l,"arraybuffer",a,r)}},{key:"_httpGetMultipartImage",value:function(t,n,o,i){var a,r=arguments.length>5?arguments[5]:void 0,s=arguments.length>6?arguments[6]:void 0,l={};return arguments.length>4&&void 0!==arguments[4]&&arguments[4]?a=["image/jpeg","image/gif","image/png","image/jp2"]:(a={"1.2.840.10008.1.2.5":["image/x-dicom-rle"],"1.2.840.10008.1.2.4.50":["image/jpeg"],"1.2.840.10008.1.2.4.51":["image/jpeg"],"1.2.840.10008.1.2.4.57":["image/jpeg"],"1.2.840.10008.1.2.4.70":["image/jpeg"],"1.2.840.10008.1.2.4.80":["image/x-jls","image/jls"],"1.2.840.10008.1.2.4.81":["image/x-jls","image/jls"],"1.2.840.10008.1.2.4.90":["image/jp2"],"1.2.840.10008.1.2.4.91":["image/jp2"],"1.2.840.10008.1.2.4.92":["image/jpx"],"1.2.840.10008.1.2.4.93":["image/jpx"]},o&&(l.Range=e._buildRangeHeaderFieldValue(o))),l.Accept=e._buildMultipartAcceptHeaderFieldValue(n,a),this._httpGet(t,l,"arraybuffer",r,s)}},{key:"_httpGetMultipartVideo",value:function(t,n,o,i){var a,r=arguments.length>5?arguments[5]:void 0,s=arguments.length>6?arguments[6]:void 0,l={};return arguments.length>4&&void 0!==arguments[4]&&arguments[4]?a=["video/","video/*","video/mpeg2","video/mp4","video/H265"]:(a={"1.2.840.10008.1.2.4.100":["video/mpeg2"],"1.2.840.10008.1.2.4.101":["video/mpeg2"],"1.2.840.10008.1.2.4.102":["video/mp4"],"1.2.840.10008.1.2.4.103":["video/mp4"],"1.2.840.10008.1.2.4.104":["video/mp4"],"1.2.840.10008.1.2.4.105":["video/mp4"],"1.2.840.10008.1.2.4.106":["video/mp4"]},o&&(l.Range=e._buildRangeHeaderFieldValue(o))),l.Accept=e._buildMultipartAcceptHeaderFieldValue(n,a),this._httpGet(t,l,"arraybuffer",r,s)}},{key:"_httpGetMultipartApplicationDicom",value:function(t,n,o,i,a){var r={},s="application/dicom",l={"1.2.840.10008.1.2.1":[s],"1.2.840.10008.1.2.5":[s],"1.2.840.10008.1.2.4.50":[s],"1.2.840.10008.1.2.4.51":[s],"1.2.840.10008.1.2.4.57":[s],"1.2.840.10008.1.2.4.70":[s],"1.2.840.10008.1.2.4.80":[s],"1.2.840.10008.1.2.4.81":[s],"1.2.840.10008.1.2.4.90":[s],"1.2.840.10008.1.2.4.91":[s],"1.2.840.10008.1.2.4.92":[s],"1.2.840.10008.1.2.4.93":[s],"1.2.840.10008.1.2.4.100":[s],"1.2.840.10008.1.2.4.101":[s],"1.2.840.10008.1.2.4.102":[s],"1.2.840.10008.1.2.4.103":[s],"1.2.840.10008.1.2.4.104":[s],"1.2.840.10008.1.2.4.105":[s],"1.2.840.10008.1.2.4.106":[s]},d=n;return n||(d=[{mediaType:s}]),r.Accept=e._buildMultipartAcceptHeaderFieldValue(d,l),this._httpGet(t,r,"arraybuffer",i,a)}},{key:"_httpGetMultipartApplicationOctetStream",value:function(t,n,o,i,r,s){var l={},d={"1.2.840.10008.1.2.1":a(Object.values(f))},c=n;return n||(c=[{mediaType:"application/octet-stream"}]),o&&(l.Range=e._buildRangeHeaderFieldValue(o)),l.Accept=e._buildMultipartAcceptHeaderFieldValue(c,d),this._httpGet(t,l,"arraybuffer",r,s)}},{key:"_httpPost",value:function(e,t,n,o,i,a){return this._httpRequest(e,"post",t,{data:n,progressCallback:o,withCredentials:i,request:a})}},{key:"_httpPostApplicationJson",value:function(e,t,n,o){var i={"Content-Type":f.DICOM_JSON};return this._httpPost(e,i,t,n,o)}},{key:"searchForStudies",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};m("search for studies");var n=!1,o="".concat(this.qidoURL,"/studies");return"queryParams"in t&&(o+=e._parseQueryParameters(t.queryParams)),"withCredentials"in t&&t.withCredentials&&(n=t.withCredentials),this._httpGetApplicationJson(o,{},!1,n)}},{key:"retrieveStudyMetadata",value:function(e){if(!("studyInstanceUID"in e))throw new Error("Study Instance UID is required for retrieval of study metadata");m("retrieve metadata of study ".concat(e.studyInstanceUID));var t="".concat(this.wadoURL,"/studies/").concat(e.studyInstanceUID,"/metadata"),n=!1;return"withCredentials"in e&&e.withCredentials&&(n=e.withCredentials),this._httpGetApplicationJson(t,{},!1,n)}},{key:"searchForSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.qidoURL;"studyInstanceUID"in t&&(m("search series of study ".concat(t.studyInstanceUID)),n+="/studies/".concat(t.studyInstanceUID)),n+="/series","queryParams"in t&&(n+=e._parseQueryParameters(t.queryParams));var o=!1;return"withCredentials"in t&&t.withCredentials&&(o=t.withCredentials),this._httpGetApplicationJson(n,{},!1,o)}},{key:"retrieveSeriesMetadata",value:function(e){if(!("studyInstanceUID"in e))throw new Error("Study Instance UID is required for retrieval of series metadata");if(!("seriesInstanceUID"in e))throw new Error("Series Instance UID is required for retrieval of series metadata");m("retrieve metadata of series ".concat(e.seriesInstanceUID));var t="".concat(this.wadoURL,"/studies/").concat(e.studyInstanceUID,"/series/").concat(e.seriesInstanceUID,"/metadata"),n=!1;return"withCredentials"in e&&e.withCredentials&&(n=e.withCredentials),this._httpGetApplicationJson(t,{},!1,n)}},{key:"searchForInstances",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.qidoURL,o=!1;return"studyInstanceUID"in t?(n+="/studies/".concat(t.studyInstanceUID),"seriesInstanceUID"in t?(m("search for instances of series ".concat(t.seriesInstanceUID)),n+="/series/".concat(t.seriesInstanceUID)):m("search for instances of study ".concat(t.studyInstanceUID))):m("search for instances"),n+="/instances","queryParams"in t&&(n+=e._parseQueryParameters(t.queryParams)),"withCredentials"in t&&t.withCredentials&&(o=t.withCredentials),this._httpGetApplicationJson(n,{},!1,o)}},{key:"buildInstanceWadoURIUrl",value:function(e){if(!("studyInstanceUID"in e))throw new Error("Study Instance UID is required.");if(!("seriesInstanceUID"in e))throw new Error("Series Instance UID is required.");if(!("sopInstanceUID"in e))throw new Error("SOP Instance UID is required.");var t=e.contentType||f.DICOM,n=e.transferSyntax||"*",o=[];o.push("requestType=WADO"),o.push("studyUID=".concat(e.studyInstanceUID)),o.push("seriesUID=".concat(e.seriesInstanceUID)),o.push("objectUID=".concat(e.sopInstanceUID)),o.push("contentType=".concat(t)),o.push("transferSyntax=".concat(n));var i=o.join("&");return"".concat(this.wadoURL,"?").concat(i)}},{key:"retrieveInstanceMetadata",value:function(e){if(!("studyInstanceUID"in e))throw new Error("Study Instance UID is required for retrieval of instance metadata");if(!("seriesInstanceUID"in e))throw new Error("Series Instance UID is required for retrieval of instance metadata");if(!("sopInstanceUID"in e))throw new Error("SOP Instance UID is required for retrieval of instance metadata");m("retrieve metadata of instance ".concat(e.sopInstanceUID));var t="".concat(this.wadoURL,"/studies/").concat(e.studyInstanceUID,"/series/").concat(e.seriesInstanceUID,"/instances/").concat(e.sopInstanceUID,"/metadata"),n=!1;return"withCredentials"in e&&e.withCredentials&&(n=e.withCredentials),this._httpGetApplicationJson(t,{},!1,n)}},{key:"retrieveInstanceFrames",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required for retrieval of instance frames");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required for retrieval of instance frames");if(!("sopInstanceUID"in t))throw new Error("SOP Instance UID is required for retrieval of instance frames");if(!("frameNumbers"in t))throw new Error("frame numbers are required for retrieval of instance frames");m("retrieve frames ".concat(t.frameNumbers.toString()," of instance ").concat(t.sopInstanceUID));var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID,"/instances/").concat(t.sopInstanceUID,"/frames/").concat(t.frameNumbers.toString()),o=t.mediaTypes,i=!1;"withCredentials"in t&&t.withCredentials&&(i=t.withCredentials);var a=!1;if("progressCallback"in t&&(a=t.progressCallback),!o)return this._httpGetMultipartApplicationOctetStream(n,!1,!1,!1,a,i);if(e._getSharedMediaTypes(o).length>1){var r={Accept:e._buildMultipartAcceptHeaderFieldValue(o,{"1.2.840.10008.1.2.1":["application/octet-stream"],"1.2.840.10008.1.2.5":["image/x-dicom-rle"],"1.2.840.10008.1.2.4.50":["image/jpeg"],"1.2.840.10008.1.2.4.51":["image/jpeg"],"1.2.840.10008.1.2.4.57":["image/jpeg"],"1.2.840.10008.1.2.4.70":["image/jpeg"],"1.2.840.10008.1.2.4.80":["image/x-jls","image/jls"],"1.2.840.10008.1.2.4.81":["image/x-jls","image/jls"],"1.2.840.10008.1.2.4.90":["image/jp2"],"1.2.840.10008.1.2.4.91":["image/jp2"],"1.2.840.10008.1.2.4.92":["image/jpx"],"1.2.840.10008.1.2.4.93":["image/jpx"],"1.2.840.10008.1.2.4.201":["image/jhc"],"1.2.840.10008.1.2.4.202":["image/jhc"]})};return this._httpGet(n,r,"arraybuffer",a,i)}var s=e._getCommonMediaType(o);if(s.startsWith("application"))return this._httpGetMultipartApplicationOctetStream(n,o,!1,!1,a,i);if(s.startsWith("image"))return this._httpGetMultipartImage(n,o,!1,!1,!1,a,i);if(s.startsWith("video"))return this._httpGetMultipartVideo(n,o,!1,!1,!1,a,i);throw new Error("Media type ".concat(s," is not supported for retrieval of frames."))}},{key:"retrieveInstanceRendered",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required for retrieval of rendered instance");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required for retrieval of rendered instance");if(!("sopInstanceUID"in t))throw new Error("SOP Instance UID is required for retrieval of rendered instance");var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID,"/instances/").concat(t.sopInstanceUID,"/rendered"),o=t.mediaTypes,i=t.queryParams,a=!1;"withCredentials"in t&&t.withCredentials&&(a=t.withCredentials);var r=!1;if("progressCallback"in t&&(r=t.progressCallback),!o)return i&&(n+=e._parseQueryParameters(i)),this._httpGet(n,{},"arraybuffer",r,a);var s=e._getCommonMediaType(o);if(s.startsWith("image"))return this._httpGetImage(n,o,i,r,a);if(s.startsWith("video"))return this._httpGetVideo(n,o,i,r,a);if(s.startsWith("text"))return this._httpGetText(n,o,i,r,a);if(s===f.PDF)return this._httpGetApplicationPdf(n,i,r,a);throw new Error("Media type ".concat(s," is not supported ")+"for retrieval of rendered instance.")}},{key:"retrieveInstanceThumbnail",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required for retrieval of rendered instance");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required for retrieval of rendered instance");if(!("sopInstanceUID"in t))throw new Error("SOP Instance UID is required for retrieval of rendered instance");var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID,"/instances/").concat(t.sopInstanceUID,"/thumbnail"),o=t.mediaTypes,i=t.queryParams,a=!1;"withCredentials"in t&&t.withCredentials&&(a=t.withCredentials);var r=!1;if("progressCallback"in t&&(r=t.progressCallback),!o)return i&&(n+=e._parseQueryParameters(i)),this._httpGet(n,{},"arraybuffer",r,a);var s=e._getCommonMediaType(o);if(s.startsWith("image"))return this._httpGetImage(n,o,i,r,a);throw new Error("Media type ".concat(s," is not supported ")+"for retrieval of rendered instance.")}},{key:"retrieveInstanceFramesRendered",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required for retrieval of rendered instance frames");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required for retrieval of rendered instance frames");if(!("sopInstanceUID"in t))throw new Error("SOP Instance UID is required for retrieval of rendered instance frames");if(!("frameNumbers"in t))throw new Error("frame numbers are required for retrieval of rendered instance frames");m("retrieve rendered frames ".concat(t.frameNumbers.toString()," of instance ").concat(t.sopInstanceUID));var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID,"/instances/").concat(t.sopInstanceUID,"/frames/").concat(t.frameNumbers.toString(),"/rendered"),o=t.mediaTypes,i=t.queryParams,a=!1;"withCredentials"in t&&t.withCredentials&&(a=t.withCredentials);var r=!1;if("progressCallback"in t&&(r=t.progressCallback),!o)return i&&(n+=e._parseQueryParameters(i)),this._httpGet(n,{},"arraybuffer",!1,a);var s=e._getCommonMediaType(o);if(s.startsWith("image"))return this._httpGetImage(n,o,i,r,a);if(s.startsWith("video"))return this._httpGetVideo(n,o,i,r,a);throw new Error("Media type ".concat(s," is not supported ")+"for retrieval of rendered frame.")}},{key:"retrieveInstanceFramesThumbnail",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required for retrieval of rendered instance frames");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required for retrieval of rendered instance frames");if(!("sopInstanceUID"in t))throw new Error("SOP Instance UID is required for retrieval of rendered instance frames");if(!("frameNumbers"in t))throw new Error("frame numbers are required for retrieval of rendered instance frames");console.debug("retrieve rendered frames ".concat(t.frameNumbers.toString()," of instance ").concat(t.sopInstanceUID));var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID,"/instances/").concat(t.sopInstanceUID,"/frames/").concat(t.frameNumbers.toString(),"/thumbnail"),o=t.mediaTypes,i=t.queryParams,a=!1;"withCredentials"in t&&t.withCredentials&&(a=t.withCredentials);var r=!1;if("progressCallback"in t&&(r=t.progressCallback),!o)return i&&(n+=e._parseQueryParameters(i)),this._httpGet(n,{},"arraybuffer",r,a);var s=e._getCommonMediaType(o);if(s.startsWith("image"))return this._httpGetImage(n,o,i,r,a);throw new Error("Media type ".concat(s," is not supported ")+"for retrieval of rendered frame.")}},{key:"retrieveInstance",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required");if(!("sopInstanceUID"in t))throw new Error("SOP Instance UID is required");var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID,"/instances/").concat(t.sopInstanceUID),o=t.mediaTypes,i=t.withCredentials,a=void 0!==i&&i,r=t.progressCallback,s=void 0!==r&&r;if(!o)return this._httpGetMultipartApplicationDicom(n,!1,!1,s,a).then(p);var l=e._getCommonMediaType(o);if(l===f.DICOM)return this._httpGetMultipartApplicationDicom(n,o,!1,s,a).then(p);throw new Error("Media type ".concat(l," is not supported for retrieval of instance."))}},{key:"retrieveSeries",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required");if(!("seriesInstanceUID"in t))throw new Error("Series Instance UID is required");var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID,"/series/").concat(t.seriesInstanceUID),o=t.mediaTypes,i=!1;"withCredentials"in t&&t.withCredentials&&(i=t.withCredentials);var a=!1;if("progressCallback"in t&&(a=t.progressCallback),!o)return this._httpGetMultipartApplicationDicom(n,!1,!1,a,i);var r=e._getCommonMediaType(o);if(r===f.DICOM)return this._httpGetMultipartApplicationDicom(n,o,!1,a,i);throw new Error("Media type ".concat(r," is not supported for retrieval of series."))}},{key:"retrieveStudy",value:function(t){if(!("studyInstanceUID"in t))throw new Error("Study Instance UID is required");var n="".concat(this.wadoURL,"/studies/").concat(t.studyInstanceUID),o=t.mediaTypes,i=t.withCredentials,a=void 0!==i&&i,r=t.progressCallback,s=void 0!==r&&r;if(!o)return this._httpGetMultipartApplicationDicom(n,!1,!1,s,a);var l=e._getCommonMediaType(o);if(l===f.DICOM)return this._httpGetMultipartApplicationDicom(n,o,!1,s,a);throw new Error("Media type ".concat(l," is not supported for retrieval of study."))}},{key:"retrieveBulkData",value:function(t){if(!("BulkDataURI"in t))throw new Error("BulkDataURI is required.");var n=t.BulkDataURI,o=t.mediaTypes,i=t.byteRange,a=t.withCredentials,r=void 0!==a&&a,s=t.progressCallback,l=void 0!==s&&s;if(-1!==this.singlepart.indexOf("bulkdata"))return this._httpGet(n,t.headers,"arraybuffer",null,r);if(o)try{if("image/"===e._getCommonMediaType(o))return this._httpGetMultipartImage(n,o,i,!1,!1,l,r)}catch(e){}return this._httpGetMultipartApplicationOctetStream(n,o,i,!1,l,r)}},{key:"storeInstances",value:function(e){if(!("datasets"in e))throw new Error("datasets are required for storing");var t="".concat(this.stowURL,"/studies");"studyInstanceUID"in e&&(t+="/".concat(e.studyInstanceUID));var n=c(e.datasets),o=n.data,i=n.boundary,a={"Content-Type":'multipart/related; type="application/dicom"; boundary="'.concat(i,'"')},r=e.withCredentials,s=void 0!==r&&r;return this._httpPost(t,a,o,e.progressCallback,s,e.request)}}],r=[{key:"_parseQueryParameters",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t="?";return Object.keys(e).forEach((function(n,o){0!==o&&(t+="&"),t+="".concat(n,"=").concat(encodeURIComponent(e[n]))})),t}},{key:"_assertMediaTypeIsValid",value:function(e){if(!e)throw new Error("Not a valid media type: ".concat(e));var t=e.indexOf("/");if(-1===t)throw new Error("Not a valid media type: ".concat(e));var n=e.slice(0,t);if(!["application","image","text","video"].includes(n))throw new Error("Not a valid media type: ".concat(e));if(e.slice(t+1).includes("/"))throw new Error("Not a valid media type: ".concat(e))}},{key:"_parseMediaType",value:function(t){return e._assertMediaTypeIsValid(t),t.split("/")}},{key:"_buildAcceptHeaderFieldValue",value:function(t,n){if(!Array.isArray(t))throw new Error("Acceptable media types must be provided as an Array");return t.map((function(t){var o=t.mediaType;if(e._assertMediaTypeIsValid(o),!n.includes(o))throw new Error("Media type ".concat(o," is not supported for requested resource"));return o})).join(", ")}},{key:"_buildMultipartAcceptHeaderFieldValue",value:function(t,n){var o=this;if(!Array.isArray(t))throw new Error("Acceptable media types must be provided as an Array");if(!Array.isArray(n)&&!h(n))throw new Error("Supported media types must be provided as an Array or an Object");var i=[];if(t.forEach((function(t){var a=t.transferSyntaxUID,r=t.mediaType;e._assertMediaTypeIsValid(r);var s='multipart/related; type="'.concat(r,'"');if(h(n)){if(!(Object.values(n).flat(1).includes(r)||r.endsWith("/*")&&r.endsWith("/")))return void m("Media type ".concat(r," is not supported for requested resource"));if(a){if("*"!==a){if(!Object.keys(n).includes(a))throw new Error("Transfer syntax ".concat(a," is not supported for requested resource"));var l=n[a];if(!l.includes(r)){var d=e._parseMediaType(r)[0];l.map((function(t){var n=e._parseMediaType(t)[0];if(d!==n||!r.endsWith("/*")&&!r.endsWith("/"))throw new Error("Transfer syntax ".concat(a," is not supported for requested resource"))}))}}s+="; transfer-syntax=".concat(a)}}else if(Array.isArray(n)&&!n.includes(r))return void(o.verbose&&console.warn("Media type ".concat(r," is not supported for requested resource")));i.push(s)})),!i.length)throw new Error("No acceptable media types found among ".concat(JSON.stringify(t)));return i.join(", ")}},{key:"_buildRangeHeaderFieldValue",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return 1===e.length?"bytes=".concat(e[0],"-"):2===e.length?"bytes=".concat(e[0],"-").concat(e[1]):"bytes=0-"}},{key:"_getSharedMediaTypes",value:function(t){var n=new Set;return t&&t.length?(t.forEach((function(t){var o=t.mediaType,i=e._parseMediaType(o)[0];n.add("".concat(i,"/"))})),Array.from(n)):n}},{key:"_getCommonMediaType",value:function(t){if(!t||!t.length)throw new Error("No acceptable media types provided");var n=e._getSharedMediaTypes(t);if(0===n.length)throw new Error("No common acceptable media type could be identified.");if(n.length>1)throw new Error("Acceptable media types must have the same type.");return n[0]}}],n&&i(t.prototype,n),r&&i(t,r),Object.defineProperty(t,"prototype",{writable:!1}),e}()}},93008:(e,t,n)=>{var o="__lodash_hash_undefined__",i=1/0,a="[object Function]",r="[object GeneratorFunction]",s="[object Symbol]",l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,d=/^\w*$/,c=/^\./,u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,h=/\\(\\)?/g,g=/^\[object .+?Constructor\]$/,p="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,f="object"==typeof self&&self&&self.Object===Object&&self,m=p||f||Function("return this")();var v,w=Array.prototype,b=Function.prototype,E=Object.prototype,I=m["__core-js_shared__"],y=(v=/[^.]+$/.exec(I&&I.keys&&I.keys.IE_PROTO||""))?"Symbol(src)_1."+v:"",_=b.toString,C=E.hasOwnProperty,x=E.toString,S=RegExp("^"+_.call(C).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),T=m.Symbol,A=w.splice,D=F(m,"Map"),M=F(Object,"create"),R=T?T.prototype:void 0,P=R?R.toString:void 0;function O(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function k(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function L(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function U(e,t){for(var n,o,i=e.length;i--;)if((n=e[i][0])===(o=t)||n!=n&&o!=o)return i;return-1}function N(e,t){var n;t=function(e,t){if(G(e))return!1;var n=typeof e;if("number"==n||"symbol"==n||"boolean"==n||null==e||$(e))return!0;return d.test(e)||!l.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:G(n=t)?n:W(n);for(var o=0,i=t.length;null!=e&&o<i;)e=e[H(t[o++])];return o&&o==i?e:void 0}function V(e){if(!z(e)||(t=e,y&&y in t))return!1;var t,n=function(e){var t=z(e)?x.call(e):"";return t==a||t==r}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?S:g;return n.test(function(e){if(null!=e){try{return _.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function B(e,t){var n,o,i=e.__data__;return("string"==(o=typeof(n=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function F(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return V(n)?n:void 0}O.prototype.clear=function(){this.__data__=M?M(null):{}},O.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},O.prototype.get=function(e){var t=this.__data__;if(M){var n=t[e];return n===o?void 0:n}return C.call(t,e)?t[e]:void 0},O.prototype.has=function(e){var t=this.__data__;return M?void 0!==t[e]:C.call(t,e)},O.prototype.set=function(e,t){return this.__data__[e]=M&&void 0===t?o:t,this},k.prototype.clear=function(){this.__data__=[]},k.prototype.delete=function(e){var t=this.__data__,n=U(t,e);return!(n<0)&&(n==t.length-1?t.pop():A.call(t,n,1),!0)},k.prototype.get=function(e){var t=this.__data__,n=U(t,e);return n<0?void 0:t[n][1]},k.prototype.has=function(e){return U(this.__data__,e)>-1},k.prototype.set=function(e,t){var n=this.__data__,o=U(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},L.prototype.clear=function(){this.__data__={hash:new O,map:new(D||k),string:new O}},L.prototype.delete=function(e){return B(this,e).delete(e)},L.prototype.get=function(e){return B(this,e).get(e)},L.prototype.has=function(e){return B(this,e).has(e)},L.prototype.set=function(e,t){return B(this,e).set(e,t),this};var W=j((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if($(e))return P?P.call(e):"";var t=e+"";return"0"==t&&1/e==-i?"-0":t}(t);var n=[];return c.test(e)&&n.push(""),e.replace(u,(function(e,t,o,i){n.push(o?i.replace(h,"$1"):t||e)})),n}));function H(e){if("string"==typeof e||$(e))return e;var t=e+"";return"0"==t&&1/e==-i?"-0":t}function j(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);return n.cache=a.set(i,r),r};return n.cache=new(j.Cache||L),n}j.Cache=L;var G=Array.isArray;function z(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function $(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&x.call(e)==s}e.exports=function(e,t,n){var o=null==e?void 0:N(e,t);return void 0===o?n:o}},83424:(e,t,n)=>{e=n.nmd(e);var o=200,i="__lodash_hash_undefined__",a=1,r=2,s=1/0,l=9007199254740991,d="[object Arguments]",c="[object Array]",u="[object Boolean]",h="[object Date]",g="[object Error]",p="[object Function]",f="[object GeneratorFunction]",m="[object Map]",v="[object Number]",w="[object Object]",b="[object Promise]",E="[object RegExp]",I="[object Set]",y="[object String]",_="[object Symbol]",C="[object WeakMap]",x="[object ArrayBuffer]",S="[object DataView]",T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,A=/^\w*$/,D=/^\./,M=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,R=/\\(\\)?/g,P=/^\[object .+?Constructor\]$/,O=/^(?:0|[1-9]\d*)$/,k={};k["[object Float32Array]"]=k["[object Float64Array]"]=k["[object Int8Array]"]=k["[object Int16Array]"]=k["[object Int32Array]"]=k["[object Uint8Array]"]=k["[object Uint8ClampedArray]"]=k["[object Uint16Array]"]=k["[object Uint32Array]"]=!0,k[d]=k[c]=k[x]=k[u]=k[S]=k[h]=k[g]=k[p]=k[m]=k[v]=k[w]=k[E]=k[I]=k[y]=k[C]=!1;var L="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,U="object"==typeof self&&self&&self.Object===Object&&self,N=L||U||Function("return this")(),V=t&&!t.nodeType&&t,B=V&&e&&!e.nodeType&&e,F=B&&B.exports===V&&L.process,W=function(){try{return F&&F.binding("util")}catch(e){}}(),H=W&&W.isTypedArray;function j(e,t){return!!(e?e.length:0)&&function(e,t,n){if(t!=t)return function(e,t,n,o){var i=e.length,a=n+(o?1:-1);for(;o?a--:++a<i;)if(t(e[a],a,e))return a;return-1}(e,$,n);var o=n-1,i=e.length;for(;++o<i;)if(e[o]===t)return o;return-1}(e,t,0)>-1}function G(e,t,n){for(var o=-1,i=e?e.length:0;++o<i;)if(n(t,e[o]))return!0;return!1}function z(e,t){for(var n=-1,o=e?e.length:0;++n<o;)if(t(e[n],n,e))return!0;return!1}function $(e){return e!=e}function q(e,t){return e.has(t)}function K(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function Z(e){var t=-1,n=Array(e.size);return e.forEach((function(e,o){n[++t]=[o,e]})),n}function J(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var Y,X,Q,ee=Array.prototype,te=Function.prototype,ne=Object.prototype,oe=N["__core-js_shared__"],ie=(Y=/[^.]+$/.exec(oe&&oe.keys&&oe.keys.IE_PROTO||""))?"Symbol(src)_1."+Y:"",ae=te.toString,re=ne.hasOwnProperty,se=ne.toString,le=RegExp("^"+ae.call(re).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),de=N.Symbol,ce=N.Uint8Array,ue=ne.propertyIsEnumerable,he=ee.splice,ge=(X=Object.keys,Q=Object,function(e){return X(Q(e))}),pe=ze(N,"DataView"),fe=ze(N,"Map"),me=ze(N,"Promise"),ve=ze(N,"Set"),we=ze(N,"WeakMap"),be=ze(Object,"create"),Ee=Qe(pe),Ie=Qe(fe),ye=Qe(me),_e=Qe(ve),Ce=Qe(we),xe=de?de.prototype:void 0,Se=xe?xe.valueOf:void 0,Te=xe?xe.toString:void 0;function Ae(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function De(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function Me(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function Re(e){var t=-1,n=e?e.length:0;for(this.__data__=new Me;++t<n;)this.add(e[t])}function Pe(e){this.__data__=new De(e)}function Oe(e,t){var n=ot(e)||nt(e)?function(e,t){for(var n=-1,o=Array(e);++n<e;)o[n]=t(n);return o}(e.length,String):[],o=n.length,i=!!o;for(var a in e)!t&&!re.call(e,a)||i&&("length"==a||qe(a,o))||n.push(a);return n}function ke(e,t){for(var n=e.length;n--;)if(tt(e[n][0],t))return n;return-1}function Le(e,t){for(var n=0,o=(t=Ke(t,e)?[t]:We(t)).length;null!=e&&n<o;)e=e[Xe(t[n++])];return n&&n==o?e:void 0}function Ue(e,t){return null!=e&&t in Object(e)}function Ne(e,t,n,o,i){return e===t||(null==e||null==t||!st(e)&&!lt(t)?e!=e&&t!=t:function(e,t,n,o,i,s){var l=ot(e),p=ot(t),f=c,b=c;l||(f=(f=$e(e))==d?w:f);p||(b=(b=$e(t))==d?w:b);var C=f==w&&!K(e),T=b==w&&!K(t),A=f==b;if(A&&!C)return s||(s=new Pe),l||ct(e)?je(e,t,n,o,i,s):function(e,t,n,o,i,s,l){switch(n){case S:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case x:return!(e.byteLength!=t.byteLength||!o(new ce(e),new ce(t)));case u:case h:case v:return tt(+e,+t);case g:return e.name==t.name&&e.message==t.message;case E:case y:return e==t+"";case m:var d=Z;case I:var c=s&r;if(d||(d=J),e.size!=t.size&&!c)return!1;var p=l.get(e);if(p)return p==t;s|=a,l.set(e,t);var f=je(d(e),d(t),o,i,s,l);return l.delete(e),f;case _:if(Se)return Se.call(e)==Se.call(t)}return!1}(e,t,f,n,o,i,s);if(!(i&r)){var D=C&&re.call(e,"__wrapped__"),M=T&&re.call(t,"__wrapped__");if(D||M){var R=D?e.value():e,P=M?t.value():t;return s||(s=new Pe),n(R,P,o,i,s)}}if(!A)return!1;return s||(s=new Pe),function(e,t,n,o,i,a){var s=i&r,l=ut(e),d=l.length,c=ut(t),u=c.length;if(d!=u&&!s)return!1;var h=d;for(;h--;){var g=l[h];if(!(s?g in t:re.call(t,g)))return!1}var p=a.get(e);if(p&&a.get(t))return p==t;var f=!0;a.set(e,t),a.set(t,e);var m=s;for(;++h<d;){var v=e[g=l[h]],w=t[g];if(o)var b=s?o(w,v,g,t,e,a):o(v,w,g,e,t,a);if(!(void 0===b?v===w||n(v,w,o,i,a):b)){f=!1;break}m||(m="constructor"==g)}if(f&&!m){var E=e.constructor,I=t.constructor;E==I||!("constructor"in e)||!("constructor"in t)||"function"==typeof E&&E instanceof E&&"function"==typeof I&&I instanceof I||(f=!1)}return a.delete(e),a.delete(t),f}(e,t,n,o,i,s)}(e,t,Ne,n,o,i))}function Ve(e){return!(!st(e)||function(e){return!!ie&&ie in e}(e))&&(at(e)||K(e)?le:P).test(Qe(e))}function Be(e){return"function"==typeof e?e:null==e?ht:"object"==typeof e?ot(e)?function(e,t){if(Ke(e)&&Ze(t))return Je(Xe(e),t);return function(n){var o=function(e,t,n){var o=null==e?void 0:Le(e,t);return void 0===o?n:o}(n,e);return void 0===o&&o===t?function(e,t){return null!=e&&function(e,t,n){t=Ke(t,e)?[t]:We(t);var o,i=-1,a=t.length;for(;++i<a;){var r=Xe(t[i]);if(!(o=null!=e&&n(e,r)))break;e=e[r]}if(o)return o;a=e?e.length:0;return!!a&&rt(a)&&qe(r,a)&&(ot(e)||nt(e))}(e,t,Ue)}(n,e):Ne(t,o,void 0,a|r)}}(e[0],e[1]):function(e){var t=function(e){var t=ut(e),n=t.length;for(;n--;){var o=t[n],i=e[o];t[n]=[o,i,Ze(i)]}return t}(e);if(1==t.length&&t[0][2])return Je(t[0][0],t[0][1]);return function(n){return n===e||function(e,t,n,o){var i=n.length,s=i,l=!o;if(null==e)return!s;for(e=Object(e);i--;){var d=n[i];if(l&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++i<s;){var c=(d=n[i])[0],u=e[c],h=d[1];if(l&&d[2]){if(void 0===u&&!(c in e))return!1}else{var g=new Pe;if(o)var p=o(u,h,c,e,t,g);if(!(void 0===p?Ne(h,u,o,a|r,g):p))return!1}}return!0}(n,e,t)}}(e):Ke(t=e)?(n=Xe(t),function(e){return null==e?void 0:e[n]}):function(e){return function(t){return Le(t,e)}}(t);var t,n}function Fe(e){if(n=(t=e)&&t.constructor,o="function"==typeof n&&n.prototype||ne,t!==o)return ge(e);var t,n,o,i=[];for(var a in Object(e))re.call(e,a)&&"constructor"!=a&&i.push(a);return i}function We(e){return ot(e)?e:Ye(e)}Ae.prototype.clear=function(){this.__data__=be?be(null):{}},Ae.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},Ae.prototype.get=function(e){var t=this.__data__;if(be){var n=t[e];return n===i?void 0:n}return re.call(t,e)?t[e]:void 0},Ae.prototype.has=function(e){var t=this.__data__;return be?void 0!==t[e]:re.call(t,e)},Ae.prototype.set=function(e,t){return this.__data__[e]=be&&void 0===t?i:t,this},De.prototype.clear=function(){this.__data__=[]},De.prototype.delete=function(e){var t=this.__data__,n=ke(t,e);return!(n<0)&&(n==t.length-1?t.pop():he.call(t,n,1),!0)},De.prototype.get=function(e){var t=this.__data__,n=ke(t,e);return n<0?void 0:t[n][1]},De.prototype.has=function(e){return ke(this.__data__,e)>-1},De.prototype.set=function(e,t){var n=this.__data__,o=ke(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},Me.prototype.clear=function(){this.__data__={hash:new Ae,map:new(fe||De),string:new Ae}},Me.prototype.delete=function(e){return Ge(this,e).delete(e)},Me.prototype.get=function(e){return Ge(this,e).get(e)},Me.prototype.has=function(e){return Ge(this,e).has(e)},Me.prototype.set=function(e,t){return Ge(this,e).set(e,t),this},Re.prototype.add=Re.prototype.push=function(e){return this.__data__.set(e,i),this},Re.prototype.has=function(e){return this.__data__.has(e)},Pe.prototype.clear=function(){this.__data__=new De},Pe.prototype.delete=function(e){return this.__data__.delete(e)},Pe.prototype.get=function(e){return this.__data__.get(e)},Pe.prototype.has=function(e){return this.__data__.has(e)},Pe.prototype.set=function(e,t){var n=this.__data__;if(n instanceof De){var i=n.__data__;if(!fe||i.length<o-1)return i.push([e,t]),this;n=this.__data__=new Me(i)}return n.set(e,t),this};var He=ve&&1/J(new ve([,-0]))[1]==s?function(e){return new ve(e)}:function(){};function je(e,t,n,o,i,s){var l=i&r,d=e.length,c=t.length;if(d!=c&&!(l&&c>d))return!1;var u=s.get(e);if(u&&s.get(t))return u==t;var h=-1,g=!0,p=i&a?new Re:void 0;for(s.set(e,t),s.set(t,e);++h<d;){var f=e[h],m=t[h];if(o)var v=l?o(m,f,h,t,e,s):o(f,m,h,e,t,s);if(void 0!==v){if(v)continue;g=!1;break}if(p){if(!z(t,(function(e,t){if(!p.has(t)&&(f===e||n(f,e,o,i,s)))return p.add(t)}))){g=!1;break}}else if(f!==m&&!n(f,m,o,i,s)){g=!1;break}}return s.delete(e),s.delete(t),g}function Ge(e,t){var n,o,i=e.__data__;return("string"==(o=typeof(n=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function ze(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Ve(n)?n:void 0}var $e=function(e){return se.call(e)};function qe(e,t){return!!(t=null==t?l:t)&&("number"==typeof e||O.test(e))&&e>-1&&e%1==0&&e<t}function Ke(e,t){if(ot(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!dt(e))||(A.test(e)||!T.test(e)||null!=t&&e in Object(t))}function Ze(e){return e==e&&!st(e)}function Je(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}(pe&&$e(new pe(new ArrayBuffer(1)))!=S||fe&&$e(new fe)!=m||me&&$e(me.resolve())!=b||ve&&$e(new ve)!=I||we&&$e(new we)!=C)&&($e=function(e){var t=se.call(e),n=t==w?e.constructor:void 0,o=n?Qe(n):void 0;if(o)switch(o){case Ee:return S;case Ie:return m;case ye:return b;case _e:return I;case Ce:return C}return t});var Ye=et((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(dt(e))return Te?Te.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}(t);var n=[];return D.test(e)&&n.push(""),e.replace(M,(function(e,t,o,i){n.push(o?i.replace(R,"$1"):t||e)})),n}));function Xe(e){if("string"==typeof e||dt(e))return e;var t=e+"";return"0"==t&&1/e==-s?"-0":t}function Qe(e){if(null!=e){try{return ae.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function et(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);return n.cache=a.set(i,r),r};return n.cache=new(et.Cache||Me),n}function tt(e,t){return e===t||e!=e&&t!=t}function nt(e){return function(e){return lt(e)&&it(e)}(e)&&re.call(e,"callee")&&(!ue.call(e,"callee")||se.call(e)==d)}et.Cache=Me;var ot=Array.isArray;function it(e){return null!=e&&rt(e.length)&&!at(e)}function at(e){var t=st(e)?se.call(e):"";return t==p||t==f}function rt(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=l}function st(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function lt(e){return!!e&&"object"==typeof e}function dt(e){return"symbol"==typeof e||lt(e)&&se.call(e)==_}var ct=H?function(e){return function(t){return e(t)}}(H):function(e){return lt(e)&&rt(e.length)&&!!k[se.call(e)]};function ut(e){return it(e)?Oe(e):Fe(e)}function ht(e){return e}e.exports=function(e,t){return e&&e.length?function(e,t,n){var i=-1,a=j,r=e.length,s=!0,l=[],d=l;if(n)s=!1,a=G;else if(r>=o){var c=t?null:He(e);if(c)return J(c);s=!1,a=q,d=new Re}else d=t?[]:l;e:for(;++i<r;){var u=e[i],h=t?t(u):u;if(u=n||0!==u?u:0,s&&h==h){for(var g=d.length;g--;)if(d[g]===h)continue e;t&&d.push(h),l.push(u)}else a(d,h,n)||(d!==l&&d.push(h),l.push(u))}return l}(e,Be(t)):[]}},75178:(e,t,n)=>{var o=n(33188)(n(37183),"DataView");e.exports=o},13615:(e,t,n)=>{var o=n(48342),i=n(9184),a=n(7747),r=n(74287),s=n(80007);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=r,l.prototype.set=s,e.exports=l},60789:(e,t,n)=>{var o=n(57752),i=n(718),a=n(57849),r=n(43957),s=n(50845);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=r,l.prototype.set=s,e.exports=l},48561:(e,t,n)=>{var o=n(33188)(n(37183),"Map");e.exports=o},91451:(e,t,n)=>{var o=n(35674),i=n(11036),a=n(90031),r=n(21907),s=n(60971);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=r,l.prototype.set=s,e.exports=l},1490:(e,t,n)=>{var o=n(33188)(n(37183),"Promise");e.exports=o},96775:(e,t,n)=>{var o=n(33188)(n(37183),"Set");e.exports=o},48869:(e,t,n)=>{var o=n(91451),i=n(86810),a=n(75813);function r(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new o;++t<n;)this.add(e[t])}r.prototype.add=r.prototype.push=i,r.prototype.has=a,e.exports=r},92823:(e,t,n)=>{var o=n(60789),i=n(88926),a=n(22680),r=n(73851),s=n(98423),l=n(3967);function d(e){var t=this.__data__=new o(e);this.size=t.size}d.prototype.clear=i,d.prototype.delete=a,d.prototype.get=r,d.prototype.has=s,d.prototype.set=l,e.exports=d},16846:(e,t,n)=>{var o=n(37183).Uint8Array;e.exports=o},88985:(e,t,n)=>{var o=n(33188)(n(37183),"WeakMap");e.exports=o},20607:e=>{e.exports=function(e,t){for(var n=-1,o=null==e?0:e.length;++n<o&&!1!==t(e[n],n,e););return e}},40836:e=>{e.exports=function(e,t){for(var n=-1,o=null==e?0:e.length,i=0,a=[];++n<o;){var r=e[n];t(r,n,e)&&(a[i++]=r)}return a}},70661:(e,t,n)=>{var o=n(40142),i=n(95962),a=n(64383),r=n(78098),s=n(84683),l=n(63905),d=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=a(e),c=!n&&i(e),u=!n&&!c&&r(e),h=!n&&!c&&!u&&l(e),g=n||c||u||h,p=g?o(e.length,String):[],f=p.length;for(var m in e)!t&&!d.call(e,m)||g&&("length"==m||u&&("offset"==m||"parent"==m)||h&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||s(m,f))||p.push(m);return p}},26138:e=>{e.exports=function(e,t){for(var n=-1,o=null==e?0:e.length,i=Array(o);++n<o;)i[n]=t(e[n],n,e);return i}},65862:e=>{e.exports=function(e,t){for(var n=-1,o=t.length,i=e.length;++n<o;)e[i+n]=t[n];return e}},87938:e=>{e.exports=function(e,t){for(var n=-1,o=null==e?0:e.length;++n<o;)if(t(e[n],n,e))return!0;return!1}},72177:(e,t,n)=>{var o=n(9142),i=n(29830),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var r=e[t];a.call(e,t)&&i(r,n)&&(void 0!==n||t in e)||o(e,t,n)}},40435:(e,t,n)=>{var o=n(29830);e.exports=function(e,t){for(var n=e.length;n--;)if(o(e[n][0],t))return n;return-1}},90267:(e,t,n)=>{var o=n(26837),i=n(38420);e.exports=function(e,t){return e&&o(t,i(t),e)}},55240:(e,t,n)=>{var o=n(26837),i=n(53435);e.exports=function(e,t){return e&&o(t,i(t),e)}},9142:(e,t,n)=>{var o=n(83733);e.exports=function(e,t,n){"__proto__"==t&&o?o(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},69557:(e,t,n)=>{var o=n(92823),i=n(20607),a=n(72177),r=n(90267),s=n(55240),l=n(6064),d=n(28601),c=n(2881),u=n(26186),h=n(53300),g=n(44667),p=n(58355),f=n(86203),m=n(57981),v=n(50235),w=n(64383),b=n(78098),E=n(4024),I=n(46015),y=n(88802),_=n(38420),C=n(53435),x="[object Arguments]",S="[object Function]",T="[object Object]",A={};A[x]=A["[object Array]"]=A["[object ArrayBuffer]"]=A["[object DataView]"]=A["[object Boolean]"]=A["[object Date]"]=A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Map]"]=A["[object Number]"]=A[T]=A["[object RegExp]"]=A["[object Set]"]=A["[object String]"]=A["[object Symbol]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A["[object Error]"]=A[S]=A["[object WeakMap]"]=!1,e.exports=function e(t,n,D,M,R,P){var O,k=1&n,L=2&n,U=4&n;if(D&&(O=R?D(t,M,R,P):D(t)),void 0!==O)return O;if(!I(t))return t;var N=w(t);if(N){if(O=f(t),!k)return d(t,O)}else{var V=p(t),B=V==S||"[object GeneratorFunction]"==V;if(b(t))return l(t,k);if(V==T||V==x||B&&!R){if(O=L||B?{}:v(t),!k)return L?u(t,s(O,t)):c(t,r(O,t))}else{if(!A[V])return R?t:{};O=m(t,V,k)}}P||(P=new o);var F=P.get(t);if(F)return F;P.set(t,O),y(t)?t.forEach((function(o){O.add(e(o,n,D,o,t,P))})):E(t)&&t.forEach((function(o,i){O.set(i,e(o,n,D,i,t,P))}));var W=N?void 0:(U?L?g:h:L?C:_)(t);return i(W||t,(function(o,i){W&&(o=t[i=o]),a(O,i,e(o,n,D,i,t,P))})),O}},61534:(e,t,n)=>{var o=n(46015),i=Object.create,a=function(){function e(){}return function(t){if(!o(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=a},14183:(e,t,n)=>{var o=n(76895),i=n(19835)(o);e.exports=i},61311:(e,t,n)=>{var o=n(37747)();e.exports=o},76895:(e,t,n)=>{var o=n(61311),i=n(38420);e.exports=function(e,t){return e&&o(e,t,i)}},92748:(e,t,n)=>{var o=n(84679),i=n(54671);e.exports=function(e,t){for(var n=0,a=(t=o(t,e)).length;null!=e&&n<a;)e=e[i(t[n++])];return n&&n==a?e:void 0}},59169:(e,t,n)=>{var o=n(65862),i=n(64383);e.exports=function(e,t,n){var a=t(e);return i(e)?a:o(a,n(e))}},71607:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},23871:(e,t,n)=>{var o=n(16990),i=n(46184);e.exports=function(e){return i(e)&&"[object Arguments]"==o(e)}},93028:(e,t,n)=>{var o=n(87114),i=n(46184);e.exports=function e(t,n,a,r,s){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!=t&&n!=n:o(t,n,a,r,e,s))}},87114:(e,t,n)=>{var o=n(92823),i=n(55237),a=n(53728),r=n(45355),s=n(58355),l=n(64383),d=n(78098),c=n(63905),u="[object Arguments]",h="[object Array]",g="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,f,m,v){var w=l(e),b=l(t),E=w?h:s(e),I=b?h:s(t),y=(E=E==u?g:E)==g,_=(I=I==u?g:I)==g,C=E==I;if(C&&d(e)){if(!d(t))return!1;w=!0,y=!1}if(C&&!y)return v||(v=new o),w||c(e)?i(e,t,n,f,m,v):a(e,t,E,n,f,m,v);if(!(1&n)){var x=y&&p.call(e,"__wrapped__"),S=_&&p.call(t,"__wrapped__");if(x||S){var T=x?e.value():e,A=S?t.value():t;return v||(v=new o),m(T,A,n,f,v)}}return!!C&&(v||(v=new o),r(e,t,n,f,m,v))}},10162:(e,t,n)=>{var o=n(58355),i=n(46184);e.exports=function(e){return i(e)&&"[object Map]"==o(e)}},49121:(e,t,n)=>{var o=n(92823),i=n(93028);e.exports=function(e,t,n,a){var r=n.length,s=r,l=!a;if(null==e)return!s;for(e=Object(e);r--;){var d=n[r];if(l&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++r<s;){var c=(d=n[r])[0],u=e[c],h=d[1];if(l&&d[2]){if(void 0===u&&!(c in e))return!1}else{var g=new o;if(a)var p=a(u,h,c,e,t,g);if(!(void 0===p?i(h,u,3,a,g):p))return!1}}return!0}},73829:(e,t,n)=>{var o=n(94360),i=n(67234),a=n(46015),r=n(70275),s=/^\[object .+?Constructor\]$/,l=Function.prototype,d=Object.prototype,c=l.toString,u=d.hasOwnProperty,h=RegExp("^"+c.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||i(e))&&(o(e)?h:s).test(r(e))}},18344:(e,t,n)=>{var o=n(58355),i=n(46184);e.exports=function(e){return i(e)&&"[object Set]"==o(e)}},84271:(e,t,n)=>{var o=n(16990),i=n(31784),a=n(46184),r={};r["[object Float32Array]"]=r["[object Float64Array]"]=r["[object Int8Array]"]=r["[object Int16Array]"]=r["[object Int32Array]"]=r["[object Uint8Array]"]=r["[object Uint8ClampedArray]"]=r["[object Uint16Array]"]=r["[object Uint32Array]"]=!0,r["[object Arguments]"]=r["[object Array]"]=r["[object ArrayBuffer]"]=r["[object Boolean]"]=r["[object DataView]"]=r["[object Date]"]=r["[object Error]"]=r["[object Function]"]=r["[object Map]"]=r["[object Number]"]=r["[object Object]"]=r["[object RegExp]"]=r["[object Set]"]=r["[object String]"]=r["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&i(e.length)&&!!r[o(e)]}},94207:(e,t,n)=>{var o=n(12801),i=n(72208),a=n(69090),r=n(64383),s=n(46062);e.exports=function(e){return"function"==typeof e?e:null==e?a:"object"==typeof e?r(e)?i(e[0],e[1]):o(e):s(e)}},29966:(e,t,n)=>{var o=n(88089),i=n(6128),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!o(e))return i(e);var t=[];for(var n in Object(e))a.call(e,n)&&"constructor"!=n&&t.push(n);return t}},7641:(e,t,n)=>{var o=n(46015),i=n(88089),a=n(65567),r=Object.prototype.hasOwnProperty;e.exports=function(e){if(!o(e))return a(e);var t=i(e),n=[];for(var s in e)("constructor"!=s||!t&&r.call(e,s))&&n.push(s);return n}},35218:(e,t,n)=>{var o=n(14183),i=n(19592);e.exports=function(e,t){var n=-1,a=i(e)?Array(e.length):[];return o(e,(function(e,o,i){a[++n]=t(e,o,i)})),a}},12801:(e,t,n)=>{var o=n(49121),i=n(59406),a=n(76459);e.exports=function(e){var t=i(e);return 1==t.length&&t[0][2]?a(t[0][0],t[0][1]):function(n){return n===e||o(n,e,t)}}},72208:(e,t,n)=>{var o=n(93028),i=n(29650),a=n(2993),r=n(39668),s=n(48938),l=n(76459),d=n(54671);e.exports=function(e,t){return r(e)&&s(t)?l(d(e),t):function(n){var r=i(n,e);return void 0===r&&r===t?a(n,e):o(t,r,3)}}},55351:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},54953:(e,t,n)=>{var o=n(92748);e.exports=function(e){return function(t){return o(t,e)}}},40142:e=>{e.exports=function(e,t){for(var n=-1,o=Array(e);++n<e;)o[n]=t(n);return o}},84742:(e,t,n)=>{var o=n(7187),i=n(26138),a=n(64383),r=n(63536),s=o?o.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return i(t,e)+"";if(r(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},26143:e=>{e.exports=function(e){return function(t){return e(t)}}},37773:e=>{e.exports=function(e,t){return e.has(t)}},54420:(e,t,n)=>{var o=n(69090);e.exports=function(e){return"function"==typeof e?e:o}},84679:(e,t,n)=>{var o=n(64383),i=n(39668),a=n(30412),r=n(12832);e.exports=function(e,t){return o(e)?e:i(e,t)?[e]:a(r(e))}},73911:(e,t,n)=>{var o=n(16846);e.exports=function(e){var t=new e.constructor(e.byteLength);return new o(t).set(new o(e)),t}},6064:(e,t,n)=>{e=n.nmd(e);var o=n(37183),i=t&&!t.nodeType&&t,a=i&&e&&!e.nodeType&&e,r=a&&a.exports===i?o.Buffer:void 0,s=r?r.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,o=s?s(n):new e.constructor(n);return e.copy(o),o}},63887:(e,t,n)=>{var o=n(73911);e.exports=function(e,t){var n=t?o(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},31871:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},45938:(e,t,n)=>{var o=n(7187),i=o?o.prototype:void 0,a=i?i.valueOf:void 0;e.exports=function(e){return a?Object(a.call(e)):{}}},11671:(e,t,n)=>{var o=n(73911);e.exports=function(e,t){var n=t?o(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},28601:e=>{e.exports=function(e,t){var n=-1,o=e.length;for(t||(t=Array(o));++n<o;)t[n]=e[n];return t}},26837:(e,t,n)=>{var o=n(72177),i=n(9142);e.exports=function(e,t,n,a){var r=!n;n||(n={});for(var s=-1,l=t.length;++s<l;){var d=t[s],c=a?a(n[d],e[d],d,n,e):void 0;void 0===c&&(c=e[d]),r?i(n,d,c):o(n,d,c)}return n}},2881:(e,t,n)=>{var o=n(26837),i=n(19946);e.exports=function(e,t){return o(e,i(e),t)}},26186:(e,t,n)=>{var o=n(26837),i=n(51693);e.exports=function(e,t){return o(e,i(e),t)}},85171:(e,t,n)=>{var o=n(37183)["__core-js_shared__"];e.exports=o},19835:(e,t,n)=>{var o=n(19592);e.exports=function(e,t){return function(n,i){if(null==n)return n;if(!o(n))return e(n,i);for(var a=n.length,r=t?a:-1,s=Object(n);(t?r--:++r<a)&&!1!==i(s[r],r,s););return n}}},37747:e=>{e.exports=function(e){return function(t,n,o){for(var i=-1,a=Object(t),r=o(t),s=r.length;s--;){var l=r[e?s:++i];if(!1===n(a[l],l,a))break}return t}}},83733:(e,t,n)=>{var o=n(33188),i=function(){try{var e=o(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=i},55237:(e,t,n)=>{var o=n(48869),i=n(87938),a=n(37773);e.exports=function(e,t,n,r,s,l){var d=1&n,c=e.length,u=t.length;if(c!=u&&!(d&&u>c))return!1;var h=l.get(e),g=l.get(t);if(h&&g)return h==t&&g==e;var p=-1,f=!0,m=2&n?new o:void 0;for(l.set(e,t),l.set(t,e);++p<c;){var v=e[p],w=t[p];if(r)var b=d?r(w,v,p,t,e,l):r(v,w,p,e,t,l);if(void 0!==b){if(b)continue;f=!1;break}if(m){if(!i(t,(function(e,t){if(!a(m,t)&&(v===e||s(v,e,n,r,l)))return m.push(t)}))){f=!1;break}}else if(v!==w&&!s(v,w,n,r,l)){f=!1;break}}return l.delete(e),l.delete(t),f}},53728:(e,t,n)=>{var o=n(7187),i=n(16846),a=n(29830),r=n(55237),s=n(58887),l=n(28629),d=o?o.prototype:void 0,c=d?d.valueOf:void 0;e.exports=function(e,t,n,o,d,u,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!u(new i(e),new i(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var g=s;case"[object Set]":var p=1&o;if(g||(g=l),e.size!=t.size&&!p)return!1;var f=h.get(e);if(f)return f==t;o|=2,h.set(e,t);var m=r(g(e),g(t),o,d,u,h);return h.delete(e),m;case"[object Symbol]":if(c)return c.call(e)==c.call(t)}return!1}},45355:(e,t,n)=>{var o=n(53300),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,r,s){var l=1&n,d=o(e),c=d.length;if(c!=o(t).length&&!l)return!1;for(var u=c;u--;){var h=d[u];if(!(l?h in t:i.call(t,h)))return!1}var g=s.get(e),p=s.get(t);if(g&&p)return g==t&&p==e;var f=!0;s.set(e,t),s.set(t,e);for(var m=l;++u<c;){var v=e[h=d[u]],w=t[h];if(a)var b=l?a(w,v,h,t,e,s):a(v,w,h,e,t,s);if(!(void 0===b?v===w||r(v,w,n,a,s):b)){f=!1;break}m||(m="constructor"==h)}if(f&&!m){var E=e.constructor,I=t.constructor;E==I||!("constructor"in e)||!("constructor"in t)||"function"==typeof E&&E instanceof E&&"function"==typeof I&&I instanceof I||(f=!1)}return s.delete(e),s.delete(t),f}},53300:(e,t,n)=>{var o=n(59169),i=n(19946),a=n(38420);e.exports=function(e){return o(e,a,i)}},44667:(e,t,n)=>{var o=n(59169),i=n(51693),a=n(53435);e.exports=function(e){return o(e,a,i)}},18037:(e,t,n)=>{var o=n(65912);e.exports=function(e,t){var n=e.__data__;return o(t)?n["string"==typeof t?"string":"hash"]:n.map}},59406:(e,t,n)=>{var o=n(48938),i=n(38420);e.exports=function(e){for(var t=i(e),n=t.length;n--;){var a=t[n],r=e[a];t[n]=[a,r,o(r)]}return t}},33188:(e,t,n)=>{var o=n(73829),i=n(91870);e.exports=function(e,t){var n=i(e,t);return o(n)?n:void 0}},79637:(e,t,n)=>{var o=n(61429)(Object.getPrototypeOf,Object);e.exports=o},19946:(e,t,n)=>{var o=n(40836),i=n(16499),a=Object.prototype.propertyIsEnumerable,r=Object.getOwnPropertySymbols,s=r?function(e){return null==e?[]:(e=Object(e),o(r(e),(function(t){return a.call(e,t)})))}:i;e.exports=s},51693:(e,t,n)=>{var o=n(65862),i=n(79637),a=n(19946),r=n(16499),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)o(t,a(e)),e=i(e);return t}:r;e.exports=s},58355:(e,t,n)=>{var o=n(75178),i=n(48561),a=n(1490),r=n(96775),s=n(88985),l=n(16990),d=n(70275),c="[object Map]",u="[object Promise]",h="[object Set]",g="[object WeakMap]",p="[object DataView]",f=d(o),m=d(i),v=d(a),w=d(r),b=d(s),E=l;(o&&E(new o(new ArrayBuffer(1)))!=p||i&&E(new i)!=c||a&&E(a.resolve())!=u||r&&E(new r)!=h||s&&E(new s)!=g)&&(E=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,o=n?d(n):"";if(o)switch(o){case f:return p;case m:return c;case v:return u;case w:return h;case b:return g}return t}),e.exports=E},91870:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},53852:(e,t,n)=>{var o=n(84679),i=n(95962),a=n(64383),r=n(84683),s=n(31784),l=n(54671);e.exports=function(e,t,n){for(var d=-1,c=(t=o(t,e)).length,u=!1;++d<c;){var h=l(t[d]);if(!(u=null!=e&&n(e,h)))break;e=e[h]}return u||++d!=c?u:!!(c=null==e?0:e.length)&&s(c)&&r(h,c)&&(a(e)||i(e))}},48342:(e,t,n)=>{var o=n(21960);e.exports=function(){this.__data__=o?o(null):{},this.size=0}},9184:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},7747:(e,t,n)=>{var o=n(21960),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(o){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},74287:(e,t,n)=>{var o=n(21960),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return o?void 0!==t[e]:i.call(t,e)}},80007:(e,t,n)=>{var o=n(21960);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=o&&void 0===t?"__lodash_hash_undefined__":t,this}},86203:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,o=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(o.index=e.index,o.input=e.input),o}},57981:(e,t,n)=>{var o=n(73911),i=n(63887),a=n(31871),r=n(45938),s=n(11671);e.exports=function(e,t,n){var l=e.constructor;switch(t){case"[object ArrayBuffer]":return o(e);case"[object Boolean]":case"[object Date]":return new l(+e);case"[object DataView]":return i(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,n);case"[object Map]":case"[object Set]":return new l;case"[object Number]":case"[object String]":return new l(e);case"[object RegExp]":return a(e);case"[object Symbol]":return r(e)}}},50235:(e,t,n)=>{var o=n(61534),i=n(79637),a=n(88089);e.exports=function(e){return"function"!=typeof e.constructor||a(e)?{}:o(i(e))}},84683:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var o=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==o||"symbol"!=o&&t.test(e))&&e>-1&&e%1==0&&e<n}},39668:(e,t,n)=>{var o=n(64383),i=n(63536),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;e.exports=function(e,t){if(o(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(r.test(e)||!a.test(e)||null!=t&&e in Object(t))}},65912:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},67234:(e,t,n)=>{var o,i=n(85171),a=(o=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+o:"";e.exports=function(e){return!!a&&a in e}},88089:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},48938:(e,t,n)=>{var o=n(46015);e.exports=function(e){return e==e&&!o(e)}},57752:e=>{e.exports=function(){this.__data__=[],this.size=0}},718:(e,t,n)=>{var o=n(40435),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=o(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},57849:(e,t,n)=>{var o=n(40435);e.exports=function(e){var t=this.__data__,n=o(t,e);return n<0?void 0:t[n][1]}},43957:(e,t,n)=>{var o=n(40435);e.exports=function(e){return o(this.__data__,e)>-1}},50845:(e,t,n)=>{var o=n(40435);e.exports=function(e,t){var n=this.__data__,i=o(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},35674:(e,t,n)=>{var o=n(13615),i=n(60789),a=n(48561);e.exports=function(){this.size=0,this.__data__={hash:new o,map:new(a||i),string:new o}}},11036:(e,t,n)=>{var o=n(18037);e.exports=function(e){var t=o(this,e).delete(e);return this.size-=t?1:0,t}},90031:(e,t,n)=>{var o=n(18037);e.exports=function(e){return o(this,e).get(e)}},21907:(e,t,n)=>{var o=n(18037);e.exports=function(e){return o(this,e).has(e)}},60971:(e,t,n)=>{var o=n(18037);e.exports=function(e,t){var n=o(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},58887:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,o){n[++t]=[o,e]})),n}},76459:e=>{e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},72110:(e,t,n)=>{var o=n(99098);e.exports=function(e){var t=o(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},21960:(e,t,n)=>{var o=n(33188)(Object,"create");e.exports=o},6128:(e,t,n)=>{var o=n(61429)(Object.keys,Object);e.exports=o},65567:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},43271:(e,t,n)=>{e=n.nmd(e);var o=n(75194),i=t&&!t.nodeType&&t,a=i&&e&&!e.nodeType&&e,r=a&&a.exports===i&&o.process,s=function(){try{var e=a&&a.require&&a.require("util").types;return e||r&&r.binding&&r.binding("util")}catch(e){}}();e.exports=s},61429:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},86810:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},75813:e=>{e.exports=function(e){return this.__data__.has(e)}},28629:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},88926:(e,t,n)=>{var o=n(60789);e.exports=function(){this.__data__=new o,this.size=0}},22680:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},73851:e=>{e.exports=function(e){return this.__data__.get(e)}},98423:e=>{e.exports=function(e){return this.__data__.has(e)}},3967:(e,t,n)=>{var o=n(60789),i=n(48561),a=n(91451);e.exports=function(e,t){var n=this.__data__;if(n instanceof o){var r=n.__data__;if(!i||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new a(r)}return n.set(e,t),this.size=n.size,this}},30412:(e,t,n)=>{var o=n(72110),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,r=o((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,n,o,i){t.push(o?i.replace(a,"$1"):n||e)})),t}));e.exports=r},54671:(e,t,n)=>{var o=n(63536);e.exports=function(e){if("string"==typeof e||o(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},70275:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},81285:(e,t,n)=>{var o=n(69557);e.exports=function(e){return o(e,5)}},29830:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},59741:(e,t,n)=>{var o=n(76895),i=n(54420);e.exports=function(e,t){return e&&o(e,i(t))}},29650:(e,t,n)=>{var o=n(92748);e.exports=function(e,t,n){var i=null==e?void 0:o(e,t);return void 0===i?n:i}},2993:(e,t,n)=>{var o=n(71607),i=n(53852);e.exports=function(e,t){return null!=e&&i(e,t,o)}},69090:e=>{e.exports=function(e){return e}},95962:(e,t,n)=>{var o=n(23871),i=n(46184),a=Object.prototype,r=a.hasOwnProperty,s=a.propertyIsEnumerable,l=o(function(){return arguments}())?o:function(e){return i(e)&&r.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},64383:e=>{var t=Array.isArray;e.exports=t},19592:(e,t,n)=>{var o=n(94360),i=n(31784);e.exports=function(e){return null!=e&&i(e.length)&&!o(e)}},78098:(e,t,n)=>{e=n.nmd(e);var o=n(37183),i=n(11329),a=t&&!t.nodeType&&t,r=a&&e&&!e.nodeType&&e,s=r&&r.exports===a?o.Buffer:void 0,l=(s?s.isBuffer:void 0)||i;e.exports=l},94360:(e,t,n)=>{var o=n(16990),i=n(46015);e.exports=function(e){if(!i(e))return!1;var t=o(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},31784:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},4024:(e,t,n)=>{var o=n(10162),i=n(26143),a=n(43271),r=a&&a.isMap,s=r?i(r):o;e.exports=s},5229:(e,t,n)=>{var o=n(16990),i=n(79637),a=n(46184),r=Function.prototype,s=Object.prototype,l=r.toString,d=s.hasOwnProperty,c=l.call(Object);e.exports=function(e){if(!a(e)||"[object Object]"!=o(e))return!1;var t=i(e);if(null===t)return!0;var n=d.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==c}},88802:(e,t,n)=>{var o=n(18344),i=n(26143),a=n(43271),r=a&&a.isSet,s=r?i(r):o;e.exports=s},87561:(e,t,n)=>{var o=n(16990),i=n(64383),a=n(46184);e.exports=function(e){return"string"==typeof e||!i(e)&&a(e)&&"[object String]"==o(e)}},63905:(e,t,n)=>{var o=n(84271),i=n(26143),a=n(43271),r=a&&a.isTypedArray,s=r?i(r):o;e.exports=s},38420:(e,t,n)=>{var o=n(70661),i=n(29966),a=n(19592);e.exports=function(e){return a(e)?o(e):i(e)}},53435:(e,t,n)=>{var o=n(70661),i=n(7641),a=n(19592);e.exports=function(e){return a(e)?o(e,!0):i(e)}},764:(e,t,n)=>{var o=n(26138),i=n(94207),a=n(35218),r=n(64383);e.exports=function(e,t){return(r(e)?o:a)(e,i(t,3))}},99098:(e,t,n)=>{var o=n(91451);function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);return n.cache=a.set(i,r)||a,r};return n.cache=new(i.Cache||o),n}i.Cache=o,e.exports=i},46062:(e,t,n)=>{var o=n(55351),i=n(54953),a=n(39668),r=n(54671);e.exports=function(e){return a(e)?o(r(e)):i(e)}},16499:e=>{e.exports=function(){return[]}},11329:e=>{e.exports=function(){return!1}},12832:(e,t,n)=>{var o=n(84742);e.exports=function(e){return null==e?"":o(e)}},69175:(e,t,n)=>{"use strict";n.d(t,{xk:()=>Ra});var o=n(86326),i=n(56457),a={},r=function(e,t,n,o){var i=e+"-"+t+"-"+n+(o?"-server":"");if(a[i])return a[i];var r=function(e,t,n,o){if("undefined"==typeof document&&!o)return null;var i=o?new o:document.createElement("canvas");i.width=2*n,i.height=2*n;var a=i.getContext("2d");return a?(a.fillStyle=e,a.fillRect(0,0,i.width,i.height),a.fillStyle=t,a.fillRect(0,0,n,n),a.translate(n,n),a.fillRect(0,0,n,n),i.toDataURL()):null}(e,t,n,o);return a[i]=r,r},s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},l=function(e){var t=e.white,n=e.grey,a=e.size,l=e.renderers,d=e.borderRadius,c=e.boxShadow,u=e.children,h=(0,i.Ay)({default:{grid:{borderRadius:d,boxShadow:c,absolute:"0px 0px 0px 0px",background:"url("+r(t,n,a,l.canvas)+") center left"}}});return(0,o.isValidElement)(u)?o.cloneElement(u,s({},u.props,{style:s({},u.props.style,h.grid)})):o.createElement("div",{style:h.grid})};l.defaultProps={size:8,white:"transparent",grey:"rgba(0,0,0,.08)",renderers:{}};const d=l;var c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();function h(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}const g=function(e){function t(){var e,n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,a=Array(i),r=0;r<i;r++)a[r]=arguments[r];return n=o=h(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(a))),o.handleChange=function(e){var t=function(e,t,n,o,i){var a=i.clientWidth,r=i.clientHeight,s="number"==typeof e.pageX?e.pageX:e.touches[0].pageX,l="number"==typeof e.pageY?e.pageY:e.touches[0].pageY,d=s-(i.getBoundingClientRect().left+window.pageXOffset),c=l-(i.getBoundingClientRect().top+window.pageYOffset);if("vertical"===n){var u=void 0;if(u=c<0?0:c>r?1:Math.round(100*c/r)/100,t.a!==u)return{h:t.h,s:t.s,l:t.l,a:u,source:"rgb"}}else{var h=void 0;if(o!==(h=d<0?0:d>a?1:Math.round(100*d/a)/100))return{h:t.h,s:t.s,l:t.l,a:h,source:"rgb"}}return null}(e,o.props.hsl,o.props.direction,o.props.a,o.container);t&&"function"==typeof o.props.onChange&&o.props.onChange(t,e)},o.handleMouseDown=function(e){o.handleChange(e),window.addEventListener("mousemove",o.handleChange),window.addEventListener("mouseup",o.handleMouseUp)},o.handleMouseUp=function(){o.unbindEventListeners()},o.unbindEventListeners=function(){window.removeEventListener("mousemove",o.handleChange),window.removeEventListener("mouseup",o.handleMouseUp)},h(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),u(t,[{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"render",value:function(){var e=this,t=this.props.rgb,n=(0,i.Ay)({default:{alpha:{absolute:"0px 0px 0px 0px",borderRadius:this.props.radius},checkboard:{absolute:"0px 0px 0px 0px",overflow:"hidden",borderRadius:this.props.radius},gradient:{absolute:"0px 0px 0px 0px",background:"linear-gradient(to right, rgba("+t.r+","+t.g+","+t.b+", 0) 0%,\n           rgba("+t.r+","+t.g+","+t.b+", 1) 100%)",boxShadow:this.props.shadow,borderRadius:this.props.radius},container:{position:"relative",height:"100%",margin:"0 3px"},pointer:{position:"absolute",left:100*t.a+"%"},slider:{width:"4px",borderRadius:"1px",height:"8px",boxShadow:"0 0 2px rgba(0, 0, 0, .6)",background:"#fff",marginTop:"1px",transform:"translateX(-2px)"}},vertical:{gradient:{background:"linear-gradient(to bottom, rgba("+t.r+","+t.g+","+t.b+", 0) 0%,\n           rgba("+t.r+","+t.g+","+t.b+", 1) 100%)"},pointer:{left:0,top:100*t.a+"%"}},overwrite:c({},this.props.style)},{vertical:"vertical"===this.props.direction,overwrite:!0});return o.createElement("div",{style:n.alpha},o.createElement("div",{style:n.checkboard},o.createElement(d,{renderers:this.props.renderers})),o.createElement("div",{style:n.gradient}),o.createElement("div",{style:n.container,ref:function(t){return e.container=t},onMouseDown:this.handleMouseDown,onTouchMove:this.handleChange,onTouchStart:this.handleChange},o.createElement("div",{style:n.pointer},this.props.pointer?o.createElement(this.props.pointer,this.props):o.createElement("div",{style:n.slider}))))}}]),t}(o.PureComponent||o.Component);var p=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();var f=[38,40],m=1;const v=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.handleBlur=function(){n.state.blurValue&&n.setState({value:n.state.blurValue,blurValue:null})},n.handleChange=function(e){n.setUpdatedValue(e.target.value,e)},n.handleKeyDown=function(e){var t,o=function(e){return Number(String(e).replace(/%/g,""))}(e.target.value);if(!isNaN(o)&&(t=e.keyCode,f.indexOf(t)>-1)){var i=n.getArrowOffset(),a=38===e.keyCode?o+i:o-i;n.setUpdatedValue(a,e)}},n.handleDrag=function(e){if(n.props.dragLabel){var t=Math.round(n.props.value+e.movementX);t>=0&&t<=n.props.dragMax&&n.props.onChange&&n.props.onChange(n.getValueObjectWithLabel(t),e)}},n.handleMouseDown=function(e){n.props.dragLabel&&(e.preventDefault(),n.handleDrag(e),window.addEventListener("mousemove",n.handleDrag),window.addEventListener("mouseup",n.handleMouseUp))},n.handleMouseUp=function(){n.unbindEventListeners()},n.unbindEventListeners=function(){window.removeEventListener("mousemove",n.handleDrag),window.removeEventListener("mouseup",n.handleMouseUp)},n.state={value:String(e.value).toUpperCase(),blurValue:String(e.value).toUpperCase()},n.inputId="rc-editable-input-"+m++,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),p(t,[{key:"componentDidUpdate",value:function(e,t){this.props.value===this.state.value||e.value===this.props.value&&t.value===this.state.value||(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(e){return function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}({},this.props.label,e)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||1}},{key:"setUpdatedValue",value:function(e,t){var n=this.props.label?this.getValueObjectWithLabel(e):e;this.props.onChange&&this.props.onChange(n,t),this.setState({value:e})}},{key:"render",value:function(){var e=this,t=(0,i.Ay)({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return o.createElement("div",{style:t.wrap},o.createElement("input",{id:this.inputId,style:t.input,ref:function(t){return e.input=t},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?o.createElement("label",{htmlFor:this.inputId,style:t.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),t}(o.PureComponent||o.Component);var w=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();function b(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}const E=function(e){function t(){var e,n,o;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,a=Array(i),r=0;r<i;r++)a[r]=arguments[r];return n=o=b(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(a))),o.handleChange=function(e){var t=function(e,t,n,o){var i=o.clientWidth,a=o.clientHeight,r="number"==typeof e.pageX?e.pageX:e.touches[0].pageX,s="number"==typeof e.pageY?e.pageY:e.touches[0].pageY,l=r-(o.getBoundingClientRect().left+window.pageXOffset),d=s-(o.getBoundingClientRect().top+window.pageYOffset);if("vertical"===t){var c=void 0;if(c=d<0?359:d>a?0:360*(-100*d/a+100)/100,n.h!==c)return{h:c,s:n.s,l:n.l,a:n.a,source:"hsl"}}else{var u=void 0;if(u=l<0?0:l>i?359:100*l/i*360/100,n.h!==u)return{h:u,s:n.s,l:n.l,a:n.a,source:"hsl"}}return null}(e,o.props.direction,o.props.hsl,o.container);t&&"function"==typeof o.props.onChange&&o.props.onChange(t,e)},o.handleMouseDown=function(e){o.handleChange(e),window.addEventListener("mousemove",o.handleChange),window.addEventListener("mouseup",o.handleMouseUp)},o.handleMouseUp=function(){o.unbindEventListeners()},b(o,n)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),w(t,[{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"unbindEventListeners",value:function(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}},{key:"render",value:function(){var e=this,t=this.props.direction,n=void 0===t?"horizontal":t,a=(0,i.Ay)({default:{hue:{absolute:"0px 0px 0px 0px",borderRadius:this.props.radius,boxShadow:this.props.shadow},container:{padding:"0 2px",position:"relative",height:"100%",borderRadius:this.props.radius},pointer:{position:"absolute",left:100*this.props.hsl.h/360+"%"},slider:{marginTop:"1px",width:"4px",borderRadius:"1px",height:"8px",boxShadow:"0 0 2px rgba(0, 0, 0, .6)",background:"#fff",transform:"translateX(-2px)"}},vertical:{pointer:{left:"0px",top:-100*this.props.hsl.h/360+100+"%"}}},{vertical:"vertical"===n});return o.createElement("div",{style:a.hue},o.createElement("div",{className:"hue-"+n,style:a.container,ref:function(t){return e.container=t},onMouseDown:this.handleMouseDown,onTouchMove:this.handleChange,onTouchStart:this.handleChange},o.createElement("style",null,"\n            .hue-horizontal {\n              background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\n                33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n              background: -webkit-linear-gradient(to right, #f00 0%, #ff0\n                17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n            }\n\n            .hue-vertical {\n              background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\n                #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n              background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\n                #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n            }\n          "),o.createElement("div",{style:a.pointer},this.props.pointer?o.createElement(this.props.pointer,this.props):o.createElement("div",{style:a.slider}))))}}]),t}(o.PureComponent||o.Component);var I=n(97598),y=n.n(I);const _=function(){this.__data__=[],this.size=0};const C=function(e,t){return e===t||e!=e&&t!=t};const x=function(e,t){for(var n=e.length;n--;)if(C(e[n][0],t))return n;return-1};var S=Array.prototype.splice;const T=function(e){var t=this.__data__,n=x(t,e);return!(n<0)&&(n==t.length-1?t.pop():S.call(t,n,1),--this.size,!0)};const A=function(e){var t=this.__data__,n=x(t,e);return n<0?void 0:t[n][1]};const D=function(e){return x(this.__data__,e)>-1};const M=function(e,t){var n=this.__data__,o=x(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this};function R(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}R.prototype.clear=_,R.prototype.delete=T,R.prototype.get=A,R.prototype.has=D,R.prototype.set=M;const P=R;const O=function(){this.__data__=new P,this.size=0};const k=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n};const L=function(e){return this.__data__.get(e)};const U=function(e){return this.__data__.has(e)};const N="object"==typeof global&&global&&global.Object===Object&&global;var V="object"==typeof self&&self&&self.Object===Object&&self;const B=N||V||Function("return this")();const F=B.Symbol;var W=Object.prototype,H=W.hasOwnProperty,j=W.toString,G=F?F.toStringTag:void 0;const z=function(e){var t=H.call(e,G),n=e[G];try{e[G]=void 0;var o=!0}catch(e){}var i=j.call(e);return o&&(t?e[G]=n:delete e[G]),i};var $=Object.prototype.toString;const q=function(e){return $.call(e)};var K=F?F.toStringTag:void 0;const Z=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":K&&K in Object(e)?z(e):q(e)};const J=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const Y=function(e){if(!J(e))return!1;var t=Z(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t};const X=B["__core-js_shared__"];var Q,ee=(Q=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+Q:"";const te=function(e){return!!ee&&ee in e};var ne=Function.prototype.toString;const oe=function(e){if(null!=e){try{return ne.call(e)}catch(e){}try{return e+""}catch(e){}}return""};var ie=/^\[object .+?Constructor\]$/,ae=Function.prototype,re=Object.prototype,se=ae.toString,le=re.hasOwnProperty,de=RegExp("^"+se.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const ce=function(e){return!(!J(e)||te(e))&&(Y(e)?de:ie).test(oe(e))};const ue=function(e,t){return null==e?void 0:e[t]};const he=function(e,t){var n=ue(e,t);return ce(n)?n:void 0};const ge=he(B,"Map");const pe=he(Object,"create");const fe=function(){this.__data__=pe?pe(null):{},this.size=0};const me=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t};var ve=Object.prototype.hasOwnProperty;const we=function(e){var t=this.__data__;if(pe){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return ve.call(t,e)?t[e]:void 0};var be=Object.prototype.hasOwnProperty;const Ee=function(e){var t=this.__data__;return pe?void 0!==t[e]:be.call(t,e)};const Ie=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=pe&&void 0===t?"__lodash_hash_undefined__":t,this};function ye(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}ye.prototype.clear=fe,ye.prototype.delete=me,ye.prototype.get=we,ye.prototype.has=Ee,ye.prototype.set=Ie;const _e=ye;const Ce=function(){this.size=0,this.__data__={hash:new _e,map:new(ge||P),string:new _e}};const xe=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};const Se=function(e,t){var n=e.__data__;return xe(t)?n["string"==typeof t?"string":"hash"]:n.map};const Te=function(e){var t=Se(this,e).delete(e);return this.size-=t?1:0,t};const Ae=function(e){return Se(this,e).get(e)};const De=function(e){return Se(this,e).has(e)};const Me=function(e,t){var n=Se(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this};function Re(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}Re.prototype.clear=Ce,Re.prototype.delete=Te,Re.prototype.get=Ae,Re.prototype.has=De,Re.prototype.set=Me;const Pe=Re;const Oe=function(e,t){var n=this.__data__;if(n instanceof P){var o=n.__data__;if(!ge||o.length<199)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new Pe(o)}return n.set(e,t),this.size=n.size,this};function ke(e){var t=this.__data__=new P(e);this.size=t.size}ke.prototype.clear=O,ke.prototype.delete=k,ke.prototype.get=L,ke.prototype.has=U,ke.prototype.set=Oe;const Le=ke;const Ue=function(){try{var e=he(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();const Ne=function(e,t,n){"__proto__"==t&&Ue?Ue(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n};const Ve=function(e,t,n){(void 0!==n&&!C(e[t],n)||void 0===n&&!(t in e))&&Ne(e,t,n)};const Be=function(e){return function(t,n,o){for(var i=-1,a=Object(t),r=o(t),s=r.length;s--;){var l=r[e?s:++i];if(!1===n(a[l],l,a))break}return t}}();var Fe="object"==typeof exports&&exports&&!exports.nodeType&&exports,We=Fe&&"object"==typeof module&&module&&!module.nodeType&&module,He=We&&We.exports===Fe?B.Buffer:void 0,je=He?He.allocUnsafe:void 0;const Ge=function(e,t){if(t)return e.slice();var n=e.length,o=je?je(n):new e.constructor(n);return e.copy(o),o};const ze=B.Uint8Array;const $e=function(e){var t=new e.constructor(e.byteLength);return new ze(t).set(new ze(e)),t};const qe=function(e,t){var n=t?$e(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)};const Ke=function(e,t){var n=-1,o=e.length;for(t||(t=Array(o));++n<o;)t[n]=e[n];return t};var Ze=Object.create;const Je=function(){function e(){}return function(t){if(!J(t))return{};if(Ze)return Ze(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();const Ye=function(e,t){return function(n){return e(t(n))}};const Xe=Ye(Object.getPrototypeOf,Object);var Qe=Object.prototype;const et=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Qe)};const tt=function(e){return"function"!=typeof e.constructor||et(e)?{}:Je(Xe(e))};const nt=function(e){return null!=e&&"object"==typeof e};const ot=function(e){return nt(e)&&"[object Arguments]"==Z(e)};var it=Object.prototype,at=it.hasOwnProperty,rt=it.propertyIsEnumerable;const st=ot(function(){return arguments}())?ot:function(e){return nt(e)&&at.call(e,"callee")&&!rt.call(e,"callee")};const lt=Array.isArray;const dt=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991};const ct=function(e){return null!=e&&dt(e.length)&&!Y(e)};const ut=function(e){return nt(e)&&ct(e)};const ht=function(){return!1};var gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,pt=gt&&"object"==typeof module&&module&&!module.nodeType&&module,ft=pt&&pt.exports===gt?B.Buffer:void 0;const mt=(ft?ft.isBuffer:void 0)||ht;var vt=Function.prototype,wt=Object.prototype,bt=vt.toString,Et=wt.hasOwnProperty,It=bt.call(Object);const yt=function(e){if(!nt(e)||"[object Object]"!=Z(e))return!1;var t=Xe(e);if(null===t)return!0;var n=Et.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&bt.call(n)==It};var _t={};_t["[object Float32Array]"]=_t["[object Float64Array]"]=_t["[object Int8Array]"]=_t["[object Int16Array]"]=_t["[object Int32Array]"]=_t["[object Uint8Array]"]=_t["[object Uint8ClampedArray]"]=_t["[object Uint16Array]"]=_t["[object Uint32Array]"]=!0,_t["[object Arguments]"]=_t["[object Array]"]=_t["[object ArrayBuffer]"]=_t["[object Boolean]"]=_t["[object DataView]"]=_t["[object Date]"]=_t["[object Error]"]=_t["[object Function]"]=_t["[object Map]"]=_t["[object Number]"]=_t["[object Object]"]=_t["[object RegExp]"]=_t["[object Set]"]=_t["[object String]"]=_t["[object WeakMap]"]=!1;const Ct=function(e){return nt(e)&&dt(e.length)&&!!_t[Z(e)]};const xt=function(e){return function(t){return e(t)}};var St="object"==typeof exports&&exports&&!exports.nodeType&&exports,Tt=St&&"object"==typeof module&&module&&!module.nodeType&&module,At=Tt&&Tt.exports===St&&N.process,Dt=function(){try{var e=Tt&&Tt.require&&Tt.require("util").types;return e||At&&At.binding&&At.binding("util")}catch(e){}}();var Mt=Dt&&Dt.isTypedArray;const Rt=Mt?xt(Mt):Ct;const Pt=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var Ot=Object.prototype.hasOwnProperty;const kt=function(e,t,n){var o=e[t];Ot.call(e,t)&&C(o,n)&&(void 0!==n||t in e)||Ne(e,t,n)};const Lt=function(e,t,n,o){var i=!n;n||(n={});for(var a=-1,r=t.length;++a<r;){var s=t[a],l=o?o(n[s],e[s],s,n,e):void 0;void 0===l&&(l=e[s]),i?Ne(n,s,l):kt(n,s,l)}return n};const Ut=function(e,t){for(var n=-1,o=Array(e);++n<e;)o[n]=t(n);return o};var Nt=/^(?:0|[1-9]\d*)$/;const Vt=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Nt.test(e))&&e>-1&&e%1==0&&e<t};var Bt=Object.prototype.hasOwnProperty;const Ft=function(e,t){var n=lt(e),o=!n&&st(e),i=!n&&!o&&mt(e),a=!n&&!o&&!i&&Rt(e),r=n||o||i||a,s=r?Ut(e.length,String):[],l=s.length;for(var d in e)!t&&!Bt.call(e,d)||r&&("length"==d||i&&("offset"==d||"parent"==d)||a&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||Vt(d,l))||s.push(d);return s};const Wt=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t};var Ht=Object.prototype.hasOwnProperty;const jt=function(e){if(!J(e))return Wt(e);var t=et(e),n=[];for(var o in e)("constructor"!=o||!t&&Ht.call(e,o))&&n.push(o);return n};const Gt=function(e){return ct(e)?Ft(e,!0):jt(e)};const zt=function(e){return Lt(e,Gt(e))};const $t=function(e,t,n,o,i,a,r){var s=Pt(e,n),l=Pt(t,n),d=r.get(l);if(d)Ve(e,n,d);else{var c=a?a(s,l,n+"",e,t,r):void 0,u=void 0===c;if(u){var h=lt(l),g=!h&&mt(l),p=!h&&!g&&Rt(l);c=l,h||g||p?lt(s)?c=s:ut(s)?c=Ke(s):g?(u=!1,c=Ge(l,!0)):p?(u=!1,c=qe(l,!0)):c=[]:yt(l)||st(l)?(c=s,st(s)?c=zt(s):J(s)&&!Y(s)||(c=tt(l))):u=!1}u&&(r.set(l,c),i(c,l,o,a,r),r.delete(l)),Ve(e,n,c)}};const qt=function e(t,n,o,i,a){t!==n&&Be(n,(function(r,s){if(a||(a=new Le),J(r))$t(t,n,s,o,e,i,a);else{var l=i?i(Pt(t,s),r,s+"",t,n,a):void 0;void 0===l&&(l=r),Ve(t,s,l)}}),Gt)};const Kt=function(e){return e};const Zt=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)};var Jt=Math.max;const Yt=function(e,t,n){return t=Jt(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,a=Jt(o.length-t,0),r=Array(a);++i<a;)r[i]=o[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=o[i];return s[t]=n(r),Zt(e,this,s)}};const Xt=function(e){return function(){return e}};const Qt=Ue?function(e,t){return Ue(e,"toString",{configurable:!0,enumerable:!1,value:Xt(t),writable:!0})}:Kt;var en=Date.now;const tn=function(e){var t=0,n=0;return function(){var o=en(),i=16-(o-n);if(n=o,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Qt);const nn=function(e,t){return tn(Yt(e,t,Kt),e+"")};const on=function(e,t,n){if(!J(n))return!1;var o=typeof t;return!!("number"==o?ct(n)&&Vt(t,n.length):"string"==o&&t in n)&&C(n[t],e)};const an=function(e){return nn((function(t,n){var o=-1,i=n.length,a=i>1?n[i-1]:void 0,r=i>2?n[2]:void 0;for(a=e.length>3&&"function"==typeof a?(i--,a):void 0,r&&on(n[0],n[1],r)&&(a=i<3?void 0:a,i=1),t=Object(t);++o<i;){var s=n[o];s&&e(t,s,o,a)}return t}))}((function(e,t,n){qt(e,t,n)}));var rn=function(e){var t=e.zDepth,n=e.radius,a=e.background,r=e.children,s=e.styles,l=void 0===s?{}:s,d=(0,i.Ay)(an({default:{wrap:{position:"relative",display:"inline-block"},content:{position:"relative"},bg:{absolute:"0px 0px 0px 0px",boxShadow:"0 "+t+"px "+4*t+"px rgba(0,0,0,.24)",borderRadius:n,background:a}},"zDepth-0":{bg:{boxShadow:"none"}},"zDepth-1":{bg:{boxShadow:"0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)"}},"zDepth-2":{bg:{boxShadow:"0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)"}},"zDepth-3":{bg:{boxShadow:"0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)"}},"zDepth-4":{bg:{boxShadow:"0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)"}},"zDepth-5":{bg:{boxShadow:"0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)"}},square:{bg:{borderRadius:"0"}},circle:{bg:{borderRadius:"50%"}}},l),{"zDepth-1":1===t});return o.createElement("div",{style:d.wrap},o.createElement("div",{style:d.bg}),o.createElement("div",{style:d.content},r))};rn.propTypes={background:y().string,zDepth:y().oneOf([0,1,2,3,4,5]),radius:y().number,styles:y().object},rn.defaultProps={background:"#fff",zDepth:1,radius:2,styles:{}};const sn=rn;const ln=function(){return B.Date.now()};var dn=/\s/;const cn=function(e){for(var t=e.length;t--&&dn.test(e.charAt(t)););return t};var un=/^\s+/;const hn=function(e){return e?e.slice(0,cn(e)+1).replace(un,""):e};const gn=function(e){return"symbol"==typeof e||nt(e)&&"[object Symbol]"==Z(e)};var pn=/^[-+]0x[0-9a-f]+$/i,fn=/^0b[01]+$/i,mn=/^0o[0-7]+$/i,vn=parseInt;const wn=function(e){if("number"==typeof e)return e;if(gn(e))return NaN;if(J(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=J(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=hn(e);var n=fn.test(e);return n||mn.test(e)?vn(e.slice(2),n?2:8):pn.test(e)?NaN:+e};var bn=Math.max,En=Math.min;const In=function(e,t,n){var o,i,a,r,s,l,d=0,c=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function g(t){var n=o,a=i;return o=i=void 0,d=t,r=e.apply(a,n)}function p(e){var n=e-l;return void 0===l||n>=t||n<0||u&&e-d>=a}function f(){var e=ln();if(p(e))return m(e);s=setTimeout(f,function(e){var n=t-(e-l);return u?En(n,a-(e-d)):n}(e))}function m(e){return s=void 0,h&&o?g(e):(o=i=void 0,r)}function v(){var e=ln(),n=p(e);if(o=arguments,i=this,l=e,n){if(void 0===s)return function(e){return d=e,s=setTimeout(f,t),c?g(e):r}(l);if(u)return clearTimeout(s),s=setTimeout(f,t),g(l)}return void 0===s&&(s=setTimeout(f,t)),r}return t=wn(t)||0,J(n)&&(c=!!n.leading,a=(u="maxWait"in n)?bn(wn(n.maxWait)||0,t):a,h="trailing"in n?!!n.trailing:h),v.cancel=function(){void 0!==s&&clearTimeout(s),d=0,o=l=i=s=void 0},v.flush=function(){return void 0===s?r:m(ln())},v};const yn=function(e,t,n){var o=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return J(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),In(e,t,{leading:o,maxWait:t,trailing:i})};var _n=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();var Cn=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleChange=function(e){"function"==typeof n.props.onChange&&n.throttle(n.props.onChange,function(e,t,n){var o=n.getBoundingClientRect(),i=o.width,a=o.height,r="number"==typeof e.pageX?e.pageX:e.touches[0].pageX,s="number"==typeof e.pageY?e.pageY:e.touches[0].pageY,l=r-(n.getBoundingClientRect().left+window.pageXOffset),d=s-(n.getBoundingClientRect().top+window.pageYOffset);l<0?l=0:l>i&&(l=i),d<0?d=0:d>a&&(d=a);var c=l/i,u=1-d/a;return{h:t.h,s:c,v:u,a:t.a,source:"hsv"}}(e,n.props.hsl,n.container),e)},n.handleMouseDown=function(e){n.handleChange(e);var t=n.getContainerRenderWindow();t.addEventListener("mousemove",n.handleChange),t.addEventListener("mouseup",n.handleMouseUp)},n.handleMouseUp=function(){n.unbindEventListeners()},n.throttle=yn((function(e,t,n){e(t,n)}),50),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),_n(t,[{key:"componentWillUnmount",value:function(){this.throttle.cancel(),this.unbindEventListeners()}},{key:"getContainerRenderWindow",value:function(){for(var e=this.container,t=window;!t.document.contains(e)&&t.parent!==t;)t=t.parent;return t}},{key:"unbindEventListeners",value:function(){var e=this.getContainerRenderWindow();e.removeEventListener("mousemove",this.handleChange),e.removeEventListener("mouseup",this.handleMouseUp)}},{key:"render",value:function(){var e=this,t=this.props.style||{},n=t.color,a=t.white,r=t.black,s=t.pointer,l=t.circle,d=(0,i.Ay)({default:{color:{absolute:"0px 0px 0px 0px",background:"hsl("+this.props.hsl.h+",100%, 50%)",borderRadius:this.props.radius},white:{absolute:"0px 0px 0px 0px",borderRadius:this.props.radius},black:{absolute:"0px 0px 0px 0px",boxShadow:this.props.shadow,borderRadius:this.props.radius},pointer:{position:"absolute",top:-100*this.props.hsv.v+100+"%",left:100*this.props.hsv.s+"%",cursor:"default"},circle:{width:"4px",height:"4px",boxShadow:"0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\n            0 0 1px 2px rgba(0,0,0,.4)",borderRadius:"50%",cursor:"hand",transform:"translate(-2px, -2px)"}},custom:{color:n,white:a,black:r,pointer:s,circle:l}},{custom:!!this.props.style});return o.createElement("div",{style:d.color,ref:function(t){return e.container=t},onMouseDown:this.handleMouseDown,onTouchMove:this.handleChange,onTouchStart:this.handleChange},o.createElement("style",null,"\n          .saturation-white {\n            background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\n            background: linear-gradient(to right, #fff, rgba(255,255,255,0));\n          }\n          .saturation-black {\n            background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\n            background: linear-gradient(to top, #000, rgba(0,0,0,0));\n          }\n        "),o.createElement("div",{style:d.white,className:"saturation-white"},o.createElement("div",{style:d.black,className:"saturation-black"}),o.createElement("div",{style:d.pointer},this.props.pointer?o.createElement(this.props.pointer,this.props):o.createElement("div",{style:d.circle}))))}}]),t}(o.PureComponent||o.Component);const xn=Cn;const Sn=function(e,t){for(var n=-1,o=null==e?0:e.length;++n<o&&!1!==t(e[n],n,e););return e};const Tn=Ye(Object.keys,Object);var An=Object.prototype.hasOwnProperty;const Dn=function(e){if(!et(e))return Tn(e);var t=[];for(var n in Object(e))An.call(e,n)&&"constructor"!=n&&t.push(n);return t};const Mn=function(e){return ct(e)?Ft(e):Dn(e)};const Rn=function(e,t){return function(n,o){if(null==n)return n;if(!ct(n))return e(n,o);for(var i=n.length,a=t?i:-1,r=Object(n);(t?a--:++a<i)&&!1!==o(r[a],a,r););return n}}((function(e,t){return e&&Be(e,t,Mn)}));const Pn=function(e){return"function"==typeof e?e:Kt};const On=function(e,t){return(lt(e)?Sn:Rn)(e,Pn(t))};function kn(e){return kn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},kn(e)}var Ln=/^\s+/,Un=/\s+$/;function Nn(e,t){if(t=t||{},(e=e||"")instanceof Nn)return e;if(!(this instanceof Nn))return new Nn(e,t);var n=function(e){var t={r:0,g:0,b:0},n=1,o=null,i=null,a=null,r=!1,s=!1;"string"==typeof e&&(e=function(e){e=e.replace(Ln,"").replace(Un,"").toLowerCase();var t,n=!1;if(eo[e])e=eo[e],n=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=po.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=po.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=po.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=po.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=po.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=po.hsva.exec(e))return{h:t[1],s:t[2],v:t[3],a:t[4]};if(t=po.hex8.exec(e))return{r:ao(t[1]),g:ao(t[2]),b:ao(t[3]),a:co(t[4]),format:n?"name":"hex8"};if(t=po.hex6.exec(e))return{r:ao(t[1]),g:ao(t[2]),b:ao(t[3]),format:n?"name":"hex"};if(t=po.hex4.exec(e))return{r:ao(t[1]+""+t[1]),g:ao(t[2]+""+t[2]),b:ao(t[3]+""+t[3]),a:co(t[4]+""+t[4]),format:n?"name":"hex8"};if(t=po.hex3.exec(e))return{r:ao(t[1]+""+t[1]),g:ao(t[2]+""+t[2]),b:ao(t[3]+""+t[3]),format:n?"name":"hex"};return!1}(e));"object"==kn(e)&&(fo(e.r)&&fo(e.g)&&fo(e.b)?(l=e.r,d=e.g,c=e.b,t={r:255*oo(l,255),g:255*oo(d,255),b:255*oo(c,255)},r=!0,s="%"===String(e.r).substr(-1)?"prgb":"rgb"):fo(e.h)&&fo(e.s)&&fo(e.v)?(o=so(e.s),i=so(e.v),t=function(e,t,n){e=6*oo(e,360),t=oo(t,100),n=oo(n,100);var o=Math.floor(e),i=e-o,a=n*(1-t),r=n*(1-i*t),s=n*(1-(1-i)*t),l=o%6,d=[n,r,a,a,s,n][l],c=[s,n,n,r,a,a][l],u=[a,a,s,n,n,r][l];return{r:255*d,g:255*c,b:255*u}}(e.h,o,i),r=!0,s="hsv"):fo(e.h)&&fo(e.s)&&fo(e.l)&&(o=so(e.s),a=so(e.l),t=function(e,t,n){var o,i,a;function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=oo(e,360),t=oo(t,100),n=oo(n,100),0===t)o=i=a=n;else{var s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;o=r(l,s,e+1/3),i=r(l,s,e),a=r(l,s,e-1/3)}return{r:255*o,g:255*i,b:255*a}}(e.h,o,a),r=!0,s="hsl"),e.hasOwnProperty("a")&&(n=e.a));var l,d,c;return n=no(n),{ok:r,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}(e);this._originalInput=e,this._r=n.r,this._g=n.g,this._b=n.b,this._a=n.a,this._roundA=Math.round(100*this._a)/100,this._format=t.format||n.format,this._gradientType=t.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=n.ok}function Vn(e,t,n){e=oo(e,255),t=oo(t,255),n=oo(n,255);var o,i,a=Math.max(e,t,n),r=Math.min(e,t,n),s=(a+r)/2;if(a==r)o=i=0;else{var l=a-r;switch(i=s>.5?l/(2-a-r):l/(a+r),a){case e:o=(t-n)/l+(t<n?6:0);break;case t:o=(n-e)/l+2;break;case n:o=(e-t)/l+4}o/=6}return{h:o,s:i,l:s}}function Bn(e,t,n){e=oo(e,255),t=oo(t,255),n=oo(n,255);var o,i,a=Math.max(e,t,n),r=Math.min(e,t,n),s=a,l=a-r;if(i=0===a?0:l/a,a==r)o=0;else{switch(a){case e:o=(t-n)/l+(t<n?6:0);break;case t:o=(n-e)/l+2;break;case n:o=(e-t)/l+4}o/=6}return{h:o,s:i,v:s}}function Fn(e,t,n,o){var i=[ro(Math.round(e).toString(16)),ro(Math.round(t).toString(16)),ro(Math.round(n).toString(16))];return o&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join("")}function Wn(e,t,n,o){return[ro(lo(o)),ro(Math.round(e).toString(16)),ro(Math.round(t).toString(16)),ro(Math.round(n).toString(16))].join("")}function Hn(e,t){t=0===t?0:t||10;var n=Nn(e).toHsl();return n.s-=t/100,n.s=io(n.s),Nn(n)}function jn(e,t){t=0===t?0:t||10;var n=Nn(e).toHsl();return n.s+=t/100,n.s=io(n.s),Nn(n)}function Gn(e){return Nn(e).desaturate(100)}function zn(e,t){t=0===t?0:t||10;var n=Nn(e).toHsl();return n.l+=t/100,n.l=io(n.l),Nn(n)}function $n(e,t){t=0===t?0:t||10;var n=Nn(e).toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(-t/100*255))),n.g=Math.max(0,Math.min(255,n.g-Math.round(-t/100*255))),n.b=Math.max(0,Math.min(255,n.b-Math.round(-t/100*255))),Nn(n)}function qn(e,t){t=0===t?0:t||10;var n=Nn(e).toHsl();return n.l-=t/100,n.l=io(n.l),Nn(n)}function Kn(e,t){var n=Nn(e).toHsl(),o=(n.h+t)%360;return n.h=o<0?360+o:o,Nn(n)}function Zn(e){var t=Nn(e).toHsl();return t.h=(t.h+180)%360,Nn(t)}function Jn(e,t){if(isNaN(t)||t<=0)throw new Error("Argument to polyad must be a positive number");for(var n=Nn(e).toHsl(),o=[Nn(e)],i=360/t,a=1;a<t;a++)o.push(Nn({h:(n.h+a*i)%360,s:n.s,l:n.l}));return o}function Yn(e){var t=Nn(e).toHsl(),n=t.h;return[Nn(e),Nn({h:(n+72)%360,s:t.s,l:t.l}),Nn({h:(n+216)%360,s:t.s,l:t.l})]}function Xn(e,t,n){t=t||6,n=n||30;var o=Nn(e).toHsl(),i=360/n,a=[Nn(e)];for(o.h=(o.h-(i*t>>1)+720)%360;--t;)o.h=(o.h+i)%360,a.push(Nn(o));return a}function Qn(e,t){t=t||6;for(var n=Nn(e).toHsv(),o=n.h,i=n.s,a=n.v,r=[],s=1/t;t--;)r.push(Nn({h:o,s:i,v:a})),a=(a+s)%1;return r}Nn.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,o=this.toRgb();return e=o.r/255,t=o.g/255,n=o.b/255,.2126*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},setAlpha:function(e){return this._a=no(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=Bn(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=Bn(this._r,this._g,this._b),t=Math.round(360*e.h),n=Math.round(100*e.s),o=Math.round(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+o+"%)":"hsva("+t+", "+n+"%, "+o+"%, "+this._roundA+")"},toHsl:function(){var e=Vn(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=Vn(this._r,this._g,this._b),t=Math.round(360*e.h),n=Math.round(100*e.s),o=Math.round(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+o+"%)":"hsla("+t+", "+n+"%, "+o+"%, "+this._roundA+")"},toHex:function(e){return Fn(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,n,o,i){var a=[ro(Math.round(e).toString(16)),ro(Math.round(t).toString(16)),ro(Math.round(n).toString(16)),ro(lo(o))];if(i&&a[0].charAt(0)==a[0].charAt(1)&&a[1].charAt(0)==a[1].charAt(1)&&a[2].charAt(0)==a[2].charAt(1)&&a[3].charAt(0)==a[3].charAt(1))return a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0);return a.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*oo(this._r,255))+"%",g:Math.round(100*oo(this._g,255))+"%",b:Math.round(100*oo(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*oo(this._r,255))+"%, "+Math.round(100*oo(this._g,255))+"%, "+Math.round(100*oo(this._b,255))+"%)":"rgba("+Math.round(100*oo(this._r,255))+"%, "+Math.round(100*oo(this._g,255))+"%, "+Math.round(100*oo(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(to[Fn(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+Wn(this._r,this._g,this._b,this._a),n=t,o=this._gradientType?"GradientType = 1, ":"";if(e){var i=Nn(e);n="#"+Wn(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+o+"startColorstr="+t+",endColorstr="+n+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,o=this._a<1&&this._a>=0;return t||!o||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return Nn(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(zn,arguments)},brighten:function(){return this._applyModification($n,arguments)},darken:function(){return this._applyModification(qn,arguments)},desaturate:function(){return this._applyModification(Hn,arguments)},saturate:function(){return this._applyModification(jn,arguments)},greyscale:function(){return this._applyModification(Gn,arguments)},spin:function(){return this._applyModification(Kn,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(Xn,arguments)},complement:function(){return this._applyCombination(Zn,arguments)},monochromatic:function(){return this._applyCombination(Qn,arguments)},splitcomplement:function(){return this._applyCombination(Yn,arguments)},triad:function(){return this._applyCombination(Jn,[3])},tetrad:function(){return this._applyCombination(Jn,[4])}},Nn.fromRatio=function(e,t){if("object"==kn(e)){var n={};for(var o in e)e.hasOwnProperty(o)&&(n[o]="a"===o?e[o]:so(e[o]));e=n}return Nn(e,t)},Nn.equals=function(e,t){return!(!e||!t)&&Nn(e).toRgbString()==Nn(t).toRgbString()},Nn.random=function(){return Nn.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},Nn.mix=function(e,t,n){n=0===n?0:n||50;var o=Nn(e).toRgb(),i=Nn(t).toRgb(),a=n/100;return Nn({r:(i.r-o.r)*a+o.r,g:(i.g-o.g)*a+o.g,b:(i.b-o.b)*a+o.b,a:(i.a-o.a)*a+o.a})},Nn.readability=function(e,t){var n=Nn(e),o=Nn(t);return(Math.max(n.getLuminance(),o.getLuminance())+.05)/(Math.min(n.getLuminance(),o.getLuminance())+.05)},Nn.isReadable=function(e,t,n){var o,i,a=Nn.readability(e,t);switch(i=!1,(o=function(e){var t,n;t=((e=e||{level:"AA",size:"small"}).level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA");"small"!==n&&"large"!==n&&(n="small");return{level:t,size:n}}(n)).level+o.size){case"AAsmall":case"AAAlarge":i=a>=4.5;break;case"AAlarge":i=a>=3;break;case"AAAsmall":i=a>=7}return i},Nn.mostReadable=function(e,t,n){var o,i,a,r,s=null,l=0;i=(n=n||{}).includeFallbackColors,a=n.level,r=n.size;for(var d=0;d<t.length;d++)(o=Nn.readability(e,t[d]))>l&&(l=o,s=Nn(t[d]));return Nn.isReadable(e,s,{level:a,size:r})||!i?s:(n.includeFallbackColors=!1,Nn.mostReadable(e,["#fff","#000"],n))};var eo=Nn.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},to=Nn.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(eo);function no(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function oo(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function io(e){return Math.min(1,Math.max(0,e))}function ao(e){return parseInt(e,16)}function ro(e){return 1==e.length?"0"+e:""+e}function so(e){return e<=1&&(e=100*e+"%"),e}function lo(e){return Math.round(255*parseFloat(e)).toString(16)}function co(e){return ao(e)/255}var uo,ho,go,po=(ho="[\\s|\\(]+("+(uo="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+uo+")[,|\\s]+("+uo+")\\s*\\)?",go="[\\s|\\(]+("+uo+")[,|\\s]+("+uo+")[,|\\s]+("+uo+")[,|\\s]+("+uo+")\\s*\\)?",{CSS_UNIT:new RegExp(uo),rgb:new RegExp("rgb"+ho),rgba:new RegExp("rgba"+go),hsl:new RegExp("hsl"+ho),hsla:new RegExp("hsla"+go),hsv:new RegExp("hsv"+ho),hsva:new RegExp("hsva"+go),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function fo(e){return!!po.CSS_UNIT.exec(e)}var mo=function(e){var t=0,n=0;return On(["r","g","b","a","h","s","l","v"],(function(o){if(e[o]&&(t+=1,isNaN(e[o])||(n+=1),"s"===o||"l"===o)){/^\d+%$/.test(e[o])&&(n+=1)}})),t===n&&e},vo=function(e,t){var n=e.hex?Nn(e.hex):Nn(e),o=n.toHsl(),i=n.toHsv(),a=n.toRgb(),r=n.toHex();return 0===o.s&&(o.h=t||0,i.h=t||0),{hsl:o,hex:"000000"===r&&0===a.a?"transparent":"#"+r,rgb:a,hsv:i,oldHue:e.h||t||o.h,source:e.source}},wo=function(e){if("transparent"===e)return!0;var t="#"===String(e).charAt(0)?1:0;return e.length!==4+t&&e.length<7+t&&Nn(e).isValid()},bo=function(e){if(!e)return"#fff";var t=vo(e);return"transparent"===t.hex?"rgba(0,0,0,0.4)":(299*t.rgb.r+587*t.rgb.g+114*t.rgb.b)/1e3>=128?"#000":"#fff"},Eo=function(e,t){return Nn(t+" ("+e.replace("°","")+")")._ok},Io=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},yo=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();const _o=function(e){var t=function(t){function n(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(n.__proto__||Object.getPrototypeOf(n)).call(this));return t.handleChange=function(e,n){if(mo(e)){var o=vo(e,e.h||t.state.oldHue);t.setState(o),t.props.onChangeComplete&&t.debounce(t.props.onChangeComplete,o,n),t.props.onChange&&t.props.onChange(o,n)}},t.handleSwatchHover=function(e,n){if(mo(e)){var o=vo(e,e.h||t.state.oldHue);t.props.onSwatchHover&&t.props.onSwatchHover(o,n)}},t.state=Io({},vo(e.color,0)),t.debounce=In((function(e,t,n){e(t,n)}),100),t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,t),yo(n,[{key:"render",value:function(){var t={};return this.props.onSwatchHover&&(t.onSwatchHover=this.handleSwatchHover),o.createElement(e,Io({},this.props,this.state,{onChange:this.handleChange},t))}}],[{key:"getDerivedStateFromProps",value:function(e,t){return Io({},vo(e.color,t.oldHue))}}]),n}(o.PureComponent||o.Component);return t.propTypes=Io({},e.propTypes),t.defaultProps=Io({},e.defaultProps,{color:{h:250,s:.5,l:.2,a:1}}),t};var Co=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},xo=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();function So(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var To=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};const Ao=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"span";return function(n){function i(){var e,t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i);for(var o=arguments.length,a=Array(o),r=0;r<o;r++)a[r]=arguments[r];return t=n=So(this,(e=i.__proto__||Object.getPrototypeOf(i)).call.apply(e,[this].concat(a))),n.state={focus:!1},n.handleFocus=function(){return n.setState({focus:!0})},n.handleBlur=function(){return n.setState({focus:!1})},So(n,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(i,n),xo(i,[{key:"render",value:function(){return o.createElement(t,{onFocus:this.handleFocus,onBlur:this.handleBlur},o.createElement(e,Co({},this.props,this.state)))}}]),i}(o.Component)}((function(e){var t=e.color,n=e.style,a=e.onClick,r=void 0===a?function(){}:a,s=e.onHover,l=e.title,c=void 0===l?t:l,u=e.children,h=e.focus,g=e.focusStyle,p=void 0===g?{}:g,f="transparent"===t,m=(0,i.Ay)({default:{swatch:To({background:t,height:"100%",width:"100%",cursor:"pointer",position:"relative",outline:"none"},n,h?p:{})}}),v={};return s&&(v.onMouseOver=function(e){return s(t,e)}),o.createElement("div",To({style:m.swatch,onClick:function(e){return r(t,e)},title:c,tabIndex:0,onKeyDown:function(e){return 13===e.keyCode&&r(t,e)}},v),u,f&&o.createElement(d,{borderRadius:m.swatch.borderRadius,boxShadow:"inset 0 0 0 1px rgba(0,0,0,0.1)"}))}));const Do=function(e){var t=e.direction,n=(0,i.Ay)({default:{picker:{width:"18px",height:"18px",borderRadius:"50%",transform:"translate(-9px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}},vertical:{picker:{transform:"translate(-3px, -9px)"}}},{vertical:"vertical"===t});return o.createElement("div",{style:n.picker})};var Mo=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Ro=function(e){var t=e.rgb,n=e.hsl,a=e.width,r=e.height,s=e.onChange,l=e.direction,d=e.style,c=e.renderers,u=e.pointer,h=e.className,p=void 0===h?"":h,f=(0,i.Ay)({default:{picker:{position:"relative",width:a,height:r},alpha:{radius:"2px",style:d}}});return o.createElement("div",{style:f.picker,className:"alpha-picker "+p},o.createElement(g,Mo({},f.alpha,{rgb:t,hsl:n,pointer:u,renderers:c,onChange:s,direction:l})))};Ro.defaultProps={width:"316px",height:"16px",direction:"horizontal",pointer:Do};_o(Ro);const Po=function(e,t){for(var n=-1,o=null==e?0:e.length,i=Array(o);++n<o;)i[n]=t(e[n],n,e);return i};const Oo=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};const ko=function(e){return this.__data__.has(e)};function Lo(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Pe;++t<n;)this.add(e[t])}Lo.prototype.add=Lo.prototype.push=Oo,Lo.prototype.has=ko;const Uo=Lo;const No=function(e,t){for(var n=-1,o=null==e?0:e.length;++n<o;)if(t(e[n],n,e))return!0;return!1};const Vo=function(e,t){return e.has(t)};const Bo=function(e,t,n,o,i,a){var r=1&n,s=e.length,l=t.length;if(s!=l&&!(r&&l>s))return!1;var d=a.get(e),c=a.get(t);if(d&&c)return d==t&&c==e;var u=-1,h=!0,g=2&n?new Uo:void 0;for(a.set(e,t),a.set(t,e);++u<s;){var p=e[u],f=t[u];if(o)var m=r?o(f,p,u,t,e,a):o(p,f,u,e,t,a);if(void 0!==m){if(m)continue;h=!1;break}if(g){if(!No(t,(function(e,t){if(!Vo(g,t)&&(p===e||i(p,e,n,o,a)))return g.push(t)}))){h=!1;break}}else if(p!==f&&!i(p,f,n,o,a)){h=!1;break}}return a.delete(e),a.delete(t),h};const Fo=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,o){n[++t]=[o,e]})),n};const Wo=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n};var Ho=F?F.prototype:void 0,jo=Ho?Ho.valueOf:void 0;const Go=function(e,t,n,o,i,a,r){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!a(new ze(e),new ze(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return C(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var s=Fo;case"[object Set]":var l=1&o;if(s||(s=Wo),e.size!=t.size&&!l)return!1;var d=r.get(e);if(d)return d==t;o|=2,r.set(e,t);var c=Bo(s(e),s(t),o,i,a,r);return r.delete(e),c;case"[object Symbol]":if(jo)return jo.call(e)==jo.call(t)}return!1};const zo=function(e,t){for(var n=-1,o=t.length,i=e.length;++n<o;)e[i+n]=t[n];return e};const $o=function(e,t,n){var o=t(e);return lt(e)?o:zo(o,n(e))};const qo=function(e,t){for(var n=-1,o=null==e?0:e.length,i=0,a=[];++n<o;){var r=e[n];t(r,n,e)&&(a[i++]=r)}return a};const Ko=function(){return[]};var Zo=Object.prototype.propertyIsEnumerable,Jo=Object.getOwnPropertySymbols;const Yo=Jo?function(e){return null==e?[]:(e=Object(e),qo(Jo(e),(function(t){return Zo.call(e,t)})))}:Ko;const Xo=function(e){return $o(e,Mn,Yo)};var Qo=Object.prototype.hasOwnProperty;const ei=function(e,t,n,o,i,a){var r=1&n,s=Xo(e),l=s.length;if(l!=Xo(t).length&&!r)return!1;for(var d=l;d--;){var c=s[d];if(!(r?c in t:Qo.call(t,c)))return!1}var u=a.get(e),h=a.get(t);if(u&&h)return u==t&&h==e;var g=!0;a.set(e,t),a.set(t,e);for(var p=r;++d<l;){var f=e[c=s[d]],m=t[c];if(o)var v=r?o(m,f,c,t,e,a):o(f,m,c,e,t,a);if(!(void 0===v?f===m||i(f,m,n,o,a):v)){g=!1;break}p||(p="constructor"==c)}if(g&&!p){var w=e.constructor,b=t.constructor;w==b||!("constructor"in e)||!("constructor"in t)||"function"==typeof w&&w instanceof w&&"function"==typeof b&&b instanceof b||(g=!1)}return a.delete(e),a.delete(t),g};const ti=he(B,"DataView");const ni=he(B,"Promise");const oi=he(B,"Set");const ii=he(B,"WeakMap");var ai="[object Map]",ri="[object Promise]",si="[object Set]",li="[object WeakMap]",di="[object DataView]",ci=oe(ti),ui=oe(ge),hi=oe(ni),gi=oe(oi),pi=oe(ii),fi=Z;(ti&&fi(new ti(new ArrayBuffer(1)))!=di||ge&&fi(new ge)!=ai||ni&&fi(ni.resolve())!=ri||oi&&fi(new oi)!=si||ii&&fi(new ii)!=li)&&(fi=function(e){var t=Z(e),n="[object Object]"==t?e.constructor:void 0,o=n?oe(n):"";if(o)switch(o){case ci:return di;case ui:return ai;case hi:return ri;case gi:return si;case pi:return li}return t});const mi=fi;var vi="[object Arguments]",wi="[object Array]",bi="[object Object]",Ei=Object.prototype.hasOwnProperty;const Ii=function(e,t,n,o,i,a){var r=lt(e),s=lt(t),l=r?wi:mi(e),d=s?wi:mi(t),c=(l=l==vi?bi:l)==bi,u=(d=d==vi?bi:d)==bi,h=l==d;if(h&&mt(e)){if(!mt(t))return!1;r=!0,c=!1}if(h&&!c)return a||(a=new Le),r||Rt(e)?Bo(e,t,n,o,i,a):Go(e,t,l,n,o,i,a);if(!(1&n)){var g=c&&Ei.call(e,"__wrapped__"),p=u&&Ei.call(t,"__wrapped__");if(g||p){var f=g?e.value():e,m=p?t.value():t;return a||(a=new Le),i(f,m,n,o,a)}}return!!h&&(a||(a=new Le),ei(e,t,n,o,i,a))};const yi=function e(t,n,o,i,a){return t===n||(null==t||null==n||!nt(t)&&!nt(n)?t!=t&&n!=n:Ii(t,n,o,i,e,a))};const _i=function(e,t,n,o){var i=n.length,a=i,r=!o;if(null==e)return!a;for(e=Object(e);i--;){var s=n[i];if(r&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){var l=(s=n[i])[0],d=e[l],c=s[1];if(r&&s[2]){if(void 0===d&&!(l in e))return!1}else{var u=new Le;if(o)var h=o(d,c,l,e,t,u);if(!(void 0===h?yi(c,d,3,o,u):h))return!1}}return!0};const Ci=function(e){return e==e&&!J(e)};const xi=function(e){for(var t=Mn(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,Ci(i)]}return t};const Si=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}};const Ti=function(e){var t=xi(e);return 1==t.length&&t[0][2]?Si(t[0][0],t[0][1]):function(n){return n===e||_i(n,e,t)}};var Ai=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Di=/^\w*$/;const Mi=function(e,t){if(lt(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!gn(e))||(Di.test(e)||!Ai.test(e)||null!=t&&e in Object(t))};function Ri(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);return n.cache=a.set(i,r)||a,r};return n.cache=new(Ri.Cache||Pe),n}Ri.Cache=Pe;const Pi=Ri;var Oi=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ki=/\\(\\)?/g;const Li=function(e){var t=Pi(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Oi,(function(e,n,o,i){t.push(o?i.replace(ki,"$1"):n||e)})),t}));var Ui=F?F.prototype:void 0,Ni=Ui?Ui.toString:void 0;const Vi=function e(t){if("string"==typeof t)return t;if(lt(t))return Po(t,e)+"";if(gn(t))return Ni?Ni.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n};const Bi=function(e){return null==e?"":Vi(e)};const Fi=function(e,t){return lt(e)?e:Mi(e,t)?[e]:Li(Bi(e))};const Wi=function(e){if("string"==typeof e||gn(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t};const Hi=function(e,t){for(var n=0,o=(t=Fi(t,e)).length;null!=e&&n<o;)e=e[Wi(t[n++])];return n&&n==o?e:void 0};const ji=function(e,t,n){var o=null==e?void 0:Hi(e,t);return void 0===o?n:o};const Gi=function(e,t){return null!=e&&t in Object(e)};const zi=function(e,t,n){for(var o=-1,i=(t=Fi(t,e)).length,a=!1;++o<i;){var r=Wi(t[o]);if(!(a=null!=e&&n(e,r)))break;e=e[r]}return a||++o!=i?a:!!(i=null==e?0:e.length)&&dt(i)&&Vt(r,i)&&(lt(e)||st(e))};const $i=function(e,t){return null!=e&&zi(e,t,Gi)};const qi=function(e,t){return Mi(e)&&Ci(t)?Si(Wi(e),t):function(n){var o=ji(n,e);return void 0===o&&o===t?$i(n,e):yi(t,o,3)}};const Ki=function(e){return function(t){return null==t?void 0:t[e]}};const Zi=function(e){return function(t){return Hi(t,e)}};const Ji=function(e){return Mi(e)?Ki(Wi(e)):Zi(e)};const Yi=function(e){return"function"==typeof e?e:null==e?Kt:"object"==typeof e?lt(e)?qi(e[0],e[1]):Ti(e):Ji(e)};const Xi=function(e,t){var n=-1,o=ct(e)?Array(e.length):[];return Rn(e,(function(e,i,a){o[++n]=t(e,i,a)})),o};const Qi=function(e,t){return(lt(e)?Po:Xi)(e,Yi(t,3))};const ea=function(e){var t=e.colors,n=e.onClick,a=e.onSwatchHover,r=(0,i.Ay)({default:{swatches:{marginRight:"-10px"},swatch:{width:"22px",height:"22px",float:"left",marginRight:"10px",marginBottom:"10px",borderRadius:"4px"},clear:{clear:"both"}}});return o.createElement("div",{style:r.swatches},Qi(t,(function(e){return o.createElement(Ao,{key:e,color:e,style:r.swatch,onClick:n,onHover:a,focusStyle:{boxShadow:"0 0 4px "+e}})})),o.createElement("div",{style:r.clear}))};var ta=function(e){var t=e.onChange,n=e.onSwatchHover,a=e.hex,r=e.colors,s=e.width,l=e.triangle,c=e.styles,u=void 0===c?{}:c,h=e.className,g=void 0===h?"":h,p="transparent"===a,f=function(e,n){wo(e)&&t({hex:e,source:"hex"},n)},m=(0,i.Ay)(an({default:{card:{width:s,background:"#fff",boxShadow:"0 1px rgba(0,0,0,.1)",borderRadius:"6px",position:"relative"},head:{height:"110px",background:a,borderRadius:"6px 6px 0 0",display:"flex",alignItems:"center",justifyContent:"center",position:"relative"},body:{padding:"10px"},label:{fontSize:"18px",color:bo(a),position:"relative"},triangle:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 10px 10px 10px",borderColor:"transparent transparent "+a+" transparent",position:"absolute",top:"-10px",left:"50%",marginLeft:"-10px"},input:{width:"100%",fontSize:"12px",color:"#666",border:"0px",outline:"none",height:"22px",boxShadow:"inset 0 0 0 1px #ddd",borderRadius:"4px",padding:"0 7px",boxSizing:"border-box"}},"hide-triangle":{triangle:{display:"none"}}},u),{"hide-triangle":"hide"===l});return o.createElement("div",{style:m.card,className:"block-picker "+g},o.createElement("div",{style:m.triangle}),o.createElement("div",{style:m.head},p&&o.createElement(d,{borderRadius:"6px 6px 0 0"}),o.createElement("div",{style:m.label},a)),o.createElement("div",{style:m.body},o.createElement(ea,{colors:r,onClick:f,onSwatchHover:n}),o.createElement(v,{style:{input:m.input},value:a,onChange:f})))};ta.propTypes={width:y().oneOfType([y().string,y().number]),colors:y().arrayOf(y().string),triangle:y().oneOf(["top","hide"]),styles:y().object},ta.defaultProps={width:170,colors:["#D9E3F0","#F47373","#697689","#37D67A","#2CCCE4","#555555","#dce775","#ff8a65","#ba68c8"],triangle:"top",styles:{}};_o(ta);var na={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",a100:"#ff8a80",a200:"#ff5252",a400:"#ff1744",a700:"#d50000"},oa={50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",a100:"#ff80ab",a200:"#ff4081",a400:"#f50057",a700:"#c51162"},ia={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",a100:"#ea80fc",a200:"#e040fb",a400:"#d500f9",a700:"#aa00ff"},aa={50:"#ede7f6",100:"#d1c4e9",200:"#b39ddb",300:"#9575cd",400:"#7e57c2",500:"#673ab7",600:"#5e35b1",700:"#512da8",800:"#4527a0",900:"#311b92",a100:"#b388ff",a200:"#7c4dff",a400:"#651fff",a700:"#6200ea"},ra={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",a100:"#8c9eff",a200:"#536dfe",a400:"#3d5afe",a700:"#304ffe"},sa={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",a100:"#82b1ff",a200:"#448aff",a400:"#2979ff",a700:"#2962ff"},la={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",a100:"#80d8ff",a200:"#40c4ff",a400:"#00b0ff",a700:"#0091ea"},da={50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064",a100:"#84ffff",a200:"#18ffff",a400:"#00e5ff",a700:"#00b8d4"},ca={50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40",a100:"#a7ffeb",a200:"#64ffda",a400:"#1de9b6",a700:"#00bfa5"},ua={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",a100:"#b9f6ca",a200:"#69f0ae",a400:"#00e676",a700:"#00c853"},ha={50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e",a100:"#ccff90",a200:"#b2ff59",a400:"#76ff03",a700:"#64dd17"},ga={50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717",a100:"#f4ff81",a200:"#eeff41",a400:"#c6ff00",a700:"#aeea00"},pa={50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17",a100:"#ffff8d",a200:"#ffff00",a400:"#ffea00",a700:"#ffd600"},fa={50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00",a100:"#ffe57f",a200:"#ffd740",a400:"#ffc400",a700:"#ffab00"},ma={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",a100:"#ffd180",a200:"#ffab40",a400:"#ff9100",a700:"#ff6d00"},va={50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c",a100:"#ff9e80",a200:"#ff6e40",a400:"#ff3d00",a700:"#dd2c00"},wa={50:"#efebe9",100:"#d7ccc8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723"},ba={50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238"};var Ea=function(e){var t=e.color,n=e.onClick,a=e.onSwatchHover,r=e.hover,s=e.active,l=e.circleSize,d=e.circleSpacing,c=(0,i.Ay)({default:{swatch:{width:l,height:l,marginRight:d,marginBottom:d,transform:"scale(1)",transition:"100ms transform ease"},Swatch:{borderRadius:"50%",background:"transparent",boxShadow:"inset 0 0 0 "+(l/2+1)+"px "+t,transition:"100ms box-shadow ease"}},hover:{swatch:{transform:"scale(1.2)"}},active:{Swatch:{boxShadow:"inset 0 0 0 3px "+t}}},{hover:r,active:s});return o.createElement("div",{style:c.swatch},o.createElement(Ao,{style:c.Swatch,color:t,onClick:n,onHover:a,focusStyle:{boxShadow:c.Swatch.boxShadow+", 0 0 5px "+t}}))};Ea.defaultProps={circleSize:28,circleSpacing:14};const Ia=(0,i.H8)(Ea);var ya=function(e){var t=e.width,n=e.onChange,a=e.onSwatchHover,r=e.colors,s=e.hex,l=e.circleSize,d=e.styles,c=void 0===d?{}:d,u=e.circleSpacing,h=e.className,g=void 0===h?"":h,p=(0,i.Ay)(an({default:{card:{width:t,display:"flex",flexWrap:"wrap",marginRight:-u,marginBottom:-u}}},c)),f=function(e,t){return n({hex:e,source:"hex"},t)};return o.createElement("div",{style:p.card,className:"circle-picker "+g},Qi(r,(function(e){return o.createElement(Ia,{key:e,color:e,onClick:f,onSwatchHover:a,active:s===e.toLowerCase(),circleSize:l,circleSpacing:u})})))};ya.propTypes={width:y().oneOfType([y().string,y().number]),circleSize:y().number,circleSpacing:y().number,styles:y().object},ya.defaultProps={width:252,circleSize:28,circleSpacing:14,colors:[na[500],oa[500],ia[500],aa[500],ra[500],sa[500],la[500],da[500],ca[500],ua[500],ha[500],ga[500],pa[500],fa[500],ma[500],va[500],wa[500],ba[500]],styles:{}};_o(ya);const _a=function(e){return void 0===e};var Ca=n(69767),xa=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();var Sa=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.toggleViews=function(){"hex"===n.state.view?n.setState({view:"rgb"}):"rgb"===n.state.view?n.setState({view:"hsl"}):"hsl"===n.state.view&&(1===n.props.hsl.a?n.setState({view:"hex"}):n.setState({view:"rgb"}))},n.handleChange=function(e,t){e.hex?wo(e.hex)&&n.props.onChange({hex:e.hex,source:"hex"},t):e.r||e.g||e.b?n.props.onChange({r:e.r||n.props.rgb.r,g:e.g||n.props.rgb.g,b:e.b||n.props.rgb.b,source:"rgb"},t):e.a?(e.a<0?e.a=0:e.a>1&&(e.a=1),n.props.onChange({h:n.props.hsl.h,s:n.props.hsl.s,l:n.props.hsl.l,a:Math.round(100*e.a)/100,source:"rgb"},t)):(e.h||e.s||e.l)&&("string"==typeof e.s&&e.s.includes("%")&&(e.s=e.s.replace("%","")),"string"==typeof e.l&&e.l.includes("%")&&(e.l=e.l.replace("%","")),1==e.s?e.s=.01:1==e.l&&(e.l=.01),n.props.onChange({h:e.h||n.props.hsl.h,s:Number(_a(e.s)?n.props.hsl.s:e.s),l:Number(_a(e.l)?n.props.hsl.l:e.l),source:"hsl"},t))},n.showHighlight=function(e){e.currentTarget.style.background="#eee"},n.hideHighlight=function(e){e.currentTarget.style.background="transparent"},1!==e.hsl.a&&"hex"===e.view?n.state={view:"rgb"}:n.state={view:e.view},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),xa(t,[{key:"render",value:function(){var e=this,t=(0,i.Ay)({default:{wrap:{paddingTop:"16px",display:"flex"},fields:{flex:"1",display:"flex",marginLeft:"-6px"},field:{paddingLeft:"6px",width:"100%"},alpha:{paddingLeft:"6px",width:"100%"},toggle:{width:"32px",textAlign:"right",position:"relative"},icon:{marginRight:"-4px",marginTop:"12px",cursor:"pointer",position:"relative"},iconHighlight:{position:"absolute",width:"24px",height:"28px",background:"#eee",borderRadius:"4px",top:"10px",left:"12px",display:"none"},input:{fontSize:"11px",color:"#333",width:"100%",borderRadius:"2px",border:"none",boxShadow:"inset 0 0 0 1px #dadada",height:"21px",textAlign:"center"},label:{textTransform:"uppercase",fontSize:"11px",lineHeight:"11px",color:"#969696",textAlign:"center",display:"block",marginTop:"12px"},svg:{fill:"#333",width:"24px",height:"24px",border:"1px transparent solid",borderRadius:"5px"}},disableAlpha:{alpha:{display:"none"}}},this.props,this.state),n=void 0;return"hex"===this.state.view?n=o.createElement("div",{style:t.fields,className:"flexbox-fix"},o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"hex",value:this.props.hex,onChange:this.handleChange}))):"rgb"===this.state.view?n=o.createElement("div",{style:t.fields,className:"flexbox-fix"},o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"r",value:this.props.rgb.r,onChange:this.handleChange})),o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"g",value:this.props.rgb.g,onChange:this.handleChange})),o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"b",value:this.props.rgb.b,onChange:this.handleChange})),o.createElement("div",{style:t.alpha},o.createElement(v,{style:{input:t.input,label:t.label},label:"a",value:this.props.rgb.a,arrowOffset:.01,onChange:this.handleChange}))):"hsl"===this.state.view&&(n=o.createElement("div",{style:t.fields,className:"flexbox-fix"},o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"h",value:Math.round(this.props.hsl.h),onChange:this.handleChange})),o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"s",value:Math.round(100*this.props.hsl.s)+"%",onChange:this.handleChange})),o.createElement("div",{style:t.field},o.createElement(v,{style:{input:t.input,label:t.label},label:"l",value:Math.round(100*this.props.hsl.l)+"%",onChange:this.handleChange})),o.createElement("div",{style:t.alpha},o.createElement(v,{style:{input:t.input,label:t.label},label:"a",value:this.props.hsl.a,arrowOffset:.01,onChange:this.handleChange})))),o.createElement("div",{style:t.wrap,className:"flexbox-fix"},n,o.createElement("div",{style:t.toggle},o.createElement("div",{style:t.icon,onClick:this.toggleViews,ref:function(t){return e.icon=t}},o.createElement(Ca.A,{style:t.svg,onMouseOver:this.showHighlight,onMouseEnter:this.showHighlight,onMouseOut:this.hideHighlight}))))}}],[{key:"getDerivedStateFromProps",value:function(e,t){return 1!==e.hsl.a&&"hex"===t.view?{view:"rgb"}:null}}]),t}(o.Component);Sa.defaultProps={view:"hex"};const Ta=Sa;const Aa=function(){var e=(0,i.Ay)({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",transform:"translate(-6px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}}});return o.createElement("div",{style:e.picker})};const Da=function(){var e=(0,i.Ay)({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",boxShadow:"inset 0 0 0 1px #fff",transform:"translate(-6px, -6px)"}}});return o.createElement("div",{style:e.picker})};var Ma=function(e){var t=e.width,n=e.onChange,a=e.disableAlpha,r=e.rgb,s=e.hsl,l=e.hsv,c=e.hex,u=e.renderers,h=e.styles,p=void 0===h?{}:h,f=e.className,m=void 0===f?"":f,v=e.defaultView,w=(0,i.Ay)(an({default:{picker:{width:t,background:"#fff",borderRadius:"2px",boxShadow:"0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)",boxSizing:"initial",fontFamily:"Menlo"},saturation:{width:"100%",paddingBottom:"55%",position:"relative",borderRadius:"2px 2px 0 0",overflow:"hidden"},Saturation:{radius:"2px 2px 0 0"},body:{padding:"16px 16px 12px"},controls:{display:"flex"},color:{width:"32px"},swatch:{marginTop:"6px",width:"16px",height:"16px",borderRadius:"8px",position:"relative",overflow:"hidden"},active:{absolute:"0px 0px 0px 0px",borderRadius:"8px",boxShadow:"inset 0 0 0 1px rgba(0,0,0,.1)",background:"rgba("+r.r+", "+r.g+", "+r.b+", "+r.a+")",zIndex:"2"},toggles:{flex:"1"},hue:{height:"10px",position:"relative",marginBottom:"8px"},Hue:{radius:"2px"},alpha:{height:"10px",position:"relative"},Alpha:{radius:"2px"}},disableAlpha:{color:{width:"22px"},alpha:{display:"none"},hue:{marginBottom:"0px"},swatch:{width:"10px",height:"10px",marginTop:"0px"}}},p),{disableAlpha:a});return o.createElement("div",{style:w.picker,className:"chrome-picker "+m},o.createElement("div",{style:w.saturation},o.createElement(xn,{style:w.Saturation,hsl:s,hsv:l,pointer:Da,onChange:n})),o.createElement("div",{style:w.body},o.createElement("div",{style:w.controls,className:"flexbox-fix"},o.createElement("div",{style:w.color},o.createElement("div",{style:w.swatch},o.createElement("div",{style:w.active}),o.createElement(d,{renderers:u}))),o.createElement("div",{style:w.toggles},o.createElement("div",{style:w.hue},o.createElement(E,{style:w.Hue,hsl:s,pointer:Aa,onChange:n})),o.createElement("div",{style:w.alpha},o.createElement(g,{style:w.Alpha,rgb:r,hsl:s,pointer:Aa,renderers:u,onChange:n})))),o.createElement(Ta,{rgb:r,hsl:s,hex:c,view:v,onChange:n,disableAlpha:a})))};Ma.propTypes={width:y().oneOfType([y().string,y().number]),disableAlpha:y().bool,styles:y().object,defaultView:y().oneOf(["hex","rgb","hsl"])},Ma.defaultProps={width:225,disableAlpha:!1,styles:{}};const Ra=_o(Ma);const Pa=function(e){var t=e.color,n=e.onClick,a=void 0===n?function(){}:n,r=e.onSwatchHover,s=e.active,l=(0,i.Ay)({default:{color:{background:t,width:"15px",height:"15px",float:"left",marginRight:"5px",marginBottom:"5px",position:"relative",cursor:"pointer"},dot:{absolute:"5px 5px 5px 5px",background:bo(t),borderRadius:"50%",opacity:"0"}},active:{dot:{opacity:"1"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},dot:{background:"#000"}},transparent:{dot:{background:"#000"}}},{active:s,"color-#FFFFFF":"#FFFFFF"===t,transparent:"transparent"===t});return o.createElement(Ao,{style:l.color,color:t,onClick:a,onHover:r,focusStyle:{boxShadow:"0 0 4px "+t}},o.createElement("div",{style:l.dot}))};const Oa=function(e){var t=e.hex,n=e.rgb,a=e.onChange,r=(0,i.Ay)({default:{fields:{display:"flex",paddingBottom:"6px",paddingRight:"5px",position:"relative"},active:{position:"absolute",top:"6px",left:"5px",height:"9px",width:"9px",background:t},HEXwrap:{flex:"6",position:"relative"},HEXinput:{width:"80%",padding:"0px",paddingLeft:"20%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},HEXlabel:{display:"none"},RGBwrap:{flex:"3",position:"relative"},RGBinput:{width:"70%",padding:"0px",paddingLeft:"30%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},RGBlabel:{position:"absolute",top:"3px",left:"0px",lineHeight:"16px",textTransform:"uppercase",fontSize:"12px",color:"#999"}}}),s=function(e,t){e.r||e.g||e.b?a({r:e.r||n.r,g:e.g||n.g,b:e.b||n.b,source:"rgb"},t):a({hex:e.hex,source:"hex"},t)};return o.createElement("div",{style:r.fields,className:"flexbox-fix"},o.createElement("div",{style:r.active}),o.createElement(v,{style:{wrap:r.HEXwrap,input:r.HEXinput,label:r.HEXlabel},label:"hex",value:t,onChange:s}),o.createElement(v,{style:{wrap:r.RGBwrap,input:r.RGBinput,label:r.RGBlabel},label:"r",value:n.r,onChange:s}),o.createElement(v,{style:{wrap:r.RGBwrap,input:r.RGBinput,label:r.RGBlabel},label:"g",value:n.g,onChange:s}),o.createElement(v,{style:{wrap:r.RGBwrap,input:r.RGBinput,label:r.RGBlabel},label:"b",value:n.b,onChange:s}))};var ka=function(e){var t=e.onChange,n=e.onSwatchHover,a=e.colors,r=e.hex,s=e.rgb,l=e.styles,d=void 0===l?{}:l,c=e.className,u=void 0===c?"":c,h=(0,i.Ay)(an({default:{Compact:{background:"#f6f6f6",radius:"4px"},compact:{paddingTop:"5px",paddingLeft:"5px",boxSizing:"initial",width:"240px"},clear:{clear:"both"}}},d)),g=function(e,n){e.hex?wo(e.hex)&&t({hex:e.hex,source:"hex"},n):t(e,n)};return o.createElement(sn,{style:h.Compact,styles:d},o.createElement("div",{style:h.compact,className:"compact-picker "+u},o.createElement("div",null,Qi(a,(function(e){return o.createElement(Pa,{key:e,color:e,active:e.toLowerCase()===r,onClick:g,onSwatchHover:n})})),o.createElement("div",{style:h.clear})),o.createElement(Oa,{hex:r,rgb:s,onChange:g})))};ka.propTypes={colors:y().arrayOf(y().string),styles:y().object},ka.defaultProps={colors:["#4D4D4D","#999999","#FFFFFF","#F44E3B","#FE9200","#FCDC00","#DBDF00","#A4DD00","#68CCCA","#73D8FF","#AEA1FF","#FDA1FF","#333333","#808080","#cccccc","#D33115","#E27300","#FCC400","#B0BC00","#68BC00","#16A5A5","#009CE0","#7B64FF","#FA28FF","#000000","#666666","#B3B3B3","#9F0500","#C45100","#FB9E00","#808900","#194D33","#0C797D","#0062B1","#653294","#AB149E"],styles:{}};_o(ka);const La=(0,i.H8)((function(e){var t=e.hover,n=e.color,a=e.onClick,r=e.onSwatchHover,s={position:"relative",zIndex:"2",outline:"2px solid #fff",boxShadow:"0 0 5px 2px rgba(0,0,0,0.25)"},l=(0,i.Ay)({default:{swatch:{width:"25px",height:"25px",fontSize:"0"}},hover:{swatch:s}},{hover:t});return o.createElement("div",{style:l.swatch},o.createElement(Ao,{color:n,onClick:a,onHover:r,focusStyle:s}))}));var Ua=function(e){var t=e.width,n=e.colors,a=e.onChange,r=e.onSwatchHover,s=e.triangle,l=e.styles,d=void 0===l?{}:l,c=e.className,u=void 0===c?"":c,h=(0,i.Ay)(an({default:{card:{width:t,background:"#fff",border:"1px solid rgba(0,0,0,0.2)",boxShadow:"0 3px 12px rgba(0,0,0,0.15)",borderRadius:"4px",position:"relative",padding:"5px",display:"flex",flexWrap:"wrap"},triangle:{position:"absolute",border:"7px solid transparent",borderBottomColor:"#fff"},triangleShadow:{position:"absolute",border:"8px solid transparent",borderBottomColor:"rgba(0,0,0,0.15)"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-14px",left:"10px"},triangleShadow:{top:"-16px",left:"9px"}},"top-right-triangle":{triangle:{top:"-14px",right:"10px"},triangleShadow:{top:"-16px",right:"9px"}},"bottom-left-triangle":{triangle:{top:"35px",left:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",left:"9px",transform:"rotate(180deg)"}},"bottom-right-triangle":{triangle:{top:"35px",right:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",right:"9px",transform:"rotate(180deg)"}}},d),{"hide-triangle":"hide"===s,"top-left-triangle":"top-left"===s,"top-right-triangle":"top-right"===s,"bottom-left-triangle":"bottom-left"===s,"bottom-right-triangle":"bottom-right"===s}),g=function(e,t){return a({hex:e,source:"hex"},t)};return o.createElement("div",{style:h.card,className:"github-picker "+u},o.createElement("div",{style:h.triangleShadow}),o.createElement("div",{style:h.triangle}),Qi(n,(function(e){return o.createElement(La,{color:e,key:e,onClick:g,onSwatchHover:r})})))};Ua.propTypes={width:y().oneOfType([y().string,y().number]),colors:y().arrayOf(y().string),triangle:y().oneOf(["hide","top-left","top-right","bottom-left","bottom-right"]),styles:y().object},Ua.defaultProps={width:200,colors:["#B80000","#DB3E00","#FCCB00","#008B02","#006B76","#1273DE","#004DCF","#5300EB","#EB9694","#FAD0C3","#FEF3BD","#C1E1C5","#BEDADC","#C4DEF6","#BED3F3","#D4C4FB"],triangle:"top-left",styles:{}};_o(Ua);const Na=function(e){var t=e.direction,n=(0,i.Ay)({default:{picker:{width:"18px",height:"18px",borderRadius:"50%",transform:"translate(-9px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}},vertical:{picker:{transform:"translate(-3px, -9px)"}}},{vertical:"vertical"===t});return o.createElement("div",{style:n.picker})};var Va=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Ba=function(e){var t=e.width,n=e.height,a=e.onChange,r=e.hsl,s=e.direction,l=e.pointer,d=e.styles,c=void 0===d?{}:d,u=e.className,h=void 0===u?"":u,g=(0,i.Ay)(an({default:{picker:{position:"relative",width:t,height:n},hue:{radius:"2px"}}},c));return o.createElement("div",{style:g.picker,className:"hue-picker "+h},o.createElement(E,Va({},g.hue,{hsl:r,pointer:l,onChange:function(e){return a({a:1,h:e.h,l:.5,s:1})},direction:s})))};Ba.propTypes={styles:y().object},Ba.defaultProps={width:"316px",height:"16px",direction:"horizontal",pointer:Na,styles:{}};_o(Ba);_o((function(e){var t=e.onChange,n=e.hex,a=e.rgb,r=e.styles,s=void 0===r?{}:r,l=e.className,d=void 0===l?"":l,c=(0,i.Ay)(an({default:{material:{width:"98px",height:"98px",padding:"16px",fontFamily:"Roboto"},HEXwrap:{position:"relative"},HEXinput:{width:"100%",marginTop:"12px",fontSize:"15px",color:"#333",padding:"0px",border:"0px",borderBottom:"2px solid "+n,outline:"none",height:"30px"},HEXlabel:{position:"absolute",top:"0px",left:"0px",fontSize:"11px",color:"#999999",textTransform:"capitalize"},Hex:{style:{}},RGBwrap:{position:"relative"},RGBinput:{width:"100%",marginTop:"12px",fontSize:"15px",color:"#333",padding:"0px",border:"0px",borderBottom:"1px solid #eee",outline:"none",height:"30px"},RGBlabel:{position:"absolute",top:"0px",left:"0px",fontSize:"11px",color:"#999999",textTransform:"capitalize"},split:{display:"flex",marginRight:"-10px",paddingTop:"11px"},third:{flex:"1",paddingRight:"10px"}}},s)),u=function(e,n){e.hex?wo(e.hex)&&t({hex:e.hex,source:"hex"},n):(e.r||e.g||e.b)&&t({r:e.r||a.r,g:e.g||a.g,b:e.b||a.b,source:"rgb"},n)};return o.createElement(sn,{styles:s},o.createElement("div",{style:c.material,className:"material-picker "+d},o.createElement(v,{style:{wrap:c.HEXwrap,input:c.HEXinput,label:c.HEXlabel},label:"hex",value:n,onChange:u}),o.createElement("div",{style:c.split,className:"flexbox-fix"},o.createElement("div",{style:c.third},o.createElement(v,{style:{wrap:c.RGBwrap,input:c.RGBinput,label:c.RGBlabel},label:"r",value:a.r,onChange:u})),o.createElement("div",{style:c.third},o.createElement(v,{style:{wrap:c.RGBwrap,input:c.RGBinput,label:c.RGBlabel},label:"g",value:a.g,onChange:u})),o.createElement("div",{style:c.third},o.createElement(v,{style:{wrap:c.RGBwrap,input:c.RGBinput,label:c.RGBlabel},label:"b",value:a.b,onChange:u})))))}));const Fa=function(e){var t=e.onChange,n=e.rgb,a=e.hsv,r=e.hex,s=(0,i.Ay)({default:{fields:{paddingTop:"5px",paddingBottom:"9px",width:"80px",position:"relative"},divider:{height:"5px"},RGBwrap:{position:"relative"},RGBinput:{marginLeft:"40%",width:"40%",height:"18px",border:"1px solid #888888",boxShadow:"inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC",marginBottom:"5px",fontSize:"13px",paddingLeft:"3px",marginRight:"10px"},RGBlabel:{left:"0px",top:"0px",width:"34px",textTransform:"uppercase",fontSize:"13px",height:"18px",lineHeight:"22px",position:"absolute"},HEXwrap:{position:"relative"},HEXinput:{marginLeft:"20%",width:"80%",height:"18px",border:"1px solid #888888",boxShadow:"inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC",marginBottom:"6px",fontSize:"13px",paddingLeft:"3px"},HEXlabel:{position:"absolute",top:"0px",left:"0px",width:"14px",textTransform:"uppercase",fontSize:"13px",height:"18px",lineHeight:"22px"},fieldSymbols:{position:"absolute",top:"5px",right:"-7px",fontSize:"13px"},symbol:{height:"20px",lineHeight:"22px",paddingBottom:"7px"}}}),l=function(e,o){e["#"]?wo(e["#"])&&t({hex:e["#"],source:"hex"},o):e.r||e.g||e.b?t({r:e.r||n.r,g:e.g||n.g,b:e.b||n.b,source:"rgb"},o):(e.h||e.s||e.v)&&t({h:e.h||a.h,s:e.s||a.s,v:e.v||a.v,source:"hsv"},o)};return o.createElement("div",{style:s.fields},o.createElement(v,{style:{wrap:s.RGBwrap,input:s.RGBinput,label:s.RGBlabel},label:"h",value:Math.round(a.h),onChange:l}),o.createElement(v,{style:{wrap:s.RGBwrap,input:s.RGBinput,label:s.RGBlabel},label:"s",value:Math.round(100*a.s),onChange:l}),o.createElement(v,{style:{wrap:s.RGBwrap,input:s.RGBinput,label:s.RGBlabel},label:"v",value:Math.round(100*a.v),onChange:l}),o.createElement("div",{style:s.divider}),o.createElement(v,{style:{wrap:s.RGBwrap,input:s.RGBinput,label:s.RGBlabel},label:"r",value:n.r,onChange:l}),o.createElement(v,{style:{wrap:s.RGBwrap,input:s.RGBinput,label:s.RGBlabel},label:"g",value:n.g,onChange:l}),o.createElement(v,{style:{wrap:s.RGBwrap,input:s.RGBinput,label:s.RGBlabel},label:"b",value:n.b,onChange:l}),o.createElement("div",{style:s.divider}),o.createElement(v,{style:{wrap:s.HEXwrap,input:s.HEXinput,label:s.HEXlabel},label:"#",value:r.replace("#",""),onChange:l}),o.createElement("div",{style:s.fieldSymbols},o.createElement("div",{style:s.symbol},"°"),o.createElement("div",{style:s.symbol},"%"),o.createElement("div",{style:s.symbol},"%")))};const Wa=function(e){var t=e.hsl,n=(0,i.Ay)({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",boxShadow:"inset 0 0 0 1px #fff",transform:"translate(-6px, -6px)"}},"black-outline":{picker:{boxShadow:"inset 0 0 0 1px #000"}}},{"black-outline":t.l>.5});return o.createElement("div",{style:n.picker})};const Ha=function(){var e=(0,i.Ay)({default:{triangle:{width:0,height:0,borderStyle:"solid",borderWidth:"4px 0 4px 6px",borderColor:"transparent transparent transparent #fff",position:"absolute",top:"1px",left:"1px"},triangleBorder:{width:0,height:0,borderStyle:"solid",borderWidth:"5px 0 5px 8px",borderColor:"transparent transparent transparent #555"},left:{Extend:"triangleBorder",transform:"translate(-13px, -4px)"},leftInside:{Extend:"triangle",transform:"translate(-8px, -5px)"},right:{Extend:"triangleBorder",transform:"translate(20px, -14px) rotate(180deg)"},rightInside:{Extend:"triangle",transform:"translate(-8px, -5px)"}}});return o.createElement("div",{style:e.pointer},o.createElement("div",{style:e.left},o.createElement("div",{style:e.leftInside})),o.createElement("div",{style:e.right},o.createElement("div",{style:e.rightInside})))};const ja=function(e){var t=e.onClick,n=e.label,a=e.children,r=e.active,s=(0,i.Ay)({default:{button:{backgroundImage:"linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)",border:"1px solid #878787",borderRadius:"2px",height:"20px",boxShadow:"0 1px 0 0 #EAEAEA",fontSize:"14px",color:"#000",lineHeight:"20px",textAlign:"center",marginBottom:"10px",cursor:"pointer"}},active:{button:{boxShadow:"0 0 0 1px #878787"}}},{active:r});return o.createElement("div",{style:s.button,onClick:t},n||a)};const Ga=function(e){var t=e.rgb,n=e.currentColor,a=(0,i.Ay)({default:{swatches:{border:"1px solid #B3B3B3",borderBottom:"1px solid #F0F0F0",marginBottom:"2px",marginTop:"1px"},new:{height:"34px",background:"rgb("+t.r+","+t.g+", "+t.b+")",boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000"},current:{height:"34px",background:n,boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000"},label:{fontSize:"14px",color:"#000",textAlign:"center"}}});return o.createElement("div",null,o.createElement("div",{style:a.label},"new"),o.createElement("div",{style:a.swatches},o.createElement("div",{style:a.new}),o.createElement("div",{style:a.current})),o.createElement("div",{style:a.label},"current"))};var za=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}();var $a=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.state={currentColor:e.hex},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),za(t,[{key:"render",value:function(){var e=this.props,t=e.styles,n=void 0===t?{}:t,a=e.className,r=void 0===a?"":a,s=(0,i.Ay)(an({default:{picker:{background:"#DCDCDC",borderRadius:"4px",boxShadow:"0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)",boxSizing:"initial",width:"513px"},head:{backgroundImage:"linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)",borderBottom:"1px solid #B1B1B1",boxShadow:"inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)",height:"23px",lineHeight:"24px",borderRadius:"4px 4px 0 0",fontSize:"13px",color:"#4D4D4D",textAlign:"center"},body:{padding:"15px 15px 0",display:"flex"},saturation:{width:"256px",height:"256px",position:"relative",border:"2px solid #B3B3B3",borderBottom:"2px solid #F0F0F0",overflow:"hidden"},hue:{position:"relative",height:"256px",width:"19px",marginLeft:"10px",border:"2px solid #B3B3B3",borderBottom:"2px solid #F0F0F0"},controls:{width:"180px",marginLeft:"10px"},top:{display:"flex"},previews:{width:"60px"},actions:{flex:"1",marginLeft:"20px"}}},n));return o.createElement("div",{style:s.picker,className:"photoshop-picker "+r},o.createElement("div",{style:s.head},this.props.header),o.createElement("div",{style:s.body,className:"flexbox-fix"},o.createElement("div",{style:s.saturation},o.createElement(xn,{hsl:this.props.hsl,hsv:this.props.hsv,pointer:Wa,onChange:this.props.onChange})),o.createElement("div",{style:s.hue},o.createElement(E,{direction:"vertical",hsl:this.props.hsl,pointer:Ha,onChange:this.props.onChange})),o.createElement("div",{style:s.controls},o.createElement("div",{style:s.top,className:"flexbox-fix"},o.createElement("div",{style:s.previews},o.createElement(Ga,{rgb:this.props.rgb,currentColor:this.state.currentColor})),o.createElement("div",{style:s.actions},o.createElement(ja,{label:"OK",onClick:this.props.onAccept,active:!0}),o.createElement(ja,{label:"Cancel",onClick:this.props.onCancel}),o.createElement(Fa,{onChange:this.props.onChange,rgb:this.props.rgb,hsv:this.props.hsv,hex:this.props.hex}))))))}}]),t}(o.Component);$a.propTypes={header:y().string,styles:y().object},$a.defaultProps={header:"Color Picker",styles:{}};_o($a);const qa=function(e){var t=e.onChange,n=e.rgb,a=e.hsl,r=e.hex,s=e.disableAlpha,l=(0,i.Ay)({default:{fields:{display:"flex",paddingTop:"4px"},single:{flex:"1",paddingLeft:"6px"},alpha:{flex:"1",paddingLeft:"6px"},double:{flex:"2"},input:{width:"80%",padding:"4px 10% 3px",border:"none",boxShadow:"inset 0 0 0 1px #ccc",fontSize:"11px"},label:{display:"block",textAlign:"center",fontSize:"11px",color:"#222",paddingTop:"3px",paddingBottom:"4px",textTransform:"capitalize"}},disableAlpha:{alpha:{display:"none"}}},{disableAlpha:s}),d=function(e,o){e.hex?wo(e.hex)&&t({hex:e.hex,source:"hex"},o):e.r||e.g||e.b?t({r:e.r||n.r,g:e.g||n.g,b:e.b||n.b,a:n.a,source:"rgb"},o):e.a&&(e.a<0?e.a=0:e.a>100&&(e.a=100),e.a/=100,t({h:a.h,s:a.s,l:a.l,a:e.a,source:"rgb"},o))};return o.createElement("div",{style:l.fields,className:"flexbox-fix"},o.createElement("div",{style:l.double},o.createElement(v,{style:{input:l.input,label:l.label},label:"hex",value:r.replace("#",""),onChange:d})),o.createElement("div",{style:l.single},o.createElement(v,{style:{input:l.input,label:l.label},label:"r",value:n.r,onChange:d,dragLabel:"true",dragMax:"255"})),o.createElement("div",{style:l.single},o.createElement(v,{style:{input:l.input,label:l.label},label:"g",value:n.g,onChange:d,dragLabel:"true",dragMax:"255"})),o.createElement("div",{style:l.single},o.createElement(v,{style:{input:l.input,label:l.label},label:"b",value:n.b,onChange:d,dragLabel:"true",dragMax:"255"})),o.createElement("div",{style:l.alpha},o.createElement(v,{style:{input:l.input,label:l.label},label:"a",value:Math.round(100*n.a),onChange:d,dragLabel:"true",dragMax:"100"})))};var Ka=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Za=function(e){var t=e.colors,n=e.onClick,a=void 0===n?function(){}:n,r=e.onSwatchHover,s=(0,i.Ay)({default:{colors:{margin:"0 -10px",padding:"10px 0 0 10px",borderTop:"1px solid #eee",display:"flex",flexWrap:"wrap",position:"relative"},swatchWrap:{width:"16px",height:"16px",margin:"0 10px 10px 0"},swatch:{borderRadius:"3px",boxShadow:"inset 0 0 0 1px rgba(0,0,0,.15)"}},"no-presets":{colors:{display:"none"}}},{"no-presets":!t||!t.length}),l=function(e,t){a({hex:e,source:"hex"},t)};return o.createElement("div",{style:s.colors,className:"flexbox-fix"},t.map((function(e){var t="string"==typeof e?{color:e}:e,n=""+t.color+(t.title||"");return o.createElement("div",{key:n,style:s.swatchWrap},o.createElement(Ao,Ka({},t,{style:s.swatch,onClick:l,onHover:r,focusStyle:{boxShadow:"inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px "+t.color}})))})))};Za.propTypes={colors:y().arrayOf(y().oneOfType([y().string,y().shape({color:y().string,title:y().string})])).isRequired};const Ja=Za;var Ya=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Xa=function(e){var t=e.width,n=e.rgb,a=e.hex,r=e.hsv,s=e.hsl,l=e.onChange,c=e.onSwatchHover,u=e.disableAlpha,h=e.presetColors,p=e.renderers,f=e.styles,m=void 0===f?{}:f,v=e.className,w=void 0===v?"":v,b=(0,i.Ay)(an({default:Ya({picker:{width:t,padding:"10px 10px 0",boxSizing:"initial",background:"#fff",borderRadius:"4px",boxShadow:"0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)"},saturation:{width:"100%",paddingBottom:"75%",position:"relative",overflow:"hidden"},Saturation:{radius:"3px",shadow:"inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)"},controls:{display:"flex"},sliders:{padding:"4px 0",flex:"1"},color:{width:"24px",height:"24px",position:"relative",marginTop:"4px",marginLeft:"4px",borderRadius:"3px"},activeColor:{absolute:"0px 0px 0px 0px",borderRadius:"2px",background:"rgba("+n.r+","+n.g+","+n.b+","+n.a+")",boxShadow:"inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)"},hue:{position:"relative",height:"10px",overflow:"hidden"},Hue:{radius:"2px",shadow:"inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)"},alpha:{position:"relative",height:"10px",marginTop:"4px",overflow:"hidden"},Alpha:{radius:"2px",shadow:"inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)"}},m),disableAlpha:{color:{height:"10px"},hue:{height:"10px"},alpha:{display:"none"}}},m),{disableAlpha:u});return o.createElement("div",{style:b.picker,className:"sketch-picker "+w},o.createElement("div",{style:b.saturation},o.createElement(xn,{style:b.Saturation,hsl:s,hsv:r,onChange:l})),o.createElement("div",{style:b.controls,className:"flexbox-fix"},o.createElement("div",{style:b.sliders},o.createElement("div",{style:b.hue},o.createElement(E,{style:b.Hue,hsl:s,onChange:l})),o.createElement("div",{style:b.alpha},o.createElement(g,{style:b.Alpha,rgb:n,hsl:s,renderers:p,onChange:l}))),o.createElement("div",{style:b.color},o.createElement(d,null),o.createElement("div",{style:b.activeColor}))),o.createElement(qa,{rgb:n,hsl:s,hex:a,onChange:l,disableAlpha:u}),o.createElement(Ja,{colors:h,onClick:l,onSwatchHover:c}))};Xa.propTypes={disableAlpha:y().bool,width:y().oneOfType([y().string,y().number]),styles:y().object},Xa.defaultProps={disableAlpha:!1,width:200,styles:{},presetColors:["#D0021B","#F5A623","#F8E71C","#8B572A","#7ED321","#417505","#BD10E0","#9013FE","#4A90E2","#50E3C2","#B8E986","#000000","#4A4A4A","#9B9B9B","#FFFFFF"]};_o(Xa);const Qa=function(e){var t=e.hsl,n=e.offset,a=e.onClick,r=void 0===a?function(){}:a,s=e.active,l=e.first,d=e.last,c=(0,i.Ay)({default:{swatch:{height:"12px",background:"hsl("+t.h+", 50%, "+100*n+"%)",cursor:"pointer"}},first:{swatch:{borderRadius:"2px 0 0 2px"}},last:{swatch:{borderRadius:"0 2px 2px 0"}},active:{swatch:{transform:"scaleY(1.8)",borderRadius:"3.6px/2px"}}},{active:s,first:l,last:d});return o.createElement("div",{style:c.swatch,onClick:function(e){return r({h:t.h,s:.5,l:n,source:"hsl"},e)}})};const er=function(e){var t=e.onClick,n=e.hsl,a=(0,i.Ay)({default:{swatches:{marginTop:"20px"},swatch:{boxSizing:"border-box",width:"20%",paddingRight:"1px",float:"left"},clear:{clear:"both"}}}),r=.1;return o.createElement("div",{style:a.swatches},o.createElement("div",{style:a.swatch},o.createElement(Qa,{hsl:n,offset:".80",active:Math.abs(n.l-.8)<r&&Math.abs(n.s-.5)<r,onClick:t,first:!0})),o.createElement("div",{style:a.swatch},o.createElement(Qa,{hsl:n,offset:".65",active:Math.abs(n.l-.65)<r&&Math.abs(n.s-.5)<r,onClick:t})),o.createElement("div",{style:a.swatch},o.createElement(Qa,{hsl:n,offset:".50",active:Math.abs(n.l-.5)<r&&Math.abs(n.s-.5)<r,onClick:t})),o.createElement("div",{style:a.swatch},o.createElement(Qa,{hsl:n,offset:".35",active:Math.abs(n.l-.35)<r&&Math.abs(n.s-.5)<r,onClick:t})),o.createElement("div",{style:a.swatch},o.createElement(Qa,{hsl:n,offset:".20",active:Math.abs(n.l-.2)<r&&Math.abs(n.s-.5)<r,onClick:t,last:!0})),o.createElement("div",{style:a.clear}))};const tr=function(){var e=(0,i.Ay)({default:{picker:{width:"14px",height:"14px",borderRadius:"6px",transform:"translate(-7px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}}});return o.createElement("div",{style:e.picker})};var nr=function(e){var t=e.hsl,n=e.onChange,a=e.pointer,r=e.styles,s=void 0===r?{}:r,l=e.className,d=void 0===l?"":l,c=(0,i.Ay)(an({default:{hue:{height:"12px",position:"relative"},Hue:{radius:"2px"}}},s));return o.createElement("div",{style:c.wrap||{},className:"slider-picker "+d},o.createElement("div",{style:c.hue},o.createElement(E,{style:c.Hue,hsl:t,pointer:a,onChange:n})),o.createElement("div",{style:c.swatches},o.createElement(er,{hsl:t,onClick:n})))};nr.propTypes={styles:y().object},nr.defaultProps={pointer:tr,styles:{}};_o(nr);var or=n(81810);const ir=function(e){var t=e.color,n=e.onClick,a=void 0===n?function(){}:n,r=e.onSwatchHover,s=e.first,l=e.last,d=e.active,c=(0,i.Ay)({default:{color:{width:"40px",height:"24px",cursor:"pointer",background:t,marginBottom:"1px"},check:{color:bo(t),marginLeft:"8px",display:"none"}},first:{color:{overflow:"hidden",borderRadius:"2px 2px 0 0"}},last:{color:{overflow:"hidden",borderRadius:"0 0 2px 2px"}},active:{check:{display:"block"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},check:{color:"#333"}},transparent:{check:{color:"#333"}}},{first:s,last:l,active:d,"color-#FFFFFF":"#FFFFFF"===t,transparent:"transparent"===t});return o.createElement(Ao,{color:t,style:c.color,onClick:a,onHover:r,focusStyle:{boxShadow:"0 0 4px "+t}},o.createElement("div",{style:c.check},o.createElement(or.A,null)))};const ar=function(e){var t=e.onClick,n=e.onSwatchHover,a=e.group,r=e.active,s=(0,i.Ay)({default:{group:{paddingBottom:"10px",width:"40px",float:"left",marginRight:"10px"}}});return o.createElement("div",{style:s.group},Qi(a,(function(e,i){return o.createElement(ir,{key:e,color:e,active:e.toLowerCase()===r,first:0===i,last:i===a.length-1,onClick:t,onSwatchHover:n})})))};var rr=function(e){var t=e.width,n=e.height,a=e.onChange,r=e.onSwatchHover,s=e.colors,l=e.hex,d=e.styles,c=void 0===d?{}:d,u=e.className,h=void 0===u?"":u,g=(0,i.Ay)(an({default:{picker:{width:t,height:n},overflow:{height:n,overflowY:"scroll"},body:{padding:"16px 0 6px 16px"},clear:{clear:"both"}}},c)),p=function(e,t){return a({hex:e,source:"hex"},t)};return o.createElement("div",{style:g.picker,className:"swatches-picker "+h},o.createElement(sn,null,o.createElement("div",{style:g.overflow},o.createElement("div",{style:g.body},Qi(s,(function(e){return o.createElement(ar,{key:e.toString(),group:e,active:l,onClick:p,onSwatchHover:r})})),o.createElement("div",{style:g.clear})))))};rr.propTypes={width:y().oneOfType([y().string,y().number]),height:y().oneOfType([y().string,y().number]),colors:y().arrayOf(y().arrayOf(y().string)),styles:y().object},rr.defaultProps={width:320,height:240,colors:[[na[900],na[700],na[500],na[300],na[100]],[oa[900],oa[700],oa[500],oa[300],oa[100]],[ia[900],ia[700],ia[500],ia[300],ia[100]],[aa[900],aa[700],aa[500],aa[300],aa[100]],[ra[900],ra[700],ra[500],ra[300],ra[100]],[sa[900],sa[700],sa[500],sa[300],sa[100]],[la[900],la[700],la[500],la[300],la[100]],[da[900],da[700],da[500],da[300],da[100]],[ca[900],ca[700],ca[500],ca[300],ca[100]],["#194D33",ua[700],ua[500],ua[300],ua[100]],[ha[900],ha[700],ha[500],ha[300],ha[100]],[ga[900],ga[700],ga[500],ga[300],ga[100]],[pa[900],pa[700],pa[500],pa[300],pa[100]],[fa[900],fa[700],fa[500],fa[300],fa[100]],[ma[900],ma[700],ma[500],ma[300],ma[100]],[va[900],va[700],va[500],va[300],va[100]],[wa[900],wa[700],wa[500],wa[300],wa[100]],[ba[900],ba[700],ba[500],ba[300],ba[100]],["#000000","#525252","#969696","#D9D9D9","#FFFFFF"]],styles:{}};_o(rr);var sr=function(e){var t=e.onChange,n=e.onSwatchHover,a=e.hex,r=e.colors,s=e.width,l=e.triangle,d=e.styles,c=void 0===d?{}:d,u=e.className,h=void 0===u?"":u,g=(0,i.Ay)(an({default:{card:{width:s,background:"#fff",border:"0 solid rgba(0,0,0,0.25)",boxShadow:"0 1px 4px rgba(0,0,0,0.25)",borderRadius:"4px",position:"relative"},body:{padding:"15px 9px 9px 15px"},label:{fontSize:"18px",color:"#fff"},triangle:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent #fff transparent",position:"absolute"},triangleShadow:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent rgba(0,0,0,.1) transparent",position:"absolute"},hash:{background:"#F0F0F0",height:"30px",width:"30px",borderRadius:"4px 0 0 4px",float:"left",color:"#98A1A4",display:"flex",alignItems:"center",justifyContent:"center"},input:{width:"100px",fontSize:"14px",color:"#666",border:"0px",outline:"none",height:"28px",boxShadow:"inset 0 0 0 1px #F0F0F0",boxSizing:"content-box",borderRadius:"0 4px 4px 0",float:"left",paddingLeft:"8px"},swatch:{width:"30px",height:"30px",float:"left",borderRadius:"4px",margin:"0 6px 6px 0"},clear:{clear:"both"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-10px",left:"12px"},triangleShadow:{top:"-11px",left:"12px"}},"top-right-triangle":{triangle:{top:"-10px",right:"12px"},triangleShadow:{top:"-11px",right:"12px"}}},c),{"hide-triangle":"hide"===l,"top-left-triangle":"top-left"===l,"top-right-triangle":"top-right"===l}),p=function(e,n){wo(e)&&t({hex:e,source:"hex"},n)};return o.createElement("div",{style:g.card,className:"twitter-picker "+h},o.createElement("div",{style:g.triangleShadow}),o.createElement("div",{style:g.triangle}),o.createElement("div",{style:g.body},Qi(r,(function(e,t){return o.createElement(Ao,{key:t,color:e,hex:e,style:g.swatch,onClick:p,onHover:n,focusStyle:{boxShadow:"0 0 4px "+e}})})),o.createElement("div",{style:g.hash},"#"),o.createElement(v,{label:null,style:{input:g.input},value:a.replace("#",""),onChange:p}),o.createElement("div",{style:g.clear})))};sr.propTypes={width:y().oneOfType([y().string,y().number]),triangle:y().oneOf(["hide","top-left","top-right"]),colors:y().arrayOf(y().string),styles:y().object},sr.defaultProps={width:276,colors:["#FF6900","#FCB900","#7BDCB5","#00D084","#8ED1FC","#0693E3","#ABB8C3","#EB144C","#F78DA7","#9900EF"],triangle:"top-left",styles:{}};_o(sr);var lr=function(e){var t=(0,i.Ay)({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",border:"2px #fff solid",transform:"translate(-12px, -13px)",background:"hsl("+Math.round(e.hsl.h)+", "+Math.round(100*e.hsl.s)+"%, "+Math.round(100*e.hsl.l)+"%)"}}});return o.createElement("div",{style:t.picker})};lr.propTypes={hsl:y().shape({h:y().number,s:y().number,l:y().number,a:y().number})},lr.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};const dr=lr;var cr=function(e){var t=(0,i.Ay)({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",transform:"translate(-10px, -7px)",background:"hsl("+Math.round(e.hsl.h)+", 100%, 50%)",border:"2px white solid"}}});return o.createElement("div",{style:t.picker})};cr.propTypes={hsl:y().shape({h:y().number,s:y().number,l:y().number,a:y().number})},cr.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};const ur=cr;const hr=function(e){var t=e.onChange,n=e.rgb,a=e.hsl,r=e.hex,s=e.hsv,l=function(e,n){if(e.hex)wo(e.hex)&&t({hex:e.hex,source:"hex"},n);else if(e.rgb){var o=e.rgb.split(",");Eo(e.rgb,"rgb")&&t({r:o[0],g:o[1],b:o[2],a:1,source:"rgb"},n)}else if(e.hsv){var i=e.hsv.split(",");Eo(e.hsv,"hsv")&&(i[2]=i[2].replace("%",""),i[1]=i[1].replace("%",""),i[0]=i[0].replace("°",""),1==i[1]?i[1]=.01:1==i[2]&&(i[2]=.01),t({h:Number(i[0]),s:Number(i[1]),v:Number(i[2]),source:"hsv"},n))}else if(e.hsl){var a=e.hsl.split(",");Eo(e.hsl,"hsl")&&(a[2]=a[2].replace("%",""),a[1]=a[1].replace("%",""),a[0]=a[0].replace("°",""),1==h[1]?h[1]=.01:1==h[2]&&(h[2]=.01),t({h:Number(a[0]),s:Number(a[1]),v:Number(a[2]),source:"hsl"},n))}},d=(0,i.Ay)({default:{wrap:{display:"flex",height:"100px",marginTop:"4px"},fields:{width:"100%"},column:{paddingTop:"10px",display:"flex",justifyContent:"space-between"},double:{padding:"0px 4.4px",boxSizing:"border-box"},input:{width:"100%",height:"38px",boxSizing:"border-box",padding:"4px 10% 3px",textAlign:"center",border:"1px solid #dadce0",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",fontFamily:"Roboto,Arial,sans-serif"},input2:{height:"38px",width:"100%",border:"1px solid #dadce0",boxSizing:"border-box",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",paddingLeft:"10px",fontFamily:"Roboto,Arial,sans-serif"},label:{textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"35px",top:"-6px",left:"0",right:"0",marginLeft:"auto",marginRight:"auto",fontFamily:"Roboto,Arial,sans-serif"},label2:{left:"10px",textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"32px",top:"-6px",fontFamily:"Roboto,Arial,sans-serif"},single:{flexGrow:"1",margin:"0px 4.4px"}}}),c=n.r+", "+n.g+", "+n.b,u=Math.round(a.h)+"°, "+Math.round(100*a.s)+"%, "+Math.round(100*a.l)+"%",h=Math.round(s.h)+"°, "+Math.round(100*s.s)+"%, "+Math.round(100*s.v)+"%";return o.createElement("div",{style:d.wrap,className:"flexbox-fix"},o.createElement("div",{style:d.fields},o.createElement("div",{style:d.double},o.createElement(v,{style:{input:d.input,label:d.label},label:"hex",value:r,onChange:l})),o.createElement("div",{style:d.column},o.createElement("div",{style:d.single},o.createElement(v,{style:{input:d.input2,label:d.label2},label:"rgb",value:c,onChange:l})),o.createElement("div",{style:d.single},o.createElement(v,{style:{input:d.input2,label:d.label2},label:"hsv",value:h,onChange:l})),o.createElement("div",{style:d.single},o.createElement(v,{style:{input:d.input2,label:d.label2},label:"hsl",value:u,onChange:l})))))};var gr=function(e){var t=e.width,n=e.onChange,a=e.rgb,r=e.hsl,s=e.hsv,l=e.hex,d=e.header,c=e.styles,u=void 0===c?{}:c,h=e.className,g=void 0===h?"":h,p=(0,i.Ay)(an({default:{picker:{width:t,background:"#fff",border:"1px solid #dfe1e5",boxSizing:"initial",display:"flex",flexWrap:"wrap",borderRadius:"8px 8px 0px 0px"},head:{height:"57px",width:"100%",paddingTop:"16px",paddingBottom:"16px",paddingLeft:"16px",fontSize:"20px",boxSizing:"border-box",fontFamily:"Roboto-Regular,HelveticaNeue,Arial,sans-serif"},saturation:{width:"70%",padding:"0px",position:"relative",overflow:"hidden"},swatch:{width:"30%",height:"228px",padding:"0px",background:"rgba("+a.r+", "+a.g+", "+a.b+", 1)",position:"relative",overflow:"hidden"},body:{margin:"auto",width:"95%"},controls:{display:"flex",boxSizing:"border-box",height:"52px",paddingTop:"22px"},color:{width:"32px"},hue:{height:"8px",position:"relative",margin:"0px 16px 0px 16px",width:"100%"},Hue:{radius:"2px"}}},u));return o.createElement("div",{style:p.picker,className:"google-picker "+g},o.createElement("div",{style:p.head},d),o.createElement("div",{style:p.swatch}),o.createElement("div",{style:p.saturation},o.createElement(xn,{hsl:r,hsv:s,pointer:dr,onChange:n})),o.createElement("div",{style:p.body},o.createElement("div",{style:p.controls,className:"flexbox-fix"},o.createElement("div",{style:p.hue},o.createElement(E,{style:p.Hue,hsl:r,radius:"4px",pointer:ur,onChange:n}))),o.createElement(hr,{rgb:a,hsl:r,hex:l,hsv:s,onChange:n})))};gr.propTypes={width:y().oneOfType([y().string,y().number]),styles:y().object,header:y().string},gr.defaultProps={width:652,styles:{},header:"Color picker"};_o(gr)},28271:(e,t,n)=>{"use strict";n.d(t,{_m:()=>y});var o=n(77940),i=n(99805),a=n(51575),r=n(94717),s=n(86326),l=(n(61927),"object"==typeof performance&&"function"==typeof performance.now?function(){return performance.now()}:function(){return Date.now()});function d(e){cancelAnimationFrame(e.id)}function c(e,t){var n=l();var o={id:requestAnimationFrame((function i(){l()-n>=t?e.call(null):o.id=requestAnimationFrame(i)}))};return o}var u=-1;function h(e){if(void 0===e&&(e=!1),-1===u||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),u=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return u}var g=null;function p(e){if(void 0===e&&(e=!1),null===g||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var o=document.createElement("div"),i=o.style;return i.width="100px",i.height="100px",t.appendChild(o),document.body.appendChild(t),t.scrollLeft>0?g="positive-descending":(t.scrollLeft=1,g=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),g}return g}var f=function(e,t){return e};function m(e){var t,n=e.getItemOffset,l=e.getEstimatedTotalSize,u=e.getItemSize,g=e.getOffsetForIndexAndAlignment,m=e.getStartIndexForOffset,w=e.getStopIndexForStartIndex,b=e.initInstanceProps,E=e.shouldResetStyleCacheOnItemSizeChange,I=e.validateProps;return t=function(e){function t(t){var o;return(o=e.call(this,t)||this)._instanceProps=b(o.props,(0,i.A)(o)),o._outerRef=void 0,o._resetIsScrollingTimeoutId=null,o.state={instance:(0,i.A)(o),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"==typeof o.props.initialScrollOffset?o.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},o._callOnItemsRendered=void 0,o._callOnItemsRendered=(0,r.A)((function(e,t,n,i){return o.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:n,visibleStopIndex:i})})),o._callOnScroll=void 0,o._callOnScroll=(0,r.A)((function(e,t,n){return o.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:n})})),o._getItemStyle=void 0,o._getItemStyle=function(e){var t,i=o.props,a=i.direction,r=i.itemSize,s=i.layout,l=o._getItemStyleCache(E&&r,E&&s,E&&a);if(l.hasOwnProperty(e))t=l[e];else{var d=n(o.props,e,o._instanceProps),c=u(o.props,e,o._instanceProps),h="horizontal"===a||"horizontal"===s,g="rtl"===a,p=h?d:0;l[e]=t={position:"absolute",left:g?void 0:p,right:g?p:void 0,top:h?0:d,height:h?"100%":c,width:h?c:"100%"}}return t},o._getItemStyleCache=void 0,o._getItemStyleCache=(0,r.A)((function(e,t,n){return{}})),o._onScrollHorizontal=function(e){var t=e.currentTarget,n=t.clientWidth,i=t.scrollLeft,a=t.scrollWidth;o.setState((function(e){if(e.scrollOffset===i)return null;var t=o.props.direction,r=i;if("rtl"===t)switch(p()){case"negative":r=-i;break;case"positive-descending":r=a-n-i}return r=Math.max(0,Math.min(r,a-n)),{isScrolling:!0,scrollDirection:e.scrollOffset<r?"forward":"backward",scrollOffset:r,scrollUpdateWasRequested:!1}}),o._resetIsScrollingDebounced)},o._onScrollVertical=function(e){var t=e.currentTarget,n=t.clientHeight,i=t.scrollHeight,a=t.scrollTop;o.setState((function(e){if(e.scrollOffset===a)return null;var t=Math.max(0,Math.min(a,i-n));return{isScrolling:!0,scrollDirection:e.scrollOffset<t?"forward":"backward",scrollOffset:t,scrollUpdateWasRequested:!1}}),o._resetIsScrollingDebounced)},o._outerRefSetter=function(e){var t=o.props.outerRef;o._outerRef=e,"function"==typeof t?t(e):null!=t&&"object"==typeof t&&t.hasOwnProperty("current")&&(t.current=e)},o._resetIsScrollingDebounced=function(){null!==o._resetIsScrollingTimeoutId&&d(o._resetIsScrollingTimeoutId),o._resetIsScrollingTimeoutId=c(o._resetIsScrolling,150)},o._resetIsScrolling=function(){o._resetIsScrollingTimeoutId=null,o.setState({isScrolling:!1},(function(){o._getItemStyleCache(-1,null)}))},o}(0,a.A)(t,e),t.getDerivedStateFromProps=function(e,t){return v(e,t),I(e),null};var y=t.prototype;return y.scrollTo=function(e){e=Math.max(0,e),this.setState((function(t){return t.scrollOffset===e?null:{scrollDirection:t.scrollOffset<e?"forward":"backward",scrollOffset:e,scrollUpdateWasRequested:!0}}),this._resetIsScrollingDebounced)},y.scrollToItem=function(e,t){void 0===t&&(t="auto");var n=this.props,o=n.itemCount,i=n.layout,a=this.state.scrollOffset;e=Math.max(0,Math.min(e,o-1));var r=0;if(this._outerRef){var s=this._outerRef;r="vertical"===i?s.scrollWidth>s.clientWidth?h():0:s.scrollHeight>s.clientHeight?h():0}this.scrollTo(g(this.props,e,t,a,this._instanceProps,r))},y.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,o=e.layout;if("number"==typeof n&&null!=this._outerRef){var i=this._outerRef;"horizontal"===t||"horizontal"===o?i.scrollLeft=n:i.scrollTop=n}this._callPropsCallbacks()},y.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,o=this.state,i=o.scrollOffset;if(o.scrollUpdateWasRequested&&null!=this._outerRef){var a=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(p()){case"negative":a.scrollLeft=-i;break;case"positive-ascending":a.scrollLeft=i;break;default:var r=a.clientWidth,s=a.scrollWidth;a.scrollLeft=s-r-i}else a.scrollLeft=i;else a.scrollTop=i}this._callPropsCallbacks()},y.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&d(this._resetIsScrollingTimeoutId)},y.render=function(){var e=this.props,t=e.children,n=e.className,i=e.direction,a=e.height,r=e.innerRef,d=e.innerElementType,c=e.innerTagName,u=e.itemCount,h=e.itemData,g=e.itemKey,p=void 0===g?f:g,m=e.layout,v=e.outerElementType,w=e.outerTagName,b=e.style,E=e.useIsScrolling,I=e.width,y=this.state.isScrolling,_="horizontal"===i||"horizontal"===m,C=_?this._onScrollHorizontal:this._onScrollVertical,x=this._getRangeToRender(),S=x[0],T=x[1],A=[];if(u>0)for(var D=S;D<=T;D++)A.push((0,s.createElement)(t,{data:h,key:p(D,h),index:D,isScrolling:E?y:void 0,style:this._getItemStyle(D)}));var M=l(this.props,this._instanceProps);return(0,s.createElement)(v||w||"div",{className:n,onScroll:C,ref:this._outerRefSetter,style:(0,o.A)({position:"relative",height:a,width:I,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:i},b)},(0,s.createElement)(d||c||"div",{children:A,ref:r,style:{height:_?"100%":M,pointerEvents:y?"none":void 0,width:_?M:"100%"}}))},y._callPropsCallbacks=function(){if("function"==typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],o=e[2],i=e[3];this._callOnItemsRendered(t,n,o,i)}if("function"==typeof this.props.onScroll){var a=this.state,r=a.scrollDirection,s=a.scrollOffset,l=a.scrollUpdateWasRequested;this._callOnScroll(r,s,l)}},y._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,o=this.state,i=o.isScrolling,a=o.scrollDirection,r=o.scrollOffset;if(0===t)return[0,0,0,0];var s=m(this.props,r,this._instanceProps),l=w(this.props,s,r,this._instanceProps),d=i&&"backward"!==a?1:Math.max(1,n),c=i&&"forward"!==a?1:Math.max(1,n);return[Math.max(0,s-d),Math.max(0,Math.min(t-1,l+c)),s,l]},t}(s.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var v=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},w=function(e,t,n){var o=e.itemSize,i=n.itemMetadataMap,a=n.lastMeasuredIndex;if(t>a){var r=0;if(a>=0){var s=i[a];r=s.offset+s.size}for(var l=a+1;l<=t;l++){var d=o(l);i[l]={offset:r,size:d},r+=d}n.lastMeasuredIndex=t}return i[t]},b=function(e,t,n,o,i){for(;o<=n;){var a=o+Math.floor((n-o)/2),r=w(e,a,t).offset;if(r===i)return a;r<i?o=a+1:r>i&&(n=a-1)}return o>0?o-1:0},E=function(e,t,n,o){for(var i=e.itemCount,a=1;n<i&&w(e,n,t).offset<o;)n+=a,a*=2;return b(e,t,Math.min(n,i-1),Math.floor(n/2),o)},I=function(e,t){var n=e.itemCount,o=t.itemMetadataMap,i=t.estimatedItemSize,a=t.lastMeasuredIndex,r=0;if(a>=n&&(a=n-1),a>=0){var s=o[a];r=s.offset+s.size}return r+(n-a-1)*i},y=m({getItemOffset:function(e,t,n){return w(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:I,getOffsetForIndexAndAlignment:function(e,t,n,o,i,a){var r=e.direction,s=e.height,l=e.layout,d=e.width,c="horizontal"===r||"horizontal"===l?d:s,u=w(e,t,i),h=I(e,i),g=Math.max(0,Math.min(h-c,u.offset)),p=Math.max(0,u.offset-c+u.size+a);switch("smart"===n&&(n=o>=p-c&&o<=g+c?"auto":"center"),n){case"start":return g;case"end":return p;case"center":return Math.round(p+(g-p)/2);default:return o>=p&&o<=g?o:o<p?p:g}},getStartIndexForOffset:function(e,t,n){return function(e,t,n){var o=t.itemMetadataMap,i=t.lastMeasuredIndex;return(i>0?o[i].offset:0)>=n?b(e,t,i,0,n):E(e,t,Math.max(0,i),n)}(e,n,t)},getStopIndexForStartIndex:function(e,t,n,o){for(var i=e.direction,a=e.height,r=e.itemCount,s=e.layout,l=e.width,d="horizontal"===i||"horizontal"===s?l:a,c=w(e,t,o),u=n+d,h=c.offset+c.size,g=t;g<r-1&&h<u;)g++,h+=w(e,g,o).size;return g},initInstanceProps:function(e,t){var n={itemMetadataMap:{},estimatedItemSize:e.estimatedItemSize||50,lastMeasuredIndex:-1};return t.resetAfterIndex=function(e,o){void 0===o&&(o=!0),n.lastMeasuredIndex=Math.min(n.lastMeasuredIndex,e-1),t._getItemStyleCache(-1),o&&t.forceUpdate()},n},shouldResetStyleCacheOnItemSizeChange:!1,validateProps:function(e){e.itemSize}})},97002:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.autoprefix=void 0;var o,i=n(59741),a=(o=i)&&o.__esModule?o:{default:o},r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};var s={borderRadius:function(e){return{msBorderRadius:e,MozBorderRadius:e,OBorderRadius:e,WebkitBorderRadius:e,borderRadius:e}},boxShadow:function(e){return{msBoxShadow:e,MozBoxShadow:e,OBoxShadow:e,WebkitBoxShadow:e,boxShadow:e}},userSelect:function(e){return{WebkitTouchCallout:e,KhtmlUserSelect:e,MozUserSelect:e,msUserSelect:e,WebkitUserSelect:e,userSelect:e}},flex:function(e){return{WebkitBoxFlex:e,MozBoxFlex:e,WebkitFlex:e,msFlex:e,flex:e}},flexBasis:function(e){return{WebkitFlexBasis:e,flexBasis:e}},justifyContent:function(e){return{WebkitJustifyContent:e,justifyContent:e}},transition:function(e){return{msTransition:e,MozTransition:e,OTransition:e,WebkitTransition:e,transition:e}},transform:function(e){return{msTransform:e,MozTransform:e,OTransform:e,WebkitTransform:e,transform:e}},absolute:function(e){var t=e&&e.split(" ");return{position:"absolute",top:t&&t[0],right:t&&t[1],bottom:t&&t[2],left:t&&t[3]}},extend:function(e,t){var n=t[e];return n||{extend:e}}},l=t.autoprefix=function(e){var t={};return(0,a.default)(e,(function(e,n){var o={};(0,a.default)(e,(function(e,t){var n=s[t];n?o=r({},o,n(e)):o[t]=e})),t[n]=o})),t};t.default=l},2990:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.active=void 0;var o,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},a=n(86326),r=(o=a)&&o.__esModule?o:{default:o};function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var l=t.active=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"span";return function(n){function o(){var n,a,l;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);for(var d=arguments.length,c=Array(d),u=0;u<d;u++)c[u]=arguments[u];return a=l=s(this,(n=o.__proto__||Object.getPrototypeOf(o)).call.apply(n,[this].concat(c))),l.state={active:!1},l.handleMouseDown=function(){return l.setState({active:!0})},l.handleMouseUp=function(){return l.setState({active:!1})},l.render=function(){return r.default.createElement(t,{onMouseDown:l.handleMouseDown,onMouseUp:l.handleMouseUp},r.default.createElement(e,i({},l.props,l.state)))},s(l,a)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,n),o}(r.default.Component)};t.default=l},77136:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hover=void 0;var o,i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},a=n(86326),r=(o=a)&&o.__esModule?o:{default:o};function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var l=t.hover=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"span";return function(n){function o(){var n,a,l;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);for(var d=arguments.length,c=Array(d),u=0;u<d;u++)c[u]=arguments[u];return a=l=s(this,(n=o.__proto__||Object.getPrototypeOf(o)).call.apply(n,[this].concat(c))),l.state={hover:!1},l.handleMouseOver=function(){return l.setState({hover:!0})},l.handleMouseOut=function(){return l.setState({hover:!1})},l.render=function(){return r.default.createElement(t,{onMouseOver:l.handleMouseOver,onMouseOut:l.handleMouseOut},r.default.createElement(e,i({},l.props,l.state)))},s(l,a)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(o,n),o}(r.default.Component)};t.default=l},23003:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.flattenNames=void 0;var o=s(n(87561)),i=s(n(59741)),a=s(n(5229)),r=s(n(764));function s(e){return e&&e.__esModule?e:{default:e}}var l=t.flattenNames=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=[];return(0,r.default)(t,(function(t){Array.isArray(t)?e(t).map((function(e){return n.push(e)})):(0,a.default)(t)?(0,i.default)(t,(function(e,t){!0===e&&n.push(t),n.push(t+"-"+e)})):(0,o.default)(t)&&n.push(t)})),n};t.default=l},56457:(e,t,n)=>{"use strict";t.H8=void 0;var o=d(n(23003)),i=d(n(70101)),a=d(n(97002)),r=d(n(77136)),s=d(n(2990)),l=d(n(26431));function d(e){return e&&e.__esModule?e:{default:e}}r.default,t.H8=r.default,s.default,l.default;var c=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var s=(0,o.default)(n),l=(0,i.default)(e,s);return(0,a.default)(l)};t.Ay=c},26431:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e,t){var n={},o=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];n[e]=t};return 0===e&&o("first-child"),e===t-1&&o("last-child"),(0===e||e%2==0)&&o("even"),1===Math.abs(e%2)&&o("odd"),o("nth-child",e),n}},70101:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeClasses=void 0;var o=r(n(59741)),i=r(n(81285)),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e};function r(e){return e&&e.__esModule?e:{default:e}}var s=t.mergeClasses=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=e.default&&(0,i.default)(e.default)||{};return t.map((function(t){var i=e[t];return i&&(0,o.default)(i,(function(e,t){n[t]||(n[t]={}),n[t]=a({},n[t],i[t])})),t})),n};t.default=s},76785:(e,t,n)=>{"use strict";var o=n(86326);var i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=o.useState,r=o.useEffect,s=o.useLayoutEffect,l=o.useDebugValue;function d(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(e){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),o=a({inst:{value:n,getSnapshot:t}}),i=o[0].inst,c=o[1];return s((function(){i.value=n,i.getSnapshot=t,d(i)&&c({inst:i})}),[e,n,t]),r((function(){return d(i)&&c({inst:i}),e((function(){d(i)&&c({inst:i})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==o.useSyncExternalStore?o.useSyncExternalStore:c},92462:(e,t,n)=>{"use strict";var o=n(86326),i=n(73634);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},r=i.useSyncExternalStore,s=o.useRef,l=o.useEffect,d=o.useMemo,c=o.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,o,i){var u=s(null);if(null===u.current){var h={hasValue:!1,value:null};u.current=h}else h=u.current;u=d((function(){function e(e){if(!l){if(l=!0,r=e,e=o(e),void 0!==i&&h.hasValue){var t=h.value;if(i(t,e))return s=t}return s=e}if(t=s,a(r,e))return t;var n=o(e);return void 0!==i&&i(t,n)?t:(r=e,s=n)}var r,s,l=!1,d=void 0===n?null:n;return[function(){return e(t())},null===d?void 0:function(){return e(d())}]}),[t,n,o,i]);var g=r(e,u[0],u[1]);return l((function(){h.hasValue=!0,h.value=g}),[g]),c(g),g}},73634:(e,t,n)=>{"use strict";e.exports=n(76785)},61100:(e,t,n)=>{"use strict";e.exports=n(92462)},78713:(e,t,n)=>{"use strict";n.d(t,{vt:()=>h});const o=e=>{let t;const n=new Set,o=(e,o)=>{const i="function"==typeof e?e(t):e;if(!Object.is(i,t)){const e=t;t=(null!=o?o:"object"!=typeof i||null===i)?i:Object.assign({},t,i),n.forEach((n=>n(t,e)))}},i=()=>t,a={setState:o,getState:i,getInitialState:()=>r,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},r=t=e(o,i,a);return a},i=e=>e?o(e):o;var a=n(86326),r=n(61100);const{useDebugValue:s}=a,{useSyncExternalStoreWithSelector:l}=r;let d=!1;const c=e=>e;const u=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t="function"==typeof e?i(e):e,n=(e,n)=>function(e,t=c,n){n&&!d&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),d=!0);const o=l(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return s(o),o}(t,e,n);return Object.assign(n,t),n},h=e=>e?u(e):u},21978:(e,t,n)=>{"use strict";n.d(t,{lt:()=>a});const o=new Map,i=e=>{const t=o.get(e);return t?Object.fromEntries(Object.entries(t.stores).map((([e,t])=>[e,t.getState()]))):{}},a=(e,t={})=>(n,a,s)=>{const{enabled:l,anonymousActionType:d,store:c,...u}=t;let h;try{h=(null==l||l)&&window.__REDUX_DEVTOOLS_EXTENSION__}catch(e){}if(!h)return l&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),e(n,a,s);const{connection:g,...p}=((e,t,n)=>{if(void 0===e)return{type:"untracked",connection:t.connect(n)};const i=o.get(n.name);if(i)return{type:"tracked",store:e,...i};const a={connection:t.connect(n),stores:{}};return o.set(n.name,a),{type:"tracked",store:e,...a}})(c,h,u);let f=!0;s.setState=(e,t,o)=>{const r=n(e,t);if(!f)return r;const l=void 0===o?{type:d||"anonymous"}:"string"==typeof o?{type:o}:o;return void 0===c?(null==g||g.send(l,a()),r):(null==g||g.send({...l,type:`${c}/${l.type}`},{...i(u.name),[c]:s.getState()}),r)};const m=(...e)=>{const t=f;f=!1,n(...e),f=t},v=e(s.setState,a,s);if("untracked"===p.type?null==g||g.init(v):(p.stores[p.store]=s,null==g||g.init(Object.fromEntries(Object.entries(p.stores).map((([e,t])=>[e,e===p.store?v:t.getState()]))))),s.dispatchFromDevtools&&"function"==typeof s.dispatch){let e=!1;const t=s.dispatch;s.dispatch=(...n)=>{"__setState"!==n[0].type||e||(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),e=!0),t(...n)}}return g.subscribe((e=>{var t;switch(e.type){case"ACTION":return"string"!=typeof e.payload?void console.error("[zustand devtools middleware] Unsupported action format"):r(e.payload,(e=>{if("__setState"!==e.type)s.dispatchFromDevtools&&"function"==typeof s.dispatch&&s.dispatch(e);else{if(void 0===c)return void m(e.state);1!==Object.keys(e.state).length&&console.error('\n                    [zustand devtools middleware] Unsupported __setState action format. \n                    When using \'store\' option in devtools(), the \'state\' should have only one key, which is a value of \'store\' that was passed in devtools(),\n                    and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }\n                    ');const t=e.state[c];if(null==t)return;JSON.stringify(s.getState())!==JSON.stringify(t)&&m(t)}}));case"DISPATCH":switch(e.payload.type){case"RESET":return m(v),void 0===c?null==g?void 0:g.init(s.getState()):null==g?void 0:g.init(i(u.name));case"COMMIT":return void 0===c?void(null==g||g.init(s.getState())):null==g?void 0:g.init(i(u.name));case"ROLLBACK":return r(e.state,(e=>{if(void 0===c)return m(e),void(null==g||g.init(s.getState()));m(e[c]),null==g||g.init(i(u.name))}));case"JUMP_TO_STATE":case"JUMP_TO_ACTION":return r(e.state,(e=>{void 0!==c?JSON.stringify(s.getState())!==JSON.stringify(e[c])&&m(e[c]):m(e)}));case"IMPORT_STATE":{const{nextLiftedState:n}=e.payload,o=null==(t=n.computedStates.slice(-1)[0])?void 0:t.state;if(!o)return;return m(void 0===c?o:o[c]),void(null==g||g.send(null,n))}case"PAUSE_RECORDING":return f=!f}return}})),v},r=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error("[zustand devtools middleware] Could not parse the received json",e)}void 0!==n&&t(n)}}}]);
//# sourceMappingURL=6029.bundle.6035b3ad42ac94c36050.js.map