@ohif/extension-tmtv 3.14.0-beta.4 → 3.14.0-beta.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@ohif/extension-cornerstone"),require("@ohif/core/src/utils"),require("@ohif/ui-next"),require("@cornerstonejs/core"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@ohif/core/src"),require("@ohif/extension-default")):"function"==typeof define&&define.amd?define(["@ohif/core","@cornerstonejs/adapters","@ohif/extension-cornerstone","@ohif/core/src/utils","@ohif/ui-next","@cornerstonejs/core","dcmjs","@ohif/i18n","@cornerstonejs/tools","@ohif/core/src","@ohif/extension-default"],t):"object"==typeof exports?exports["ohif-extension-tmtv"]=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@ohif/extension-cornerstone"),require("@ohif/core/src/utils"),require("@ohif/ui-next"),require("@cornerstonejs/core"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@ohif/core/src"),require("@ohif/extension-default")):e["ohif-extension-tmtv"]=t(e["@ohif/core"],e["@cornerstonejs/adapters"],e["@ohif/extension-cornerstone"],e["@ohif/core/src/utils"],e["@ohif/ui-next"],e["@cornerstonejs/core"],e.dcmjs,e["@ohif/i18n"],e["@cornerstonejs/tools"],e["@ohif/core/src"],e["@ohif/extension-default"])}(globalThis,(e,t,n,o,a,r,i,s,l,u,c)=>(()=>{var p={856(e,t,n){"use strict";var o=n(183);function a(){}function r(){}r.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,r,i){if(i!==o){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:a};return n.PropTypes=n,n}},598(e,t,n){e.exports=n(856)()},183(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},249(e,t){"use strict";var n=Symbol.for("react.element"),o=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),r=(Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider")),i=Symbol.for("react.context"),s=(Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.memo"),Symbol.for("react.lazy"),Symbol.iterator),l={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},u=Object.assign,c={};function p(e,t,n){this.props=e,this.context=t,this.refs=c,this.updater=n||l}function d(){}function f(e,t,n){this.props=e,this.context=t,this.refs=c,this.updater=n||l}p.prototype.isReactComponent={},p.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},p.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},d.prototype=p.prototype;var h=f.prototype=new d;h.constructor=f,u(h,p.prototype),h.isPureReactComponent=!0;var g=Array.isArray,m=Object.prototype.hasOwnProperty,y=null,v={key:!0,ref:!0,__self:!0,__source:!0},b=null;t.Fragment=a,t.createContext=function(e){return(e={$$typeof:i,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:r,_context:e},e.Consumer=e},t.createElement=function(e,t,o){var a,r={},i=null,s=null;if(null!=t)for(a in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)m.call(t,a)&&!v.hasOwnProperty(a)&&(r[a]=t[a]);var l=arguments.length-2;if(1===l)r.children=o;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];r.children=u}if(e&&e.defaultProps)for(a in l=e.defaultProps)void 0===r[a]&&(r[a]=l[a]);return{$$typeof:n,type:e,key:i,ref:s,props:r,_owner:y}},t.useCallback=function(e,t){return b.useCallback(e,t)},t.useContext=function(e){return b.useContext(e)},t.useEffect=function(e,t){return b.useEffect(e,t)},t.useReducer=function(e,t,n){return b.useReducer(e,t,n)},t.useRef=function(e){return b.useRef(e)},t.useState=function(e){return b.useState(e)}},326(e,t,n){"use strict";e.exports=n(249)},741(e){e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},142(e){"use strict";e.exports=t},557(e){"use strict";e.exports=r},713(e){"use strict";e.exports=l},2(t){"use strict";t.exports=e},459(e){"use strict";e.exports=u},141(e){"use strict";e.exports=o},669(e){"use strict";e.exports=n},438(e){"use strict";e.exports=c},545(e){"use strict";e.exports=s},55(e){"use strict";e.exports=a},111(e){"use strict";e.exports=i}},d={};function f(e){var t=d[e];if(void 0!==t)return t.exports;var n=d[e]={exports:{}};return p[e](n,n.exports,f),n.exports}f.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return f.d(t,{a:t}),t},f.d=(e,t)=>{for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),f.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var h={};return(()=>{"use strict";f.r(h),f.d(h,{default:()=>tr,toolGroupIds:()=>tt});let e=JSON.parse('{"UU":"@ohif/extension-tmtv"}').UU;var t,n=f(669);let o=e=>({type:"cameraPosition",id:e,source:!0,target:!0}),a={type:"hydrateseg",id:"sameFORId",source:!0,target:!0,options:{matchingRules:["sameFOR"]}},r={viewportOptions:{viewportId:"ctAXIAL",viewportType:"volume",orientation:"axial",toolGroupId:"ctToolGroup",initialImageOptions:{preset:"first"},syncGroups:[o("axialSync"),{type:"voi",id:"ctWLSync",source:!0,target:!0,options:{syncColormap:!0}},a]},displaySets:[{id:"ctDisplaySet"}]},i={viewportOptions:{viewportId:"ctSAGITTAL",viewportType:"volume",orientation:"sagittal",toolGroupId:"ctToolGroup",syncGroups:[o("sagittalSync"),{type:"voi",id:"ctWLSync",source:!0,target:!0,options:{syncColormap:!0}},a]},displaySets:[{id:"ctDisplaySet"}]},s={viewportOptions:{viewportId:"ctCORONAL",viewportType:"volume",orientation:"coronal",toolGroupId:"ctToolGroup",syncGroups:[o("coronalSync"),{type:"voi",id:"ctWLSync",source:!0,target:!0,options:{syncColormap:!0}},a]},displaySets:[{id:"ctDisplaySet"}]},l={viewportOptions:{viewportId:"ptAXIAL",viewportType:"volume",background:[1,1,1],orientation:"axial",toolGroupId:"ptToolGroup",initialImageOptions:{preset:"first"},syncGroups:[o("axialSync"),{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{options:{voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},u={viewportOptions:{viewportId:"ptSAGITTAL",viewportType:"volume",orientation:"sagittal",background:[1,1,1],toolGroupId:"ptToolGroup",syncGroups:[o("sagittalSync"),{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{options:{voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},c={viewportOptions:{viewportId:"ptCORONAL",viewportType:"volume",orientation:"coronal",background:[1,1,1],toolGroupId:"ptToolGroup",syncGroups:[o("coronalSync"),{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{options:{voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},p={viewportOptions:{viewportId:"fusionAXIAL",viewportType:"volume",orientation:"axial",toolGroupId:"fusionToolGroup",initialImageOptions:{preset:"first"},syncGroups:[o("axialSync"),{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{id:"ctDisplaySet"},{id:"ptDisplaySet",options:{colormap:{name:"hsv",opacity:[{value:0,opacity:0},{value:.1,opacity:.8},{value:1,opacity:.9}]},voi:{custom:"getPTVOIRange"}}}]},d={viewportOptions:{viewportId:"fusionSAGITTAL",viewportType:"volume",orientation:"sagittal",toolGroupId:"fusionToolGroup",syncGroups:[o("sagittalSync"),{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{id:"ctDisplaySet"},{id:"ptDisplaySet",options:{colormap:{name:"hsv",opacity:[{value:0,opacity:0},{value:.1,opacity:.8},{value:1,opacity:.9}]},voi:{custom:"getPTVOIRange"}}}]},g={viewportOptions:{viewportId:"fusionCoronal",viewportType:"volume",orientation:"coronal",toolGroupId:"fusionToolGroup",syncGroups:[o("coronalSync"),{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{id:"ctDisplaySet"},{id:"ptDisplaySet",options:{colormap:{name:"hsv",opacity:[{value:0,opacity:0},{value:.1,opacity:.8},{value:1,opacity:.9}]},voi:{custom:"getPTVOIRange"}}}]},m={viewportOptions:{viewportId:"mipSagittal",viewportType:"volume",orientation:"sagittal",background:[1,1,1],toolGroupId:"mipToolGroup",syncGroups:[{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a],customViewportProps:{hideOverlays:!0}},displaySets:[{options:{blendMode:"MIP",slabThickness:"fullVolume",voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},y={name:"default",id:"default",viewportStructure:{layoutType:"grid",properties:{rows:3,columns:4,layoutOptions:[{x:0,y:0,width:1/4,height:1/3},{x:1/4,y:0,width:1/4,height:1/3},{x:.5,y:0,width:1/4,height:1/3},{x:0,y:1/3,width:1/4,height:1/3},{x:1/4,y:1/3,width:1/4,height:1/3},{x:.5,y:1/3,width:1/4,height:1/3},{x:0,y:2/3,width:1/4,height:1/3},{x:1/4,y:2/3,width:1/4,height:1/3},{x:.5,y:2/3,width:1/4,height:1/3},{x:3/4,y:0,width:1/4,height:1}]}},viewports:[r,i,s,l,u,c,p,d,g,m],createdDate:"2021-02-23T18:32:42.850Z"},v={name:"2x4-layout",id:"2x4-layout",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:4,layoutOptions:[{x:0,y:0,width:1/4,height:.5},{x:1/4,y:0,width:1/4,height:.5},{x:.5,y:0,width:1/4,height:.5},{x:3/4,y:0,width:1/4,height:1},{x:0,y:.5,width:1/4,height:.5},{x:1/4,y:.5,width:1/4,height:.5},{x:.5,y:.5,width:1/4,height:.5}]}},viewports:[c,u,l,m,g,d,p]},b={id:"@ohif/extension-tmtv.hangingProtocolModule.ptCT",locked:!0,name:"Default",createdDate:"2021-02-23T19:22:08.894Z",modifiedDate:"2022-10-04T19:22:08.894Z",availableTo:{},editableBy:{},imageLoadStrategy:"interleaveTopToBottom",protocolMatchingRules:[{attribute:"ModalitiesInStudy",constraint:{contains:["CT","PT"]}},{attribute:"StudyDescription",constraint:{contains:"PETCT"}},{attribute:"StudyDescription",constraint:{contains:"PET/CT"}}],displaySetSelectors:{ctDisplaySet:{seriesMatchingRules:[{attribute:"Modality",constraint:{equals:{value:"CT"}},required:!0},{attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0},{attribute:"SeriesDescription",constraint:{contains:"CT"}},{attribute:"SeriesDescription",constraint:{contains:"CT WB"}}]},ptDisplaySet:{seriesMatchingRules:[{attribute:"Modality",constraint:{equals:"PT"},required:!0},{attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0},{attribute:"SeriesDescription",constraint:{contains:"Corrected"}},{weight:2,attribute:"SeriesDescription",constraint:{doesNotContain:{value:"Uncorrected"}}}]}},stages:[y,{name:"Fusion 2x2",id:"Fusion-2x2",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:2}},viewports:[r,p,l,m]},{name:"2x3-layout",id:"2x3-layout",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:3}},viewports:[r,i,s,l,u,c]},v],numberOfPriorsReferenced:-1};var S=f(326),T=f(598),x=f.n(T),w=f(2),R=f.n(w);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})(e)}function I(e){var t=function(e,t){if("object"!=O(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=O(o))return o;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==O(t)?t:t+""}function E(){if(console&&console.warn){for(var e,t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];"string"==typeof n[0]&&(n[0]="react-i18next:: ".concat(n[0])),(e=console).warn.apply(e,n)}}f(741),Object.create(null);var C={};function k(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&C[t[0]]||("string"==typeof t[0]&&(C[t[0]]=new Date),E.apply(void 0,t))}var L=function(e,t){return function(){e.isInitialized?t():e.on("initialized",function n(){setTimeout(function(){e.off("initialized",n)},0),t()})}};function N(e,t,n){e.loadNamespaces(t,L(e,n))}function P(e,t,n,o){"string"==typeof n&&(n=[n]),n.forEach(function(t){0>e.options.ns.indexOf(t)&&e.options.ns.push(t)}),e.loadLanguages(t,L(e,o))}var j=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,D={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"\xa9","&#169;":"\xa9","&reg;":"\xae","&#174;":"\xae","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},B=function(e){return D[e]},M={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(j,B)}},A=(0,S.createContext)(),F=function(){var e;function t(){if(!(this instanceof t))throw TypeError("Cannot call a class as a function");this.usedNamespaces={}}return e=[{key:"addUsedNamespaces",value:function(e){var t=this;e.forEach(function(e){t.usedNamespaces[e]||(t.usedNamespaces[e]=!0)})}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}],function(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),o)}}(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}();function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function V(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?V(Object(n),!0).forEach(function(t){var o,a;o=t,a=n[t],(o=I(o))in e?Object.defineProperty(e,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[o]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var W=function(e,t){var n=(0,S.useRef)();return(0,S.useEffect)(function(){n.current=t?n.current:e},[e,t]),n.current};function _(e){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=o.i18n,r=(0,S.useContext)(A)||{},i=r.i18n,s=r.defaultNS,l=a||i||t;if(l&&!l.reportNamespaces&&(l.reportNamespaces=new F),!l){k("You will need to pass in an i18next instance by using initReactI18next");var u=function(e,t){return"string"==typeof t?t:t&&"object"===O(t)&&"string"==typeof t.defaultValue?t.defaultValue:Array.isArray(e)?e[e.length-1]:e},c=[u,{},!1];return c.t=u,c.i18n={},c.ready=!1,c}l.options.react&&void 0!==l.options.react.wait&&k("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=q(q(q({},M),l.options.react),o),d=p.useSuspense,f=p.keyPrefix,h=e||s||l.options&&l.options.defaultNS;h="string"==typeof h?[h]:h||["translation"],l.reportNamespaces.addUsedNamespaces&&l.reportNamespaces.addUsedNamespaces(h);var g=(l.isInitialized||l.initializedStoreOnce)&&h.every(function(e){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.languages&&t.languages.length?void 0===t.options.ignoreJSONStructure?function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=t.languages[0],a=!!t.options&&t.options.fallbackLng,r=t.languages[t.languages.length-1];if("cimode"===o.toLowerCase())return!0;var i=function(e,n){var o=t.services.backendConnector.state["".concat(e,"|").concat(n)];return -1===o||2===o};return(!(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1)||!t.services.backendConnector.backend||!t.isLanguageChangingTo||!!i(t.isLanguageChangingTo,e))&&!!(t.hasResourceBundle(o,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||i(o,e)&&(!a||i(r,e)))}(e,t,n):t.hasLoadedNamespace(e,{lng:n.lng,precheck:function(t,o){if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!o(t.isLanguageChangingTo,e))return!1}}):(k("i18n.languages were undefined or empty",t.languages),!0)}(e,l,p)});function m(){return l.getFixedT(o.lng||null,"fallback"===p.nsMode?h:h[0],f)}var y=function(e){if(Array.isArray(e))return e}(n=(0,S.useState)(m))||function(e){var t=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,a,r,i=[],s=!0,l=!1;try{a=(t=t.call(e)).next,!1;for(;!(s=(n=a.call(t)).done)&&(i.push(n.value),2!==i.length);s=!0);}catch(e){l=!0,o=e}finally{try{if(!s&&null!=t.return&&(r=t.return(),Object(r)!==r))return}finally{if(l)throw o}}return i}}(n)||function(e){if(e){if("string"==typeof e)return U(e,2);var t=({}).toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?U(e,2):void 0}}(n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),v=y[0],b=y[1],T=h.join();o.lng&&(T="".concat(o.lng).concat(T));var x=W(T),w=(0,S.useRef)(!0);(0,S.useEffect)(function(){var e=p.bindI18n,t=p.bindI18nStore;function n(){w.current&&b(m)}return w.current=!0,g||d||(o.lng?P(l,o.lng,h,function(){w.current&&b(m)}):N(l,h,function(){w.current&&b(m)})),g&&x&&x!==T&&w.current&&b(m),e&&l&&l.on(e,n),t&&l&&l.store.on(t,n),function(){w.current=!1,e&&l&&e.split(" ").forEach(function(e){return l.off(e,n)}),t&&l&&t.split(" ").forEach(function(e){return l.store.off(e,n)})}},[l,T]);var R=(0,S.useRef)(!0);(0,S.useEffect)(function(){w.current&&!R.current&&b(m),R.current=!1},[l,f]);var I=[v,l,g];if(I.t=v,I.i18n=l,I.ready=g,g||!g&&!d)return I;throw new Promise(function(e){o.lng?P(l,o.lng,h,function(){return e()}):N(l,h,function(){return e()})})}var G=f(55),H=f(459);function z(){return(z=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(null,arguments)}let $={PatientWeight:null,PatientSex:null,SeriesTime:null,RadiopharmaceuticalInformationSequence:{RadionuclideTotalDose:null,RadionuclideHalfLife:null,RadiopharmaceuticalStartTime:null}},K=({children:e,className:t,...n})=>S.createElement("div",z({className:`flex flex-row items-center space-x-4 ${t||""}`},n),e);function J(){let{commandsManager:e,servicesManager:t}=(0,H.useSystem)(),{t:n}=_("PanelSUV"),{displaySetService:o,hangingProtocolService:a}=t.services,[r,i]=(0,S.useState)($),[s,l]=(0,S.useState)(null),u=e=>{i(t=>{let n={...t};return Object.keys(e).forEach(o=>{"object"==typeof e[o]?n[o]={...t[o],...e[o]}:n[o]=e[o]}),n})},c=t=>{let n=e.runCommand("getMatchingPTDisplaySet",{viewportMatchDetails:t});if(!n)return;let o=e.runCommand("getPTMetadata",{ptDisplaySet:n});return{ptDisplaySet:n,metadata:o}};return(0,S.useEffect)(()=>{let e=o.getActiveDisplaySets(),{viewportMatchDetails:t}=a.getMatchDetails();if(!e.length)return;let n=c(t);if(!n)return;let{ptDisplaySet:r,metadata:s}=n;l(r),i(s)},[]),(0,S.useEffect)(()=>{let{unsubscribe:e}=a.subscribe(a.EVENTS.PROTOCOL_CHANGED,({viewportMatchDetails:e})=>{let t=c(e);if(!t)return;let{ptDisplaySet:n,metadata:o}=t;l(n),i(o)});return()=>{e()}},[]),S.createElement(S.Fragment,null,S.createElement("div",{className:"ohif-scrollbar flex min-h-0 flex-auto select-none flex-col justify-between overflow-auto"},S.createElement("div",{className:"flex min-h-0 flex-1 flex-col bg-background text-base"},S.createElement(G.PanelSection,{defaultOpen:!0},S.createElement(G.PanelSection.Header,null,n("Patient Information")),S.createElement(G.PanelSection.Content,null,S.createElement("div",{className:"bg-muted flex flex-col gap-3 p-2"},S.createElement(K,null,S.createElement(K.Label,null,n("Patient Sex")),S.createElement(K.Input,{value:r.PatientSex||"",onChange:e=>{u({PatientSex:e.target.value})}})),S.createElement(K,null,S.createElement(K.Label,{unit:"kg"},n("Weight")),S.createElement(K.Input,{value:r.PatientWeight||"",onChange:e=>{u({PatientWeight:e.target.value})},id:"weight-input"})),S.createElement(K,null,S.createElement(K.Label,{unit:"bq"},n("Total Dose")),S.createElement(K.Input,{value:r.RadiopharmaceuticalInformationSequence.RadionuclideTotalDose||"",onChange:e=>{u({RadiopharmaceuticalInformationSequence:{RadionuclideTotalDose:e.target.value}})}})),S.createElement(K,null,S.createElement(K.Label,{unit:"s"},n("Half Life")),S.createElement(K.Input,{value:r.RadiopharmaceuticalInformationSequence.RadionuclideHalfLife||"",onChange:e=>{u({RadiopharmaceuticalInformationSequence:{RadionuclideHalfLife:e.target.value}})}})),S.createElement(K,null,S.createElement(K.Label,{unit:"s"},n("Injection Time")),S.createElement(K.Input,{value:r.RadiopharmaceuticalInformationSequence.RadiopharmaceuticalStartTime||"",onChange:e=>{u({RadiopharmaceuticalInformationSequence:{RadiopharmaceuticalStartTime:e.target.value}})}})),S.createElement(K,null,S.createElement(K.Label,{unit:"s"},n("Acquisition Time")),S.createElement(K.Input,{value:r.SeriesTime||"",onChange:()=>{}})),S.createElement(G.Button,{variant:"default",size:"sm",className:"self-end px-4",onClick:function(){if(!s)throw Error("No ptDisplaySet found");w.DicomMetadataStore.updateMetadataForSeries(s.StudyInstanceUID,s.SeriesInstanceUID,r),o.setDisplaySetMetadataInvalidated(s.displaySetInstanceUID),setTimeout(()=>{e.runCommand("resetCrosshairs")},0)}},n("Reload Data"))))))))}K.Label=({children:e,unit:t,className:n,...o})=>S.createElement(G.Label,z({className:`min-w-32 flex-shrink-0 ${n||""}`},o),e,t&&S.createElement("span",{className:"text-muted-foreground"}," ",t)),K.Input=({className:e,...t})=>S.createElement(G.Input,z({className:`h-7 flex-1 ${e||""}`},t)),K.Label.displayName="InputRow.Label",K.Input.displayName="InputRow.Input",J.propTypes={servicesManager:x().shape({services:x().shape({measurementService:x().shape({getMeasurements:x().func.isRequired,subscribe:x().func.isRequired,EVENTS:x().object.isRequired,VALUE_TYPES:x().object.isRequired}).isRequired}).isRequired}).isRequired};let Y=async({commandsManager:e,segmentationService:t})=>{let n=t.getSegmentations(),o=await e.run("calculateTMTV",{segmentations:n});n.forEach(e=>{e.cachedStats={...e.cachedStats,tmtv:o},t.addOrUpdateSegmentation(e)})};var Z=f(141);function X(){let{commandsManager:e,servicesManager:t}=(0,H.useSystem)(),{segmentationService:o}=t.services,{segmentationsWithRepresentations:a}=(0,n.useActiveViewportSegmentationRepresentations)(),r=a?.map(e=>e.segmentation.segmentationId)||[],i=a?.map(e=>e.segmentation)||[];(0,S.useEffect)(()=>{(async()=>{for(let t of r)await Y({segmentationId:t,commandsManager:e,segmentationService:o})})()},[]),(0,S.useEffect)(()=>{let t=(0,Z.debounce)(async t=>{let{segmentationId:n}=t;await Y({segmentationId:n,commandsManager:e,segmentationService:o})},100),n=o.subscribe(o.EVENTS.SEGMENTATION_DATA_MODIFIED,e=>{t(e)});return()=>{n.unsubscribe()}},[e,o]);let s=o.getSegmentationGroupStats(r),l=s?.tmtv;return S.createElement("div",{className:"mb-1 flex flex-col"},S.createElement("div",{className:"invisible-scrollbar overflow-y-auto overflow-x-hidden"},S.createElement("div",{className:"bg-popover flex items-baseline justify-between px-2 py-1"},S.createElement("div",{className:"py-1"},S.createElement("span",{className:"text-muted-foreground text-base font-bold uppercase"},"TMTV: "),S.createElement("span",{className:"text-foreground"},l?`${l.toFixed(3)} mL`:"")),S.createElement("div",{className:"flex items-center"},S.createElement(G.Button,{dataCY:"exportTmtvCsvReport",size:"sm",variant:"ghost",onClick:()=>{i.length&&e.runCommand("exportTMTVReportCSV",{segmentations:i,tmtv:l,config:{}})}},S.createElement("span",{className:"pl-1"},"CSV"))))))}var Q=f(438);function ee({configuration:e}){return S.createElement(S.Fragment,null,S.createElement(n.PanelSegmentation,{configuration:e},S.createElement(X,null)))}var et=f(545),en=f.n(et),eo=f(713);let ea=["RectangleROIStartEndThreshold","CircleROIStartEndThreshold"],er=(e,t)=>{},ei=(e,t)=>{},{CORNERSTONE_3D_TOOLS_SOURCE_NAME:es,CORNERSTONE_3D_TOOLS_SOURCE_VERSION:el}=n.Enums;var eu=f(557);let ec=function(e,t,n){if("range"===n.strategy)return{ptLower:Number(n.ptLower),ptUpper:Number(n.ptUpper),ctLower:Number(n.ctLower),ctUpper:Number(n.ctUpper)};let{weight:o}=n;return{ctLower:-1/0,ctUpper:Infinity,ptLower:o*function(e,t){let{imageIds:n}=e,o=eu.cache.getVolumeContainingImageId(n[0]);if(!o)throw Error("No volume found for display set");let{volume:a}=o,{voxelManager:r}=a,{fn:i,baseValue:s}={fn:(e,t)=>(e>t&&(t=e),t),baseValue:-1/0},l=s,u=eo.utilities.rectangleROITool.getBoundsIJKFromRectangleAnnotations(t,a);return r.forEach(({value:e})=>{l=i(e,l)},{boundsIJK:u}),l}(t,e.map(e=>eo.annotation.state.getAnnotation(e))),ptUpper:Infinity}},{downloadCsv:ep}=w.utils;var ed=f(111),ef=f.n(ed),eh=f(142);let{datasetToBlob:eg}=ef().data,em=w.classes.MetadataProvider,ey=function(e){let t=eg(eh.adaptersRT.Cornerstone3D.RTSS.generateRTSSFromAnnotations(e,em,w.DicomMetadataStore));var n=URL.createObjectURL(t);window.location.assign(n)},{SegmentationRepresentations:ev}=eo.Enums,{formatPN:eb}=w.utils,eS=w.classes.MetadataProvider,eT=["RectangleROIStartEndThreshold","RectangleROIThreshold","CircleROIStartEndThreshold"],ex="roi_stat",ew=function({config:e,dispatch:t,runCommand:n}){let{t:o}=_("ROIThresholdConfiguration"),a=[{value:ex,label:o("Max"),placeHolder:o("Max")},{value:"range",label:o("Range"),placeHolder:o("Range")}];return S.createElement("div",{className:"bg-muted flex flex-col space-y-4 p-px"},S.createElement("div",{className:"flex items-end space-x-3"},S.createElement("div",{className:"flex min-w-0 flex-1 flex-col"},S.createElement(G.Select,{value:e.strategy,onValueChange:e=>{t({type:"setStrategy",payload:{strategy:e}})}},S.createElement(G.SelectTrigger,{className:"w-full"},S.createElement(G.SelectValue,{placeholder:a.find(t=>t.value===e.strategy)?.placeHolder})),S.createElement(G.SelectContent,{className:""},a.map(e=>S.createElement(G.SelectItem,{key:e.value,value:e.value},e.label))))),S.createElement("div",{className:"flex-shrink-0"},S.createElement("div",{className:"flex justify-end space-x-2"},S.createElement(G.Button,{variant:"secondary",onClick:()=>n("setStartSliceForROIThresholdTool")},o("Start")),S.createElement(G.Button,{variant:"secondary",onClick:()=>n("setEndSliceForROIThresholdTool")},o("End"))))),e.strategy===ex&&S.createElement("div",{className:"mr-0"},S.createElement("div",{className:"mb-2"},S.createElement(G.Label,null,o("Percentage of Max SUV"))),S.createElement(G.Input,{"data-cy":"percentage-of-max-suv-input",className:"w-full",type:"text",value:e.weight,onChange:e=>{let n=e.target.value;"."===n&&(n="0."),isNaN(Number(n))||0>Number(n)||Number(n)>1||t({type:"setWeight",payload:{weight:n}})}})),e.strategy!==ex&&S.createElement("div",{className:"mr-2 text-sm"},S.createElement("div",{className:"flex flex-col space-y-2"},S.createElement(G.Label,null,o("Lower & Upper Ranges")),S.createElement("div",{className:"flex items-center"},S.createElement("div",{className:"w-10 text-left"},S.createElement(G.Label,null,"CT")),S.createElement("div",{className:"flex flex-1 space-x-2"},S.createElement("div",{className:"flex-1"},S.createElement(G.Input,{className:"w-full",type:"text",value:e.ctLower,onChange:e=>{t({type:"setThreshold",payload:{ctLower:e.target.value}})}})),S.createElement("div",{className:"flex-1"},S.createElement(G.Input,{className:"w-full",type:"text",value:e.ctUpper,onChange:e=>{t({type:"setThreshold",payload:{ctUpper:e.target.value}})}})))),S.createElement("div",{className:"flex items-center"},S.createElement("div",{className:"w-10 text-left"},S.createElement(G.Label,null,"PT")),S.createElement("div",{className:"flex flex-1 space-x-2"},S.createElement("div",{className:"flex-1"},S.createElement(G.Input,{className:"w-full",type:"text",value:e.ptLower,onChange:e=>{t({type:"setThreshold",payload:{ptLower:e.target.value}})}})),S.createElement("div",{className:"flex-1"},S.createElement(G.Input,{className:"w-full",type:"text",value:e.ptUpper,onChange:e=>{t({type:"setThreshold",payload:{ptUpper:e.target.value}})}})))))))};function eR(e,t){let{payload:n}=t,{strategy:o,ctLower:a,ctUpper:r,ptLower:i,ptUpper:s,weight:l}=n;switch(t.type){case"setStrategy":return{...e,strategy:o};case"setThreshold":return{...e,ctLower:a||e.ctLower,ctUpper:r||e.ctUpper,ptLower:i||e.ptLower,ptUpper:s||e.ptUpper};case"setWeight":return{...e,weight:l};default:return e}}let eO=function(){let{commandsManager:e}=(0,w.useSystem)(),t=(0,n.useSegmentations)()[0],{t:o}=_("ROIThresholdConfiguration"),a=(0,S.useCallback)((t,n={})=>e.runCommand(t,n),[e]),[r,i]=(0,S.useReducer)(eR,{strategy:ex,ctLower:-1024,ctUpper:1024,ptLower:2.5,ptUpper:100,weight:.41}),s=(0,S.useCallback)(()=>{if(!t)return;let e=t.segmentationId,n=eo.segmentation.segmentIndex.getActiveSegmentIndex(e);a("thresholdSegmentationByRectangleROITool",{segmentationId:e,config:r,segmentIndex:n})},[t,r]);return S.createElement("div",{className:"invisible-scrollbar mb-1 flex flex-col overflow-y-auto overflow-x-hidden"},S.createElement(ew,{config:r,dispatch:i,runCommand:a}),t&&S.createElement(G.Button,{variant:"default",className:"my-3 mr-auto w-20",onClick:s},o("Run")))};function eI(e){return(eI="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function eE(e){var t=function(e,t){if("object"!=eI(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=eI(o))return o;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==eI(t)?t:t+""}function eC(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&o.push.apply(o,Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),o.forEach(function(t){var o,a;o=t,a=n[t],(o=eE(o))in e?Object.defineProperty(e,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[o]=a})}return e}function ek(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}function eL(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,eE(o.key),o)}}function eN(e,t,n){return t&&eL(e.prototype,t),n&&eL(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function eP(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ej(e,t){if(t&&("object"==eI(t)||"function"==typeof t))return t;if(void 0!==t)throw TypeError("Derived constructors may only return object or undefined");return eP(e)}function eD(e){return(eD=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function eB(e,t){return(eB=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function eM(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&eB(e,t)}function eA(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function eF(e,t){if(e){if("string"==typeof e)return eA(e,t);var n=({}).toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?eA(e,t):void 0}}function eU(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r,i,s=[],l=!0,u=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(o=r.call(n)).done)&&(s.push(o.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return s}}(e,t)||eF(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var eV={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){var n;console&&console[e]&&(n=console)[e].apply(n,function(e){if(Array.isArray(e))return eA(e)}(t)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||eF(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())}},eq=new(function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};ek(this,e),this.init(t,n)}return eN(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||eV,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,t,n,o){return o&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(n).concat(this.prefix," ").concat(e[0])),this.logger[t](e))}},{key:"create",value:function(t){return new e(this.logger,eC({},{prefix:"".concat(this.prefix,":").concat(t,":")},this.options))}}]),e}()),eW=function(){function e(){ek(this,e),this.observers={}}return eN(e,[{key:"on",value:function(e,t){var n=this;return e.split(" ").forEach(function(e){n.observers[e]=n.observers[e]||[],n.observers[e].push(t)}),this}},{key:"off",value:function(e,t){if(this.observers[e]){if(!t)return void delete this.observers[e];this.observers[e]=this.observers[e].filter(function(e){return e!==t})}}},{key:"emit",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];this.observers[e]&&[].concat(this.observers[e]).forEach(function(e){e.apply(void 0,n)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(function(t){t.apply(t,[e].concat(n))})}}]),e}();function e_(){var e,t,n=new Promise(function(n,o){e=n,t=o});return n.resolve=e,n.reject=t,n}function eG(e){return null==e?"":""+e}function eH(e,t,n){function o(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function a(){return!e||"string"==typeof e}for(var r="string"!=typeof t?[].concat(t):t.split(".");r.length>1;){if(a())return{};var i=o(r.shift());!e[i]&&n&&(e[i]=new n),e=e[i]}return a()?{}:{obj:e,k:o(r.shift())}}function ez(e,t,n){var o=eH(e,t,Object);o.obj[o.k]=n}function e$(e,t){var n=eH(e,t),o=n.obj,a=n.k;if(o)return o[a]}function eK(e,t,n){var o=e$(e,n);return void 0!==o?o:e$(t,n)}function eJ(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var eY={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function eZ(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,function(e){return eY[e]}):e}var eX=function(e){function t(e){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return ek(this,t),n=ej(this,eD(t).call(this)),eW.call(eP(n)),n.data=e||{},n.options=o,void 0===n.options.keySeparator&&(n.options.keySeparator="."),n}return eM(t,e),eN(t,[{key:"addNamespaces",value:function(e){0>this.options.ns.indexOf(e)&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=void 0!==o.keySeparator?o.keySeparator:this.options.keySeparator,r=[e,t];return n&&"string"!=typeof n&&(r=r.concat(n)),n&&"string"==typeof n&&(r=r.concat(a?n.split(a):n)),e.indexOf(".")>-1&&(r=e.split(".")),e$(this.data,r)}},{key:"addResource",value:function(e,t,n,o){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},r=this.options.keySeparator;void 0===r&&(r=".");var i=[e,t];n&&(i=i.concat(r?n.split(r):n)),e.indexOf(".")>-1&&(i=e.split("."),o=t,t=i[1]),this.addNamespaces(t),ez(this.data,i,o),a.silent||this.emit("added",e,t,n,o)}},{key:"addResources",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var a in n)("string"==typeof n[a]||"[object Array]"===Object.prototype.toString.apply(n[a]))&&this.addResource(e,t,a,n[a],{silent:!0});o.silent||this.emit("added",e,t,n)}},{key:"addResourceBundle",value:function(e,t,n,o,a){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},i=[e,t];e.indexOf(".")>-1&&(i=e.split("."),o=n,n=t,t=i[1]),this.addNamespaces(t);var s=e$(this.data,i)||{};o?function e(t,n,o){for(var a in n)a in t?"string"==typeof t[a]||t[a]instanceof String||"string"==typeof n[a]||n[a]instanceof String?o&&(t[a]=n[a]):e(t[a],n[a],o):t[a]=n[a];return t}(s,n,a):s=eC({},s,n),ez(this.data,i,s),r.silent||this.emit("added",e,t,n)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return(t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI)?eC({},{},this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"toJSON",value:function(){return this.data}}]),t}(eW),eQ={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,n,o,a){var r=this;return e.forEach(function(e){r.processors[e]&&(t=r.processors[e].process(t,n,o,a))}),t}},e0=function(e){function t(e){var n,o,a,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ek(this,t),a=ej(this,eD(t).call(this)),eW.call(eP(a)),n=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],o=eP(a),n.forEach(function(t){e[t]&&(o[t]=e[t])}),a.options=r,void 0===a.options.keySeparator&&(a.options.keySeparator="."),a.logger=eq.create("translator"),a}return eM(t,e),eN(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},n=this.resolve(e,t);return n&&void 0!==n.res}},{key:"extractFromKey",value:function(e,t){var n=t.nsSeparator||this.options.nsSeparator;void 0===n&&(n=":");var o=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,a=t.ns||this.options.defaultNS;if(n&&e.indexOf(n)>-1){var r=e.split(n);(n!==o||n===o&&this.options.ns.indexOf(r[0])>-1)&&(a=r.shift()),e=r.join(o)}return"string"==typeof a&&(a=[a]),{key:e,namespaces:a}}},{key:"translate",value:function(e,t){var n=this;if("object"!==eI(t)&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var o=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,a=this.extractFromKey(e[e.length-1],t),r=a.key,i=a.namespaces,s=i[i.length-1],l=t.lng||this.language,u=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(l&&"cimode"===l.toLowerCase())return u?s+(t.nsSeparator||this.options.nsSeparator)+r:r;var c=this.resolve(e,t),p=c&&c.res,d=c&&c.usedKey||r,f=c&&c.exactUsedKey||r,h=Object.prototype.toString.apply(p),g=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,m=!this.i18nFormat||this.i18nFormat.handleAsObject,y="string"!=typeof p&&"boolean"!=typeof p&&"number"!=typeof p;if(m&&p&&y&&0>["[object Number]","[object Function]","[object RegExp]"].indexOf(h)&&("string"!=typeof g||"[object Array]"!==h)){if(!t.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(d,p,t):"key '".concat(r," (").concat(this.language,")' returned an object instead of string.");if(o){var v="[object Array]"===h,b=v?[]:{},S=v?f:d;for(var T in p)if(Object.prototype.hasOwnProperty.call(p,T)){var x="".concat(S).concat(o).concat(T);b[T]=this.translate(x,eC({},t,{joinArrays:!1,ns:i})),b[T]===x&&(b[T]=p[T])}p=b}}else if(m&&"string"==typeof g&&"[object Array]"===h)(p=p.join(g))&&(p=this.extendTranslation(p,e,t));else{var w=!1,R=!1;if(!this.isValidLookup(p)&&void 0!==t.defaultValue){if(w=!0,void 0!==t.count){var O=this.pluralResolver.getSuffix(l,t.count);p=t["defaultValue".concat(O)]}p||(p=t.defaultValue)}this.isValidLookup(p)||(R=!0,p=r);var I=t.defaultValue&&t.defaultValue!==p&&this.options.updateMissing;if(R||w||I){this.logger.log(I?"updateKey":"missingKey",l,s,r,I?t.defaultValue:p);var E=[],C=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&C&&C[0])for(var k=0;k<C.length;k++)E.push(C[k]);else"all"===this.options.saveMissingTo?E=this.languageUtils.toResolveHierarchy(t.lng||this.language):E.push(t.lng||this.language);var L=function(e,o){n.options.missingKeyHandler?n.options.missingKeyHandler(e,s,o,I?t.defaultValue:p,I,t):n.backendConnector&&n.backendConnector.saveMissing&&n.backendConnector.saveMissing(e,s,o,I?t.defaultValue:p,I,t),n.emit("missingKey",e,s,o,p)};if(this.options.saveMissing){var N=void 0!==t.count&&"string"!=typeof t.count;this.options.saveMissingPlurals&&N?E.forEach(function(e){n.pluralResolver.getPluralFormsOfKey(e,r).forEach(function(t){return L([e],t)})}):L(E,r)}}p=this.extendTranslation(p,e,t,c),R&&p===r&&this.options.appendNamespaceToMissingKey&&(p="".concat(s,":").concat(r)),R&&this.options.parseMissingKeyHandler&&(p=this.options.parseMissingKeyHandler(p))}return p}},{key:"extendTranslation",value:function(e,t,n,o){var a=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,n,o.usedLng,o.usedNS,o.usedKey,{resolved:o});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init(eC({},n,{interpolation:eC({},this.options.interpolation,n.interpolation)}));var r=n.replace&&"string"!=typeof n.replace?n.replace:n;this.options.interpolation.defaultVariables&&(r=eC({},this.options.interpolation.defaultVariables,r)),e=this.interpolator.interpolate(e,r,n.lng||this.language,n),!1!==n.nest&&(e=this.interpolator.nest(e,function(){return a.translate.apply(a,arguments)},n)),n.interpolation&&this.interpolator.reset()}var i=n.postProcess||this.options.postProcess,s="string"==typeof i?[i]:i;return null!=e&&s&&s.length&&!1!==n.applyPostProcessor&&(e=eQ.handle(s,e,t,this.options&&this.options.postProcessPassResolved?eC({i18nResolved:o},n):n,this)),e}},{key:"resolve",value:function(e){var t,n,o,a,r,i=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach(function(e){if(!i.isValidLookup(t)){var l=i.extractFromKey(e,s),u=l.key;n=u;var c=l.namespaces;i.options.fallbackNS&&(c=c.concat(i.options.fallbackNS));var p=void 0!==s.count&&"string"!=typeof s.count,d=void 0!==s.context&&"string"==typeof s.context&&""!==s.context,f=s.lngs?s.lngs:i.languageUtils.toResolveHierarchy(s.lng||i.language,s.fallbackLng);c.forEach(function(e){i.isValidLookup(t)||(r=e,i.utils&&i.utils.hasLoadedNamespace&&!i.utils.hasLoadedNamespace(r)&&i.logger.warn('key "'.concat(n,'" for namespace "').concat(r,"\" won't get resolved as namespace was not yet loaded"),"This means something IS WRONG in your application setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"),f.forEach(function(n){if(!i.isValidLookup(t)){a=n;var r,l,c=u,f=[c];for(i.i18nFormat&&i.i18nFormat.addLookupKeys?i.i18nFormat.addLookupKeys(f,u,n,e,s):(p&&(r=i.pluralResolver.getSuffix(n,s.count)),p&&d&&f.push(c+r),d&&f.push(c+="".concat(i.options.contextSeparator).concat(s.context)),p&&f.push(c+=r));l=f.pop();)i.isValidLookup(t)||(o=l,t=i.getResource(n,e,l,s))}}))})}}),{res:t,usedKey:n,exactUsedKey:o,usedLng:a,usedNS:r}}},{key:"isValidLookup",value:function(e){return void 0!==e&&!(!this.options.returnNull&&null===e)&&!(!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,n,o):this.resourceStore.getResource(e,t,n,o)}}]),t}(eW);function e1(e){return e.charAt(0).toUpperCase()+e.slice(1)}var e2=function(){function e(t){ek(this,e),this.options=t,this.whitelist=this.options.whitelist||!1,this.logger=eq.create("languageUtils")}return eN(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||0>e.indexOf("-"))return null;var t=e.split("-");return 2===t.length?null:(t.pop(),this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||0>e.indexOf("-"))return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-");return this.options.lowerCaseLng?n=n.map(function(e){return e.toLowerCase()}):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=e1(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=e1(n[1].toLowerCase())),t.indexOf(n[2].toLowerCase())>-1&&(n[2]=e1(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isWhitelisted",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitWhitelist)&&(e=this.getLanguagePartFromCode(e)),!this.whitelist||!this.whitelist.length||this.whitelist.indexOf(e)>-1}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var n=e[t];return n||(n=e[this.getScriptPartFromCode(t)]),n||(n=e[this.formatLanguageCode(t)]),n||(n=e.default),n||[]}},{key:"toResolveHierarchy",value:function(e,t){var n=this,o=this.getFallbackCodes(t||this.options.fallbackLng||[],e),a=[],r=function(e){e&&(n.isWhitelisted(e)?a.push(e):n.logger.warn("rejecting non-whitelisted language code: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&r(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&r(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&r(this.getLanguagePartFromCode(e))):"string"==typeof e&&r(this.formatLanguageCode(e)),o.forEach(function(e){0>a.indexOf(e)&&r(n.formatLanguageCode(e))}),a}}]),e}(),e3=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he"],nr:[1,2,20,21],fc:22}],e8={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0===e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(+(1!=e&&e%10!=1))},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0===e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:3*(e%100==3||e%100==4))},22:function(e){return Number(1===e?0:2===e?1:(e<0||e>10)&&e%10==0?2:3)}},e4=function(){function e(t){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};ek(this,e),this.languageUtils=t,this.options=o,this.logger=eq.create("pluralResolver"),this.rules=(n={},e3.forEach(function(e){e.lngs.forEach(function(t){n[t]={numbers:e.nr,plurals:e8[e.fc]}})}),n)}return eN(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=this.getRule(e);return t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){var n=this,o=[],a=this.getRule(e);return a&&a.numbers.forEach(function(a){var r=n.getSuffix(e,a);o.push("".concat(t).concat(r))}),o}},{key:"getSuffix",value:function(e,t){var n=this,o=this.getRule(e);if(o){var a=o.noAbs?o.plurals(t):o.plurals(Math.abs(t)),r=o.numbers[a];this.options.simplifyPluralSuffix&&2===o.numbers.length&&1===o.numbers[0]&&(2===r?r="plural":1===r&&(r=""));var i=function(){return n.options.prepend&&r.toString()?n.options.prepend+r.toString():r.toString()};return"v1"===this.options.compatibilityJSON?1===r?"":"number"==typeof r?"_plural_".concat(r.toString()):i():"v2"===this.options.compatibilityJSON?i():this.options.simplifyPluralSuffix&&2===o.numbers.length&&1===o.numbers[0]?i():this.options.prepend&&a.toString()?this.options.prepend+a.toString():a.toString()}return this.logger.warn("no plural rule found for: ".concat(e)),""}}]),e}(),e5=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ek(this,e),this.logger=eq.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return eN(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:eZ,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?eJ(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?eJ(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?eJ(t.nestingPrefix):t.nestingPrefixEscaped||eJ("$t("),this.nestingSuffix=t.nestingSuffix?eJ(t.nestingSuffix):t.nestingSuffixEscaped||eJ(")"),this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=RegExp(t,"g");var n="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=RegExp(n,"g")}},{key:"interpolate",value:function(e,t,n,o){var a,r,i,s=this,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(e){return e.replace(/\$/g,"$$$$")}var c=function(e){if(0>e.indexOf(s.formatSeparator))return eK(t,l,e);var o=e.split(s.formatSeparator),a=o.shift().trim(),r=o.join(s.formatSeparator).trim();return s.format(eK(t,l,a),r,n)};this.resetRegExp();var p=o&&o.missingInterpolationHandler||this.options.missingInterpolationHandler;for(i=0;a=this.regexpUnescape.exec(e);){if(void 0===(r=c(a[1].trim())))if("function"==typeof p){var d=p(e,a,o);r="string"==typeof d?d:""}else this.logger.warn("missed to pass in variable ".concat(a[1]," for interpolating ").concat(e)),r="";else"string"==typeof r||this.useRawValueToEscape||(r=eG(r));if(e=e.replace(a[0],u(r)),this.regexpUnescape.lastIndex=0,++i>=this.maxReplaces)break}for(i=0;a=this.regexp.exec(e);){if(void 0===(r=c(a[1].trim())))if("function"==typeof p){var f=p(e,a,o);r="string"==typeof f?f:""}else this.logger.warn("missed to pass in variable ".concat(a[1]," for interpolating ").concat(e)),r="";else"string"==typeof r||this.useRawValueToEscape||(r=eG(r));if(r=u(this.escapeValue?this.escape(r):r),e=e.replace(a[0],r),this.regexp.lastIndex=0,++i>=this.maxReplaces)break}return e}},{key:"nest",value:function(e,t){var n,o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=eC({},a);function i(e,t){if(0>e.indexOf(","))return e;var n=e.split(",");e=n.shift();var o=n.join(",");o=(o=this.interpolate(o,r)).replace(/'/g,'"');try{r=JSON.parse(o),t&&(r=eC({},t,r))}catch(t){this.logger.error("failed parsing options string in nesting for key ".concat(e),t)}return delete r.defaultValue,e}for(r.applyPostProcessor=!1,delete r.defaultValue;n=this.nestingRegexp.exec(e);){if((o=t(i.call(this,n[1].trim(),r),r))&&n[0]===e&&"string"!=typeof o)return o;"string"!=typeof o&&(o=eG(o)),o||(this.logger.warn("missed to resolve ".concat(n[1]," for nesting ").concat(e)),o=""),e=e.replace(n[0],o),this.regexp.lastIndex=0}return e}}]),e}(),e9=function(e){function t(e,n,o){var a,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return ek(this,t),a=ej(this,eD(t).call(this)),eW.call(eP(a)),a.backend=e,a.store=n,a.services=o,a.languageUtils=o.languageUtils,a.options=r,a.logger=eq.create("backendConnector"),a.state={},a.queue=[],a.backend&&a.backend.init&&a.backend.init(o,r.backend,r),a}return eM(t,e),eN(t,[{key:"queueLoad",value:function(e,t,n,o){var a=this,r=[],i=[],s=[],l=[];return e.forEach(function(e){var o=!0;t.forEach(function(t){var s="".concat(e,"|").concat(t);!n.reload&&a.store.hasResourceBundle(e,t)?a.state[s]=2:a.state[s]<0||(1===a.state[s]?0>i.indexOf(s)&&i.push(s):(a.state[s]=1,o=!1,0>i.indexOf(s)&&i.push(s),0>r.indexOf(s)&&r.push(s),0>l.indexOf(t)&&l.push(t)))}),o||s.push(e)}),(r.length||i.length)&&this.queue.push({pending:i,loaded:{},errors:[],callback:o}),{toLoad:r,pending:i,toLoadLanguages:s,toLoadNamespaces:l}}},{key:"loaded",value:function(e,t,n){var o=eU(e.split("|"),2),a=o[0],r=o[1];t&&this.emit("failedLoading",a,r,t),n&&this.store.addResourceBundle(a,r,n),this.state[e]=t?-1:2;var i={};this.queue.forEach(function(n){o=n.loaded,(l=(s=eH(o,[a],Object)).obj)[u=s.k]=l[u]||[],l[u].push(r);for(var o,s,l,u,c=n.pending,p=c.indexOf(e);-1!==p;)c.splice(p,1),p=c.indexOf(e);t&&n.errors.push(t),0!==n.pending.length||n.done||(Object.keys(n.loaded).forEach(function(e){i[e]||(i[e]=[]),n.loaded[e].length&&n.loaded[e].forEach(function(t){0>i[e].indexOf(t)&&i[e].push(t)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit("loaded",i),this.queue=this.queue.filter(function(e){return!e.done})}},{key:"read",value:function(e,t,n){var o=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:250,i=arguments.length>5?arguments[5]:void 0;return e.length?this.backend[n](e,t,function(s,l){s&&l&&a<5?setTimeout(function(){o.read.call(o,e,t,n,a+1,2*r,i)},r):i(s,l)}):i(null,{})}},{key:"prepareLoading",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var r=this.queueLoad(e,t,o,a);if(!r.toLoad.length)return r.pending.length||a(),null;r.toLoad.forEach(function(e){n.loadOne(e)})}},{key:"load",value:function(e,t,n){this.prepareLoading(e,t,{},n)}},{key:"reload",value:function(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}},{key:"loadOne",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=eU(e.split("|"),2),a=o[0],r=o[1];this.read(a,r,"read",null,null,function(o,i){o&&t.logger.warn("".concat(n,"loading namespace ").concat(r," for language ").concat(a," failed"),o),!o&&i&&t.logger.log("".concat(n,"loaded namespace ").concat(r," for language ").concat(a),i),t.loaded(e,o,i)})}},{key:"saveMissing",value:function(e,t,n,o,a){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)?this.logger.warn('did not save key "'.concat(n,'" for namespace "').concat(t,'" as the namespace was not yet loaded'),"This means something IS WRONG in your application setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):(this.backend&&this.backend.create&&this.backend.create(e,t,n,o,null,eC({},r,{isUpdate:a})),e&&e[0]&&this.store.addResource(e[0],t,n,o))}}]),t}(eW);function e6(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&0>e.whitelist.indexOf("cimode")&&(e.whitelist=e.whitelist.concat(["cimode"])),e}function e7(){}var te=new(function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;if(ek(this,t),e=ej(this,eD(t).call(this)),eW.call(eP(e)),e.options=e6(n),e.services={},e.logger=eq,e.modules={external:[]},o&&!e.isInitialized&&!n.isClone){if(!e.options.initImmediate)return e.init(n,o),ej(e,eP(e));setTimeout(function(){e.init(n,o)},0)}return e}return eM(t,e),eN(t,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;function o(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(n=t,t={}),this.options=eC({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===eI(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===eI(e[2])||"object"===eI(e[3])){var n=e[3]||e[2];Object.keys(n).forEach(function(e){t[e]=n[e]})}return t},interpolation:{escapeValue:!0,format:function(e,t,n){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",maxReplaces:1e3}},this.options,e6(t)),this.format=this.options.interpolation.format,n||(n=e7),!this.options.isClone){this.modules.logger?eq.init(o(this.modules.logger),this.options):eq.init(null,this.options);var a=new e2(this.options);this.store=new eX(this.options.resources,this.options);var r=this.services;r.logger=eq,r.resourceStore=this.store,r.languageUtils=a,r.pluralResolver=new e4(a,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),r.interpolator=new e5(this.options),r.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},r.backendConnector=new e9(o(this.modules.backend),r.resourceStore,r,this.options),r.backendConnector.on("*",function(t){for(var n=arguments.length,o=Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];e.emit.apply(e,[t].concat(o))}),this.modules.languageDetector&&(r.languageDetector=o(this.modules.languageDetector),r.languageDetector.init(r,this.options.detection,this.options)),this.modules.i18nFormat&&(r.i18nFormat=o(this.modules.i18nFormat),r.i18nFormat.init&&r.i18nFormat.init(this)),this.translator=new e0(this.services,this.options),this.translator.on("*",function(t){for(var n=arguments.length,o=Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];e.emit.apply(e,[t].concat(o))}),this.modules.external.forEach(function(t){t.init&&t.init(e)})}["getResource","addResource","addResources","addResourceBundle","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(function(t){e[t]=function(){var n;return(n=e.store)[t].apply(n,arguments)}});var i=e_(),s=function(){e.changeLanguage(e.options.lng,function(t,o){e.isInitialized=!0,e.logger.log("initialized",e.options),e.emit("initialized",e.options),i.resolve(o),n(t,o)})};return this.options.resources||!this.options.initImmediate?s():setTimeout(s,0),i}},{key:"loadResources",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e7;if(!this.options.resources||this.options.partialBundledLanguages){if(this.language&&"cimode"===this.language.toLowerCase())return t();var n=[],o=function(t){t&&e.services.languageUtils.toResolveHierarchy(t).forEach(function(e){0>n.indexOf(e)&&n.push(e)})};this.language?o(this.language):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(function(e){return o(e)}),this.options.preload&&this.options.preload.forEach(function(e){return o(e)}),this.services.backendConnector.load(n,this.options.ns,t)}else t(null)}},{key:"reloadResources",value:function(e,t,n){var o=e_();return e||(e=this.languages),t||(t=this.options.ns),n||(n=e7),this.services.backendConnector.reload(e,t,function(e){o.resolve(),n(e)}),o}},{key:"use",value:function(e){return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&eQ.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"changeLanguage",value:function(e,t){var n=this,o=e_();this.emit("languageChanging",e);var a=function(e,a){n.translator.changeLanguage(a),a&&(n.emit("languageChanged",a),n.logger.log("languageChanged",a)),o.resolve(function(){return n.t.apply(n,arguments)}),t&&t(e,function(){return n.t.apply(n,arguments)})},r=function(e){e&&(n.language=e,n.languages=n.services.languageUtils.toResolveHierarchy(e),n.translator.language||n.translator.changeLanguage(e),n.services.languageDetector&&n.services.languageDetector.cacheUserLanguage(e)),n.loadResources(function(t){a(t,e)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(r):r(e):r(this.services.languageDetector.detect()),o}},{key:"getFixedT",value:function(e,t){var n=this,o=function e(t,o){var a;if("object"!==eI(o)){for(var r=arguments.length,i=Array(r>2?r-2:0),s=2;s<r;s++)i[s-2]=arguments[s];a=n.options.overloadTranslationOptionHandler([t,o].concat(i))}else a=eC({},o);return a.lng=a.lng||e.lng,a.lngs=a.lngs||e.lngs,a.ns=a.ns||e.ns,n.t(t,a)};return"string"==typeof e?o.lng=e:o.lngs=e,o.ns=t,o}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var t=this;if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var n=this.languages[0],o=!!this.options&&this.options.fallbackLng,a=this.languages[this.languages.length-1];if("cimode"===n.toLowerCase())return!0;var r=function(e,n){var o=t.services.backendConnector.state["".concat(e,"|").concat(n)];return -1===o||2===o};return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||r(n,e)&&(!o||r(a,e)))}},{key:"loadNamespaces",value:function(e,t){var n=this,o=e_();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach(function(e){0>n.options.ns.indexOf(e)&&n.options.ns.push(e)}),this.loadResources(function(e){o.resolve(),t&&t(e)}),o):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var n=e_();"string"==typeof e&&(e=[e]);var o=this.options.preload||[],a=e.filter(function(e){return 0>o.indexOf(e)});return a.length?(this.options.preload=o.concat(a),this.loadResources(function(e){n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){return(e||(e=this.languages&&this.languages.length>0?this.languages[0]:this.language),e)?["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr":"rtl"}},{key:"createInstance",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new t(e,n)}},{key:"cloneInstance",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e7,a=eC({},this.options,n,{isClone:!0}),r=new t(a);return["store","services","language"].forEach(function(t){r[t]=e[t]}),r.translator=new e0(r.services,r.options),r.translator.on("*",function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];r.emit.apply(r,[e].concat(n))}),r.init(a,o),r.translator.options=r.options,r}}]),t}(eW));let tt={CT:"ctToolGroup",PT:"ptToolGroup",Fusion:"fusionToolGroup",MIP:"mipToolGroup",default:"default"},{TOOLBAR_SECTIONS:tn}=w.ToolbarService,to={commandName:"setToolActiveToolbar",commandOptions:{toolGroupIds:[tt.CT,tt.PT,tt.Fusion]}},ta={"tmtv.toolbarButtons":[{id:"MeasurementTools",uiType:"ohif.toolButtonList",props:{buttonSection:!0}},{id:"SegmentationTools",uiType:"ohif.toolBoxButton",props:{buttonSection:!0}},{id:"BrushTools",uiType:"ohif.toolBoxButtonGroup",props:{buttonSection:!0}},{id:"AdvancedRenderingControls",uiType:"ohif.advancedRenderingControls",props:{buttonSection:!0}},{id:"modalityLoadBadge",uiType:"ohif.modalityLoadBadge",props:{icon:"Status",label:te.t("Buttons:Status"),tooltip:te.t("Buttons:Status"),evaluate:{name:"evaluate.modalityLoadBadge",hideWhenDisabled:!0}}},{id:"Colorbar",uiType:"ohif.colorbar",props:{type:"tool",label:te.t("Buttons:Colorbar")}},{id:"navigationComponent",uiType:"ohif.navigationComponent",props:{icon:"Navigation",label:te.t("Buttons:Navigation"),tooltip:te.t("Buttons:Navigate between segments/measurements and manage their visibility"),evaluate:{name:"evaluate.navigationComponent",hideWhenDisabled:!0}}},{id:"windowLevelMenuEmbedded",uiType:"ohif.windowLevelMenuEmbedded",props:{icon:"WindowLevel",label:te.t("Buttons:Window Level"),tooltip:te.t("Buttons:Adjust window/level presets and customize image contrast settings"),evaluate:{name:"evaluate.windowLevelMenuEmbedded",hideWhenDisabled:!0}}},{id:"trackingStatus",uiType:"ohif.trackingStatus",props:{icon:"TrackingStatus",label:te.t("Buttons:Tracking Status"),tooltip:te.t("Buttons:View and manage tracking status of measurements and annotations"),evaluate:{name:"evaluate.trackingStatus",hideWhenDisabled:!0}}},{id:"Length",uiType:"ohif.toolButton",props:{icon:"tool-length",label:te.t("Buttons:Length"),tooltip:te.t("Buttons:Length Tool"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"Bidirectional",uiType:"ohif.toolButton",props:{icon:"tool-bidirectional",label:te.t("Buttons:Bidirectional"),tooltip:te.t("Buttons:Bidirectional Tool"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"ArrowAnnotate",uiType:"ohif.toolButton",props:{icon:"tool-annotate",label:te.t("Buttons:Arrow Annotate"),tooltip:te.t("Buttons:Arrow Annotate Tool"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"EllipticalROI",uiType:"ohif.toolButton",props:{icon:"tool-ellipse",label:te.t("Buttons:Ellipse"),tooltip:te.t("Buttons:Ellipse Tool"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"Zoom",uiType:"ohif.toolButton",props:{icon:"tool-zoom",label:te.t("Buttons:Zoom"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"WindowLevel",uiType:"ohif.toolButton",props:{icon:"tool-window-level",label:te.t("Buttons:Window Level"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"Crosshairs",uiType:"ohif.toolButton",props:{icon:"tool-crosshair",label:te.t("Buttons:Crosshairs"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"Pan",uiType:"ohif.toolButton",props:{icon:"tool-move",label:te.t("Buttons:Pan"),commands:to,evaluate:"evaluate.cornerstoneTool"}},{id:"RectangleROIStartEndThreshold",uiType:"ohif.toolBoxButton",props:{icon:"tool-create-threshold",label:te.t("Buttons:Rectangle ROI Threshold"),commands:to,evaluate:["evaluate.cornerstone.segmentation",{name:"evaluate.cornerstoneTool",disabledText:te.t("Buttons:Select the PT Axial to enable this tool")}],options:"tmtv.RectangleROIThresholdOptions"}},{id:"Brush",uiType:"ohif.toolButton",props:{icon:"icon-tool-brush",label:te.t("Buttons:Brush"),evaluate:[{name:"evaluate.cornerstone.segmentation",toolNames:["CircularBrush","SphereBrush"],disabledText:te.t("Buttons:Create new segmentation to enable this tool.")},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",radiusOptionId:"brush-radius"}],options:[{name:te.t("Buttons:Radius (mm)"),id:"brush-radius",type:"range",explicitRunOnly:!0,min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularBrush","SphereBrush"]}}},{name:te.t("Buttons:Shape"),type:"radio",id:"brush-mode",value:"CircularBrush",values:[{value:"CircularBrush",label:te.t("Buttons:Circle")},{value:"SphereBrush",label:te.t("Buttons:Sphere")}],commands:"setToolActiveToolbar"}]}},{id:"Eraser",uiType:"ohif.toolButton",props:{icon:"icon-tool-eraser",label:te.t("Buttons:Eraser"),evaluate:[{name:"evaluate.cornerstone.segmentation",toolNames:["CircularEraser","SphereEraser"]},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",radiusOptionId:"eraser-radius"}],options:[{name:te.t("Buttons:Radius (mm)"),id:"eraser-radius",type:"range",explicitRunOnly:!0,min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularEraser","SphereEraser"]}}},{name:te.t("Buttons:Shape"),type:"radio",id:"eraser-mode",value:"CircularEraser",values:[{value:"CircularEraser",label:te.t("Buttons:Circle")},{value:"SphereEraser",label:te.t("Buttons:Sphere")}],commands:"setToolActiveToolbar"}]}},{id:"Threshold",uiType:"ohif.toolButton",props:{icon:"icon-tool-threshold",label:te.t("Buttons:Threshold Tool"),evaluate:[{name:"evaluate.cornerstone.segmentation",toolNames:["ThresholdCircularBrush","ThresholdSphereBrush","ThresholdCircularBrushDynamic"]},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",radiusOptionId:"threshold-radius"}],options:[{name:te.t("Buttons:Radius (mm)"),id:"threshold-radius",type:"range",explicitRunOnly:!0,min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush","ThresholdCircularBrushDynamic"]}}},{name:te.t("Buttons:Threshold"),type:"radio",id:"dynamic-mode",value:"ThresholdRange",values:[{value:"ThresholdDynamic",label:te.t("Buttons:Dynamic")},{value:"ThresholdRange",label:te.t("Buttons:Range")}],commands:({value:e,commandsManager:t})=>{"ThresholdDynamic"===e?t.run("setToolActive",{toolName:"ThresholdCircularBrushDynamic"}):t.run("setToolActive",{toolName:"ThresholdCircularBrush"})}},{name:te.t("Buttons:Shape"),type:"radio",id:"eraser-mode",value:"ThresholdCircularBrush",values:[{value:"ThresholdCircularBrush",label:te.t("Buttons:Circle")},{value:"ThresholdSphereBrush",label:te.t("Buttons:Sphere")}],condition:({options:e})=>"ThresholdRange"===e.find(e=>"dynamic-mode"===e.id).value,commands:"setToolActiveToolbar"},{name:te.t("ROIThresholdConfiguration:ThresholdRange"),type:"double-range",id:"threshold-range",min:0,max:50,step:.5,value:[2.5,50],condition:({options:e})=>"ThresholdRange"===e.find(e=>"dynamic-mode"===e.id).value,commands:{commandName:"setThresholdRange",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}}]}},{id:"dataOverlayMenu",uiType:"ohif.dataOverlayMenu",props:{icon:"ViewportViews",label:te.t("Buttons:Data Overlay"),tooltip:te.t("Buttons:Configure data overlay options and manage foreground/background display sets"),evaluate:"evaluate.dataOverlayMenu"}},{id:"orientationMenu",uiType:"ohif.orientationMenu",props:{icon:"OrientationSwitch",label:te.t("Buttons:Orientation"),tooltip:te.t("Buttons:Change viewport orientation between axial, sagittal, coronal and reformat planes"),evaluate:{name:"evaluate.orientationMenu"}}},{id:"windowLevelMenu",uiType:"ohif.windowLevelMenu",props:{icon:"WindowLevel",label:te.t("Buttons:Window Level"),tooltip:te.t("Buttons:Adjust window/level presets and customize image contrast settings"),evaluate:"evaluate.windowLevelMenu"}},{id:"voiManualControlMenu",uiType:"ohif.voiManualControlMenu",props:{icon:"WindowLevelAdvanced",label:te.t("Buttons:Advanced Window Level"),tooltip:te.t("Buttons:Advanced window/level settings with manual controls and presets"),evaluate:"evaluate.voiManualControlMenu"}},{id:"thresholdMenu",uiType:"ohif.thresholdMenu",props:{icon:"Threshold",label:te.t("Buttons:Threshold"),tooltip:te.t("Buttons:Image threshold settings"),evaluate:{name:"evaluate.thresholdMenu",hideWhenDisabled:!0}}},{id:"opacityMenu",uiType:"ohif.opacityMenu",props:{icon:"Opacity",label:te.t("Buttons:Opacity"),tooltip:te.t("Buttons:Image opacity settings"),evaluate:{name:"evaluate.opacityMenu",hideWhenDisabled:!0}}}],"tmtv.toolbarSections":{[tn.primary]:["MeasurementTools","Zoom","Pan","WindowLevel","Crosshairs"],[tn.viewportActionMenu.topLeft]:["orientationMenu","dataOverlayMenu"],[tn.viewportActionMenu.bottomMiddle]:["AdvancedRenderingControls"],AdvancedRenderingControls:["windowLevelMenuEmbedded","voiManualControlMenu","Colorbar","opacityMenu","thresholdMenu"],[tn.viewportActionMenu.topRight]:["modalityLoadBadge","trackingStatus","navigationComponent"],[tn.viewportActionMenu.bottomLeft]:["windowLevelMenu"],MeasurementTools:["Length","Bidirectional","ArrowAnnotate","EllipticalROI"],ROIThresholdToolbox:["SegmentationTools"],SegmentationTools:["RectangleROIStartEndThreshold","BrushTools"],BrushTools:["Brush","Eraser","Threshold"]}},tr={id:e,preRegistration({servicesManager:e,commandsManager:t,extensionManager:o,configuration:a={}}){!function({servicesManager:e}){let{measurementService:t,displaySetService:o,cornerstoneViewportService:a}=e.services;(0,eo.addTool)(eo.RectangleROIStartEndThresholdTool),(0,eo.addTool)(eo.CircleROIStartEndThresholdTool);let{RectangleROIStartEndThreshold:r,CircleROIStartEndThreshold:i}={RectangleROIStartEndThreshold:{toAnnotation:er,toMeasurement:e=>((e,t,o)=>{let a,{annotation:r,viewportId:i}=e,{metadata:s,data:l,annotationUID:u}=r;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;let{toolName:c,referencedImageId:p,FrameOfReferenceUID:d}=s;if(!ea.includes(c))throw Error("Tool not supported");let{SOPInstanceUID:f,SeriesInstanceUID:h,StudyInstanceUID:g}=(0,n.getSOPInstanceAttributes)(p,o,i);return a=f?t.getDisplaySetForSOPInstanceUID(f,h):t.getDisplaySetsForSeries(h),{uid:u,SOPInstanceUID:f,FrameOfReferenceUID:d,metadata:s,referenceSeriesUID:h,referenceStudyUID:g,toolName:s.toolName,displaySetInstanceUID:a.displaySetInstanceUID,label:s.label,data:l.cachedStats,type:"RectangleROIStartEndThreshold"}})(e,o,a),matchingCriteria:[{valueType:t.VALUE_TYPES.ROI_THRESHOLD_MANUAL}]},CircleROIStartEndThreshold:{toAnnotation:ei,toMeasurement:e=>((e,t,o)=>{let a,{annotation:r,viewportId:i}=e,{metadata:s,data:l,annotationUID:u}=r;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;let{toolName:c,referencedImageId:p,FrameOfReferenceUID:d}=s;if(!ea.includes(c))throw Error("Tool not supported");let{SOPInstanceUID:f,SeriesInstanceUID:h,StudyInstanceUID:g}=(0,n.getSOPInstanceAttributes)(p,o,i);a=f?t.getDisplaySetForSOPInstanceUID(f,h):t.getDisplaySetsForSeries(h);let{cachedStats:m}=l;return{uid:u,SOPInstanceUID:f,FrameOfReferenceUID:d,metadata:s,referenceSeriesUID:h,referenceStudyUID:g,toolName:s.toolName,displaySetInstanceUID:a.displaySetInstanceUID,label:s.label,data:l.cachedStats,type:"CircleROIStartEndThreshold"}})(e,o,a),matchingCriteria:[{valueType:t.VALUE_TYPES.ROI_THRESHOLD_MANUAL}]}},s=t.getSource(es,el);t.addMapping(s,"RectangleROIStartEndThreshold",r.matchingCriteria,r.toAnnotation,r.toMeasurement),t.addMapping(s,"CircleROIStartEndThreshold",i.matchingCriteria,i.toAnnotation,i.toMeasurement)}({servicesManager:e,commandsManager:t,extensionManager:o,configuration:a})},getToolbarModule:function(){return[{name:"tmtv.RectangleROIThresholdOptions",defaultComponent:eO}]},getPanelModule:function({commandsManager:e,extensionManager:t,servicesManager:n}){let{toolbarService:o}=n.services;return[{name:"petSUV",iconName:"tab-patient-info",iconLabel:"Patient Info",label:"Patient Info",component:()=>S.createElement(J,null)},{name:"tmtv",iconName:"tab-segmentation",iconLabel:"Segmentation",component:()=>S.createElement(S.Fragment,null,S.createElement(Q.Toolbox,{buttonSectionId:o.sections.roiThresholdToolbox,title:en().t("ROIThresholdConfiguration:Threshold Tools")}),S.createElement(ee,{commandsManager:e,servicesManager:n}))},{name:"tmtvBox",iconName:"tab-segmentation",iconLabel:"Segmentation",label:"Segmentation Toolbox",component:()=>S.createElement(Q.Toolbox,{buttonSectionId:o.sections.roiThresholdToolbox,title:en().t("ROIThresholdConfiguration:Threshold Tools")})},{name:"tmtvExport",iconName:"tab-segmentation",iconLabel:"Segmentation",label:"Segmentation Export",component:()=>S.createElement(X,null)}]},getHangingProtocolModule:function(){return(0,n.isNextViewportsEnabled)()&&[p,d,g].forEach(e=>{let t=e.displaySets?.find(e=>"ptDisplaySet"===e.id),o=t?.options?.colormap;o&&(o.opacity=n.NEXT_FUSION_PT_OPACITY)}),[{name:b.id,protocol:b}]},getCustomizationModule:function(){return[{name:"default",value:{...ta}}]},getCommandsModule:({servicesManager:e,commandsManager:t,extensionManager:o})=>(({servicesManager:e,commandsManager:t,extensionManager:o})=>{let{viewportGridService:a,uiNotificationService:r,displaySetService:i,hangingProtocolService:s,toolGroupService:l,cornerstoneViewportService:u,segmentationService:c}=e.services,{getEnabledElement:p}=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.common").exports;function d(){let{activeViewportId:e}=a.getState(),{element:t}=p(e)||{};return eu.getEnabledElement(t)}function f(e){return e.reduce((e,t)=>{let n=eo.annotation.selection.getAnnotationsSelectedByToolName(t);return e.concat(n)},[])}let h={getMatchingPTDisplaySet:({viewportMatchDetails:e})=>{let t=null;for(let[,n]of e){let{displaySetsInfo:e}=n,o=e.map(({displaySetInstanceUID:e})=>i.getDisplaySetByUID(e));if(o&&0!==o.length&&(t=o.find(e=>"PT"===e.Modality)))break}return t},getPTMetadata:({ptDisplaySet:e})=>{let t=o.getDataSources()[0].getImageIdsForDisplaySet(e)[0],n=eS.get("instance",t);if("PT"===n.Modality)return{SeriesTime:n.SeriesTime,Modality:n.Modality,PatientSex:n.PatientSex,PatientWeight:n.PatientWeight,RadiopharmaceuticalInformationSequence:{RadionuclideTotalDose:n.RadiopharmaceuticalInformationSequence[0].RadionuclideTotalDose,RadionuclideHalfLife:n.RadiopharmaceuticalInformationSequence[0].RadionuclideHalfLife,RadiopharmaceuticalStartTime:n.RadiopharmaceuticalInformationSequence[0].RadiopharmaceuticalStartTime,RadiopharmaceuticalStartDateTime:n.RadiopharmaceuticalInformationSequence[0].RadiopharmaceuticalStartDateTime}}},createNewLabelmapFromPT:async({label:e})=>{let{viewportMatchDetails:t}=s.getMatchDetails(),n=h.getMatchingPTDisplaySet({viewportMatchDetails:t}),o=null;for(let[e,{displaySetsInfo:a}]of t.entries())if(a.some(({displaySetInstanceUID:e})=>e===n.displaySetInstanceUID)){o=e;break}if(!n)return void r.error("No matching PT display set found");let a=c.getSegmentationRepresentations(o),l=i.getDisplaySetByUID(n.displaySetInstanceUID),u=await c.createLabelmapForDisplaySet(l,{label:`Segmentation ${a.length+1}`,segments:{1:{label:`${en().t("Segment")} 1`,active:!0}}});return c.addSegmentationRepresentation(o,{segmentationId:u}),u},thresholdSegmentationByRectangleROITool:({segmentationId:e,config:t,segmentIndex:n})=>{let{representationData:o}=eo.segmentation.state.getSegmentation(e),{displaySetMatchDetails:a}=s.getMatchDetails(),l=a.get("ctDisplaySet"),u=a.get("ptDisplaySet"),c=i.getDisplaySetByUID(l.displaySetInstanceUID),p=i.getDisplaySetByUID(u.displaySetInstanceUID),{volumeId:d}=o[ev.Labelmap],h=eu.cache.getVolume(d),g=f(eT);if(0===g.length)return void r.show({title:"Commands Module",message:"No ROIThreshold Tool is Selected",type:"error"});let{ptLower:m,ptUpper:y,ctLower:v,ctUpper:b}=ec(g,p,t),{imageIds:S}=p,T=eu.cache.getVolumeContainingImageId(S[0]);if(!T)return void r.error("No PT volume found");let{imageIds:x}=c,w=eu.cache.getVolumeContainingImageId(x[0]);if(!w)return void r.error("No CT volume found");let R=T.volume,O=w.volume;return eo.utilities.segmentation.rectangleROIThresholdVolumeByRange(g,h,[{volume:R,lower:m,upper:y},{volume:O,lower:v,upper:b}],{overwrite:!0,segmentIndex:n,segmentationId:e})},calculateTMTV:async({segmentations:e})=>{let t=e.map(e=>e.segmentationId),n=await eo.utilities.segmentation.computeMetabolicStats({segmentationIds:t,segmentIndex:1});return c.setSegmentationGroupStats(t,n),n},exportTMTVReportCSV:async({segmentations:e,tmtv:n,config:o,options:a})=>{let r=t.runCommand("getSegmentationCSVReport",{segmentations:e}),i=0;for(let e in r)i+=r[e].namedStats_lesionGlycolysis.value;let s=[{key:"Total Lesion Glycolysis",value:{tlg:i.toFixed(4)}},{key:"Threshold Configuration",value:{...o}}];void 0!==n&&s.unshift({key:"Total Metabolic Tumor Volume",value:{tmtv:n}}),function(e,t,n={}){let o=e[Object.keys(e)[0]],a=Object.keys(o),r=[a.map(e=>e.toLowerCase().startsWith("namedstats_")?e.substring(11):e).join(",")];Object.values(e).forEach(e=>{let t=[];a.forEach(n=>{t.push(e[n]&&"object"==typeof e[n]?Array.isArray(e[n])?e[n].join(" "):e[n].value&&Array.isArray(e[n].value)?e[n].value.join(" "):e[n].value??e[n]:e[n])}),r.push(t.join(","))}),r.push(""),r.push(""),r.push(""),r.push(`Patient ID,${o.PatientID}`),r.push(`Study Date,${o.StudyDate}`),r.push(""),t.forEach(({key:e,value:t})=>{let n=[];n.push(`${e}`),Object.keys(t).forEach(e=>{n.push(`${e}`),n.push(`${t[e]}`)}),r.push(n.join(","))}),ep(r.join("\n"),{filename:n.filename??`${o.PatientID}_tmtv.csv`})}(r,s,a)},setStartSliceForROIThresholdTool:()=>{let{viewport:e}=d(),t=(0,n.getViewportFocalPoint)(e);if(!t)return;let o=f(eT)[0],a=eo.annotation.state.getAnnotation(o);a.data.startCoordinate=t,a.invalidated=!0,e.render()},setEndSliceForROIThresholdTool:()=>{let{viewport:e}=d(),t=f(eT)[0],o=eo.annotation.state.getAnnotation(t),a=(0,n.getViewportFocalPoint)(e);a&&(o.data.endCoordinate=a,o.invalidated=!0,e.render())},createTMTVRTReport:()=>{let e=eo.annotation.state.getAnnotationManager(),n=[];Object.keys(e.annotations).forEach(t=>{let o=e.annotations[t],a=eT.reduce((e,t)=>[...e,...o[t]??[]],[]);n.push(...a)}),t.runCommand("exportRTReportForAnnotations",{annotations:n})},getSegmentationCSVReport:({segmentations:e})=>{e&&e.length||(e=c.getSegmentations());let t={};for(let n of e){let{label:e,segmentationId:o,representationData:a}=n,r={id:o,label:e};if(!a){t[o]=r;continue}let{cachedStats:i}=n.segments[1]||{};if(i&&Object.entries(i).forEach(([e,t])=>{"object"!=typeof t?r[e]=t:Object.entries(t).forEach(([t,n])=>{r[`${e}_${t}`]=n})}),!n.representationData[ev.Labelmap]){t[o]=r;continue}let s=eo.utilities.segmentation.getReferenceVolumeForSegmentation(o);if(!s||!s.imageIds||!s.imageIds.length){t[o]=r;continue}let l=s.imageIds[0],u=R().classes.MetadataProvider.get("instance",l);if(!u){t[o]=r;continue}t[o]={...r,PatientID:u.PatientID??"000000",PatientName:eb(u.PatientName),StudyInstanceUID:u.StudyInstanceUID,SeriesInstanceUID:u.SeriesInstanceUID,StudyDate:u.StudyDate}}return t},exportRTReportForAnnotations:({annotations:e})=>{ey(e)},setFusionPTColormap:({toolGroupId:e,colormap:n})=>{let o=l.getToolGroup(e);if(!o)return;let{viewportMatchDetails:a}=s.getMatchDetails(),r=h.getMatchingPTDisplaySet({viewportMatchDetails:a});if(!r)return;let i=o.getViewportIds(),c=[];i.forEach(e=>{t.runCommand("setViewportColormap",{viewportId:e,displaySetInstanceUID:r.displaySetInstanceUID,colormap:{name:n}}),c.push(u.getCornerstoneViewport(e))}),c.forEach(e=>{e.render()})}},g={setEndSliceForROIThresholdTool:{commandFn:h.setEndSliceForROIThresholdTool},setStartSliceForROIThresholdTool:{commandFn:h.setStartSliceForROIThresholdTool},getMatchingPTDisplaySet:{commandFn:h.getMatchingPTDisplaySet},getPTMetadata:{commandFn:h.getPTMetadata},createNewLabelmapFromPT:{commandFn:h.createNewLabelmapFromPT},thresholdSegmentationByRectangleROITool:{commandFn:h.thresholdSegmentationByRectangleROITool},calculateTMTV:{commandFn:h.calculateTMTV},exportTMTVReportCSV:{commandFn:h.exportTMTVReportCSV},createTMTVRTReport:{commandFn:h.createTMTVRTReport},getSegmentationCSVReport:{commandFn:h.getSegmentationCSVReport},exportRTReportForAnnotations:{commandFn:h.exportRTReportForAnnotations},setFusionPTColormap:{commandFn:h.setFusionPTColormap}};return{actions:h,definitions:g,defaultContext:"TMTV:CORNERSTONE"}})({servicesManager:e,commandsManager:t,extensionManager:o})}})(),h})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@ohif/extension-cornerstone"),require("@ohif/ui-next"),require("@ohif/core/src/utils"),require("@cornerstonejs/core"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@ohif/core/src"),require("@ohif/extension-default")):"function"==typeof define&&define.amd?define(["@ohif/core","@cornerstonejs/adapters","@ohif/extension-cornerstone","@ohif/ui-next","@ohif/core/src/utils","@cornerstonejs/core","dcmjs","@ohif/i18n","@cornerstonejs/tools","@ohif/core/src","@ohif/extension-default"],t):"object"==typeof exports?exports["ohif-extension-tmtv"]=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@ohif/extension-cornerstone"),require("@ohif/ui-next"),require("@ohif/core/src/utils"),require("@cornerstonejs/core"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@ohif/core/src"),require("@ohif/extension-default")):e["ohif-extension-tmtv"]=t(e["@ohif/core"],e["@cornerstonejs/adapters"],e["@ohif/extension-cornerstone"],e["@ohif/ui-next"],e["@ohif/core/src/utils"],e["@cornerstonejs/core"],e.dcmjs,e["@ohif/i18n"],e["@cornerstonejs/tools"],e["@ohif/core/src"],e["@ohif/extension-default"])}(globalThis,(e,t,n,o,a,r,i,s,l,u,c)=>(()=>{var p={76(e,t,n){"use strict";var o=n(326).__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;t.c=function(e){return o.H.useMemoCache(e)}},60(e,t){"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,o){var a=null;if(void 0!==o&&(a=""+o),void 0!==t.key&&(a=""+t.key),"key"in t)for(var r in o={},t)"key"!==r&&(o[r]=t[r]);else o=t;return{$$typeof:n,type:e,key:a,ref:void 0!==(t=o.ref)?t:null,props:o}}t.Fragment=Symbol.for("react.fragment"),t.jsx=o,t.jsxs=o},391(e,t){"use strict";var n=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),a=(Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.consumer")),r=Symbol.for("react.context"),i=(Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.memo"),Symbol.for("react.lazy")),s=(Symbol.for("react.activity"),Symbol.iterator),l={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},u=Object.assign,c={};function p(e,t,n){this.props=e,this.context=t,this.refs=c,this.updater=n||l}function d(){}function h(e,t,n){this.props=e,this.context=t,this.refs=c,this.updater=n||l}p.prototype.isReactComponent={},p.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},p.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},d.prototype=p.prototype;var g=h.prototype=new d;g.constructor=h,u(g,p.prototype),g.isPureReactComponent=!0;var f={H:null,A:null,T:null,S:null};Object.prototype.hasOwnProperty;"function"==typeof reportError&&reportError,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=f,t.createContext=function(e){return(e={$$typeof:r,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:a,_context:e},e},t.useContext=function(e){return f.H.useContext(e)},t.useEffect=function(e,t){return f.H.useEffect(e,t)},t.useReducer=function(e,t,n){return f.H.useReducer(e,t,n)},t.useRef=function(e){return f.H.useRef(e)},t.useState=function(e){return f.H.useState(e)}},184(e,t,n){"use strict";e.exports=n(76)},326(e,t,n){"use strict";e.exports=n(391)},870(e,t,n){"use strict";e.exports=n(60)},741(e){e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},142(e){"use strict";e.exports=t},557(e){"use strict";e.exports=r},713(e){"use strict";e.exports=l},2(t){"use strict";t.exports=e},459(e){"use strict";e.exports=u},141(e){"use strict";e.exports=a},669(e){"use strict";e.exports=n},438(e){"use strict";e.exports=c},545(e){"use strict";e.exports=s},55(e){"use strict";e.exports=o},111(e){"use strict";e.exports=i}},d={};function h(e){var t=d[e];if(void 0!==t)return t.exports;var n=d[e]={exports:{}};return p[e](n,n.exports,h),n.exports}h.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return h.d(t,{a:t}),t},h.d=(e,t)=>{for(var n in t)h.o(t,n)&&!h.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},h.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),h.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var g={};return(()=>{"use strict";h.r(g),h.d(g,{default:()=>ti,toolGroupIds:()=>tn});let e=JSON.parse('{"UU":"@ohif/extension-tmtv"}').UU;var t,n=h(669);let o=e=>({type:"cameraPosition",id:e,source:!0,target:!0}),a={type:"hydrateseg",id:"sameFORId",source:!0,target:!0,options:{matchingRules:["sameFOR"]}},r={viewportOptions:{viewportId:"ctAXIAL",viewportType:"volume",orientation:"axial",toolGroupId:"ctToolGroup",initialImageOptions:{preset:"first"},syncGroups:[o("axialSync"),{type:"voi",id:"ctWLSync",source:!0,target:!0,options:{syncColormap:!0}},a]},displaySets:[{id:"ctDisplaySet"}]},i={viewportOptions:{viewportId:"ctSAGITTAL",viewportType:"volume",orientation:"sagittal",toolGroupId:"ctToolGroup",syncGroups:[o("sagittalSync"),{type:"voi",id:"ctWLSync",source:!0,target:!0,options:{syncColormap:!0}},a]},displaySets:[{id:"ctDisplaySet"}]},s={viewportOptions:{viewportId:"ctCORONAL",viewportType:"volume",orientation:"coronal",toolGroupId:"ctToolGroup",syncGroups:[o("coronalSync"),{type:"voi",id:"ctWLSync",source:!0,target:!0,options:{syncColormap:!0}},a]},displaySets:[{id:"ctDisplaySet"}]},l={viewportOptions:{viewportId:"ptAXIAL",viewportType:"volume",background:[1,1,1],orientation:"axial",toolGroupId:"ptToolGroup",initialImageOptions:{preset:"first"},syncGroups:[o("axialSync"),{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{options:{voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},u={viewportOptions:{viewportId:"ptSAGITTAL",viewportType:"volume",orientation:"sagittal",background:[1,1,1],toolGroupId:"ptToolGroup",syncGroups:[o("sagittalSync"),{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{options:{voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},c={viewportOptions:{viewportId:"ptCORONAL",viewportType:"volume",orientation:"coronal",background:[1,1,1],toolGroupId:"ptToolGroup",syncGroups:[o("coronalSync"),{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{options:{voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},p={viewportOptions:{viewportId:"fusionAXIAL",viewportType:"volume",orientation:"axial",toolGroupId:"fusionToolGroup",initialImageOptions:{preset:"first"},syncGroups:[o("axialSync"),{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{id:"ctDisplaySet"},{id:"ptDisplaySet",options:{colormap:{name:"hsv",opacity:[{value:0,opacity:0},{value:.1,opacity:.8},{value:1,opacity:.9}]},voi:{custom:"getPTVOIRange"}}}]},d={viewportOptions:{viewportId:"fusionSAGITTAL",viewportType:"volume",orientation:"sagittal",toolGroupId:"fusionToolGroup",syncGroups:[o("sagittalSync"),{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{id:"ctDisplaySet"},{id:"ptDisplaySet",options:{colormap:{name:"hsv",opacity:[{value:0,opacity:0},{value:.1,opacity:.8},{value:1,opacity:.9}]},voi:{custom:"getPTVOIRange"}}}]},f={viewportOptions:{viewportId:"fusionCoronal",viewportType:"volume",orientation:"coronal",toolGroupId:"fusionToolGroup",syncGroups:[o("coronalSync"),{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncColormap:!1,syncInvertState:!1}},a]},displaySets:[{id:"ctDisplaySet"},{id:"ptDisplaySet",options:{colormap:{name:"hsv",opacity:[{value:0,opacity:0},{value:.1,opacity:.8},{value:1,opacity:.9}]},voi:{custom:"getPTVOIRange"}}}]},m={viewportOptions:{viewportId:"mipSagittal",viewportType:"volume",orientation:"sagittal",background:[1,1,1],toolGroupId:"mipToolGroup",syncGroups:[{type:"voi",id:"ptWLSync",source:!0,target:!0,options:{syncColormap:!0}},{type:"voi",id:"ptFusionWLSync",source:!0,target:!1,options:{syncColormap:!1,syncInvertState:!1}},a],customViewportProps:{hideOverlays:!0}},displaySets:[{options:{blendMode:"MIP",slabThickness:"fullVolume",voi:{custom:"getPTVOIRange"},voiInverted:!0},id:"ptDisplaySet"}]},v={name:"default",id:"default",viewportStructure:{layoutType:"grid",properties:{rows:3,columns:4,layoutOptions:[{x:0,y:0,width:1/4,height:1/3},{x:1/4,y:0,width:1/4,height:1/3},{x:.5,y:0,width:1/4,height:1/3},{x:0,y:1/3,width:1/4,height:1/3},{x:1/4,y:1/3,width:1/4,height:1/3},{x:.5,y:1/3,width:1/4,height:1/3},{x:0,y:2/3,width:1/4,height:1/3},{x:1/4,y:2/3,width:1/4,height:1/3},{x:.5,y:2/3,width:1/4,height:1/3},{x:3/4,y:0,width:1/4,height:1}]}},viewports:[r,i,s,l,u,c,p,d,f,m],createdDate:"2021-02-23T18:32:42.850Z"},y={name:"2x4-layout",id:"2x4-layout",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:4,layoutOptions:[{x:0,y:0,width:1/4,height:.5},{x:1/4,y:0,width:1/4,height:.5},{x:.5,y:0,width:1/4,height:.5},{x:3/4,y:0,width:1/4,height:1},{x:0,y:.5,width:1/4,height:.5},{x:1/4,y:.5,width:1/4,height:.5},{x:.5,y:.5,width:1/4,height:.5}]}},viewports:[c,u,l,m,f,d,p]},b={id:"@ohif/extension-tmtv.hangingProtocolModule.ptCT",locked:!0,name:"Default",createdDate:"2021-02-23T19:22:08.894Z",modifiedDate:"2022-10-04T19:22:08.894Z",availableTo:{},editableBy:{},imageLoadStrategy:"interleaveTopToBottom",protocolMatchingRules:[{attribute:"ModalitiesInStudy",constraint:{contains:["CT","PT"]}},{attribute:"StudyDescription",constraint:{contains:"PETCT"}},{attribute:"StudyDescription",constraint:{contains:"PET/CT"}}],displaySetSelectors:{ctDisplaySet:{seriesMatchingRules:[{attribute:"Modality",constraint:{equals:{value:"CT"}},required:!0},{attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0},{attribute:"SeriesDescription",constraint:{contains:"CT"}},{attribute:"SeriesDescription",constraint:{contains:"CT WB"}}]},ptDisplaySet:{seriesMatchingRules:[{attribute:"Modality",constraint:{equals:"PT"},required:!0},{attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0},{attribute:"SeriesDescription",constraint:{contains:"Corrected"}},{weight:2,attribute:"SeriesDescription",constraint:{doesNotContain:{value:"Uncorrected"}}}]}},stages:[v,{name:"Fusion 2x2",id:"Fusion-2x2",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:2}},viewports:[r,p,l,m]},{name:"2x3-layout",id:"2x3-layout",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:3}},viewports:[r,i,s,l,u,c]},y],numberOfPriorsReferenced:-1};var S=h(326),x=h(184),T=h(2),w=h.n(T);function R(e){return(R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function O(e){var t=function(e,t){if("object"!=R(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=R(o))return o;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==R(t)?t:t+""}function I(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k(){if(console&&console.warn){for(var e,t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];"string"==typeof n[0]&&(n[0]="react-i18next:: ".concat(n[0])),(e=console).warn.apply(e,n)}}h(741),Object.create(null);var C={};function L(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&C[t[0]]||("string"==typeof t[0]&&(C[t[0]]=new Date),k.apply(void 0,t))}var j=function(e,t){return function(){e.isInitialized?t():e.on("initialized",function n(){setTimeout(function(){e.off("initialized",n)},0),t()})}};function N(e,t,n){e.loadNamespaces(t,j(e,n))}function E(e,t,n,o){"string"==typeof n&&(n=[n]),n.forEach(function(t){0>e.options.ns.indexOf(t)&&e.options.ns.push(t)}),e.loadLanguages(t,j(e,o))}var P=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,D={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},B=function(e){return D[e]},M={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(P,B)}};function A(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}function F(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(o.key),o)}}function U(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var V=(0,S.createContext)(),_=function(){function e(){A(this,e),this.usedNamespaces={}}return U(e,[{key:"addUsedNamespaces",value:function(e){var t=this;e.forEach(function(e){t.usedNamespaces[e]||(t.usedNamespaces[e]=!0)})}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}]),e}();function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach(function(t){I(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var H=function(e,t){var n=(0,S.useRef)();return(0,S.useEffect)(function(){n.current=t?n.current:e},[e,t]),n.current};function z(e){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=o.i18n,r=(0,S.useContext)(V)||{},i=r.i18n,s=r.defaultNS,l=a||i||t;if(l&&!l.reportNamespaces&&(l.reportNamespaces=new _),!l){L("You will need to pass in an i18next instance by using initReactI18next");var u=function(e,t){return"string"==typeof t?t:t&&"object"===R(t)&&"string"==typeof t.defaultValue?t.defaultValue:Array.isArray(e)?e[e.length-1]:e},c=[u,{},!1];return c.t=u,c.i18n={},c.ready=!1,c}l.options.react&&void 0!==l.options.react.wait&&L("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=G(G(G({},M),l.options.react),o),d=p.useSuspense,h=p.keyPrefix,g=e||s||l.options&&l.options.defaultNS;g="string"==typeof g?[g]:g||["translation"],l.reportNamespaces.addUsedNamespaces&&l.reportNamespaces.addUsedNamespaces(g);var f=(l.isInitialized||l.initializedStoreOnce)&&g.every(function(e){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.languages&&t.languages.length?void 0===t.options.ignoreJSONStructure?function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=t.languages[0],a=!!t.options&&t.options.fallbackLng,r=t.languages[t.languages.length-1];if("cimode"===o.toLowerCase())return!0;var i=function(e,n){var o=t.services.backendConnector.state["".concat(e,"|").concat(n)];return -1===o||2===o};return(!(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1)||!t.services.backendConnector.backend||!t.isLanguageChangingTo||!!i(t.isLanguageChangingTo,e))&&!!(t.hasResourceBundle(o,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||i(o,e)&&(!a||i(r,e)))}(e,t,n):t.hasLoadedNamespace(e,{lng:n.lng,precheck:function(t,o){if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!o(t.isLanguageChangingTo,e))return!1}}):(L("i18n.languages were undefined or empty",t.languages),!0)}(e,l,p)});function m(){return l.getFixedT(o.lng||null,"fallback"===p.nsMode?g:g[0],h)}var v=function(e){if(Array.isArray(e))return e}(n=(0,S.useState)(m))||function(e){var t=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,a,r,i=[],s=!0,l=!1;try{a=(t=t.call(e)).next,!1;for(;!(s=(n=a.call(t)).done)&&(i.push(n.value),2!==i.length);s=!0);}catch(e){l=!0,o=e}finally{try{if(!s&&null!=t.return&&(r=t.return(),Object(r)!==r))return}finally{if(l)throw o}}return i}}(n)||function(e){if(e){if("string"==typeof e)return q(e,2);var t=({}).toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?q(e,2):void 0}}(n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),y=v[0],b=v[1],x=g.join();o.lng&&(x="".concat(o.lng).concat(x));var T=H(x),w=(0,S.useRef)(!0);(0,S.useEffect)(function(){var e=p.bindI18n,t=p.bindI18nStore;function n(){w.current&&b(m)}return w.current=!0,f||d||(o.lng?E(l,o.lng,g,function(){w.current&&b(m)}):N(l,g,function(){w.current&&b(m)})),f&&T&&T!==x&&w.current&&b(m),e&&l&&l.on(e,n),t&&l&&l.store.on(t,n),function(){w.current=!1,e&&l&&e.split(" ").forEach(function(e){return l.off(e,n)}),t&&l&&t.split(" ").forEach(function(e){return l.store.off(e,n)})}},[l,x]);var O=(0,S.useRef)(!0);(0,S.useEffect)(function(){w.current&&!O.current&&b(m),O.current=!1},[l,h]);var I=[y,l,f];if(I.t=y,I.i18n=l,I.ready=f,f||!f&&!d)return I;throw new Promise(function(e){o.lng?E(l,o.lng,g,function(){return e()}):N(l,g,function(){return e()})})}var $=h(55),K=h(459),Y=h(870);let J={PatientWeight:null,PatientSex:null,SeriesTime:null,RadiopharmaceuticalInformationSequence:{RadionuclideTotalDose:null,RadionuclideHalfLife:null,RadiopharmaceuticalStartTime:null}},Z=e=>{let t,n,o,a,r=(0,x.c)(8);r[0]!==e?({children:t,className:n,...o}=e,r[0]=e,r[1]=t,r[2]=n,r[3]=o):(t=r[1],n=r[2],o=r[3]);let i=`flex flex-row items-center space-x-4 ${n||""}`;return r[4]!==t||r[5]!==o||r[6]!==i?(a=(0,Y.jsx)("div",{className:i,...o,children:t}),r[4]=t,r[5]=o,r[6]=i,r[7]=a):a=r[7],a};function X(){let e,t,n,o,a,r,i,s,l,u,c,p,d,h,g,f,m,v,y,b,w,R,O,I,k,C,L,j,N,E,P,D,B,M,A,F,U,V,_,q,W,G,H=(0,x.c)(96),{commandsManager:X,servicesManager:ee}=(0,K.useSystem)(),{t:et}=z("PanelSUV"),{displaySetService:en,hangingProtocolService:eo}=ee.services,[ea,er]=(0,S.useState)(J),[ei,es]=(0,S.useState)(null);H[0]===Symbol.for("react.memo_cache_sentinel")?(e=e=>{er(t=>{let n={...t};return Object.keys(e).forEach(o=>{"object"==typeof e[o]?n[o]={...t[o],...e[o]}:n[o]=e[o]}),n})},H[0]=e):e=H[0];let el=e;H[1]!==X?(t=e=>{let t=X.runCommand("getMatchingPTDisplaySet",{viewportMatchDetails:e});if(!t)return;let n=X.runCommand("getPTMetadata",{ptDisplaySet:t});return{ptDisplaySet:t,metadata:n}},H[1]=X,H[2]=t):t=H[2];let eu=t;H[3]!==en||H[4]!==eu||H[5]!==eo?(n=()=>{let e=en.getActiveDisplaySets(),{viewportMatchDetails:t}=eo.getMatchDetails();if(!e.length)return;let n=eu(t);if(!n)return;let{ptDisplaySet:o,metadata:a}=n;es(o),er(a)},H[3]=en,H[4]=eu,H[5]=eo,H[6]=n):n=H[6],H[7]===Symbol.for("react.memo_cache_sentinel")?(o=[],H[7]=o):o=H[7],(0,S.useEffect)(n,o),H[8]!==eu||H[9]!==eo?(a=()=>{let{unsubscribe:e}=eo.subscribe(eo.EVENTS.PROTOCOL_CHANGED,e=>{let{viewportMatchDetails:t}=e,n=eu(t);if(!n)return;let{ptDisplaySet:o,metadata:a}=n;es(o),er(a)});return()=>{e()}},H[8]=eu,H[9]=eo,H[10]=a):a=H[10],H[11]===Symbol.for("react.memo_cache_sentinel")?(r=[],H[11]=r):r=H[11],(0,S.useEffect)(a,r),H[12]!==X||H[13]!==en||H[14]!==ea||H[15]!==ei?(i=function(){if(!ei)throw Error("No ptDisplaySet found");T.DicomMetadataStore.updateMetadataForSeries(ei.StudyInstanceUID,ei.SeriesInstanceUID,ea),en.setDisplaySetMetadataInvalidated(ei.displaySetInstanceUID),setTimeout(()=>{X.runCommand("resetCrosshairs")},0)},H[12]=X,H[13]=en,H[14]=ea,H[15]=ei,H[16]=i):i=H[16];let ec=i;H[17]!==et?(s=et("Patient Information"),H[17]=et,H[18]=s):s=H[18],H[19]!==s?(l=(0,Y.jsx)($.PanelSection.Header,{children:s}),H[19]=s,H[20]=l):l=H[20],H[21]!==et?(u=et("Patient Sex"),H[21]=et,H[22]=u):u=H[22],H[23]!==u?(c=(0,Y.jsx)(Z.Label,{children:u}),H[23]=u,H[24]=c):c=H[24];let ep=ea.PatientSex||"";H[25]===Symbol.for("react.memo_cache_sentinel")?(p=e=>{el({PatientSex:e.target.value})},H[25]=p):p=H[25],H[26]!==ep?(d=(0,Y.jsx)(Z.Input,{value:ep,onChange:p}),H[26]=ep,H[27]=d):d=H[27],H[28]!==c||H[29]!==d?(h=(0,Y.jsxs)(Z,{children:[c,d]}),H[28]=c,H[29]=d,H[30]=h):h=H[30],H[31]!==et?(g=et("Weight"),H[31]=et,H[32]=g):g=H[32],H[33]!==g?(f=(0,Y.jsx)(Z.Label,{unit:"kg",children:g}),H[33]=g,H[34]=f):f=H[34];let ed=ea.PatientWeight||"";H[35]===Symbol.for("react.memo_cache_sentinel")?(m=e=>{el({PatientWeight:e.target.value})},H[35]=m):m=H[35],H[36]!==ed?(v=(0,Y.jsx)(Z.Input,{value:ed,onChange:m,id:"weight-input"}),H[36]=ed,H[37]=v):v=H[37],H[38]!==f||H[39]!==v?(y=(0,Y.jsxs)(Z,{children:[f,v]}),H[38]=f,H[39]=v,H[40]=y):y=H[40],H[41]!==et?(b=et("Total Dose"),H[41]=et,H[42]=b):b=H[42],H[43]!==b?(w=(0,Y.jsx)(Z.Label,{unit:"bq",children:b}),H[43]=b,H[44]=w):w=H[44];let eh=ea.RadiopharmaceuticalInformationSequence.RadionuclideTotalDose||"";H[45]===Symbol.for("react.memo_cache_sentinel")?(R=e=>{el({RadiopharmaceuticalInformationSequence:{RadionuclideTotalDose:e.target.value}})},H[45]=R):R=H[45],H[46]!==eh?(O=(0,Y.jsx)(Z.Input,{value:eh,onChange:R}),H[46]=eh,H[47]=O):O=H[47],H[48]!==w||H[49]!==O?(I=(0,Y.jsxs)(Z,{children:[w,O]}),H[48]=w,H[49]=O,H[50]=I):I=H[50],H[51]!==et?(k=et("Half Life"),H[51]=et,H[52]=k):k=H[52],H[53]!==k?(C=(0,Y.jsx)(Z.Label,{unit:"s",children:k}),H[53]=k,H[54]=C):C=H[54];let eg=ea.RadiopharmaceuticalInformationSequence.RadionuclideHalfLife||"";H[55]===Symbol.for("react.memo_cache_sentinel")?(L=e=>{el({RadiopharmaceuticalInformationSequence:{RadionuclideHalfLife:e.target.value}})},H[55]=L):L=H[55],H[56]!==eg?(j=(0,Y.jsx)(Z.Input,{value:eg,onChange:L}),H[56]=eg,H[57]=j):j=H[57],H[58]!==C||H[59]!==j?(N=(0,Y.jsxs)(Z,{children:[C,j]}),H[58]=C,H[59]=j,H[60]=N):N=H[60],H[61]!==et?(E=et("Injection Time"),H[61]=et,H[62]=E):E=H[62],H[63]!==E?(P=(0,Y.jsx)(Z.Label,{unit:"s",children:E}),H[63]=E,H[64]=P):P=H[64];let ef=ea.RadiopharmaceuticalInformationSequence.RadiopharmaceuticalStartTime||"";H[65]===Symbol.for("react.memo_cache_sentinel")?(D=e=>{el({RadiopharmaceuticalInformationSequence:{RadiopharmaceuticalStartTime:e.target.value}})},H[65]=D):D=H[65],H[66]!==ef?(B=(0,Y.jsx)(Z.Input,{value:ef,onChange:D}),H[66]=ef,H[67]=B):B=H[67],H[68]!==P||H[69]!==B?(M=(0,Y.jsxs)(Z,{children:[P,B]}),H[68]=P,H[69]=B,H[70]=M):M=H[70],H[71]!==et?(A=et("Acquisition Time"),H[71]=et,H[72]=A):A=H[72],H[73]!==A?(F=(0,Y.jsx)(Z.Label,{unit:"s",children:A}),H[73]=A,H[74]=F):F=H[74];let em=ea.SeriesTime||"";return H[75]!==em?(U=(0,Y.jsx)(Z.Input,{value:em,onChange:Q}),H[75]=em,H[76]=U):U=H[76],H[77]!==F||H[78]!==U?(V=(0,Y.jsxs)(Z,{children:[F,U]}),H[77]=F,H[78]=U,H[79]=V):V=H[79],H[80]!==et?(_=et("Reload Data"),H[80]=et,H[81]=_):_=H[81],H[82]!==_||H[83]!==ec?(q=(0,Y.jsx)($.Button,{variant:"default",size:"sm",className:"self-end px-4",onClick:ec,children:_}),H[82]=_,H[83]=ec,H[84]=q):q=H[84],H[85]!==h||H[86]!==y||H[87]!==I||H[88]!==N||H[89]!==M||H[90]!==V||H[91]!==q?(W=(0,Y.jsx)($.PanelSection.Content,{children:(0,Y.jsxs)("div",{className:"bg-muted flex flex-col gap-3 p-2",children:[h,y,I,N,M,V,q]})}),H[85]=h,H[86]=y,H[87]=I,H[88]=N,H[89]=M,H[90]=V,H[91]=q,H[92]=W):W=H[92],H[93]!==W||H[94]!==l?(G=(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsx)("div",{className:"ohif-scrollbar flex min-h-0 flex-auto select-none flex-col justify-between overflow-auto",children:(0,Y.jsx)("div",{className:"flex min-h-0 flex-1 flex-col bg-background text-base",children:(0,Y.jsxs)($.PanelSection,{defaultOpen:!0,children:[l,W]})})})}),H[93]=W,H[94]=l,H[95]=G):G=H[95],G}function Q(){}Z.Label=({children:e,unit:t,className:n,...o})=>(0,Y.jsxs)($.Label,{className:`min-w-32 flex-shrink-0 ${n||""}`,...o,children:[e,t&&(0,Y.jsxs)("span",{className:"text-muted-foreground",children:[" ",t]})]}),Z.Input=({className:e,...t})=>(0,Y.jsx)($.Input,{className:`h-7 flex-1 ${e||""}`,...t}),Z.Label.displayName="InputRow.Label",Z.Input.displayName="InputRow.Input";let ee=async({commandsManager:e,segmentationService:t})=>{let n=t.getSegmentations(),o=await e.run("calculateTMTV",{segmentations:n});n.forEach(e=>{e.cachedStats={...e.cachedStats,tmtv:o},t.addOrUpdateSegmentation(e)})};var et=h(141);function en(){let e,t,o,a,r,i,s,l,u,c,p,d=(0,x.c)(23),{commandsManager:h,servicesManager:g}=(0,K.useSystem)(),{segmentationService:f}=g.services,{segmentationsWithRepresentations:m}=(0,n.useActiveViewportSegmentationRepresentations)();d[0]!==m?(e=m?.map(ea)||[],d[0]=m,d[1]=e):e=d[1];let v=e,y=m?.map(eo)||[];d[2]!==h||d[3]!==v||d[4]!==f?(t=()=>{(async()=>{for(let e of v)await ee({segmentationId:e,commandsManager:h,segmentationService:f})})()},d[2]=h,d[3]=v,d[4]=f,d[5]=t):t=d[5],d[6]===Symbol.for("react.memo_cache_sentinel")?(o=[],d[6]=o):o=d[6],(0,S.useEffect)(t,o),d[7]!==h||d[8]!==f?(a=()=>{let e=(0,et.debounce)(async e=>{let{segmentationId:t}=e;await ee({segmentationId:t,commandsManager:h,segmentationService:f})},100),t=f.subscribe(f.EVENTS.SEGMENTATION_DATA_MODIFIED,t=>{e(t)});return()=>{t.unsubscribe()}},r=[h,f],d[7]=h,d[8]=f,d[9]=a,d[10]=r):(a=d[9],r=d[10]),(0,S.useEffect)(a,r);let b=f.getSegmentationGroupStats(v),T=b?.tmtv,w=()=>{y.length&&h.runCommand("exportTMTVReportCSV",{segmentations:y,tmtv:T,config:{}})};d[11]===Symbol.for("react.memo_cache_sentinel")?(i=(0,Y.jsx)("span",{className:"text-muted-foreground text-base font-bold uppercase",children:"TMTV: "}),d[11]=i):i=d[11];let R=T?`${T.toFixed(3)} mL`:"";return d[12]!==R?(s=(0,Y.jsx)("span",{className:"text-foreground",children:R}),d[12]=R,d[13]=s):s=d[13],d[14]!==s||d[15]!==i?(l=(0,Y.jsxs)("div",{className:"py-1",children:[i,s]}),d[14]=s,d[15]=i,d[16]=l):l=d[16],d[17]===Symbol.for("react.memo_cache_sentinel")?(u=(0,Y.jsx)("span",{className:"pl-1",children:"CSV"}),d[17]=u):u=d[17],d[18]!==w?(c=(0,Y.jsx)("div",{className:"flex items-center",children:(0,Y.jsx)($.Button,{dataCY:"exportTmtvCsvReport",size:"sm",variant:"ghost",onClick:w,children:u})}),d[18]=w,d[19]=c):c=d[19],d[20]!==l||d[21]!==c?(p=(0,Y.jsx)("div",{className:"mb-1 flex flex-col",children:(0,Y.jsx)("div",{className:"invisible-scrollbar overflow-y-auto overflow-x-hidden",children:(0,Y.jsxs)("div",{className:"bg-popover flex items-baseline justify-between px-2 py-1",children:[l,c]})})}),d[20]=l,d[21]=c,d[22]=p):p=d[22],p}function eo(e){return e.segmentation}function ea(e){return e.segmentation.segmentationId}var er=h(438);function ei(e){let t,o,a=(0,x.c)(3),{configuration:r}=e;return a[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,Y.jsx)(en,{}),a[0]=t):t=a[0],a[1]!==r?(o=(0,Y.jsx)(Y.Fragment,{children:(0,Y.jsx)(n.PanelSegmentation,{configuration:r,children:t})}),a[1]=r,a[2]=o):o=a[2],o}var es=h(545),el=h.n(es),eu=h(713);let ec=["RectangleROIStartEndThreshold","CircleROIStartEndThreshold"],ep=(e,t)=>{},ed=(e,t)=>{},{CORNERSTONE_3D_TOOLS_SOURCE_NAME:eh,CORNERSTONE_3D_TOOLS_SOURCE_VERSION:eg}=n.Enums;var ef=h(557);let em=function(e,t,n){if("range"===n.strategy)return{ptLower:Number(n.ptLower),ptUpper:Number(n.ptUpper),ctLower:Number(n.ctLower),ctUpper:Number(n.ctUpper)};let{weight:o}=n;return{ctLower:-1/0,ctUpper:Infinity,ptLower:o*function(e,t){let{imageIds:n}=e,o=ef.cache.getVolumeContainingImageId(n[0]);if(!o)throw Error("No volume found for display set");let{volume:a}=o,{voxelManager:r}=a,{fn:i,baseValue:s}={fn:(e,t)=>(e>t&&(t=e),t),baseValue:-1/0},l=s,u=eu.utilities.rectangleROITool.getBoundsIJKFromRectangleAnnotations(t,a);return r.forEach(({value:e})=>{l=i(e,l)},{boundsIJK:u}),l}(t,e.map(e=>eu.annotation.state.getAnnotation(e))),ptUpper:Infinity}},{downloadCsv:ev}=T.utils;var ey=h(111),eb=h.n(ey),eS=h(142);let{datasetToBlob:ex}=eb().data,eT=T.classes.MetadataProvider,ew=function(e){let t=ex(eS.adaptersRT.Cornerstone3D.RTSS.generateRTSSFromAnnotations(e,eT,T.DicomMetadataStore));var n=URL.createObjectURL(t);window.location.assign(n)},{SegmentationRepresentations:eR}=eu.Enums,{formatPN:eO}=T.utils,eI=T.classes.MetadataProvider,ek=["RectangleROIStartEndThreshold","RectangleROIThreshold","CircleROIStartEndThreshold"],eC="roi_stat";function eL(e){return(0,Y.jsx)($.SelectItem,{value:e.value,children:e.label},e.value)}let ej=function(e){let t,n,o,a,r,i,s,l,u,c,p,d,h,g,f,m,v,y,b,S,T,w,R,O=(0,x.c)(67),{config:I,dispatch:k,runCommand:C}=e,{t:L}=z("ROIThresholdConfiguration");O[0]!==L?(t=L("Max"),O[0]=L,O[1]=t):t=O[1],O[2]!==L?(n=L("Max"),O[2]=L,O[3]=n):n=O[3],O[4]!==t||O[5]!==n?(o={value:eC,label:t,placeHolder:n},O[4]=t,O[5]=n,O[6]=o):o=O[6],O[7]!==L?(a=L("Range"),O[7]=L,O[8]=a):a=O[8],O[9]!==L?(r=L("Range"),O[9]=L,O[10]=r):r=O[10],O[11]!==a||O[12]!==r?(i={value:"range",label:a,placeHolder:r},O[11]=a,O[12]=r,O[13]=i):i=O[13],O[14]!==o||O[15]!==i?(s=[o,i],O[14]=o,O[15]=i,O[16]=s):s=O[16];let j=s;O[17]!==k?(l=e=>{let t=e.target.value;"."===t&&(t="0."),isNaN(Number(t))||0>Number(t)||Number(t)>1||k({type:"setWeight",payload:{weight:t}})},O[17]=k,O[18]=l):l=O[18];let N=l;O[19]!==k?(u=e=>{k({type:"setStrategy",payload:{strategy:e}})},O[19]=k,O[20]=u):u=O[20];let E=j.find(e=>e.value===I.strategy)?.placeHolder;return O[21]!==E?(c=(0,Y.jsx)($.SelectTrigger,{className:"w-full",children:(0,Y.jsx)($.SelectValue,{placeholder:E})}),O[21]=E,O[22]=c):c=O[22],O[23]!==j?(p=(0,Y.jsx)($.SelectContent,{className:"",children:j.map(eL)}),O[23]=j,O[24]=p):p=O[24],O[25]!==I.strategy||O[26]!==c||O[27]!==p||O[28]!==u?(d=(0,Y.jsx)("div",{className:"flex min-w-0 flex-1 flex-col",children:(0,Y.jsxs)($.Select,{value:I.strategy,onValueChange:u,children:[c,p]})}),O[25]=I.strategy,O[26]=c,O[27]=p,O[28]=u,O[29]=d):d=O[29],O[30]!==C?(h=()=>C("setStartSliceForROIThresholdTool"),O[30]=C,O[31]=h):h=O[31],O[32]!==L?(g=L("Start"),O[32]=L,O[33]=g):g=O[33],O[34]!==h||O[35]!==g?(f=(0,Y.jsx)($.Button,{variant:"secondary",onClick:h,children:g}),O[34]=h,O[35]=g,O[36]=f):f=O[36],O[37]!==C?(m=()=>C("setEndSliceForROIThresholdTool"),O[37]=C,O[38]=m):m=O[38],O[39]!==L?(v=L("End"),O[39]=L,O[40]=v):v=O[40],O[41]!==m||O[42]!==v?(y=(0,Y.jsx)($.Button,{variant:"secondary",onClick:m,children:v}),O[41]=m,O[42]=v,O[43]=y):y=O[43],O[44]!==f||O[45]!==y?(b=(0,Y.jsx)("div",{className:"flex-shrink-0",children:(0,Y.jsxs)("div",{className:"flex justify-end space-x-2",children:[f,y]})}),O[44]=f,O[45]=y,O[46]=b):b=O[46],O[47]!==d||O[48]!==b?(S=(0,Y.jsxs)("div",{className:"flex items-end space-x-3",children:[d,b]}),O[47]=d,O[48]=b,O[49]=S):S=O[49],O[50]!==I.strategy||O[51]!==I.weight||O[52]!==N||O[53]!==L?(T=I.strategy===eC&&(0,Y.jsxs)("div",{className:"mr-0",children:[(0,Y.jsx)("div",{className:"mb-2",children:(0,Y.jsx)($.Label,{children:L("Percentage of Max SUV")})}),(0,Y.jsx)($.Input,{"data-cy":"percentage-of-max-suv-input",className:"w-full",type:"text",value:I.weight,onChange:N})]}),O[50]=I.strategy,O[51]=I.weight,O[52]=N,O[53]=L,O[54]=T):T=O[54],O[55]!==I.ctLower||O[56]!==I.ctUpper||O[57]!==I.ptLower||O[58]!==I.ptUpper||O[59]!==I.strategy||O[60]!==k||O[61]!==L?(w=I.strategy!==eC&&(0,Y.jsx)("div",{className:"mr-2 text-sm",children:(0,Y.jsxs)("div",{className:"flex flex-col space-y-2",children:[(0,Y.jsx)($.Label,{children:L("Lower & Upper Ranges")}),(0,Y.jsxs)("div",{className:"flex items-center",children:[(0,Y.jsx)("div",{className:"w-10 text-left",children:(0,Y.jsx)($.Label,{children:"CT"})}),(0,Y.jsxs)("div",{className:"flex flex-1 space-x-2",children:[(0,Y.jsx)("div",{className:"flex-1",children:(0,Y.jsx)($.Input,{className:"w-full",type:"text",value:I.ctLower,onChange:e=>{k({type:"setThreshold",payload:{ctLower:e.target.value}})}})}),(0,Y.jsx)("div",{className:"flex-1",children:(0,Y.jsx)($.Input,{className:"w-full",type:"text",value:I.ctUpper,onChange:e=>{k({type:"setThreshold",payload:{ctUpper:e.target.value}})}})})]})]}),(0,Y.jsxs)("div",{className:"flex items-center",children:[(0,Y.jsx)("div",{className:"w-10 text-left",children:(0,Y.jsx)($.Label,{children:"PT"})}),(0,Y.jsxs)("div",{className:"flex flex-1 space-x-2",children:[(0,Y.jsx)("div",{className:"flex-1",children:(0,Y.jsx)($.Input,{className:"w-full",type:"text",value:I.ptLower,onChange:e=>{k({type:"setThreshold",payload:{ptLower:e.target.value}})}})}),(0,Y.jsx)("div",{className:"flex-1",children:(0,Y.jsx)($.Input,{className:"w-full",type:"text",value:I.ptUpper,onChange:e=>{k({type:"setThreshold",payload:{ptUpper:e.target.value}})}})})]})]})]})}),O[55]=I.ctLower,O[56]=I.ctUpper,O[57]=I.ptLower,O[58]=I.ptUpper,O[59]=I.strategy,O[60]=k,O[61]=L,O[62]=w):w=O[62],O[63]!==S||O[64]!==T||O[65]!==w?(R=(0,Y.jsxs)("div",{className:"bg-muted flex flex-col space-y-4 p-px",children:[S,T,w]}),O[63]=S,O[64]=T,O[65]=w,O[66]=R):R=O[66],R};function eN(e,t){let{payload:n}=t,{strategy:o,ctLower:a,ctUpper:r,ptLower:i,ptUpper:s,weight:l}=n;switch(t.type){case"setStrategy":return{...e,strategy:o};case"setThreshold":return{...e,ctLower:a||e.ctLower,ctUpper:r||e.ctUpper,ptLower:i||e.ptLower,ptUpper:s||e.ptUpper};case"setWeight":return{...e,weight:l};default:return e}}let eE=function(){let e,t,o,a,r,i,s=(0,x.c)(17),{commandsManager:l}=(0,T.useSystem)(),u=(0,n.useSegmentations)()[0],{t:c}=z("ROIThresholdConfiguration");s[0]!==l?(e=(e,t)=>l.runCommand(e,void 0===t?{}:t),s[0]=l,s[1]=e):e=s[1];let p=e;s[2]===Symbol.for("react.memo_cache_sentinel")?(t={strategy:eC,ctLower:-1024,ctUpper:1024,ptLower:2.5,ptUpper:100,weight:.41},s[2]=t):t=s[2];let[d,h]=(0,S.useReducer)(eN,t);s[3]!==u||s[4]!==d||s[5]!==p?(o=()=>{if(!u)return;let e=u.segmentationId,t=eu.segmentation.segmentIndex.getActiveSegmentIndex(e);p("thresholdSegmentationByRectangleROITool",{segmentationId:e,config:d,segmentIndex:t})},s[3]=u,s[4]=d,s[5]=p,s[6]=o):o=s[6];let g=o;return s[7]!==d||s[8]!==p?(a=(0,Y.jsx)(ej,{config:d,dispatch:h,runCommand:p}),s[7]=d,s[8]=p,s[9]=a):a=s[9],s[10]!==u||s[11]!==g||s[12]!==c?(r=u&&(0,Y.jsx)($.Button,{variant:"default",className:"my-3 mr-auto w-20",onClick:g,children:c("Run")}),s[10]=u,s[11]=g,s[12]=c,s[13]=r):r=s[13],s[14]!==a||s[15]!==r?(i=(0,Y.jsxs)("div",{className:"invisible-scrollbar mb-1 flex flex-col overflow-y-auto overflow-x-hidden",children:[a,r]}),s[14]=a,s[15]=r,s[16]=i):i=s[16],i};function eP(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&o.push.apply(o,Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),o.forEach(function(t){I(e,t,n[t])})}return e}function eD(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function eB(e,t){if(t&&("object"==R(t)||"function"==typeof t))return t;if(void 0!==t)throw TypeError("Derived constructors may only return object or undefined");return eD(e)}function eM(e){return(eM=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function eA(e,t){return(eA=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function eF(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&eA(e,t)}var eU={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){console&&console[e]&&console[e].apply(console,t)}},eV=new(function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};A(this,e),this.init(t,n)}return U(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||eU,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,t,n,o){return o&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(n).concat(this.prefix," ").concat(e[0])),this.logger[t](e))}},{key:"create",value:function(t){return new e(this.logger,eP({},{prefix:"".concat(this.prefix,":").concat(t,":")},this.options))}}]),e}()),e_=function(){function e(){A(this,e),this.observers={}}return U(e,[{key:"on",value:function(e,t){var n=this;return e.split(" ").forEach(function(e){n.observers[e]=n.observers[e]||[],n.observers[e].push(t)}),this}},{key:"off",value:function(e,t){if(this.observers[e]){if(!t)return void delete this.observers[e];this.observers[e]=this.observers[e].filter(function(e){return e!==t})}}},{key:"emit",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];this.observers[e]&&[].concat(this.observers[e]).forEach(function(e){e.apply(void 0,n)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(function(t){t.apply(t,[e].concat(n))})}}]),e}();function eq(){var e,t,n=new Promise(function(n,o){e=n,t=o});return n.resolve=e,n.reject=t,n}function eW(e){return null==e?"":""+e}function eG(e,t,n){function o(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function a(){return!e||"string"==typeof e}for(var r="string"!=typeof t?[].concat(t):t.split(".");r.length>1;){if(a())return{};var i=o(r.shift());!e[i]&&n&&(e[i]=new n),e=Object.prototype.hasOwnProperty.call(e,i)?e[i]:{}}return a()?{}:{obj:e,k:o(r.shift())}}function eH(e,t,n){var o=eG(e,t,Object);o.obj[o.k]=n}function ez(e,t){var n=eG(e,t),o=n.obj,a=n.k;if(o)return o[a]}function e$(e,t,n){var o=ez(e,n);return void 0!==o?o:ez(t,n)}function eK(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var eY={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function eJ(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,function(e){return eY[e]}):e}var eZ="u">typeof window&&window.navigator&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,eX=function(e){function t(e){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return A(this,t),n=eB(this,eM(t).call(this)),eZ&&e_.call(eD(n)),n.data=e||{},n.options=o,void 0===n.options.keySeparator&&(n.options.keySeparator="."),n}return eF(t,e),U(t,[{key:"addNamespaces",value:function(e){0>this.options.ns.indexOf(e)&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=void 0!==o.keySeparator?o.keySeparator:this.options.keySeparator,r=[e,t];return n&&"string"!=typeof n&&(r=r.concat(n)),n&&"string"==typeof n&&(r=r.concat(a?n.split(a):n)),e.indexOf(".")>-1&&(r=e.split(".")),ez(this.data,r)}},{key:"addResource",value:function(e,t,n,o){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},r=this.options.keySeparator;void 0===r&&(r=".");var i=[e,t];n&&(i=i.concat(r?n.split(r):n)),e.indexOf(".")>-1&&(i=e.split("."),o=t,t=i[1]),this.addNamespaces(t),eH(this.data,i,o),a.silent||this.emit("added",e,t,n,o)}},{key:"addResources",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var a in n)("string"==typeof n[a]||"[object Array]"===Object.prototype.toString.apply(n[a]))&&this.addResource(e,t,a,n[a],{silent:!0});o.silent||this.emit("added",e,t,n)}},{key:"addResourceBundle",value:function(e,t,n,o,a){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},i=[e,t];e.indexOf(".")>-1&&(i=e.split("."),o=n,n=t,t=i[1]),this.addNamespaces(t);var s=ez(this.data,i)||{};o?function e(t,n,o){for(var a in n)"__proto__"!==a&&"constructor"!==a&&(a in t?"string"==typeof t[a]||t[a]instanceof String||"string"==typeof n[a]||n[a]instanceof String?o&&(t[a]=n[a]):e(t[a],n[a],o):t[a]=n[a]);return t}(s,n,a):s=eP({},s,n),eH(this.data,i,s),r.silent||this.emit("added",e,t,n)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return(t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI)?eP({},{},this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"toJSON",value:function(){return this.data}}]),t}(e_),eQ={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,n,o,a){var r=this;return e.forEach(function(e){r.processors[e]&&(t=r.processors[e].process(t,n,o,a))}),t}},e0={},e1=function(e){function t(e){var n,o,a,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return A(this,t),a=eB(this,eM(t).call(this)),eZ&&e_.call(eD(a)),n=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],o=eD(a),n.forEach(function(t){e[t]&&(o[t]=e[t])}),a.options=r,void 0===a.options.keySeparator&&(a.options.keySeparator="."),a.logger=eV.create("translator"),a}return eF(t,e),U(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},n=this.resolve(e,t);return n&&void 0!==n.res}},{key:"extractFromKey",value:function(e,t){var n=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===n&&(n=":");var o=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,a=t.ns||this.options.defaultNS;if(n&&e.indexOf(n)>-1){var r=e.match(this.interpolator.nestingRegexp);if(r&&r.length>0)return{key:e,namespaces:a};var i=e.split(n);(n!==o||n===o&&this.options.ns.indexOf(i[0])>-1)&&(a=i.shift()),e=i.join(o)}return"string"==typeof a&&(a=[a]),{key:e,namespaces:a}}},{key:"translate",value:function(e,n,o){var a=this;if("object"!==R(n)&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),n||(n={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var r=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,i=this.extractFromKey(e[e.length-1],n),s=i.key,l=i.namespaces,u=l[l.length-1],c=n.lng||this.language,p=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c&&"cimode"===c.toLowerCase())return p?u+(n.nsSeparator||this.options.nsSeparator)+s:s;var d=this.resolve(e,n),h=d&&d.res,g=d&&d.usedKey||s,f=d&&d.exactUsedKey||s,m=Object.prototype.toString.apply(h),v=void 0!==n.joinArrays?n.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b="string"!=typeof h&&"boolean"!=typeof h&&"number"!=typeof h;if(y&&h&&b&&0>["[object Number]","[object Function]","[object RegExp]"].indexOf(m)&&("string"!=typeof v||"[object Array]"!==m)){if(!n.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,h,n):"key '".concat(s," (").concat(this.language,")' returned an object instead of string.");if(r){var S="[object Array]"===m,x=S?[]:{},T=S?f:g;for(var w in h)if(Object.prototype.hasOwnProperty.call(h,w)){var O="".concat(T).concat(r).concat(w);x[w]=this.translate(O,eP({},n,{joinArrays:!1,ns:l})),x[w]===O&&(x[w]=h[w])}h=x}}else if(y&&"string"==typeof v&&"[object Array]"===m)(h=h.join(v))&&(h=this.extendTranslation(h,e,n,o));else{var I=!1,k=!1,C=void 0!==n.count&&"string"!=typeof n.count,L=t.hasDefaultValue(n),j=C?this.pluralResolver.getSuffix(c,n.count):"",N=n["defaultValue".concat(j)]||n.defaultValue;!this.isValidLookup(h)&&L&&(I=!0,h=N),this.isValidLookup(h)||(k=!0,h=s);var E=L&&N!==h&&this.options.updateMissing;if(k||I||E){if(this.logger.log(E?"updateKey":"missingKey",c,u,s,E?N:h),r){var P=this.resolve(s,eP({},n,{keySeparator:!1}));P&&P.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var D=[],B=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if("fallback"===this.options.saveMissingTo&&B&&B[0])for(var M=0;M<B.length;M++)D.push(B[M]);else"all"===this.options.saveMissingTo?D=this.languageUtils.toResolveHierarchy(n.lng||this.language):D.push(n.lng||this.language);var A=function(e,t,o){a.options.missingKeyHandler?a.options.missingKeyHandler(e,u,t,E?o:h,E,n):a.backendConnector&&a.backendConnector.saveMissing&&a.backendConnector.saveMissing(e,u,t,E?o:h,E,n),a.emit("missingKey",e,u,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&C?D.forEach(function(e){a.pluralResolver.getSuffixes(e).forEach(function(t){A([e],s+t,n["defaultValue".concat(t)]||N)})}):A(D,s,N))}h=this.extendTranslation(h,e,n,d,o),k&&h===s&&this.options.appendNamespaceToMissingKey&&(h="".concat(u,":").concat(s)),k&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(h))}return h}},{key:"extendTranslation",value:function(e,t,n,o,a){var r=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,n,o.usedLng,o.usedNS,o.usedKey,{resolved:o});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init(eP({},n,{interpolation:eP({},this.options.interpolation,n.interpolation)}));var i,s=n.interpolation&&n.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables;if(s){var l=e.match(this.interpolator.nestingRegexp);i=l&&l.length}var u=n.replace&&"string"!=typeof n.replace?n.replace:n;if(this.options.interpolation.defaultVariables&&(u=eP({},this.options.interpolation.defaultVariables,u)),e=this.interpolator.interpolate(e,u,n.lng||this.language,n),s){var c=e.match(this.interpolator.nestingRegexp);i<(c&&c.length)&&(n.nest=!1)}!1!==n.nest&&(e=this.interpolator.nest(e,function(){for(var e=arguments.length,o=Array(e),i=0;i<e;i++)o[i]=arguments[i];return a&&a[0]===o[0]&&!n.context?(r.logger.warn("It seems you are nesting recursively key: ".concat(o[0]," in key: ").concat(t[0])),null):r.translate.apply(r,o.concat([t]))},n)),n.interpolation&&this.interpolator.reset()}var p=n.postProcess||this.options.postProcess,d="string"==typeof p?[p]:p;return null!=e&&d&&d.length&&!1!==n.applyPostProcessor&&(e=eQ.handle(d,e,t,this.options&&this.options.postProcessPassResolved?eP({i18nResolved:o},n):n,this)),e}},{key:"resolve",value:function(e){var t,n,o,a,r,i=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach(function(e){if(!i.isValidLookup(t)){var l=i.extractFromKey(e,s),u=l.key;n=u;var c=l.namespaces;i.options.fallbackNS&&(c=c.concat(i.options.fallbackNS));var p=void 0!==s.count&&"string"!=typeof s.count,d=void 0!==s.context&&"string"==typeof s.context&&""!==s.context,h=s.lngs?s.lngs:i.languageUtils.toResolveHierarchy(s.lng||i.language,s.fallbackLng);c.forEach(function(e){i.isValidLookup(t)||(r=e,!e0["".concat(h[0],"-").concat(e)]&&i.utils&&i.utils.hasLoadedNamespace&&!i.utils.hasLoadedNamespace(r)&&(e0["".concat(h[0],"-").concat(e)]=!0,i.logger.warn('key "'.concat(n,'" for languages "').concat(h.join(", "),'" won\'t get resolved as namespace "').concat(r,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),h.forEach(function(n){if(!i.isValidLookup(t)){a=n;var r,l,c=u,h=[c];for(i.i18nFormat&&i.i18nFormat.addLookupKeys?i.i18nFormat.addLookupKeys(h,u,n,e,s):(p&&(r=i.pluralResolver.getSuffix(n,s.count)),p&&d&&h.push(c+r),d&&h.push(c+="".concat(i.options.contextSeparator).concat(s.context)),p&&h.push(c+=r));l=h.pop();)i.isValidLookup(t)||(o=l,t=i.getResource(n,e,l,s))}}))})}}),{res:t,usedKey:n,exactUsedKey:o,usedLng:a,usedNS:r}}},{key:"isValidLookup",value:function(e){return void 0!==e&&!(!this.options.returnNull&&null===e)&&!(!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,n,o):this.resourceStore.getResource(e,t,n,o)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t===n.substring(0,t.length)&&void 0!==e[n])return!0;return!1}}]),t}(e_);function e2(e){return e.charAt(0).toUpperCase()+e.slice(1)}var e3=function(){function e(t){A(this,e),this.options=t,this.whitelist=this.options.supportedLngs||!1,this.supportedLngs=this.options.supportedLngs||!1,this.logger=eV.create("languageUtils")}return U(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||0>e.indexOf("-"))return null;var t=e.split("-");return 2===t.length||(t.pop(),"x"===t[t.length-1].toLowerCase())?null:this.formatLanguageCode(t.join("-"))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||0>e.indexOf("-"))return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-");return this.options.lowerCaseLng?n=n.map(function(e){return e.toLowerCase()}):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=e2(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=e2(n[1].toLowerCase())),t.indexOf(n[2].toLowerCase())>-1&&(n[2]=e2(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isWhitelisted",value:function(e){return this.logger.deprecate("languageUtils.isWhitelisted",'function "isWhitelisted" will be renamed to "isSupportedCode" in the next major - please make sure to rename it\'s usage asap.'),this.isSupportedCode(e)}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var t,n=this;return e?(e.forEach(function(e){if(!t){var o=n.formatLanguageCode(e);(!n.options.supportedLngs||n.isSupportedCode(o))&&(t=o)}}),!t&&this.options.supportedLngs&&e.forEach(function(e){if(!t){var o=n.getLanguagePartFromCode(e);if(n.isSupportedCode(o))return t=o;t=n.options.supportedLngs.find(function(e){if(0===e.indexOf(o))return e})}}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var n=e[t];return n||(n=e[this.getScriptPartFromCode(t)]),n||(n=e[this.formatLanguageCode(t)]),n||(n=e[this.getLanguagePartFromCode(t)]),n||(n=e.default),n||[]}},{key:"toResolveHierarchy",value:function(e,t){var n=this,o=this.getFallbackCodes(t||this.options.fallbackLng||[],e),a=[],r=function(e){e&&(n.isSupportedCode(e)?a.push(e):n.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&r(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&r(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&r(this.getLanguagePartFromCode(e))):"string"==typeof e&&r(this.formatLanguageCode(e)),o.forEach(function(e){0>a.indexOf(e)&&r(n.formatLanguageCode(e))}),a}}]),e}(),e4=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],e5={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(+(1!=e&&(e%10!=1||e%100==11)))},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:3*(e%100==3||e%100==4))},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}},e8=function(){function e(t){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};A(this,e),this.languageUtils=t,this.options=o,this.logger=eV.create("pluralResolver"),this.rules=(n={},e4.forEach(function(e){e.lngs.forEach(function(t){n[t]={numbers:e.nr,plurals:e5[e.fc]}})}),n)}return U(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=this.getRule(e);return t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){return this.getSuffixes(e).map(function(e){return t+e})}},{key:"getSuffixes",value:function(e){var t=this,n=this.getRule(e);return n?n.numbers.map(function(n){return t.getSuffix(e,n)}):[]}},{key:"getSuffix",value:function(e,t){var n=this,o=this.getRule(e);if(o){var a=o.noAbs?o.plurals(t):o.plurals(Math.abs(t)),r=o.numbers[a];this.options.simplifyPluralSuffix&&2===o.numbers.length&&1===o.numbers[0]&&(2===r?r="plural":1===r&&(r=""));var i=function(){return n.options.prepend&&r.toString()?n.options.prepend+r.toString():r.toString()};return"v1"===this.options.compatibilityJSON?1===r?"":"number"==typeof r?"_plural_".concat(r.toString()):i():"v2"===this.options.compatibilityJSON?i():this.options.simplifyPluralSuffix&&2===o.numbers.length&&1===o.numbers[0]?i():this.options.prepend&&a.toString()?this.options.prepend+a.toString():a.toString()}return this.logger.warn("no plural rule found for: ".concat(e)),""}}]),e}(),e6=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};A(this,e),this.logger=eV.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return U(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:eJ,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?eK(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?eK(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?eK(t.nestingPrefix):t.nestingPrefixEscaped||eK("$t("),this.nestingSuffix=t.nestingSuffix?eK(t.nestingSuffix):t.nestingSuffixEscaped||eK(")"),this.nestingOptionsSeparator=t.nestingOptionsSeparator?t.nestingOptionsSeparator:t.nestingOptionsSeparator||",",this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.alwaysFormat=void 0!==t.alwaysFormat&&t.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=RegExp(t,"g");var n="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=RegExp(n,"g")}},{key:"interpolate",value:function(e,t,n,o){var a,r,i,s=this,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(e){return e.replace(/\$/g,"$$$$")}var c=function(e){if(0>e.indexOf(s.formatSeparator)){var a=e$(t,l,e);return s.alwaysFormat?s.format(a,void 0,n):a}var r=e.split(s.formatSeparator),i=r.shift().trim(),u=r.join(s.formatSeparator).trim();return s.format(e$(t,l,i),u,n,o)};this.resetRegExp();var p=o&&o.missingInterpolationHandler||this.options.missingInterpolationHandler,d=o&&o.interpolation&&o.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return u(e)}},{regex:this.regexp,safeValue:function(e){return s.escapeValue?u(s.escape(e)):u(e)}}].forEach(function(t){for(i=0;a=t.regex.exec(e);){if(void 0===(r=c(a[1].trim())))if("function"==typeof p){var n=p(e,a,o);r="string"==typeof n?n:""}else if(d){r=a[0];continue}else s.logger.warn("missed to pass in variable ".concat(a[1]," for interpolating ").concat(e)),r="";else"string"==typeof r||s.useRawValueToEscape||(r=eW(r));if(e=e.replace(a[0],t.safeValue(r)),t.regex.lastIndex=0,++i>=s.maxReplaces)break}}),e}},{key:"nest",value:function(e,t){var n,o,a=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=eP({},r);function s(e,t){var n=this.nestingOptionsSeparator;if(0>e.indexOf(n))return e;var o=e.split(new RegExp("".concat(n,"[ ]*{"))),a="{".concat(o[1]);e=o[0],a=(a=this.interpolate(a,i)).replace(/'/g,'"');try{i=JSON.parse(a),t&&(i=eP({},t,i))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(n).concat(a)}return delete i.defaultValue,e}for(i.applyPostProcessor=!1,delete i.defaultValue;n=this.nestingRegexp.exec(e);){var l=[],u=!1;if(n[0].includes(this.formatSeparator)&&!/{.*}/.test(n[1])){var c=n[1].split(this.formatSeparator).map(function(e){return e.trim()});n[1]=c.shift(),l=c,u=!0}if((o=t(s.call(this,n[1].trim(),i),i))&&n[0]===e&&"string"!=typeof o)return o;"string"!=typeof o&&(o=eW(o)),o||(this.logger.warn("missed to resolve ".concat(n[1]," for nesting ").concat(e)),o=""),u&&(o=l.reduce(function(e,t){return a.format(e,t,r.lng,r)},o.trim())),e=e.replace(n[0],o),this.regexp.lastIndex=0}return e}}]),e}(),e7=function(e){function t(e,n,o){var a,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return A(this,t),a=eB(this,eM(t).call(this)),eZ&&e_.call(eD(a)),a.backend=e,a.store=n,a.services=o,a.languageUtils=o.languageUtils,a.options=r,a.logger=eV.create("backendConnector"),a.state={},a.queue=[],a.backend&&a.backend.init&&a.backend.init(o,r.backend,r),a}return eF(t,e),U(t,[{key:"queueLoad",value:function(e,t,n,o){var a=this,r=[],i=[],s=[],l=[];return e.forEach(function(e){var o=!0;t.forEach(function(t){var s="".concat(e,"|").concat(t);!n.reload&&a.store.hasResourceBundle(e,t)?a.state[s]=2:a.state[s]<0||(1===a.state[s]?0>i.indexOf(s)&&i.push(s):(a.state[s]=1,o=!1,0>i.indexOf(s)&&i.push(s),0>r.indexOf(s)&&r.push(s),0>l.indexOf(t)&&l.push(t)))}),o||s.push(e)}),(r.length||i.length)&&this.queue.push({pending:i,loaded:{},errors:[],callback:o}),{toLoad:r,pending:i,toLoadLanguages:s,toLoadNamespaces:l}}},{key:"loaded",value:function(e,t,n){var o=e.split("|"),a=o[0],r=o[1];t&&this.emit("failedLoading",a,r,t),n&&this.store.addResourceBundle(a,r,n),this.state[e]=t?-1:2;var i={};this.queue.forEach(function(n){o=n.loaded,(l=(s=eG(o,[a],Object)).obj)[u=s.k]=l[u]||[],l[u].push(r);for(var o,s,l,u,c=n.pending,p=c.indexOf(e);-1!==p;)c.splice(p,1),p=c.indexOf(e);t&&n.errors.push(t),0!==n.pending.length||n.done||(Object.keys(n.loaded).forEach(function(e){i[e]||(i[e]=[]),n.loaded[e].length&&n.loaded[e].forEach(function(t){0>i[e].indexOf(t)&&i[e].push(t)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit("loaded",i),this.queue=this.queue.filter(function(e){return!e.done})}},{key:"read",value:function(e,t,n){var o=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,i=arguments.length>5?arguments[5]:void 0;return e.length?this.backend[n](e,t,function(s,l){s&&l&&a<5?setTimeout(function(){o.read.call(o,e,t,n,a+1,2*r,i)},r):i(s,l)}):i(null,{})}},{key:"prepareLoading",value:function(e,t){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var r=this.queueLoad(e,t,o,a);if(!r.toLoad.length)return r.pending.length||a(),null;r.toLoad.forEach(function(e){n.loadOne(e)})}},{key:"load",value:function(e,t,n){this.prepareLoading(e,t,{},n)}},{key:"reload",value:function(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}},{key:"loadOne",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=e.split("|"),a=o[0],r=o[1];this.read(a,r,"read",void 0,void 0,function(o,i){o&&t.logger.warn("".concat(n,"loading namespace ").concat(r," for language ").concat(a," failed"),o),!o&&i&&t.logger.log("".concat(n,"loaded namespace ").concat(r," for language ").concat(a),i),t.loaded(e,o,i)})}},{key:"saveMissing",value:function(e,t,n,o,a){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)?this.logger.warn('did not save key "'.concat(n,'" as the namespace "').concat(t,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):null==n||""===n||(this.backend&&this.backend.create&&this.backend.create(e,t,n,o,null,eP({},r,{isUpdate:a})),e&&e[0]&&this.store.addResource(e[0],t,n,o))}}]),t}(e_);function e9(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&(e.whitelist&&0>e.whitelist.indexOf("cimode")&&(e.whitelist=e.whitelist.concat(["cimode"])),e.supportedLngs=e.whitelist),e.nonExplicitWhitelist&&(e.nonExplicitSupportedLngs=e.nonExplicitWhitelist),e.supportedLngs&&0>e.supportedLngs.indexOf("cimode")&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function te(){}var tt=new(function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;if(A(this,t),e=eB(this,eM(t).call(this)),eZ&&e_.call(eD(e)),e.options=e9(n),e.services={},e.logger=eV,e.modules={external:[]},o&&!e.isInitialized&&!n.isClone){if(!e.options.initImmediate)return e.init(n,o),eB(e,eD(e));setTimeout(function(){e.init(n,o)},0)}return e}return eF(t,e),U(t,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;function o(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(n=t,t={}),t.whitelist&&!t.supportedLngs&&this.logger.deprecate("whitelist",'option "whitelist" will be renamed to "supportedLngs" in the next major - please make sure to rename this option asap.'),t.nonExplicitWhitelist&&!t.nonExplicitSupportedLngs&&this.logger.deprecate("whitelist",'options "nonExplicitWhitelist" will be renamed to "nonExplicitSupportedLngs" in the next major - please make sure to rename this option asap.'),this.options=eP({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===R(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===R(e[2])||"object"===R(e[3])){var n=e[3]||e[2];Object.keys(n).forEach(function(e){t[e]=n[e]})}return t},interpolation:{escapeValue:!0,format:function(e,t,n,o){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!1}},this.options,e9(t)),this.format=this.options.interpolation.format,n||(n=te),!this.options.isClone){this.modules.logger?eV.init(o(this.modules.logger),this.options):eV.init(null,this.options);var a=new e3(this.options);this.store=new eX(this.options.resources,this.options);var r=this.services;r.logger=eV,r.resourceStore=this.store,r.languageUtils=a,r.pluralResolver=new e8(a,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),r.interpolator=new e6(this.options),r.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},r.backendConnector=new e7(o(this.modules.backend),r.resourceStore,r,this.options),r.backendConnector.on("*",function(t){for(var n=arguments.length,o=Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];e.emit.apply(e,[t].concat(o))}),this.modules.languageDetector&&(r.languageDetector=o(this.modules.languageDetector),r.languageDetector.init(r,this.options.detection,this.options)),this.modules.i18nFormat&&(r.i18nFormat=o(this.modules.i18nFormat),r.i18nFormat.init&&r.i18nFormat.init(this)),this.translator=new e1(this.services,this.options),this.translator.on("*",function(t){for(var n=arguments.length,o=Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];e.emit.apply(e,[t].concat(o))}),this.modules.external.forEach(function(t){t.init&&t.init(e)})}if(this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var i=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);i.length>0&&"dev"!==i[0]&&(this.options.lng=i[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(function(t){e[t]=function(){var n;return(n=e.store)[t].apply(n,arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(function(t){e[t]=function(){var n;return(n=e.store)[t].apply(n,arguments),e}});var s=eq(),l=function(){var t=function(t,o){e.isInitialized&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),s.resolve(o),n(t,o)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return t(null,e.t.bind(e));e.changeLanguage(e.options.lng,t)};return this.options.resources||!this.options.initImmediate?l():setTimeout(l,0),s}},{key:"loadResources",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:te,o=n,a="string"==typeof e?e:this.language;if("function"==typeof e&&(o=e),!this.options.resources||this.options.partialBundledLanguages){if(a&&"cimode"===a.toLowerCase())return o();var r=[],i=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach(function(e){0>r.indexOf(e)&&r.push(e)})};a?i(a):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(function(e){return i(e)}),this.options.preload&&this.options.preload.forEach(function(e){return i(e)}),this.services.backendConnector.load(r,this.options.ns,o)}else o(null)}},{key:"reloadResources",value:function(e,t,n){var o=eq();return e||(e=this.languages),t||(t=this.options.ns),n||(n=te),this.services.backendConnector.reload(e,t,function(e){o.resolve(),n(e)}),o}},{key:"use",value:function(e){if(!e)throw Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&eQ.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"changeLanguage",value:function(e,t){var n=this;this.isLanguageChangingTo=e;var o=eq();this.emit("languageChanging",e);var a=function(e,a){a?(n.language=a,n.languages=n.services.languageUtils.toResolveHierarchy(a),n.translator.changeLanguage(a),n.isLanguageChangingTo=void 0,n.emit("languageChanged",a),n.logger.log("languageChanged",a)):n.isLanguageChangingTo=void 0,o.resolve(function(){return n.t.apply(n,arguments)}),t&&t(e,function(){return n.t.apply(n,arguments)})},r=function(e){var t="string"==typeof e?e:n.services.languageUtils.getBestMatchFromCodes(e);t&&(n.language||(n.language=t,n.languages=n.services.languageUtils.toResolveHierarchy(t)),n.translator.language||n.translator.changeLanguage(t),n.services.languageDetector&&n.services.languageDetector.cacheUserLanguage(t)),n.loadResources(t,function(e){a(e,t)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(r):r(e):r(this.services.languageDetector.detect()),o}},{key:"getFixedT",value:function(e,t){var n=this,o=function e(t,o){var a;if("object"!==R(o)){for(var r=arguments.length,i=Array(r>2?r-2:0),s=2;s<r;s++)i[s-2]=arguments[s];a=n.options.overloadTranslationOptionHandler([t,o].concat(i))}else a=eP({},o);return a.lng=a.lng||e.lng,a.lngs=a.lngs||e.lngs,a.ns=a.ns||e.ns,n.t(t,a)};return"string"==typeof e?o.lng=e:o.lngs=e,o.ns=t,o}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var o=this.languages[0],a=!!this.options&&this.options.fallbackLng,r=this.languages[this.languages.length-1];if("cimode"===o.toLowerCase())return!0;var i=function(e,n){var o=t.services.backendConnector.state["".concat(e,"|").concat(n)];return -1===o||2===o};if(n.precheck){var s=n.precheck(this,i);if(void 0!==s)return s}return!!(this.hasResourceBundle(o,e)||!this.services.backendConnector.backend||i(o,e)&&(!a||i(r,e)))}},{key:"loadNamespaces",value:function(e,t){var n=this,o=eq();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach(function(e){0>n.options.ns.indexOf(e)&&n.options.ns.push(e)}),this.loadResources(function(e){o.resolve(),t&&t(e)}),o):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var n=eq();"string"==typeof e&&(e=[e]);var o=this.options.preload||[],a=e.filter(function(e){return 0>o.indexOf(e)});return a.length?(this.options.preload=o.concat(a),this.loadResources(function(e){n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){return(e||(e=this.languages&&this.languages.length>0?this.languages[0]:this.language),e)?["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr":"rtl"}},{key:"createInstance",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new t(e,n)}},{key:"cloneInstance",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:te,a=eP({},this.options,n,{isClone:!0}),r=new t(a);return["store","services","language"].forEach(function(t){r[t]=e[t]}),r.services=eP({},this.services),r.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},r.translator=new e1(r.services,r.options),r.translator.on("*",function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];r.emit.apply(r,[e].concat(n))}),r.init(a,o),r.translator.options=r.options,r.translator.backendConnector.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},r}}]),t}(e_));let tn={CT:"ctToolGroup",PT:"ptToolGroup",Fusion:"fusionToolGroup",MIP:"mipToolGroup",default:"default"},{TOOLBAR_SECTIONS:to}=T.ToolbarService,ta={commandName:"setToolActiveToolbar",commandOptions:{toolGroupIds:[tn.CT,tn.PT,tn.Fusion]}},tr={"tmtv.toolbarButtons":[{id:"MeasurementTools",uiType:"ohif.toolButtonList",props:{buttonSection:!0}},{id:"SegmentationTools",uiType:"ohif.toolBoxButton",props:{buttonSection:!0}},{id:"BrushTools",uiType:"ohif.toolBoxButtonGroup",props:{buttonSection:!0}},{id:"AdvancedRenderingControls",uiType:"ohif.advancedRenderingControls",props:{buttonSection:!0}},{id:"modalityLoadBadge",uiType:"ohif.modalityLoadBadge",props:{icon:"Status",label:tt.t("Buttons:Status"),tooltip:tt.t("Buttons:Status"),evaluate:{name:"evaluate.modalityLoadBadge",hideWhenDisabled:!0}}},{id:"Colorbar",uiType:"ohif.colorbar",props:{type:"tool",label:tt.t("Buttons:Colorbar")}},{id:"navigationComponent",uiType:"ohif.navigationComponent",props:{icon:"Navigation",label:tt.t("Buttons:Navigation"),tooltip:tt.t("Buttons:Navigate between segments/measurements and manage their visibility"),evaluate:{name:"evaluate.navigationComponent",hideWhenDisabled:!0}}},{id:"windowLevelMenuEmbedded",uiType:"ohif.windowLevelMenuEmbedded",props:{icon:"WindowLevel",label:tt.t("Buttons:Window Level"),tooltip:tt.t("Buttons:Adjust window/level presets and customize image contrast settings"),evaluate:{name:"evaluate.windowLevelMenuEmbedded",hideWhenDisabled:!0}}},{id:"trackingStatus",uiType:"ohif.trackingStatus",props:{icon:"TrackingStatus",label:tt.t("Buttons:Tracking Status"),tooltip:tt.t("Buttons:View and manage tracking status of measurements and annotations"),evaluate:{name:"evaluate.trackingStatus",hideWhenDisabled:!0}}},{id:"Length",uiType:"ohif.toolButton",props:{icon:"tool-length",label:tt.t("Buttons:Length"),tooltip:tt.t("Buttons:Length Tool"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"Bidirectional",uiType:"ohif.toolButton",props:{icon:"tool-bidirectional",label:tt.t("Buttons:Bidirectional"),tooltip:tt.t("Buttons:Bidirectional Tool"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"ArrowAnnotate",uiType:"ohif.toolButton",props:{icon:"tool-annotate",label:tt.t("Buttons:Arrow Annotate"),tooltip:tt.t("Buttons:Arrow Annotate Tool"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"EllipticalROI",uiType:"ohif.toolButton",props:{icon:"tool-ellipse",label:tt.t("Buttons:Ellipse"),tooltip:tt.t("Buttons:Ellipse Tool"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"Zoom",uiType:"ohif.toolButton",props:{icon:"tool-zoom",label:tt.t("Buttons:Zoom"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"WindowLevel",uiType:"ohif.toolButton",props:{icon:"tool-window-level",label:tt.t("Buttons:Window Level"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"Crosshairs",uiType:"ohif.toolButton",props:{icon:"tool-crosshair",label:tt.t("Buttons:Crosshairs"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"Pan",uiType:"ohif.toolButton",props:{icon:"tool-move",label:tt.t("Buttons:Pan"),commands:ta,evaluate:"evaluate.cornerstoneTool"}},{id:"RectangleROIStartEndThreshold",uiType:"ohif.toolBoxButton",props:{icon:"tool-create-threshold",label:tt.t("Buttons:Rectangle ROI Threshold"),commands:ta,evaluate:["evaluate.cornerstone.segmentation",{name:"evaluate.cornerstoneTool",disabledText:tt.t("Buttons:Select the PT Axial to enable this tool")}],options:"tmtv.RectangleROIThresholdOptions"}},{id:"Brush",uiType:"ohif.toolButton",props:{icon:"icon-tool-brush",label:tt.t("Buttons:Brush"),evaluate:[{name:"evaluate.cornerstone.segmentation",toolNames:["CircularBrush","SphereBrush"],disabledText:tt.t("Buttons:Create new segmentation to enable this tool.")},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",radiusOptionId:"brush-radius"}],options:[{name:tt.t("Buttons:Radius (mm)"),id:"brush-radius",type:"range",explicitRunOnly:!0,min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularBrush","SphereBrush"]}}},{name:tt.t("Buttons:Shape"),type:"radio",id:"brush-mode",value:"CircularBrush",values:[{value:"CircularBrush",label:tt.t("Buttons:Circle")},{value:"SphereBrush",label:tt.t("Buttons:Sphere")}],commands:"setToolActiveToolbar"}]}},{id:"Eraser",uiType:"ohif.toolButton",props:{icon:"icon-tool-eraser",label:tt.t("Buttons:Eraser"),evaluate:[{name:"evaluate.cornerstone.segmentation",toolNames:["CircularEraser","SphereEraser"]},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",radiusOptionId:"eraser-radius"}],options:[{name:tt.t("Buttons:Radius (mm)"),id:"eraser-radius",type:"range",explicitRunOnly:!0,min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularEraser","SphereEraser"]}}},{name:tt.t("Buttons:Shape"),type:"radio",id:"eraser-mode",value:"CircularEraser",values:[{value:"CircularEraser",label:tt.t("Buttons:Circle")},{value:"SphereEraser",label:tt.t("Buttons:Sphere")}],commands:"setToolActiveToolbar"}]}},{id:"Threshold",uiType:"ohif.toolButton",props:{icon:"icon-tool-threshold",label:tt.t("Buttons:Threshold Tool"),evaluate:[{name:"evaluate.cornerstone.segmentation",toolNames:["ThresholdCircularBrush","ThresholdSphereBrush","ThresholdCircularBrushDynamic"]},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",radiusOptionId:"threshold-radius"}],options:[{name:tt.t("Buttons:Radius (mm)"),id:"threshold-radius",type:"range",explicitRunOnly:!0,min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush","ThresholdCircularBrushDynamic"]}}},{name:tt.t("Buttons:Threshold"),type:"radio",id:"dynamic-mode",value:"ThresholdRange",values:[{value:"ThresholdDynamic",label:tt.t("Buttons:Dynamic")},{value:"ThresholdRange",label:tt.t("Buttons:Range")}],commands:({value:e,commandsManager:t})=>{"ThresholdDynamic"===e?t.run("setToolActive",{toolName:"ThresholdCircularBrushDynamic"}):t.run("setToolActive",{toolName:"ThresholdCircularBrush"})}},{name:tt.t("Buttons:Shape"),type:"radio",id:"eraser-mode",value:"ThresholdCircularBrush",values:[{value:"ThresholdCircularBrush",label:tt.t("Buttons:Circle")},{value:"ThresholdSphereBrush",label:tt.t("Buttons:Sphere")}],condition:({options:e})=>"ThresholdRange"===e.find(e=>"dynamic-mode"===e.id).value,commands:"setToolActiveToolbar"},{name:tt.t("ROIThresholdConfiguration:ThresholdRange"),type:"double-range",id:"threshold-range",min:0,max:50,step:.5,value:[2.5,50],condition:({options:e})=>"ThresholdRange"===e.find(e=>"dynamic-mode"===e.id).value,commands:{commandName:"setThresholdRange",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}}]}},{id:"dataOverlayMenu",uiType:"ohif.dataOverlayMenu",props:{icon:"ViewportViews",label:tt.t("Buttons:Data Overlay"),tooltip:tt.t("Buttons:Configure data overlay options and manage foreground/background display sets"),evaluate:"evaluate.dataOverlayMenu"}},{id:"orientationMenu",uiType:"ohif.orientationMenu",props:{icon:"OrientationSwitch",label:tt.t("Buttons:Orientation"),tooltip:tt.t("Buttons:Change viewport orientation between axial, sagittal, coronal and reformat planes"),evaluate:{name:"evaluate.orientationMenu"}}},{id:"windowLevelMenu",uiType:"ohif.windowLevelMenu",props:{icon:"WindowLevel",label:tt.t("Buttons:Window Level"),tooltip:tt.t("Buttons:Adjust window/level presets and customize image contrast settings"),evaluate:"evaluate.windowLevelMenu"}},{id:"voiManualControlMenu",uiType:"ohif.voiManualControlMenu",props:{icon:"WindowLevelAdvanced",label:tt.t("Buttons:Advanced Window Level"),tooltip:tt.t("Buttons:Advanced window/level settings with manual controls and presets"),evaluate:"evaluate.voiManualControlMenu"}},{id:"thresholdMenu",uiType:"ohif.thresholdMenu",props:{icon:"Threshold",label:tt.t("Buttons:Threshold"),tooltip:tt.t("Buttons:Image threshold settings"),evaluate:{name:"evaluate.thresholdMenu",hideWhenDisabled:!0}}},{id:"opacityMenu",uiType:"ohif.opacityMenu",props:{icon:"Opacity",label:tt.t("Buttons:Opacity"),tooltip:tt.t("Buttons:Image opacity settings"),evaluate:{name:"evaluate.opacityMenu",hideWhenDisabled:!0}}}],"tmtv.toolbarSections":{[to.primary]:["MeasurementTools","Zoom","Pan","WindowLevel","Crosshairs"],[to.viewportActionMenu.topLeft]:["orientationMenu","dataOverlayMenu"],[to.viewportActionMenu.bottomMiddle]:["AdvancedRenderingControls"],AdvancedRenderingControls:["windowLevelMenuEmbedded","voiManualControlMenu","Colorbar","opacityMenu","thresholdMenu"],[to.viewportActionMenu.topRight]:["modalityLoadBadge","trackingStatus","navigationComponent"],[to.viewportActionMenu.bottomLeft]:["windowLevelMenu"],MeasurementTools:["Length","Bidirectional","ArrowAnnotate","EllipticalROI"],ROIThresholdToolbox:["SegmentationTools"],SegmentationTools:["RectangleROIStartEndThreshold","BrushTools"],BrushTools:["Brush","Eraser","Threshold"]}},ti={id:e,preRegistration({servicesManager:e,commandsManager:t,extensionManager:o,configuration:a={}}){!function({servicesManager:e}){let{measurementService:t,displaySetService:o,cornerstoneViewportService:a}=e.services;(0,eu.addTool)(eu.RectangleROIStartEndThresholdTool),(0,eu.addTool)(eu.CircleROIStartEndThresholdTool);let{RectangleROIStartEndThreshold:r,CircleROIStartEndThreshold:i}={RectangleROIStartEndThreshold:{toAnnotation:ep,toMeasurement:e=>((e,t,o)=>{let a,{annotation:r,viewportId:i}=e,{metadata:s,data:l,annotationUID:u}=r;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;let{toolName:c,referencedImageId:p,FrameOfReferenceUID:d}=s;if(!ec.includes(c))throw Error("Tool not supported");let{SOPInstanceUID:h,SeriesInstanceUID:g,StudyInstanceUID:f}=(0,n.getSOPInstanceAttributes)(p,o,i);return a=h?t.getDisplaySetForSOPInstanceUID(h,g):t.getDisplaySetsForSeries(g),{uid:u,SOPInstanceUID:h,FrameOfReferenceUID:d,metadata:s,referenceSeriesUID:g,referenceStudyUID:f,toolName:s.toolName,displaySetInstanceUID:a.displaySetInstanceUID,label:s.label,data:l.cachedStats,type:"RectangleROIStartEndThreshold"}})(e,o,a),matchingCriteria:[{valueType:t.VALUE_TYPES.ROI_THRESHOLD_MANUAL}]},CircleROIStartEndThreshold:{toAnnotation:ed,toMeasurement:e=>((e,t,o)=>{let a,{annotation:r,viewportId:i}=e,{metadata:s,data:l,annotationUID:u}=r;if(!s||!l)return console.warn("Length tool: Missing metadata or data"),null;let{toolName:c,referencedImageId:p,FrameOfReferenceUID:d}=s;if(!ec.includes(c))throw Error("Tool not supported");let{SOPInstanceUID:h,SeriesInstanceUID:g,StudyInstanceUID:f}=(0,n.getSOPInstanceAttributes)(p,o,i);a=h?t.getDisplaySetForSOPInstanceUID(h,g):t.getDisplaySetsForSeries(g);let{cachedStats:m}=l;return{uid:u,SOPInstanceUID:h,FrameOfReferenceUID:d,metadata:s,referenceSeriesUID:g,referenceStudyUID:f,toolName:s.toolName,displaySetInstanceUID:a.displaySetInstanceUID,label:s.label,data:l.cachedStats,type:"CircleROIStartEndThreshold"}})(e,o,a),matchingCriteria:[{valueType:t.VALUE_TYPES.ROI_THRESHOLD_MANUAL}]}},s=t.getSource(eh,eg);t.addMapping(s,"RectangleROIStartEndThreshold",r.matchingCriteria,r.toAnnotation,r.toMeasurement),t.addMapping(s,"CircleROIStartEndThreshold",i.matchingCriteria,i.toAnnotation,i.toMeasurement)}({servicesManager:e,commandsManager:t,extensionManager:o,configuration:a})},getToolbarModule:function(){return[{name:"tmtv.RectangleROIThresholdOptions",defaultComponent:eE}]},getPanelModule:function({commandsManager:e,extensionManager:t,servicesManager:n}){let{toolbarService:o}=n.services;return[{name:"petSUV",iconName:"tab-patient-info",iconLabel:"Patient Info",label:"Patient Info",component:()=>(0,Y.jsx)(X,{})},{name:"tmtv",iconName:"tab-segmentation",iconLabel:"Segmentation",component:()=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(er.Toolbox,{buttonSectionId:o.sections.roiThresholdToolbox,title:el().t("ROIThresholdConfiguration:Threshold Tools")}),(0,Y.jsx)(ei,{commandsManager:e,servicesManager:n})]})},{name:"tmtvBox",iconName:"tab-segmentation",iconLabel:"Segmentation",label:"Segmentation Toolbox",component:()=>(0,Y.jsx)(er.Toolbox,{buttonSectionId:o.sections.roiThresholdToolbox,title:el().t("ROIThresholdConfiguration:Threshold Tools")})},{name:"tmtvExport",iconName:"tab-segmentation",iconLabel:"Segmentation",label:"Segmentation Export",component:()=>(0,Y.jsx)(en,{})}]},getHangingProtocolModule:function(){return(0,n.isNextViewportsEnabled)()&&[p,d,f].forEach(e=>{let t=e.displaySets?.find(e=>"ptDisplaySet"===e.id),o=t?.options?.colormap;o&&(o.opacity=n.NEXT_FUSION_PT_OPACITY)}),[{name:b.id,protocol:b}]},getCustomizationModule:function(){return[{name:"default",value:{...tr}}]},getCommandsModule:({servicesManager:e,commandsManager:t,extensionManager:o})=>(({servicesManager:e,commandsManager:t,extensionManager:o})=>{let{viewportGridService:a,uiNotificationService:r,displaySetService:i,hangingProtocolService:s,toolGroupService:l,cornerstoneViewportService:u,segmentationService:c}=e.services,{getEnabledElement:p}=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.common").exports;function d(){let{activeViewportId:e}=a.getState(),{element:t}=p(e)||{};return ef.getEnabledElement(t)}function h(e){return e.reduce((e,t)=>{let n=eu.annotation.selection.getAnnotationsSelectedByToolName(t);return e.concat(n)},[])}let g={getMatchingPTDisplaySet:({viewportMatchDetails:e})=>{let t=null;for(let[,n]of e){let{displaySetsInfo:e}=n,o=e.map(({displaySetInstanceUID:e})=>i.getDisplaySetByUID(e));if(o&&0!==o.length&&(t=o.find(e=>"PT"===e.Modality)))break}return t},getPTMetadata:({ptDisplaySet:e})=>{let t=o.getDataSources()[0].getImageIdsForDisplaySet(e)[0],n=eI.get("instance",t);if("PT"===n.Modality)return{SeriesTime:n.SeriesTime,Modality:n.Modality,PatientSex:n.PatientSex,PatientWeight:n.PatientWeight,RadiopharmaceuticalInformationSequence:{RadionuclideTotalDose:n.RadiopharmaceuticalInformationSequence[0].RadionuclideTotalDose,RadionuclideHalfLife:n.RadiopharmaceuticalInformationSequence[0].RadionuclideHalfLife,RadiopharmaceuticalStartTime:n.RadiopharmaceuticalInformationSequence[0].RadiopharmaceuticalStartTime,RadiopharmaceuticalStartDateTime:n.RadiopharmaceuticalInformationSequence[0].RadiopharmaceuticalStartDateTime}}},createNewLabelmapFromPT:async({label:e})=>{let{viewportMatchDetails:t}=s.getMatchDetails(),n=g.getMatchingPTDisplaySet({viewportMatchDetails:t}),o=null;for(let[e,{displaySetsInfo:a}]of t.entries())if(a.some(({displaySetInstanceUID:e})=>e===n.displaySetInstanceUID)){o=e;break}if(!n)return void r.error("No matching PT display set found");let a=c.getSegmentationRepresentations(o),l=i.getDisplaySetByUID(n.displaySetInstanceUID),u=await c.createLabelmapForDisplaySet(l,{label:`Segmentation ${a.length+1}`,labelIsGenerated:!0,segments:{1:{label:`${el().t("Segment")} 1`,active:!0}}});return c.addSegmentationRepresentation(o,{segmentationId:u}),u},thresholdSegmentationByRectangleROITool:({segmentationId:e,config:t,segmentIndex:n})=>{let{representationData:o}=eu.segmentation.state.getSegmentation(e),{displaySetMatchDetails:a}=s.getMatchDetails(),l=a.get("ctDisplaySet"),u=a.get("ptDisplaySet"),c=i.getDisplaySetByUID(l.displaySetInstanceUID),p=i.getDisplaySetByUID(u.displaySetInstanceUID),{volumeId:d}=o[eR.Labelmap],g=ef.cache.getVolume(d),f=h(ek);if(0===f.length)return void r.show({title:"Commands Module",message:"No ROIThreshold Tool is Selected",type:"error"});let{ptLower:m,ptUpper:v,ctLower:y,ctUpper:b}=em(f,p,t),{imageIds:S}=p,x=ef.cache.getVolumeContainingImageId(S[0]);if(!x)return void r.error("No PT volume found");let{imageIds:T}=c,w=ef.cache.getVolumeContainingImageId(T[0]);if(!w)return void r.error("No CT volume found");let R=x.volume,O=w.volume;return eu.utilities.segmentation.rectangleROIThresholdVolumeByRange(f,g,[{volume:R,lower:m,upper:v},{volume:O,lower:y,upper:b}],{overwrite:!0,segmentIndex:n,segmentationId:e})},calculateTMTV:async({segmentations:e})=>{let t=e.map(e=>e.segmentationId),n=await eu.utilities.segmentation.computeMetabolicStats({segmentationIds:t,segmentIndex:1});return c.setSegmentationGroupStats(t,n),n},exportTMTVReportCSV:async({segmentations:e,tmtv:n,config:o,options:a})=>{let r=t.runCommand("getSegmentationCSVReport",{segmentations:e}),i=0;for(let e in r)i+=r[e].namedStats_lesionGlycolysis.value;let s=[{key:"Total Lesion Glycolysis",value:{tlg:i.toFixed(4)}},{key:"Threshold Configuration",value:{...o}}];void 0!==n&&s.unshift({key:"Total Metabolic Tumor Volume",value:{tmtv:n}}),function(e,t,n={}){let o=e[Object.keys(e)[0]],a=Object.keys(o),r=[a.map(e=>e.toLowerCase().startsWith("namedstats_")?e.substring(11):e).join(",")];Object.values(e).forEach(e=>{let t=[];a.forEach(n=>{t.push(e[n]&&"object"==typeof e[n]?Array.isArray(e[n])?e[n].join(" "):e[n].value&&Array.isArray(e[n].value)?e[n].value.join(" "):e[n].value??e[n]:e[n])}),r.push(t.join(","))}),r.push(""),r.push(""),r.push(""),r.push(`Patient ID,${o.PatientID}`),r.push(`Study Date,${o.StudyDate}`),r.push(""),t.forEach(({key:e,value:t})=>{let n=[];n.push(`${e}`),Object.keys(t).forEach(e=>{n.push(`${e}`),n.push(`${t[e]}`)}),r.push(n.join(","))}),ev(r.join("\n"),{filename:n.filename??`${o.PatientID}_tmtv.csv`})}(r,s,a)},setStartSliceForROIThresholdTool:()=>{let{viewport:e}=d(),t=(0,n.getViewportFocalPoint)(e);if(!t)return;let o=h(ek)[0],a=eu.annotation.state.getAnnotation(o);a.data.startCoordinate=t,a.invalidated=!0,e.render()},setEndSliceForROIThresholdTool:()=>{let{viewport:e}=d(),t=h(ek)[0],o=eu.annotation.state.getAnnotation(t),a=(0,n.getViewportFocalPoint)(e);a&&(o.data.endCoordinate=a,o.invalidated=!0,e.render())},createTMTVRTReport:()=>{let e=eu.annotation.state.getAnnotationManager(),n=[];Object.keys(e.annotations).forEach(t=>{let o=e.annotations[t],a=ek.reduce((e,t)=>[...e,...o[t]??[]],[]);n.push(...a)}),t.runCommand("exportRTReportForAnnotations",{annotations:n})},getSegmentationCSVReport:({segmentations:e})=>{e&&e.length||(e=c.getSegmentations());let t={};for(let n of e){let{label:e,segmentationId:o,representationData:a}=n,r={id:o,label:e};if(!a){t[o]=r;continue}let{cachedStats:i}=n.segments[1]||{};if(i&&Object.entries(i).forEach(([e,t])=>{"object"!=typeof t?r[e]=t:Object.entries(t).forEach(([t,n])=>{r[`${e}_${t}`]=n})}),!n.representationData[eR.Labelmap]){t[o]=r;continue}let s=eu.utilities.segmentation.getReferenceVolumeForSegmentation(o);if(!s||!s.imageIds||!s.imageIds.length){t[o]=r;continue}let l=s.imageIds[0],u=w().classes.MetadataProvider.get("instance",l);if(!u){t[o]=r;continue}t[o]={...r,PatientID:u.PatientID??"000000",PatientName:eO(u.PatientName),StudyInstanceUID:u.StudyInstanceUID,SeriesInstanceUID:u.SeriesInstanceUID,StudyDate:u.StudyDate}}return t},exportRTReportForAnnotations:({annotations:e})=>{ew(e)},setFusionPTColormap:({toolGroupId:e,colormap:n})=>{let o=l.getToolGroup(e);if(!o)return;let{viewportMatchDetails:a}=s.getMatchDetails(),r=g.getMatchingPTDisplaySet({viewportMatchDetails:a});if(!r)return;let i=o.getViewportIds(),c=[];i.forEach(e=>{t.runCommand("setViewportColormap",{viewportId:e,displaySetInstanceUID:r.displaySetInstanceUID,colormap:{name:n}}),c.push(u.getCornerstoneViewport(e))}),c.forEach(e=>{e.render()})}},f={setEndSliceForROIThresholdTool:{commandFn:g.setEndSliceForROIThresholdTool},setStartSliceForROIThresholdTool:{commandFn:g.setStartSliceForROIThresholdTool},getMatchingPTDisplaySet:{commandFn:g.getMatchingPTDisplaySet},getPTMetadata:{commandFn:g.getPTMetadata},createNewLabelmapFromPT:{commandFn:g.createNewLabelmapFromPT},thresholdSegmentationByRectangleROITool:{commandFn:g.thresholdSegmentationByRectangleROITool},calculateTMTV:{commandFn:g.calculateTMTV},exportTMTVReportCSV:{commandFn:g.exportTMTVReportCSV},createTMTVRTReport:{commandFn:g.createTMTVRTReport},getSegmentationCSVReport:{commandFn:g.getSegmentationCSVReport},exportRTReportForAnnotations:{commandFn:g.exportRTReportForAnnotations},setFusionPTColormap:{commandFn:g.setFusionPTColormap}};return{actions:g,definitions:f,defaultContext:"TMTV:CORNERSTONE"}})({servicesManager:e,commandsManager:t,extensionManager:o})}})(),g})());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/extension-tmtv",
3
- "version": "3.14.0-beta.4",
3
+ "version": "3.14.0-beta.41",
4
4
  "description": "OHIF extension for Total Metabolic Tumor Volume",
5
5
  "author": "OHIF",
6
6
  "license": "MIT",
@@ -21,13 +21,11 @@
21
21
  "access": "public"
22
22
  },
23
23
  "peerDependencies": {
24
+ "@ohif/core": "3.14.0-beta.41",
24
25
  "dcmjs": "0.52.0",
25
26
  "dicom-parser": "1.8.21",
26
27
  "hammerjs": "2.0.8",
27
- "prop-types": "15.8.1",
28
- "react": "18.3.1",
29
- "@ohif/ui": "3.14.0-beta.4",
30
- "@ohif/core": "3.14.0-beta.4"
28
+ "react": "19.2.7"
31
29
  },
32
30
  "dependencies": {
33
31
  "@babel/runtime": "7.29.7",