@ohif/extension-cornerstone-dicom-seg 3.13.0-beta.99 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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/ui-next"),require("@cornerstonejs/core"),require("@cornerstonejs/tools/utilities"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@cornerstonejs/tools/enums"),require("@ohif/core/src/contextProviders/SystemProvider"),require("@ohif/extension-default")):"function"==typeof define&&define.amd?define(["@ohif/core","@cornerstonejs/adapters","@ohif/extension-cornerstone","@ohif/ui-next","@cornerstonejs/core","@cornerstonejs/tools/utilities","dcmjs","@ohif/i18n","@cornerstonejs/tools","@cornerstonejs/tools/enums","@ohif/core/src/contextProviders/SystemProvider","@ohif/extension-default"],t):"object"==typeof exports?exports["ohif-extension-cornerstone-dicom-seg"]=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@ohif/extension-cornerstone"),require("@ohif/ui-next"),require("@cornerstonejs/core"),require("@cornerstonejs/tools/utilities"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@cornerstonejs/tools/enums"),require("@ohif/core/src/contextProviders/SystemProvider"),require("@ohif/extension-default")):e["ohif-extension-cornerstone-dicom-seg"]=t(e["@ohif/core"],e["@cornerstonejs/adapters"],e["@ohif/extension-cornerstone"],e["@ohif/ui-next"],e["@cornerstonejs/core"],e["@cornerstonejs/tools/utilities"],e.dcmjs,e["@ohif/i18n"],e["@cornerstonejs/tools"],e["@cornerstonejs/tools/enums"],e["@ohif/core/src/contextProviders/SystemProvider"],e["@ohif/extension-default"])}(globalThis,(e,t,n,r,o,a,i,s,l,c,u,m)=>(()=>{var d,g,p={992(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(326),o=n(55);let a=function({commandsManager:e,toolGroupService:t,customizationService:n,toolGroupId:r}){let o=n.getCustomization("cornerstone.overlayViewportTools"),a=e.run("initializeSegmentLabelTool",{tools:o});return t.createToolGroupAndAddTools(r,a)};var i=n(669),s=n(404),l=n(492);function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}let u=function(e){let{servicesManager:t,commandsManager:n}=(0,l.useSystem)(),{children:u,displaySets:m,viewportOptions:d}=e,g=d.viewportId,{displaySetService:p,toolGroupService:f,segmentationService:S,customizationService:y}=t.services,b=y.getCustomization("ui.loadingIndicatorTotalPercent"),v=`SEGToolGroup-${g}`;if(m.length>1)throw Error("SEG viewport should only have a single display set");let h=m[0],[I,E]=(0,o.useViewportGrid)(),{setPositionPresentation:x}=(0,i.usePositionPresentationStore)(),[w,C]=(0,r.useState)(!h.isLoaded),[O,N]=(0,r.useState)({percentComplete:null,totalSegments:null}),D=(0,r.useRef)(null),{viewports:T,activeViewportId:P}=I,j=h.referencedDisplaySetInstanceUID;if(!j){let e=y.getCustomization("missingReferenceDisplaySetHandler");if("function"!=typeof e)return void console.log("No customization 'missingReferenceDisplaySetHandler' registered. Skipping SEG rendering.");{let{handled:t}=e();if(t)return}}let R=p.getDisplaySetByUID(j),U=function(e,t){let{SharedFunctionalGroupsSequence:n}=t.instance,{PixelMeasuresSequence:r}=Array.isArray(n)?n[0]:n,{SpacingBetweenSlices:o,SliceThickness:a}=Array.isArray(r)?r[0]:r,i=e.images[0];return{PatientID:i.PatientID,PatientName:i.PatientName,PatientSex:i.PatientSex,PatientAge:i.PatientAge,SliceThickness:i.SliceThickness||a,StudyDate:i.StudyDate,SeriesDescription:i.SeriesDescription,SeriesInstanceUID:i.SeriesInstanceUID,SeriesNumber:i.SeriesNumber,ManufacturerModelName:i.ManufacturerModelName,SpacingBetweenSlices:i.SpacingBetweenSlices||o}}(R,h);D.current={displaySet:R,metadata:U};let A=(0,r.useCallback)(()=>r.createElement(i.OHIFCornerstoneViewport,c({},e,{displaySets:[h],viewportOptions:{viewportType:d.viewportType,toolGroupId:v,orientation:d.orientation,viewportId:d.viewportId,presentationIds:d.presentationIds},onElementEnabled:t=>{e.onElementEnabled?.(t)}})),[g,h,v,e,d]);(0,r.useEffect)(()=>{w||g===P&&function({servicesManager:e,segDisplaySet:t,viewportId:n,preHydrateCallbacks:r,hydrateCallback:o}){i.utils.promptHydrationDialog({servicesManager:e,viewportId:n,displaySet:t,preHydrateCallbacks:r,hydrateCallback:o,type:"SEG"})}({servicesManager:t,viewportId:g,segDisplaySet:h,hydrateCallback:async()=>(await n.runCommand("hydrateSecondaryDisplaySet",{displaySet:h,viewportId:g}),!0)})},[t,g,h,w,n,P]),(0,r.useEffect)(()=>{S.clearSegmentationRepresentations(g);let{unsubscribe:e}=S.subscribe(S.EVENTS.SEGMENTATION_LOADING_COMPLETE,e=>{if(e.segDisplaySet?.displaySetInstanceUID===h?.displaySetInstanceUID&&C(!1),h?.firstSegmentedSliceImageId&&d?.presentationIds){let{firstSegmentedSliceImageId:e}=h,{presentationIds:t}=d;x(t.positionPresentationId,{viewReference:{referencedImageId:e}})}});return()=>{e()}},[h]),(0,r.useEffect)(()=>{let{unsubscribe:e}=S.subscribe(S.EVENTS.SEGMENT_LOADING_COMPLETE,({percentComplete:e,numSegments:t})=>{N({percentComplete:e,totalSegments:t})});return()=>{e()}},[h]),(0,r.useEffect)(()=>{let e=p.subscribe(p.EVENTS.DISPLAY_SETS_REMOVED,({displaySetInstanceUIDs:e})=>{let t=T.get(P);e.includes(t.displaySetInstanceUID)&&E.setDisplaySetsForViewport({viewportId:P,displaySetInstanceUIDs:[]})});return()=>{e.unsubscribe()}},[]),(0,r.useEffect)(()=>{let e=f.getToolGroup(v);if(!e)return n.runCommand("updateStoredSegmentationPresentation",{displaySet:h,type:s.SegmentationRepresentations.Labelmap}),S.clearSegmentationRepresentations(g),e=a({commandsManager:n,toolGroupService:f,customizationService:y,toolGroupId:v}),()=>{S.clearSegmentationRepresentations(g),f.destroyToolGroup(v)}},[]);let k=null;return D.current&&R.displaySetInstanceUID===D.current.displaySet.displaySetInstanceUID?(u&&u.length&&(k=u.map((e,t)=>e&&r.cloneElement(e,{viewportId:g,key:t}))),r.createElement(r.Fragment,null,r.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},w&&r.createElement(b,{className:"h-full w-full",totalNumbers:O.totalSegments,percentComplete:O.percentComplete,loadingText:"Loading SEG..."}),A(),k))):null}},249(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=(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")),l=(Symbol.for("react.memo"),Symbol.for("react.lazy")),c=Symbol.iterator,u={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,d={};function g(e,t,n){this.props=e,this.context=t,this.refs=d,this.updater=n||u}function p(){}function f(e,t,n){this.props=e,this.context=t,this.refs=d,this.updater=n||u}g.prototype.isReactComponent={},g.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")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},p.prototype=g.prototype;var S=f.prototype=new p;S.constructor=f,m(S,g.prototype),S.isPureReactComponent=!0;var y=Array.isArray,b=Object.prototype.hasOwnProperty,v=null,h={key:!0,ref:!0,__self:!0,__source:!0};function I(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){(0===e._status||-1===e._status)&&(e._status=1,e._result=t)},function(t){(0===e._status||-1===e._status)&&(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var E=null;t.Fragment=o,t.Suspense=s,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=m({},e.props),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=v),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)b.call(t,c)&&!h.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==l?l[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=r;else if(1<c){l=Array(c);for(var u=0;u<c;u++)l[u]=arguments[u+2];o.children=l}return{$$typeof:n,type:e.type,key:a,ref:i,props:o,_owner:s}},t.createContext=function(e){return(e={$$typeof:i,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=function(e,t,r){var o,a={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)b.call(t,o)&&!h.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=r;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===a[o]&&(a[o]=l[o]);return{$$typeof:n,type:e,key:i,ref:s,props:a,_owner:v}},t.lazy=function(e){return{$$typeof:l,_payload:{_status:-1,_result:e},_init:I}},t.useCallback=function(e,t){return E.useCallback(e,t)},t.useContext=function(e){return E.useContext(e)},t.useEffect=function(e,t){return E.useEffect(e,t)},t.useRef=function(e){return E.useRef(e)},t.useState=function(e){return E.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=o},713(e){"use strict";e.exports=l},404(e){"use strict";e.exports=c},154(e){"use strict";e.exports=a},2(t){"use strict";t.exports=e},492(e){"use strict";e.exports=u},669(e){"use strict";e.exports=n},438(e){"use strict";e.exports=m},545(e){"use strict";e.exports=s},55(e){"use strict";e.exports=r},111(e){"use strict";e.exports=i}},f={};function S(e){var t=f[e];if(void 0!==t)return t.exports;var n=f[e]={exports:{}};return p[e](n,n.exports,S),n.exports}S.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return S.d(t,{a:t}),t},S.d=(e,t)=>{for(var n in t)S.o(t,n)&&!S.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},S.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),S.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d=[],S.O=(e,t,n,r)=>{if(t){r=r||0;for(var o=d.length;o>0&&d[o-1][2]>r;o--)d[o]=d[o-1];d[o]=[t,n,r];return}for(var a=1/0,o=0;o<d.length;o++){for(var[t,n,r]=d[o],i=!0,s=0;s<t.length;s++)(!1&r||a>=r)&&Object.keys(S.O).every(e=>S.O[e](t[s]))?t.splice(s--,1):(i=!1,r<a&&(a=r));if(i){d.splice(o--,1);var l=n();void 0!==l&&(e=l)}}return e},S.F={},S.E=e=>{Object.keys(S.F).map(t=>{S.F[t](e)})},g={509:0},S.F.j=e=>{if(!S.o(g,e)||void 0===g[e]){g[e]=null;var t=document.createElement("link");S.nc&&t.setAttribute("nonce",S.nc),t.rel="prefetch",t.as="script",t.href=S.p+S.u(e),document.head.appendChild(t)}},S.O.j=e=>0===g[e],S.O(0,[509],()=>{[509].map(S.E)},5);var y={};return(()=>{"use strict";S.r(y),S.d(y,{default:()=>X});let e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-seg"}').UU,t=`${e}.sopClassHandlerModule.dicom-seg`;var n,r=S(326),o=S(2),a=S(545),i=S.n(a),s=S(557),l=S(713),c=S(142),u=S(111),m=S.n(u);let d=["1.2.840.10008.5.1.4.1.1.66.4","1.2.840.10008.5.1.4.1.1.66.7"],g={};async function p({extensionManager:e,servicesManager:t,segDisplaySet:n,headers:r}){let o=e.getModuleEntry("@ohif/extension-cornerstone.utilityModule.common"),{segmentationService:a,uiNotificationService:i}=t.services,{dicomLoaderService:u}=o.exports,d=await u.findDicomDataPromise(n,null,r),g=t.services.displaySetService.getDisplaySetByUID(n.referencedDisplaySetInstanceUID);if(!g)throw Error("referencedDisplaySet is missing for SEG");let{imageIds:f}=g;if(!f){let{images:e}=g;f=e.map(e=>e.imageId)}s.eventTarget.addEventListener(c.Enums.Events.SEGMENTATION_LOAD_PROGRESS,e=>{let{percentComplete:t}=e.detail;a._broadcastEvent(a.EVENTS.SEGMENT_LOADING_COMPLETE,{percentComplete:t})});let S=await c.adaptersSEG.Cornerstone3D.Segmentation.createFromDICOMSegBuffer(f,d,{metadataProvider:s.metaData,tolerance:.001}),y=!0;S.segMetadata.data.forEach((e,t)=>{if(t>0)if(e.rgba=e.RecommendedDisplayCIELabValue,e.rgba){var n;n=e.rgba,e.rgba=m().data.Colors.dicomlab2RGB(n).map(e=>Math.round(255*e))}else y=!1,e.rgba=l.CONSTANTS.COLOR_LUT[t%l.CONSTANTS.COLOR_LUT.length]}),y||i.show({title:"DICOM SEG import",message:"RecommendedDisplayCIELabValue not found for one or more segments. The default color was used instead.",type:"warning",duration:5e3}),Object.assign(n,S)}let f={id:"@ohif/seg",name:"Segmentations",protocolMatchingRules:[],toolGroupIds:["default"],numberOfPriorsReferenced:0,defaultViewport:{viewportOptions:{viewportType:"stack",toolGroupId:"default",allowUnmatchedView:!0,syncGroups:[{type:"hydrateseg",id:"sameFORId",source:!0,target:!0}]},displaySets:[{id:"segDisplaySetId",matchedDisplaySetsIndex:-1}]},displaySetSelectors:{segDisplaySetId:{seriesMatchingRules:[{attribute:"Modality",constraint:{equals:"SEG"}}]}},stages:[{name:"Segmentations",viewportStructure:{layoutType:"grid",properties:{rows:1,columns:1}},viewports:[{viewportOptions:{allowUnmatchedView:!0,syncGroups:[{type:"hydrateseg",id:"sameFORId",source:!0,target:!0}]},displaySets:[{id:"segDisplaySetId"}]}]}]};var b=S(438);let{Cornerstone3D:{Segmentation:{generateSegmentation:v}}}=c.adaptersSEG,{Cornerstone3D:{RTSS:{generateRTSSFromRepresentation:h}}}=c.adaptersRT;var I=S(669),E=S(55),x=S(154);function w(e){return(w="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 C(e){var t=function(e,t){if("object"!=w(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=w(r))return r;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==w(t)?t:t+""}S(741),Object.create(null);var O=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,N={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},D=function(e){return N[e]},T={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(O,D)}},P=(0,r.createContext)(),j=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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,C(r.key),r)}}(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}();function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function U(){if(console&&console.warn){for(var e,t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];"string"==typeof n[0]&&(n[0]="react-i18next:: ".concat(n[0])),(e=console).warn.apply(e,n)}}var A={};function k(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&A[t[0]]||("string"==typeof t[0]&&(A[t[0]]=new Date),U.apply(void 0,t))}var _=function(e,t){return function(){e.isInitialized?t():e.on("initialized",function n(){setTimeout(function(){e.off("initialized",n)},0),t()})}};function M(e,t,n){e.loadNamespaces(t,_(e,n))}function L(e,t,n,r){"string"==typeof n&&(n=[n]),n.forEach(function(t){0>e.options.ns.indexOf(t)&&e.options.ns.push(t)}),e.loadLanguages(t,_(e,r))}function F(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?F(Object(n),!0).forEach(function(t){var r,o;r=t,o=n[t],(r=C(r))in e?Object.defineProperty(e,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[r]=o}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var G=function(e,t){var n=(0,r.useRef)();return(0,r.useEffect)(function(){n.current=t?n.current:e},[e,t]),n.current};function V(e){var t,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=o.i18n,i=(0,r.useContext)(P)||{},s=i.i18n,l=i.defaultNS,c=a||s||n;if(c&&!c.reportNamespaces&&(c.reportNamespaces=new j),!c){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"===w(t)&&"string"==typeof t.defaultValue?t.defaultValue:Array.isArray(e)?e[e.length-1]:e},m=[u,{},!1];return m.t=u,m.i18n={},m.ready=!1,m}c.options.react&&void 0!==c.options.react.wait&&k("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var d=q(q(q({},T),c.options.react),o),g=d.useSuspense,p=d.keyPrefix,f=e||l||c.options&&c.options.defaultNS;f="string"==typeof f?[f]:f||["translation"],c.reportNamespaces.addUsedNamespaces&&c.reportNamespaces.addUsedNamespaces(f);var S=(c.isInitialized||c.initializedStoreOnce)&&f.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]:{},r=t.languages[0],o=!!t.options&&t.options.fallbackLng,a=t.languages[t.languages.length-1];if("cimode"===r.toLowerCase())return!0;var i=function(e,n){var r=t.services.backendConnector.state["".concat(e,"|").concat(n)];return -1===r||2===r};return(!(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1)||!t.services.backendConnector.backend||!t.isLanguageChangingTo||!!i(t.isLanguageChangingTo,e))&&!!(t.hasResourceBundle(r,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||i(r,e)&&(!o||i(a,e)))}(e,t,n):t.hasLoadedNamespace(e,{lng:n.lng,precheck:function(t,r){if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}):(k("i18n.languages were undefined or empty",t.languages),!0)}(e,c,d)});function y(){return c.getFixedT(o.lng||null,"fallback"===d.nsMode?f:f[0],p)}var b=function(e){if(Array.isArray(e))return e}(t=(0,r.useState)(y))||function(e){var t=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,o,a,i=[],s=!0,l=!1;try{o=(t=t.call(e)).next,!1;for(;!(s=(n=o.call(t)).done)&&(i.push(n.value),2!==i.length);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(l)throw r}}return i}}(t)||function(e){if(e){if("string"==typeof e)return R(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)?R(e,2):void 0}}(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.")}(),v=b[0],h=b[1],I=f.join();o.lng&&(I="".concat(o.lng).concat(I));var E=G(I),x=(0,r.useRef)(!0);(0,r.useEffect)(function(){var e=d.bindI18n,t=d.bindI18nStore;function n(){x.current&&h(y)}return x.current=!0,S||g||(o.lng?L(c,o.lng,f,function(){x.current&&h(y)}):M(c,f,function(){x.current&&h(y)})),S&&E&&E!==I&&x.current&&h(y),e&&c&&c.on(e,n),t&&c&&c.store.on(t,n),function(){x.current=!1,e&&c&&e.split(" ").forEach(function(e){return c.off(e,n)}),t&&c&&t.split(" ").forEach(function(e){return c.store.off(e,n)})}},[c,I]);var C=(0,r.useRef)(!0);(0,r.useEffect)(function(){x.current&&!C.current&&h(y),C.current=!1},[c,p]);var O=[v,c,S];if(O.t=v,O.i18n=c,O.ready=S,S||!S&&!g)return O;throw new Promise(function(e){o.lng?L(c,o.lng,f,function(){return e()}):M(c,f,function(){return e()})})}let{LogicalOperation:B}=x.contourSegmentation,$=[{value:"merge",logicalOperation:B.Union,label:"Merge",icon:"actions-combine-merge",helperIcon:"helper-combine-merge"},{value:"intersect",logicalOperation:B.Intersect,label:"Intersect",icon:"actions-combine-intersect",helperIcon:"helper-combine-intersect"},{value:"subtract",logicalOperation:B.Subtract,label:"Subtract",icon:"actions-combine-subtract",helperIcon:"helper-combine-subtract"}];function H({label:e,value:t,onValueChange:n,segments:o,placeholder:a="Select a segment"}){let{t:i}=V("SegmentationPanel");return r.createElement("div",{className:"flex justify-between gap-6"},r.createElement("div",null,e),r.createElement(E.Select,{key:`select-segment-${e}`,onValueChange:n,value:t},r.createElement(E.SelectTrigger,{className:"overflow-hidden"},r.createElement(E.SelectValue,{placeholder:i(a)})),r.createElement(E.SelectContent,null,o.map(e=>r.createElement(E.SelectItem,{key:e.segmentIndex,value:e.segmentIndex.toString()},e.label)))))}let z=function(){let{servicesManager:e}=(0,o.useSystem)(),{segmentationService:t}=e.services,{t:n}=V("SegmentationPanel"),{segmentationsWithRepresentations:a}=(0,I.useActiveViewportSegmentationRepresentations)(),i=a?.find(({representation:e})=>e?.active),s=i?Object.values(i.segmentation.segments):[],l=i?t.getNextAvailableSegmentIndex(i.segmentation.segmentationId):1,c=s.find(e=>e.active),u=c?.segmentIndex||0,[m,d]=(0,r.useState)($[0]),[g,p]=(0,r.useState)(u?.toString()||""),[f,S]=(0,r.useState)(""),[y,b]=(0,r.useState)(!1),[v,h]=(0,r.useState)("");(0,r.useEffect)(()=>{p(u?.toString()||null)},[u]),(0,r.useEffect)(()=>{h(`Segment ${l}`)},[l]);let x=(0,o.useRunCommand)(),w=(0,r.useCallback)(()=>{let e=g;y&&(e=l.toString(),x("addSegment",{segmentationId:i.segmentation.segmentationId,config:{label:v,segmentIndex:l}})),x("applyLogicalContourOperation",{segmentAInfo:{segmentationId:i.segmentation.segmentationId,segmentIndex:parseInt(g)},segmentBInfo:{segmentationId:i.segmentation.segmentationId,segmentIndex:parseInt(f)},resultSegmentInfo:{segmentationId:i.segmentation.segmentationId,segmentIndex:parseInt(e)},logicalOperation:m.logicalOperation})},[i?.segmentation?.segmentationId,y,v,l,m.logicalOperation,x,g,f]);return r.createElement("div",{className:"flex w-[245px] flex-col gap-4"},r.createElement("div",{className:"flex items-start justify-between"},r.createElement("div",{className:"flex w-auto flex-col items-center gap-2 text-base font-normal leading-none"},r.createElement(E.Tabs,{value:m.value},r.createElement(E.TabsList,{className:"inline-flex space-x-1"},$.map(e=>{let{value:t,icon:n}=e;return r.createElement(E.TabsTrigger,{value:t,key:`logical-contour-operation-${t}`,onClick:()=>d(e)},r.createElement(E.Icons.ByName,{name:n}))}))),r.createElement("div",null,n(m.label))),r.createElement("div",{className:"bg-muted flex h-[62px] w-[88px] items-center justify-center rounded-lg"},r.createElement(E.Icons.ByName,{name:m.helperIcon}))),r.createElement(H,{label:"A",value:g,onValueChange:p,segments:s}),r.createElement(H,{label:"B",value:f,onValueChange:S,segments:s}),r.createElement("div",{className:"flex justify-end pl-[34px]"},r.createElement(E.Button,{className:"border-primary/60 grow border",variant:"ghost",onClick:()=>{w()}},n(m.label))),r.createElement(E.Separator,{className:"bg-input mt-2 h-[1px]"}),r.createElement("div",{className:"flex flex-col gap-2"},r.createElement("div",{className:"flex items-center justify-start gap-2"},r.createElement(E.Switch,{id:"logical-contour-operations-create-new-segment-switch",onCheckedChange:b}),r.createElement(E.Label,{htmlFor:"logical-contour-operations-create-new-segment-switch"},n("Create a new segment"))),r.createElement("div",{className:"pl-9"},r.createElement(E.Input,{className:(0,E.cn)(y?"visible":"hidden"),disabled:!y,id:"logical-contour-operations-create-new-segment-input",type:"text",placeholder:n("New segment name"),value:v,onChange:e=>h(e.target.value)}))))},Y=function(){let[e,t]=(0,r.useState)(10),n=(0,o.useRunCommand)(),{t:a}=V("SegmentationPanel");return r.createElement("div",{className:"flex w-auto w-[252px] flex-col gap-[8px] text-base font-normal leading-none"},r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,a("Fill contour holes")),r.createElement(E.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{n("removeContourHoles")}},a("Fill Holes")),r.createElement(E.Separator,{className:"bg-input mt-[20px] h-[1px]"})),r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,a("Remove Small Contours")),r.createElement("div",{className:"flex items-center gap-2 self-end"},r.createElement(E.Label,{htmlFor:"simplify-contour-options",className:"text-muted-foreground"},a("Area Threshold")),r.createElement(E.Input,{id:"simplify-contour-options",className:"w-20",type:"number",value:e,onChange:e=>t(Number(e.target.value))})),r.createElement(E.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{n("removeSmallContours",{areaThreshold:e})}},a("Remove Small Contours")),r.createElement(E.Separator,{className:"bg-input mt-[20px] h-[1px]"})),r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,a("Create New Segment from Holes")),r.createElement(E.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{n("convertContourHoles")}},a("Create New Segment"))))},J=function(){let e=(0,o.useRunCommand)(),{t}=V("SegmentationPanel");return r.createElement("div",{className:"flex w-auto w-[245px] flex-col gap-[8px] text-base font-normal leading-none"},r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,t("Smooth all edges")),r.createElement(E.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{e("smoothContours")}},t("Smooth Edges")),r.createElement(E.Separator,{className:"bg-input mt-[20px] h-[1px]"})),r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,t("Remove extra points")),r.createElement(E.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{e("decimateContours")}},t("Remove Points"))))};function K(){return(K=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}let W=r.lazy(()=>Promise.resolve().then(S.bind(S,992))),Q=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(W,e)),X={id:e,getCommandsModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>{let{segmentationService:r,displaySetService:o,viewportGridService:a}=e.services,i={loadSegmentationsForViewport:async({segmentations:e,viewportId:t})=>{let n=(({viewportId:e,viewportGridService:t})=>{let{viewports:n,activeViewportId:r}=t.getState();return n.get(e||r)})({viewportId:t,viewportGridService:a}),i=n.displaySetInstanceUIDs[0],s=e[0],l=s.segmentationId,c=s.config.label,u=s.config.segments,m=o.getDisplaySetByUID(i);return await r.createLabelmapForDisplaySet(m,{segmentationId:l,segments:u,label:c}),r.addOrUpdateSegmentation(s),await r.addSegmentationRepresentation(n.viewportId,{segmentationId:l}),l},generateSegmentation:({segmentationId:e,options:t={}})=>{let n=l.segmentation.state.getSegmentation(e),o=t.predecessorImageId??n.predecessorImageId,{imageIds:a}=n.representationData.Labelmap,i=a.map(e=>s.cache.getImage(e)),c=i.map(e=>s.cache.getImage(e.referencedImageId)),u=[],d=0;for(let e of i){let t=new Set,n=e.getPixelData(),{rows:r,columns:o}=e;for(let e=0;e<n.length;e++){let r=n[e];0!==r&&t.add(r)}u[d++]={segmentsOnLabelmap:Array.from(t),pixelData:n,rows:r,columns:o}}let g={segmentsOnLabelmap:Array.from(new Set(u.map(e=>e.segmentsOnLabelmap).flat())),metadata:[],labelmaps2D:u},p=r.getSegmentation(e),f=r.getRepresentationsForSegmentation(e);return Object.entries(p.segments).forEach(([t,n])=>{if(!n)return;let{label:o}=n,a=f[0],i=r.getSegmentColor(a.viewportId,e,n.segmentIndex),s=m().data.Colors.rgb2DICOMLAB(i.slice(0,3).map(e=>e/255)).map(e=>Math.round(e)),l={SegmentNumber:t.toString(),SegmentLabel:o,SegmentAlgorithmType:n?.algorithmType||"MANUAL",SegmentAlgorithmName:n?.algorithmName||"OHIF Brush",RecommendedDisplayCIELabValue:s,SegmentedPropertyCategoryCodeSequence:{CodeValue:"T-D0050",CodingSchemeDesignator:"SRT",CodeMeaning:"Tissue"},SegmentedPropertyTypeCodeSequence:{CodeValue:"T-D0050",CodingSchemeDesignator:"SRT",CodeMeaning:"Tissue"}};g.metadata[t]=l}),v(c,g,s.metaData,{predecessorImageId:o,...t})},downloadSegmentation:({segmentationId:e})=>{let t=r.getSegmentation(e),o=i.generateSegmentation({segmentationId:e});n.runCommand("createStoreFunction",{dataSource:"download",defaultFileName:`${t.label}.dcm`})(o.dataset)},storeSegmentation:async({segmentationId:o,dataSource:a,modality:s="SEG"})=>{let l=r.getSegmentation(o);if(!l)throw Error("No segmentation found");let{label:c,predecessorImageId:u}=l,{value:m,dataSourceName:d,series:g,priorSeriesNumber:p,action:f}=await (0,b.createReportDialogPrompt)({servicesManager:e,extensionManager:t,predecessorImageId:u,title:"Store Segmentation",modality:s,enableDownload:!0});if(1!==f)return;let S="RTSTRUCT"===s?`rtss-${o}.dcm`:`${c||"segmentation"}.dcm`,y=n.runCommand("createStoreFunction",{dataSource:d,defaultFileName:S});if(!y)throw Error(`No valid store for dataSource: ${d}`);try{let e={segmentationId:o,options:{SeriesDescription:g?void 0:m||c||"Contour Series",SeriesNumber:g?void 0:1+p,predecessorImageId:g}},t="SEG"===s&&i.generateSegmentation(e)||"RTSTRUCT"===s&&i.generateContour(e),n=await t;if(!n?.dataset)throw Error("Error during segmentation generation");let{dataset:r}=n;return"No Study ID"===r.StudyID&&(r.StudyID=""),await y(r,{}),r}catch(e){throw console.debug("Error storing segmentation:",e),e}},generateContour:async e=>{let{segmentationId:t,options:n}=e,o=r.getSegmentation(t),a=r.getRepresentationsForSegmentation(t)[0];Object.entries(o.segments).forEach(([e,n])=>{n.color=r.getSegmentColor(a.viewportId,t,Number(e))});let i=n?.predecessorImageId??o.predecessorImageId;return{dataset:await h(o,{predecessorImageId:i,...n})}},downloadRTSS:async e=>{let{dataset:t}=await i.generateContour(e),{InstanceNumber:r=1,SeriesInstanceUID:o}=t,a=n.runCommand("createStoreFunction",{dataSource:"download",defaultFileName:`rtss-${o}-${r}.dcm`});await a(t)},toggleActiveSegmentationUtility:({itemId:e})=>{let{uiState:t,setUIState:n}=b.useUIStateStore.getState(),r=t.activeSegmentationUtility===e;console.log("toggleActiveSegmentationUtility",r,e),n("activeSegmentationUtility",r?null:e)}},c={loadSegmentationsForViewport:i.loadSegmentationsForViewport,generateSegmentation:i.generateSegmentation,downloadSegmentation:i.downloadSegmentation,storeSegmentation:i.storeSegmentation,downloadRTSS:i.downloadRTSS,toggleActiveSegmentationUtility:i.toggleActiveSegmentationUtility};return{actions:i,definitions:c,defaultContext:"SEGMENTATION"}},getToolbarModule:function({servicesManager:e}){let{segmentationService:t,toolbarService:n,toolGroupService:r}=e.services;return[{name:"cornerstone.SimplifyContourOptions",defaultComponent:Y},{name:"cornerstone.LogicalContourOperationsOptions",defaultComponent:z},{name:"cornerstone.SmoothContoursOptions",defaultComponent:J},{name:"cornerstone.isActiveSegmentationUtility",evaluate:({button:e})=>{let{uiState:t}=b.useUIStateStore.getState();return{isActive:t.activeSegmentationUtility===e.id}}},{name:"evaluate.cornerstone.hasSegmentation",evaluate:({viewportId:e})=>{let n=t.getSegmentationRepresentations(e);return{disabled:!n?.length}}},{name:"evaluate.cornerstone.hasSegmentationOfType",evaluate:({viewportId:e,segmentationRepresentationType:n})=>{let r=t.getSegmentationRepresentations(e);return r?.length?r.some(e=>e.type===n)?void 0:{disabled:!0,disabledText:`No ${n} segmentations available`}:{disabled:!0,disabledText:i().t("SegmentationPanel:No segmentations available")}}},{name:"evaluate.cornerstone.segmentation",evaluate:({viewportId:e,button:o,toolNames:a,disabledText:s})=>{let l=t.getSegmentationRepresentations(e);if(!l?.length)return{disabled:!0,disabledText:s??i().t("SegmentationPanel:No segmentations available")};if(!Object.keys(t.getActiveSegmentation(e).segments).length)return{disabled:!0,disabledText:i().t("SegmentationPanel:Add segment to enable this tool")};let c=r.getToolGroupForViewport(e);if(!c)return{disabled:!0,disabledText:s??i().t("SegmentationPanel:Not available on the current viewport")};if(!a)return{disabled:!1};let u=n.getToolNameForButton(o);return c.hasTool(u)||a?{disabled:!1,isActive:a?a.includes(c.getActivePrimaryMouseButtonTool()):c.getActivePrimaryMouseButtonTool()===u}:{disabled:!0,disabledText:s??i().t("SegmentationPanel:Not available on the current viewport")}}},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",evaluate:({button:e,radiusOptionId:t})=>{let o=r.getToolGroupIds();if(o?.length)for(let r of o){let o=l.utilities.segmentation.getBrushSizeForToolGroup(r);o&&(n.getOptionById(e,t).value=o)}}}]},getViewportModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>[{name:"dicom-seg",component:o=>r.createElement(Q,K({servicesManager:e,extensionManager:t,commandsManager:n},o))}],getSopClassHandlerModule:function(e){let{servicesManager:n,extensionManager:r}=e;return[{name:"dicom-seg",sopClassUids:d,getDisplaySetsFromSeries:e=>(function(e,n,r){o.utils.sortStudyInstances(e);let a=e[e.length-1],{StudyInstanceUID:s,SeriesInstanceUID:c,SOPInstanceUID:u,SeriesDescription:m="",SeriesNumber:f,SeriesDate:S,StructureSetDate:y,SOPClassUID:b,FrameOfReferenceUID:v,wadoRoot:h,wadoUri:I,wadoUriRoot:E,imageId:x}=a,w={Modality:"SEG",loading:!1,isReconstructable:!1,displaySetInstanceUID:o.utils.guid(),SeriesDescription:m,SeriesNumber:f,SeriesDate:S||y||"",SOPInstanceUID:u,SeriesInstanceUID:c,StudyInstanceUID:s,SOPClassHandlerId:t,SOPClassUID:b,FrameOfReferenceUID:v,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,isDerivedDisplaySet:!0,isLoaded:!1,isHydrated:!1,segments:{},sopClassUids:d,instance:a,predecessorImageId:x,instances:[a],wadoRoot:h,wadoUriRoot:E,wadoUri:I,isOverlayDisplaySet:!0,label:m||`${i().t("Series")} ${f} - ${i().t("SEG")}`},C=a.ReferencedSeriesSequence;if(!C)return void console.error("ReferencedSeriesSequence is missing for the SEG");let O=C[0]||C;w.referencedImages=a.ReferencedSeriesSequence.ReferencedInstanceSequence,w.referencedSeriesInstanceUID=O.SeriesInstanceUID;let{displaySetService:N}=n.services,D=N.getDisplaySetsForReferences(a.ReferencedSeriesSequence);D?.length>1&&console.warn("Segmentation does not currently handle references to multiple series, defaulting to first series");let T=D[0];if(T)w.referencedDisplaySetInstanceUID=T.displaySetInstanceUID,w.isReconstructable=T.isReconstructable,w.FrameOfReferenceUID=T.FrameOfReferenceUID;else{let{unsubscribe:e}=N.subscribe(N.EVENTS.DISPLAY_SETS_ADDED,({displaySetsAdded:t})=>{let n=t[0];n.SeriesInstanceUID===w.referencedSeriesInstanceUID&&(w.referencedDisplaySetInstanceUID=n.displaySetInstanceUID,w.isReconstructable=n.isReconstructable,w.FrameOfReferenceUID=n.FrameOfReferenceUID,e())})}return w.load=async({headers:e})=>await function(e,t,n,r){var o;let{SOPInstanceUID:a}=e,{segmentationService:i}=t.services;return(e.loading||e.isLoaded)&&g[a]&&(o=e,l.segmentation.state.getSegmentation(o.displaySetInstanceUID))||(e.loading=!0,g[a]=new Promise(async(o,a)=>{if(!e.segments||0===Object.keys(e.segments).length)try{await p({extensionManager:n,servicesManager:t,segDisplaySet:e,headers:r})}catch(t){return e.loading=!1,a(t)}i.createSegmentationForSEGDisplaySet(e).then(()=>{e.loading=!1,o()}).catch(t=>{e.loading=!1,a(t)})})),g[a]}(w,n,r,e),[w]})(e,n,r)}]},getHangingProtocolModule:function(){return[{name:f.id,protocol:f}]}}})(),y=S.O(y)})());
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("@cornerstonejs/core"),require("@cornerstonejs/tools/utilities"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@cornerstonejs/tools/enums"),require("@ohif/core/src/contextProviders/SystemProvider"),require("@ohif/extension-default")):"function"==typeof define&&define.amd?define(["@ohif/core","@cornerstonejs/adapters","@ohif/extension-cornerstone","@ohif/ui-next","@cornerstonejs/core","@cornerstonejs/tools/utilities","dcmjs","@ohif/i18n","@cornerstonejs/tools","@cornerstonejs/tools/enums","@ohif/core/src/contextProviders/SystemProvider","@ohif/extension-default"],t):"object"==typeof exports?exports["ohif-extension-cornerstone-dicom-seg"]=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@ohif/extension-cornerstone"),require("@ohif/ui-next"),require("@cornerstonejs/core"),require("@cornerstonejs/tools/utilities"),require("dcmjs"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@cornerstonejs/tools/enums"),require("@ohif/core/src/contextProviders/SystemProvider"),require("@ohif/extension-default")):e["ohif-extension-cornerstone-dicom-seg"]=t(e["@ohif/core"],e["@cornerstonejs/adapters"],e["@ohif/extension-cornerstone"],e["@ohif/ui-next"],e["@cornerstonejs/core"],e["@cornerstonejs/tools/utilities"],e.dcmjs,e["@ohif/i18n"],e["@cornerstonejs/tools"],e["@cornerstonejs/tools/enums"],e["@ohif/core/src/contextProviders/SystemProvider"],e["@ohif/extension-default"])}(globalThis,(e,t,n,r,a,o,s,i,l,c,u,d)=>(()=>{var m,g,f={992(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>u});var r=n(326),a=n(55);let o=function({commandsManager:e,toolGroupService:t,customizationService:n,toolGroupId:r}){let a=n.getCustomization("cornerstone.overlayViewportTools"),o=e.run("initializeSegmentLabelTool",{tools:a});return t.createToolGroupAndAddTools(r,o)};var s=n(669),i=n(404),l=n(492);function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}let u=function(e){let{servicesManager:t,commandsManager:n}=(0,l.useSystem)(),{children:u,displaySets:d,viewportOptions:m}=e,g=m.viewportId,{displaySetService:f,toolGroupService:p,segmentationService:S,customizationService:y}=t.services,b=y.getCustomization("ui.loadingIndicatorTotalPercent"),v=`SEGToolGroup-${g}`;if(d.length>1)throw Error("SEG viewport should only have a single display set");let I=d[0],[h,E]=(0,a.useViewportGrid)(),{setPositionPresentation:w}=(0,s.usePositionPresentationStore)(),[x,D]=(0,r.useState)(!I.isLoaded),[C,O]=(0,r.useState)({percentComplete:null,totalSegments:null}),N=(0,r.useRef)(null),{viewports:T,activeViewportId:P}=h,U=I.referencedDisplaySetInstanceUID;if(!U){let e=y.getCustomization("missingReferenceDisplaySetHandler");if("function"!=typeof e)return void console.log("No customization 'missingReferenceDisplaySetHandler' registered. Skipping SEG rendering.");{let{handled:t}=e();if(t)return}}let j=f.getDisplaySetByUID(U),R=function(e,t){let{SharedFunctionalGroupsSequence:n}=t.instance,{PixelMeasuresSequence:r}=Array.isArray(n)?n[0]:n,{SpacingBetweenSlices:a,SliceThickness:o}=Array.isArray(r)?r[0]:r,s=e.images[0];return{PatientID:s.PatientID,PatientName:s.PatientName,PatientSex:s.PatientSex,PatientAge:s.PatientAge,SliceThickness:s.SliceThickness||o,StudyDate:s.StudyDate,SeriesDescription:s.SeriesDescription,SeriesInstanceUID:s.SeriesInstanceUID,SeriesNumber:s.SeriesNumber,ManufacturerModelName:s.ManufacturerModelName,SpacingBetweenSlices:s.SpacingBetweenSlices||a}}(j,I);N.current={displaySet:j,metadata:R};let A=(0,r.useCallback)(()=>r.createElement(s.OHIFCornerstoneViewport,c({},e,{displaySets:[j,I],viewportOptions:{viewportType:m.viewportType,toolGroupId:v,orientation:m.orientation,viewportId:m.viewportId,presentationIds:m.presentationIds},onElementEnabled:t=>{e.onElementEnabled?.(t)}})),[g,I,j,v,e,m]);(0,r.useEffect)(()=>{x||g===P&&function({servicesManager:e,segDisplaySet:t,viewportId:n,preHydrateCallbacks:r,hydrateCallback:a}){s.utils.promptHydrationDialog({servicesManager:e,viewportId:n,displaySet:t,preHydrateCallbacks:r,hydrateCallback:a,type:"SEG"})}({servicesManager:t,viewportId:g,segDisplaySet:I,hydrateCallback:async()=>(await n.runCommand("hydrateSecondaryDisplaySet",{displaySet:I,viewportId:g}),!0)})},[t,g,I,x,n,P]),(0,r.useEffect)(()=>{S.clearSegmentationRepresentations(g);let{unsubscribe:e}=S.subscribe(S.EVENTS.SEGMENTATION_LOADING_COMPLETE,e=>{if(e.segDisplaySet?.displaySetInstanceUID===I?.displaySetInstanceUID&&D(!1),I?.firstSegmentedSliceImageId&&m?.presentationIds){let{firstSegmentedSliceImageId:e}=I,{presentationIds:t}=m;w(t.positionPresentationId,{viewReference:{referencedImageId:e}})}});return()=>{e()}},[I]),(0,r.useEffect)(()=>{let{unsubscribe:e}=S.subscribe(S.EVENTS.SEGMENT_LOADING_COMPLETE,({percentComplete:e,numSegments:t})=>{O({percentComplete:e,totalSegments:t})});return()=>{e()}},[I]),(0,r.useEffect)(()=>{let e=f.subscribe(f.EVENTS.DISPLAY_SETS_REMOVED,({displaySetInstanceUIDs:e})=>{let t=T.get(P);e.includes(t.displaySetInstanceUID)&&E.setDisplaySetsForViewport({viewportId:P,displaySetInstanceUIDs:[]})});return()=>{e.unsubscribe()}},[]),(0,r.useEffect)(()=>{let e=p.getToolGroup(v);if(!e)return n.runCommand("updateStoredSegmentationPresentation",{displaySet:I,type:i.SegmentationRepresentations.Labelmap}),S.clearSegmentationRepresentations(g),e=o({commandsManager:n,toolGroupService:p,customizationService:y,toolGroupId:v}),()=>{S.clearSegmentationRepresentations(g),p.destroyToolGroup(v)}},[]);let M=null;return N.current&&j.displaySetInstanceUID===N.current.displaySet.displaySetInstanceUID?(u&&u.length&&(M=u.map((e,t)=>e&&r.cloneElement(e,{viewportId:g,key:t}))),r.createElement(r.Fragment,null,r.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},x&&r.createElement(b,{className:"h-full w-full",totalNumbers:C.totalSegments,percentComplete:C.percentComplete,loadingText:"Loading SEG..."}),A(),M))):null}},249(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=(Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider")),s=Symbol.for("react.context"),i=(Symbol.for("react.forward_ref"),Symbol.for("react.suspense")),l=(Symbol.for("react.memo"),Symbol.for("react.lazy")),c=Symbol.iterator,u={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d=Object.assign,m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||u}function f(){}function p(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||u}g.prototype.isReactComponent={},g.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")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},f.prototype=g.prototype;var S=p.prototype=new f;S.constructor=p,d(S,g.prototype),S.isPureReactComponent=!0;var y=Array.isArray,b=Object.prototype.hasOwnProperty,v=null,I={key:!0,ref:!0,__self:!0,__source:!0};function h(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){(0===e._status||-1===e._status)&&(e._status=1,e._result=t)},function(t){(0===e._status||-1===e._status)&&(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var E=null;t.Fragment=a,t.Suspense=i,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=d({},e.props),o=e.key,s=e.ref,i=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,i=v),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)b.call(t,c)&&!I.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==l?l[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=r;else if(1<c){l=Array(c);for(var u=0;u<c;u++)l[u]=arguments[u+2];a.children=l}return{$$typeof:n,type:e.type,key:o,ref:s,props:a,_owner:i}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:o,_context:e},e.Consumer=e},t.createElement=function(e,t,r){var a,o={},s=null,i=null;if(null!=t)for(a in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(s=""+t.key),t)b.call(t,a)&&!I.hasOwnProperty(a)&&(o[a]=t[a]);var l=arguments.length-2;if(1===l)o.children=r;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(a in l=e.defaultProps)void 0===o[a]&&(o[a]=l[a]);return{$$typeof:n,type:e,key:s,ref:i,props:o,_owner:v}},t.lazy=function(e){return{$$typeof:l,_payload:{_status:-1,_result:e},_init:h}},t.useCallback=function(e,t){return E.useCallback(e,t)},t.useContext=function(e){return E.useContext(e)},t.useEffect=function(e,t){return E.useEffect(e,t)},t.useRef=function(e){return E.useRef(e)},t.useState=function(e){return E.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=a},713(e){"use strict";e.exports=l},404(e){"use strict";e.exports=c},154(e){"use strict";e.exports=o},2(t){"use strict";t.exports=e},492(e){"use strict";e.exports=u},669(e){"use strict";e.exports=n},438(e){"use strict";e.exports=d},545(e){"use strict";e.exports=i},55(e){"use strict";e.exports=r},111(e){"use strict";e.exports=s}},p={};function S(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}};return f[e](n,n.exports,S),n.exports}S.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return S.d(t,{a:t}),t},S.d=(e,t)=>{for(var n in t)S.o(t,n)&&!S.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},S.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),S.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},m=[],S.O=(e,t,n,r)=>{if(t){r=r||0;for(var a=m.length;a>0&&m[a-1][2]>r;a--)m[a]=m[a-1];m[a]=[t,n,r];return}for(var o=1/0,a=0;a<m.length;a++){for(var[t,n,r]=m[a],s=!0,i=0;i<t.length;i++)(!1&r||o>=r)&&Object.keys(S.O).every(e=>S.O[e](t[i]))?t.splice(i--,1):(s=!1,r<o&&(o=r));if(s){m.splice(a--,1);var l=n();void 0!==l&&(e=l)}}return e},S.F={},S.E=e=>{Object.keys(S.F).map(t=>{S.F[t](e)})},g={509:0},S.F.j=e=>{if(!S.o(g,e)||void 0===g[e]){g[e]=null;var t=document.createElement("link");S.nc&&t.setAttribute("nonce",S.nc),t.rel="prefetch",t.as="script",t.href=S.p+S.u(e),document.head.appendChild(t)}},S.O.j=e=>0===g[e],S.O(0,[509],()=>{[509].map(S.E)},5);var y={};return(()=>{"use strict";S.r(y),S.d(y,{default:()=>ec});let e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-seg"}').UU,t=`${e}.sopClassHandlerModule.dicom-seg`;var n,r=S(326),a=S(2),o=S(545),s=S.n(o),i=S(557),l=S(713),c=S(142),u=S(111),d=S.n(u);let m="1.2.840.10008.5.1.4.1.1.66.7",g="1.2.840.10008.5.1.4.1.1.66.4",f="1.2.840.10008.1.2.5",p="labelmap";function b(e,t){return"bitmap"===(t?.defaultMode??e?.getCustomization("segmentation.store.defaultMode")??p)?"bitmap":"labelmap"}function v(e){return/^(wadouri:|dicomfile:|dicomweb:)/.test(e)}let I=["1.2.840.10008.5.1.4.1.1.66.4","1.2.840.10008.5.1.4.1.1.66.7"],h={},E="[SEG load]";function w(e){if(null!=e)return Array.isArray(e)?e[0]:e}function x(e){let t=Number(e.NumberOfFrames);if(t>0)return t;let n=e.PerFrameFunctionalGroupsSequence;return Array.isArray(n)&&n.length>0?n.length:1}function D(e,t){if(!e||(!function(e,t){if(!e)return;let n=a.classes.MetadataProvider,r=t.StudyInstanceUID,o=t.SeriesInstanceUID,s=t.SOPInstanceUID||t.SopInstanceUID;if(r&&o&&s){let t;n.addImageIdToUIDs(e,{StudyInstanceUID:r,SeriesInstanceUID:o,SOPInstanceUID:s,frameNumber:(t=e.match(/(?:&|\?)frame=(\d+)/))?Number(t[1]):1})}}(e,t),i.metaData.get("instance",e)))return;let n=t.StudyInstanceUID,r=t.SeriesInstanceUID,o=t.SOPInstanceUID||t.SopInstanceUID,s=n&&r&&o?a.DicomMetadataStore.getInstance(n,r,o):void 0;a.classes.MetadataProvider.addCustomMetadata(e,"instance",s||t)}async function C({extensionManager:e,servicesManager:t,segDisplaySet:n}){var r;let o,s,u,{segmentationService:f,uiNotificationService:p,customizationService:S}=t.services,y=n.instance,I=function(e,t){let n,r=t.StudyInstanceUID,o=t.SeriesInstanceUID,s=t.SOPInstanceUID||t.SopInstanceUID;if(r&&o&&s){let e=a.DicomMetadataStore.getInstance(r,o,s);n=e?.url}if((n=n||t.url)&&v(n)){let t=e.getDataSources("dicomlocal");if(t?.[0])return t[0]}return e.getActiveDataSource()[0]}(e,y),h=(u=x(y),w(I.getImageIdsForInstance?.({instance:y,frame:u>1?1:void 0})));if(!h)throw Error("Could not get imageId for SEG instance (no local wadouri url and getImageIdsForInstance returned nothing).");let O=t.services.displaySetService.getDisplaySetByUID(n.referencedDisplaySetInstanceUID);if(!O)throw Error("referencedDisplaySet is missing for SEG");let{imageIds:N}=O;if(N?.length||(N=I.getImageIdsForDisplaySet?.(O)),N?.length||(N=O.images?.map(e=>e.imageId)),!N?.length)throw Error("referencedDisplaySet has no imageIds");n.referencedImageIds=N,O.imageIds?.length||(O.imageIds=N);let T=function(e,t,n){let r=x(t),a=function(e,t){let n=e.match(/(.*\/frames\/)(\d+)(.*)$/);if(!n||t<=1)return[e];let r=n[1],a=n[3]||"",o=[];for(let e=1;e<=t;e++)o.push(`${r}${e}${a}`);return o}(e,r);if(a.length>1)return a;if(r<=1)return[e];let o=[];for(let e=1;e<=r;e++){let r=w(n.getImageIdsForInstance?.({instance:t,frame:e}));r&&o.push(r)}return o.length?o:[e]}(h,n.instance,I),P=v(h)?function(e){let t=e.indexOf("?");if(-1===t)return e;let n=e.slice(0,t),r=e.slice(t+1).split("&").filter(e=>"frame"!==e.split("=")[0]).join("&");return r?`${n}?${r}`:n}(h):h;!function({segDisplaySet:e,segImageIdStr:t,frameImageIds:n,referencedImageIds:r}){let o=e.instance,s=Number(o?.NumberOfFrames)||1;a.log.debug(E,"Loading SEG pixel data",{SOPInstanceUID:e.SOPInstanceUID,SeriesInstanceUID:e.SeriesInstanceUID,SOPClassUID:e.SOPClassUID,NumberOfFrames:s,segmentCount:Object.keys(e.segments||{}).length,referencedDisplaySetInstanceUID:e.referencedDisplaySetInstanceUID,referencedImageIdCount:r.length,referencedImageIds:r,segImageIdForMetadata:t,frameImageIds:n,loadSegFramesIndividually:n.length>1})}({segDisplaySet:n,segImageIdStr:P,frameImageIds:T,referencedImageIds:N}),D(P,y),T.forEach(e=>D(e,y));let U=e=>{let{percentComplete:t}=e.detail;f._broadcastEvent(f.EVENTS.SEGMENT_LOADING_COMPLETE,{percentComplete:t})};i.eventTarget.addEventListener(c.Enums.Events.SEGMENTATION_LOAD_PROGRESS,U),(I?.getConfig?.()?.loadMultiframeAsPart10??S?.getCustomization?.("cornerstone.segmentation.loadMultiframeAsPart10")??!0)&&(o=I.retrieve?.prefetchInstanceFrames?.({instance:y,imageId:P}),o?.done&&await o.done);try{s=await c.adaptersSEG.Cornerstone3D.Segmentation.createFromDicomSegImageId(N,P,{metadataProvider:i.metaData,tolerance:.001,parserType:(r=n.SOPClassUID,r===m?"labelmap":r===g?"bitmap":b(S)),frameImageIds:T,concurrency:16})}finally{i.eventTarget.removeEventListener(c.Enums.Events.SEGMENTATION_LOAD_PROGRESS,U),o?.cancel?.()}let j=!0;s.segMetadata.data.forEach((e,t)=>{if(t>0)if(e.rgba=e.RecommendedDisplayCIELabValue,e.rgba){var n;n=e.rgba,e.rgba=d().data.Colors.dicomlab2RGB(n).map(e=>Math.round(255*e))}else j=!1,e.rgba=l.CONSTANTS.COLOR_LUT[t%l.CONSTANTS.COLOR_LUT.length]}),j||p.show({title:"DICOM SEG import",message:"RecommendedDisplayCIELabValue not found for one or more segments. The default color was used instead.",type:"warning",duration:5e3}),Object.assign(n,s);let R=s.labelMapImages?.flat().map(e=>e.imageId);a.log.debug(E,"SEG parse complete",{SOPInstanceUID:n.SOPInstanceUID,labelMapImageCount:R?.length??0,labelMapImageIds:R,segmentIndices:Object.keys(n.segments||{})})}let O={id:"@ohif/seg",name:"Segmentations",protocolMatchingRules:[],toolGroupIds:["default"],numberOfPriorsReferenced:0,defaultViewport:{viewportOptions:{viewportType:"stack",toolGroupId:"default",allowUnmatchedView:!0,syncGroups:[{type:"hydrateseg",id:"sameFORId",source:!0,target:!0}]},displaySets:[{id:"segDisplaySetId",matchedDisplaySetsIndex:-1}]},displaySetSelectors:{segDisplaySetId:{seriesMatchingRules:[{attribute:"Modality",constraint:{equals:"SEG"}}]}},stages:[{name:"Segmentations",viewportStructure:{layoutType:"grid",properties:{rows:1,columns:1}},viewports:[{viewportOptions:{allowUnmatchedView:!0,syncGroups:[{type:"hydrateseg",id:"sameFORId",source:!0,target:!0}]},displaySets:[{id:"segDisplaySetId"}]}]}]};var N=S(438);let{Cornerstone3D:{Segmentation:{generateSegmentation:T}}}=c.adaptersSEG,{Cornerstone3D:{RTSS:{generateRTSSFromRepresentation:P}}}=c.adaptersRT,U={"segmentation.store.defaultMode":p,"segmentation.store.transferSyntaxUID":f,"segmentation.segmentLabel":{enabledByDefault:!1,hoverTimeout:1}};var j=S(669),R=S(55),A=S(154);function M(e){return(M="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 k(e){var t=function(e,t){if("object"!=M(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=M(r))return r;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==M(t)?t:t+""}S(741),Object.create(null);var _=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,F={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"\xa9","&#169;":"\xa9","&reg;":"\xae","&#174;":"\xae","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},L=function(e){return F[e]},G={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:function(e){return e.replace(_,L)}},q=(0,r.createContext)(),$=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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,k(r.key),r)}}(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}();function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function B(){if(console&&console.warn){for(var e,t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];"string"==typeof n[0]&&(n[0]="react-i18next:: ".concat(n[0])),(e=console).warn.apply(e,n)}}var z={};function H(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&z[t[0]]||("string"==typeof t[0]&&(z[t[0]]=new Date),B.apply(void 0,t))}var Y=function(e,t){return function(){e.isInitialized?t():e.on("initialized",function n(){setTimeout(function(){e.off("initialized",n)},0),t()})}};function J(e,t,n){e.loadNamespaces(t,Y(e,n))}function K(e,t,n,r){"string"==typeof n&&(n=[n]),n.forEach(function(t){0>e.options.ns.indexOf(t)&&e.options.ns.push(t)}),e.loadLanguages(t,Y(e,r))}function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Q(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){var r,a;r=t,a=n[t],(r=k(r))in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a}):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 X=function(e,t){var n=(0,r.useRef)();return(0,r.useEffect)(function(){n.current=t?n.current:e},[e,t]),n.current};function Z(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=a.i18n,s=(0,r.useContext)(q)||{},i=s.i18n,l=s.defaultNS,c=o||i||n;if(c&&!c.reportNamespaces&&(c.reportNamespaces=new $),!c){H("You will need to pass in an i18next instance by using initReactI18next");var u=function(e,t){return"string"==typeof t?t:t&&"object"===M(t)&&"string"==typeof t.defaultValue?t.defaultValue:Array.isArray(e)?e[e.length-1]:e},d=[u,{},!1];return d.t=u,d.i18n={},d.ready=!1,d}c.options.react&&void 0!==c.options.react.wait&&H("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var m=Q(Q(Q({},G),c.options.react),a),g=m.useSuspense,f=m.keyPrefix,p=e||l||c.options&&c.options.defaultNS;p="string"==typeof p?[p]:p||["translation"],c.reportNamespaces.addUsedNamespaces&&c.reportNamespaces.addUsedNamespaces(p);var S=(c.isInitialized||c.initializedStoreOnce)&&p.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]:{},r=t.languages[0],a=!!t.options&&t.options.fallbackLng,o=t.languages[t.languages.length-1];if("cimode"===r.toLowerCase())return!0;var s=function(e,n){var r=t.services.backendConnector.state["".concat(e,"|").concat(n)];return -1===r||2===r};return(!(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1)||!t.services.backendConnector.backend||!t.isLanguageChangingTo||!!s(t.isLanguageChangingTo,e))&&!!(t.hasResourceBundle(r,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||s(r,e)&&(!a||s(o,e)))}(e,t,n):t.hasLoadedNamespace(e,{lng:n.lng,precheck:function(t,r){if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}):(H("i18n.languages were undefined or empty",t.languages),!0)}(e,c,m)});function y(){return c.getFixedT(a.lng||null,"fallback"===m.nsMode?p:p[0],f)}var b=function(e){if(Array.isArray(e))return e}(t=(0,r.useState)(y))||function(e){var t=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,a,o,s=[],i=!0,l=!1;try{a=(t=t.call(e)).next,!1;for(;!(i=(n=a.call(t)).done)&&(s.push(n.value),2!==s.length);i=!0);}catch(e){l=!0,r=e}finally{try{if(!i&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(l)throw r}}return s}}(t)||function(e){if(e){if("string"==typeof e)return V(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)?V(e,2):void 0}}(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.")}(),v=b[0],I=b[1],h=p.join();a.lng&&(h="".concat(a.lng).concat(h));var E=X(h),w=(0,r.useRef)(!0);(0,r.useEffect)(function(){var e=m.bindI18n,t=m.bindI18nStore;function n(){w.current&&I(y)}return w.current=!0,S||g||(a.lng?K(c,a.lng,p,function(){w.current&&I(y)}):J(c,p,function(){w.current&&I(y)})),S&&E&&E!==h&&w.current&&I(y),e&&c&&c.on(e,n),t&&c&&c.store.on(t,n),function(){w.current=!1,e&&c&&e.split(" ").forEach(function(e){return c.off(e,n)}),t&&c&&t.split(" ").forEach(function(e){return c.store.off(e,n)})}},[c,h]);var x=(0,r.useRef)(!0);(0,r.useEffect)(function(){w.current&&!x.current&&I(y),x.current=!1},[c,f]);var D=[v,c,S];if(D.t=v,D.i18n=c,D.ready=S,S||!S&&!g)return D;throw new Promise(function(e){a.lng?K(c,a.lng,p,function(){return e()}):J(c,p,function(){return e()})})}let{LogicalOperation:ee}=A.contourSegmentation,et=[{value:"merge",logicalOperation:ee.Union,label:"Merge",icon:"actions-combine-merge",helperIcon:"helper-combine-merge"},{value:"intersect",logicalOperation:ee.Intersect,label:"Intersect",icon:"actions-combine-intersect",helperIcon:"helper-combine-intersect"},{value:"subtract",logicalOperation:ee.Subtract,label:"Subtract",icon:"actions-combine-subtract",helperIcon:"helper-combine-subtract"}];function en({label:e,value:t,onValueChange:n,segments:a,placeholder:o="Select a segment"}){let{t:s}=Z("SegmentationPanel");return r.createElement("div",{className:"flex justify-between gap-6"},r.createElement("div",null,e),r.createElement(R.Select,{key:`select-segment-${e}`,onValueChange:n,value:t},r.createElement(R.SelectTrigger,{className:"overflow-hidden","data-cy":`logical-contour-segment-${e.toLowerCase()}-trigger`},r.createElement(R.SelectValue,{placeholder:s(o)})),r.createElement(R.SelectContent,null,a.map(e=>r.createElement(R.SelectItem,{key:e.segmentIndex,value:e.segmentIndex.toString()},e.label)))))}let er=function(){let{servicesManager:e}=(0,a.useSystem)(),{segmentationService:t}=e.services,{t:n}=Z("SegmentationPanel"),{segmentationsWithRepresentations:o}=(0,j.useActiveViewportSegmentationRepresentations)(),s=o?.find(({representation:e})=>e?.active),i=s?Object.values(s.segmentation.segments):[],l=s?t.getNextAvailableSegmentIndex(s.segmentation.segmentationId):1,c=i.find(e=>e.active),u=c?.segmentIndex||0,[d,m]=(0,r.useState)(et[0]),[g,f]=(0,r.useState)(u?.toString()||""),[p,S]=(0,r.useState)(""),[y,b]=(0,r.useState)(!1),[v,I]=(0,r.useState)("");(0,r.useEffect)(()=>{f(u?.toString()||null)},[u]),(0,r.useEffect)(()=>{I(`Segment ${l}`)},[l]);let h=(0,a.useRunCommand)(),E=(0,r.useCallback)(()=>{let e=g;y&&(e=l.toString(),h("addSegment",{segmentationId:s.segmentation.segmentationId,config:{label:v,segmentIndex:l}})),h("applyLogicalContourOperation",{segmentAInfo:{segmentationId:s.segmentation.segmentationId,segmentIndex:parseInt(g)},segmentBInfo:{segmentationId:s.segmentation.segmentationId,segmentIndex:parseInt(p)},resultSegmentInfo:{segmentationId:s.segmentation.segmentationId,segmentIndex:parseInt(e)},logicalOperation:d.logicalOperation})},[s?.segmentation?.segmentationId,y,v,l,d.logicalOperation,h,g,p]);return r.createElement("div",{className:"flex w-[245px] flex-col gap-4"},r.createElement("div",{className:"flex items-start justify-between"},r.createElement("div",{className:"flex w-auto flex-col items-center gap-2 text-base font-normal leading-none"},r.createElement(R.Tabs,{value:d.value},r.createElement(R.TabsList,{className:"inline-flex space-x-1"},et.map(e=>{let{value:t,icon:n}=e;return r.createElement(R.TabsTrigger,{value:t,key:`logical-contour-operation-${t}`,onClick:()=>m(e),"data-cy":`logical-contour-operation-${t}`},r.createElement(R.Icons.ByName,{name:n}))}))),r.createElement("div",null,n(d.label))),r.createElement("div",{className:"bg-muted flex h-[62px] w-[88px] items-center justify-center rounded-lg"},r.createElement(R.Icons.ByName,{name:d.helperIcon}))),r.createElement(en,{label:"A",value:g,onValueChange:f,segments:i}),r.createElement(en,{label:"B",value:p,onValueChange:S,segments:i}),r.createElement("div",{className:"flex justify-end pl-[34px]"},r.createElement(R.Button,{"data-cy":"apply-logical-contour-operation",className:"border-primary/60 grow border",variant:"ghost",onClick:()=>{E()}},n(d.label))),r.createElement(R.Separator,{className:"bg-input mt-2 h-[1px]"}),r.createElement("div",{className:"flex flex-col gap-2"},r.createElement("div",{className:"flex items-center justify-start gap-2"},r.createElement(R.Switch,{id:"logical-contour-operations-create-new-segment-switch","data-cy":"logical-contour-create-new-segment-switch",onCheckedChange:b}),r.createElement(R.Label,{htmlFor:"logical-contour-operations-create-new-segment-switch"},n("Create a new segment"))),r.createElement("div",{className:"pl-9"},r.createElement(R.Input,{className:(0,R.cn)(y?"visible":"hidden"),disabled:!y,id:"logical-contour-operations-create-new-segment-input",type:"text",placeholder:n("New segment name"),value:v,onChange:e=>I(e.target.value)}))))},ea=function(){let[e,t]=(0,r.useState)(10),n=(0,a.useRunCommand)(),{t:o}=Z("SegmentationPanel");return r.createElement("div",{className:"flex w-auto w-[252px] flex-col gap-[8px] text-base font-normal leading-none"},r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,o("Fill contour holes")),r.createElement(R.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{n("removeContourHoles")}},o("Fill Holes")),r.createElement(R.Separator,{className:"bg-input mt-[20px] h-[1px]"})),r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,o("Remove Small Contours")),r.createElement("div",{className:"flex items-center gap-2 self-end"},r.createElement(R.Label,{htmlFor:"simplify-contour-options",className:"text-muted-foreground"},o("Area Threshold")),r.createElement(R.Input,{id:"simplify-contour-options",className:"w-20",type:"number",value:e,onChange:e=>t(Number(e.target.value))})),r.createElement(R.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{n("removeSmallContours",{areaThreshold:e})}},o("Remove Small Contours")),r.createElement(R.Separator,{className:"bg-input mt-[20px] h-[1px]"})),r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,o("Create New Segment from Holes")),r.createElement(R.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{n("convertContourHoles")}},o("Create New Segment"))))},eo=function(){let e=(0,a.useRunCommand)(),{t}=Z("SegmentationPanel");return r.createElement("div",{className:"flex w-auto w-[245px] flex-col gap-[8px] text-base font-normal leading-none"},r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,t("Smooth all edges")),r.createElement(R.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{e("smoothContours")}},t("Smooth Edges")),r.createElement(R.Separator,{className:"bg-input mt-[20px] h-[1px]"})),r.createElement("div",{className:"flex w-auto flex-col gap-[10px] text-base font-normal leading-none"},r.createElement("div",null,t("Remove extra points")),r.createElement(R.Button,{className:"border-primary/60 border",variant:"ghost",onClick:()=>{e("decimateContours")}},t("Remove Points"))))};function es(){return(es=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}let ei=r.lazy(()=>Promise.resolve().then(S.bind(S,992))),el=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(ei,e)),ec={id:e,getCommandsModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>{let{segmentationService:r,displaySetService:a,viewportGridService:o,customizationService:s}=e.services,c={loadSegmentationsForViewport:async({segmentations:e,viewportId:t})=>{let n=(({viewportId:e,viewportGridService:t})=>{let{viewports:n,activeViewportId:r}=t.getState();return n.get(e||r)})({viewportId:t,viewportGridService:o}),s=n.displaySetInstanceUIDs[0],i=e[0],l=i.segmentationId,c=i.config.label,u=i.config.segments,d=a.getDisplaySetByUID(s);return await r.createLabelmapForDisplaySet(d,{segmentationId:l,segments:u,label:c}),r.addOrUpdateSegmentation(i),await r.addSegmentationRepresentation(n.viewportId,{segmentationId:l}),l},generateSegmentation:({segmentationId:e,options:n={}})=>{let a,o,c,u,{dataSource:p,...S}=n,y=l.segmentation.state.getSegmentation(e),v=S.predecessorImageId??y.predecessorImageId,I=p?t.getDataSourceDefinition(p):t.getActiveDataSourceDefinition(),h=I?.configuration?.segmentation?.store,E=y.representationData.Labelmap,w=(e,t,n)=>{let r=e.map(e=>i.cache.getImage(e)),a=[],o=n?new Map(n.map((e,t)=>[e,t])):void 0,s=0;for(let e of r){let t=new Set,n=e.getPixelData(),{rows:r,columns:i}=e;for(let e=0;e<n.length;e++){let r=n[e];0!==r&&t.add(r)}let l=o?o.get(e.referencedImageId)??-1:s++;l<0||(a[l]={segmentsOnLabelmap:Array.from(t),pixelData:n,rows:r,columns:i})}return{segmentsOnLabelmap:Array.from(new Set(a.filter(Boolean).map(e=>e.segmentsOnLabelmap).flat())),metadata:t,labelmaps2D:a}},x=r.getSegmentation(e),D=r.getRepresentationsForSegmentation(e),C=[];Object.entries(x.segments).forEach(([t,n])=>{if(!n)return;let{label:a}=n,o=D[0],s=r.getSegmentColor(o.viewportId,e,n.segmentIndex),i=d().data.Colors.rgb2DICOMLAB(s.slice(0,3).map(e=>e/255)).map(e=>Math.round(e));C[t]={SegmentNumber:t.toString(),SegmentLabel:a,SegmentAlgorithmType:n?.algorithmType||"MANUAL",SegmentAlgorithmName:n?.algorithmName||"OHIF Brush",RecommendedDisplayCIELabValue:i,SegmentedPropertyCategoryCodeSequence:{CodeValue:"T-D0050",CodingSchemeDesignator:"SRT",CodeMeaning:"Tissue"},SegmentedPropertyTypeCodeSequence:{CodeValue:"T-D0050",CodingSchemeDesignator:"SRT",CodeMeaning:"Tissue"}}});let O=E.labelmaps?Object.values(E.labelmaps):void 0,N=(e,t)=>{let n=i.cache.getImage(e);if(!n)throw Error(`Referenced source image not in cache for segmentation slice ${t} (referencedImageId: ${e}). Ensure the referenced series is fully loaded before storing.`);return n};if(O&&O.length>1){let e=O[0].referencedImageIds??E.referencedImageIds??[];a=e.map(N),o=O.map(t=>w(t.imageIds??[],C,e))}else{let{imageIds:e}=E;a=e.map(e=>i.cache.getImage(e)).map((e,t)=>N(e.referencedImageId,t)),o=w(e,C)}let P={predecessorImageId:v,...(c="bitmap"===b(s,h)?g:m,{sopClassUID:c,transferSyntaxUID:u=h?.transferSyntaxUID??s?.getCustomization("segmentation.store.transferSyntaxUID")??f,transferSyntaxUid:u}),...S};return O&&O.length>1&&P.sopClassUID===m&&(console.warn("generateSegmentation: overlapping segments cannot be stored as a LABELMAP SEG; switching to the binary SEG encoding for this store."),P.sopClassUID=g),T(a,o,i.metaData,P)},downloadSegmentation:({segmentationId:e})=>{let t=r.getSegmentation(e),a=c.generateSegmentation({segmentationId:e});n.runCommand("createStoreFunction",{dataSource:"download",defaultFileName:`${t.label}.dcm`})(a.dataset)},storeSegmentation:async({segmentationId:a,dataSource:o,modality:s="SEG"})=>{let i=r.getSegmentation(a);if(!i)throw Error("No segmentation found");let{label:l,predecessorImageId:u}=i,{value:d,dataSourceName:m,series:g,priorSeriesNumber:f,action:p}=await (0,N.createReportDialogPrompt)({servicesManager:e,extensionManager:t,predecessorImageId:u,title:"Store Segmentation",modality:s,enableDownload:!0});if(1!==p)return;let S="RTSTRUCT"===s?`rtss-${a}.dcm`:`${l||"segmentation"}.dcm`,y=n.runCommand("createStoreFunction",{dataSource:m,defaultFileName:S});if(!y)throw Error(`No valid store for dataSource: ${m}`);try{let e={segmentationId:a,options:{dataSource:m,SeriesDescription:g?void 0:d||l||"Contour Series",SeriesNumber:g?void 0:1+f,predecessorImageId:g}},t="SEG"===s&&c.generateSegmentation(e)||"RTSTRUCT"===s&&c.generateContour(e),n=await t;if(!n?.dataset)throw Error("Error during segmentation generation");let{dataset:r}=n;return"No Study ID"===r.StudyID&&(r.StudyID=""),await y(r,{}),r}catch(e){throw console.debug("Error storing segmentation:",e),e}},generateContour:async e=>{let{segmentationId:t,options:n}=e,{dataSource:a,...o}=n??{},s=r.getSegmentation(t),i=r.getRepresentationsForSegmentation(t)[0];Object.entries(s.segments).forEach(([e,n])=>{n.color=r.getSegmentColor(i.viewportId,t,Number(e))});let l=o.predecessorImageId??s.predecessorImageId;return{dataset:await P(s,{predecessorImageId:l,...o})}},downloadRTSS:async e=>{let{dataset:t}=await c.generateContour(e),{InstanceNumber:r=1,SeriesInstanceUID:a}=t,o=n.runCommand("createStoreFunction",{dataSource:"download",defaultFileName:`rtss-${a}-${r}.dcm`});await o(t)},toggleActiveSegmentationUtility:({itemId:e})=>{let{uiState:t,setUIState:n}=N.useUIStateStore.getState(),r=t.activeSegmentationUtility===e;console.log("toggleActiveSegmentationUtility",r,e),n("activeSegmentationUtility",r?null:e)}},u={loadSegmentationsForViewport:c.loadSegmentationsForViewport,generateSegmentation:c.generateSegmentation,downloadSegmentation:c.downloadSegmentation,storeSegmentation:c.storeSegmentation,downloadRTSS:c.downloadRTSS,toggleActiveSegmentationUtility:c.toggleActiveSegmentationUtility};return{actions:c,definitions:u,defaultContext:"SEGMENTATION"}},getCustomizationModule:function(){return[{name:"default",value:U}]},getToolbarModule:function({servicesManager:e}){let{segmentationService:t,toolbarService:n,toolGroupService:r}=e.services;return[{name:"cornerstone.SimplifyContourOptions",defaultComponent:ea},{name:"cornerstone.LogicalContourOperationsOptions",defaultComponent:er},{name:"cornerstone.SmoothContoursOptions",defaultComponent:eo},{name:"cornerstone.isActiveSegmentationUtility",evaluate:({button:e})=>{let{uiState:t}=N.useUIStateStore.getState();return{isActive:t.activeSegmentationUtility===e.id}}},{name:"evaluate.cornerstone.hasSegmentation",evaluate:({viewportId:e})=>{let n=t.getSegmentationRepresentations(e);return{disabled:!n?.length}}},{name:"evaluate.cornerstone.hasSegmentationOfType",evaluate:({viewportId:e,segmentationRepresentationType:n})=>{let r=t.getSegmentationRepresentations(e);return r?.length?r.some(e=>e.type===n)?void 0:{disabled:!0,disabledText:`No ${n} segmentations available`}:{disabled:!0,disabledText:s().t("SegmentationPanel:No segmentations available")}}},{name:"evaluate.cornerstone.segmentation",evaluate:({viewportId:e,button:a,toolNames:o,disabledText:i})=>{let l=t.getSegmentationRepresentations(e);if(!l?.length)return{disabled:!0,disabledText:i??s().t("SegmentationPanel:No segmentations available")};if(!Object.keys(t.getActiveSegmentation(e).segments).length)return{disabled:!0,disabledText:s().t("SegmentationPanel:Add segment to enable this tool")};let c=r.getToolGroupForViewport(e);if(!c)return{disabled:!0,disabledText:i??s().t("SegmentationPanel:Not available on the current viewport")};if(!o)return{disabled:!1};let u=n.getToolNameForButton(a);return c.hasTool(u)||o?{disabled:!1,isActive:o?o.includes(c.getActivePrimaryMouseButtonTool()):c.getActivePrimaryMouseButtonTool()===u}:{disabled:!0,disabledText:i??s().t("SegmentationPanel:Not available on the current viewport")}}},{name:"evaluate.cornerstone.segmentation.synchronizeDrawingRadius",evaluate:({button:e,radiusOptionId:t})=>{let a=r.getToolGroupIds();if(a?.length)for(let r of a){let a=l.utilities.segmentation.getBrushSizeForToolGroup(r);a&&(n.getOptionById(e,t).value=a)}}}]},getViewportModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>[{name:"dicom-seg",component:a=>r.createElement(el,es({servicesManager:e,extensionManager:t,commandsManager:n},a))}],getSopClassHandlerModule:function(e){let{servicesManager:n,extensionManager:r}=e;return[{name:"dicom-seg",sopClassUids:I,getDisplaySetsFromSeries:e=>(function(e,n,r){a.utils.sortStudyInstances(e);let o=e[e.length-1],{StudyInstanceUID:i,SeriesInstanceUID:c,SOPInstanceUID:u,SeriesDescription:d="",SeriesNumber:m,SeriesDate:g,StructureSetDate:f,SOPClassUID:p,FrameOfReferenceUID:S,wadoRoot:y,wadoUri:b,wadoUriRoot:v,imageId:E}=o,w={Modality:"SEG",loading:!1,isReconstructable:!1,displaySetInstanceUID:a.utils.guid(),SeriesDescription:d,SeriesNumber:m,SeriesDate:g||f||"",SOPInstanceUID:u,SeriesInstanceUID:c,StudyInstanceUID:i,SOPClassHandlerId:t,SOPClassUID:p,FrameOfReferenceUID:S,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,isDerivedDisplaySet:!0,isLoaded:!1,isHydrated:!1,segments:{},sopClassUids:I,instance:o,predecessorImageId:E,instances:[o],wadoRoot:y,wadoUriRoot:v,wadoUri:b,isOverlayDisplaySet:!0,label:d||`${s().t("Series")} ${m} - ${s().t("SEG")}`},x=o.ReferencedSeriesSequence;if(!x)return void console.error("ReferencedSeriesSequence is missing for the SEG");let D=x[0]||x;w.referencedImages=o.ReferencedSeriesSequence.ReferencedInstanceSequence,w.referencedSeriesInstanceUID=D.SeriesInstanceUID;let{displaySetService:O}=n.services,N=O.getDisplaySetsForReferences(o.ReferencedSeriesSequence);N?.length>1&&console.warn("Segmentation does not currently handle references to multiple series, defaulting to first series");let T=N[0];if(T)w.referencedDisplaySetInstanceUID=T.displaySetInstanceUID,w.isReconstructable=T.isReconstructable,w.FrameOfReferenceUID=T.FrameOfReferenceUID;else{let{unsubscribe:e}=O.subscribe(O.EVENTS.DISPLAY_SETS_ADDED,({displaySetsAdded:t})=>{let n=t[0];n.SeriesInstanceUID===w.referencedSeriesInstanceUID&&(w.referencedDisplaySetInstanceUID=n.displaySetInstanceUID,w.isReconstructable=n.isReconstructable,w.FrameOfReferenceUID=n.FrameOfReferenceUID,e())})}return w.load=async({headers:e})=>await function(e,t,n,r){var a;let{SOPInstanceUID:o}=e,{segmentationService:s}=t.services;return(e.loading||e.isLoaded)&&h[o]&&(a=e,l.segmentation.state.getSegmentation(a.displaySetInstanceUID))||(e.loading=!0,h[o]=new Promise(async(a,o)=>{if(!e.segments||0===Object.keys(e.segments).length)try{await C({extensionManager:n,servicesManager:t,segDisplaySet:e,headers:r})}catch(t){return e.loading=!1,o(t)}s.createSegmentationForSEGDisplaySet(e).then(()=>{e.loading=!1,a()}).catch(t=>{e.loading=!1,o(t)})}),e.loadingPromise=h[o]),h[o]}(w,n,r,e),[w]})(e,n,r)}]},getHangingProtocolModule:function(){return[{name:O.id,protocol:O}]}}})(),y=S.O(y)})());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/extension-cornerstone-dicom-seg",
3
- "version": "3.13.0-beta.99",
3
+ "version": "3.13.0",
4
4
  "description": "DICOM SEG read workflow",
5
5
  "author": "OHIF",
6
6
  "license": "MIT",
@@ -28,16 +28,16 @@
28
28
  "react-i18next": "12.3.1",
29
29
  "react-router": "6.30.3",
30
30
  "react-router-dom": "6.30.3",
31
- "@ohif/core": "3.13.0-beta.99",
32
- "@ohif/extension-cornerstone": "3.13.0-beta.99",
33
- "@ohif/i18n": "3.13.0-beta.99",
34
- "@ohif/extension-default": "3.13.0-beta.99"
31
+ "@ohif/extension-cornerstone": "3.13.0",
32
+ "@ohif/i18n": "3.13.0",
33
+ "@ohif/core": "3.13.0",
34
+ "@ohif/extension-default": "3.13.0"
35
35
  },
36
36
  "dependencies": {
37
37
  "@babel/runtime": "7.29.7",
38
- "@cornerstonejs/adapters": "5.0.2",
39
- "@cornerstonejs/core": "5.0.2",
40
- "@kitware/vtk.js": "35.5.3"
38
+ "@cornerstonejs/adapters": "5.6.8",
39
+ "@cornerstonejs/core": "5.6.8",
40
+ "@kitware/vtk.js": "36.4.1"
41
41
  },
42
42
  "devDependencies": {
43
43
  "cross-env": "7.0.3"