@ohif/extension-cornerstone-dicom-pmap 3.13.0-beta.9 → 3.13.0-beta.92

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,2 +1 @@
1
- /*! For license information please see ohif-extension-cornerstone-dicom-pmap.umd.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@cornerstonejs/adapters"),require("@cornerstonejs/core"),require("@ohif/core"),require("@ohif/extension-cornerstone"),require("@ohif/i18n"),require("@ohif/ui-next")):"function"==typeof define&&define.amd?define(["@cornerstonejs/adapters","@cornerstonejs/core","@ohif/core","@ohif/extension-cornerstone","@ohif/i18n","@ohif/ui-next"],t):"object"==typeof exports?exports["ohif-extension-cornerstone-dicom-pmap"]=t(require("@cornerstonejs/adapters"),require("@cornerstonejs/core"),require("@ohif/core"),require("@ohif/extension-cornerstone"),require("@ohif/i18n"),require("@ohif/ui-next")):e["ohif-extension-cornerstone-dicom-pmap"]=t(e["@cornerstonejs/adapters"],e["@cornerstonejs/core"],e["@ohif/core"],e["@ohif/extension-cornerstone"],e["@ohif/i18n"],e["@ohif/ui-next"])}(globalThis,(e,t,r,n,o,i)=>(()=>{var a,s,c={51:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(598),o=r.n(n),i=r(326),a=r(55),s=r(669);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},c.apply(null,arguments)}function u(e){const{displaySets:t,children:r,viewportOptions:n,displaySetOptions:o,servicesManager:u}=e,l=n.viewportId,{displaySetService:p,segmentationService:f,uiNotificationService:d,customizationService:y}=u.services;if(1!==t.length)throw new Error("PMAP viewport must have a single display set");const m=y.getCustomization("ui.loadingIndicatorTotalPercent"),S=t[0],[v,h]=(0,a.useViewportGrid)(),I=(0,i.useRef)(null),{viewports:g,activeViewportId:b}=v,w=S.getReferenceDisplaySet(),D=function(e,t){const{SharedFunctionalGroupsSequence:r}=t.instance,n=Array.isArray(r)?r[0]:r,{PixelMeasuresSequence:o}=n,i=Array.isArray(o)?o[0]:o,{SpacingBetweenSlices:a,SliceThickness:s}=i,c=e.images[0],u={PatientID:c.PatientID,PatientName:c.PatientName,PatientSex:c.PatientSex,PatientAge:c.PatientAge,SliceThickness:c.SliceThickness||s,StudyDate:c.StudyDate,SeriesDescription:c.SeriesDescription,SeriesInstanceUID:c.SeriesInstanceUID,SeriesNumber:c.SeriesNumber,ManufacturerModelName:c.ManufacturerModelName,SpacingBetweenSlices:c.SpacingBetweenSlices||a};return u}(w,S);I.current={displaySet:w,metadata:D};const[_,E]=(0,i.useState)(!S.isLoaded);(0,i.useEffect)(()=>{const{unsubscribe:e}=f.subscribe(f.EVENTS.SEGMENTATION_LOADING_COMPLETE,e=>{e.pmapDisplaySet?.displaySetInstanceUID===S.displaySetInstanceUID&&E(!1)});return()=>{e()}},[S]);const O=(0,i.useCallback)(()=>{const{displaySet:t}=I.current;o.unshift({});const[r]=o;return r.options=r.options??{},Object.assign(r.options,{colormap:{name:"rainbow_2",opacity:[{value:0,opacity:0},{value:.25,opacity:.25},{value:.5,opacity:.5},{value:.75,opacity:.75},{value:.9,opacity:.99}]},voi:{windowCenter:50,windowWidth:100}}),d.show({title:"Parametric Map",type:"warning",message:"The values are multiplied by 100 in the viewport for better visibility"}),i.createElement(s.OHIFCornerstoneViewport,c({},e,{displaySets:[t,S],viewportOptions:{viewportType:"volume",orientation:n.orientation,viewportId:n.viewportId,presentationIds:n.presentationIds},displaySetOptions:[{},r]}))},[o,e,S,n.orientation,n.viewportId,n.presentationIds,d]);(0,i.useEffect)(()=>{const e=p.subscribe(p.EVENTS.DISPLAY_SETS_REMOVED,({displaySetInstanceUIDs:e})=>{const t=g.get(b);e.includes(t.displaySetInstanceUID)&&h.setDisplaySetsForViewport({viewportId:b,displaySetInstanceUIDs:[]})});return()=>{e.unsubscribe()}},[b,p,h,g]);let P=null;return r&&r.length&&(P=r.map((e,t)=>e&&i.cloneElement(e,{viewportId:l,key:t}))),i.createElement(i.Fragment,null,i.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},_&&i.createElement(m,{className:"h-full w-full",totalNumbers:null,percentComplete:null,loadingText:"Loading Parametric Map..."}),O(),P))}u.propTypes={displaySets:o().arrayOf(o().object),viewportId:o().string.isRequired,dataSource:o().object,children:o().node};const l=u},856:(e,t,r)=>{"use strict";var n=r(183);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,i,a){if(a!==n){var s=new 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 r={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:i,resetWarningCache:o};return r.PropTypes=r,r}},598:(e,t,r)=>{e.exports=r(856)()},183:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},249:(e,t)=>{"use strict";var r=Symbol.for("react.element"),n=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),c=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),d=Symbol.iterator;var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,S={};function v(e,t,r){this.props=e,this.context=t,this.refs=S,this.updater=r||y}function h(){}function I(e,t,r){this.props=e,this.context=t,this.refs=S,this.updater=r||y}v.prototype.isReactComponent={},v.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")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},h.prototype=v.prototype;var g=I.prototype=new h;g.constructor=I,m(g,v.prototype),g.isPureReactComponent=!0;var b=Array.isArray,w=Object.prototype.hasOwnProperty,D={current:null},_={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,n){var o,i={},a=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)w.call(t,o)&&!_.hasOwnProperty(o)&&(i[o]=t[o]);var c=arguments.length-2;if(1===c)i.children=n;else if(1<c){for(var u=Array(c),l=0;l<c;l++)u[l]=arguments[l+2];i.children=u}if(e&&e.defaultProps)for(o in c=e.defaultProps)void 0===i[o]&&(i[o]=c[o]);return{$$typeof:r,type:e,key:a,ref:s,props:i,_owner:D.current}}function O(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}var P=/\/+/g;function x(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}(""+e.key):t.toString(36)}function U(e,t,o,i,a){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var c=!1;if(null===e)c=!0;else switch(s){case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case r:case n:c=!0}}if(c)return a=a(c=e),e=""===i?"."+x(c,0):i,b(a)?(o="",null!=e&&(o=e.replace(P,"$&/")+"/"),U(a,t,o,"",function(e){return e})):null!=a&&(O(a)&&(a=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,o+(!a.key||c&&c.key===a.key?"":(""+a.key).replace(P,"$&/")+"/")+e)),t.push(a)),1;if(c=0,i=""===i?".":i+":",b(e))for(var u=0;u<e.length;u++){var l=i+x(s=e[u],u);c+=U(s,t,o,l,a)}else if(l=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=d&&e[d]||e["@@iterator"])?e:null}(e),"function"==typeof l)for(e=l.call(e),u=0;!(s=e.next()).done;)c+=U(s=s.value,t,o,l=i+x(s,u++),a);else if("object"===s)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return c}function R(e,t,r){if(null==e)return e;var n=[],o=0;return U(e,n,"","",function(e){return t.call(r,e,o++)}),n}function j(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 M={current:null},C={transition:null},T={ReactCurrentDispatcher:M,ReactCurrentBatchConfig:C,ReactCurrentOwner:D};function k(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:R,forEach:function(e,t,r){R(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return R(e,function(){t++}),t},toArray:function(e){return R(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=v,t.Fragment=o,t.Profiler=a,t.PureComponent=I,t.StrictMode=i,t.Suspense=l,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T,t.act=k,t.cloneElement=function(e,t,n){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=m({},e.props),i=e.key,a=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(a=t.ref,s=D.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)w.call(t,u)&&!_.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var l=0;l<u;l++)c[l]=arguments[l+2];o.children=c}return{$$typeof:r,type:e.type,key:i,ref:a,props:o,_owner:s}},t.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},t.createElement=E,t.createFactory=function(e){var t=E.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=O,t.lazy=function(e){return{$$typeof:f,_payload:{_status:-1,_result:e},_init:j}},t.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=C.transition;C.transition={};try{e()}finally{C.transition=t}},t.unstable_act=k,t.useCallback=function(e,t){return M.current.useCallback(e,t)},t.useContext=function(e){return M.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return M.current.useDeferredValue(e)},t.useEffect=function(e,t){return M.current.useEffect(e,t)},t.useId=function(){return M.current.useId()},t.useImperativeHandle=function(e,t,r){return M.current.useImperativeHandle(e,t,r)},t.useInsertionEffect=function(e,t){return M.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return M.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return M.current.useMemo(e,t)},t.useReducer=function(e,t,r){return M.current.useReducer(e,t,r)},t.useRef=function(e){return M.current.useRef(e)},t.useState=function(e){return M.current.useState(e)},t.useSyncExternalStore=function(e,t,r){return M.current.useSyncExternalStore(e,t,r)},t.useTransition=function(){return M.current.useTransition()},t.version="18.3.1"},326:(e,t,r)=>{"use strict";e.exports=r(249)},142:t=>{"use strict";t.exports=e},557:e=>{"use strict";e.exports=t},2:e=>{"use strict";e.exports=r},669:e=>{"use strict";e.exports=n},545:e=>{"use strict";e.exports=o},55:e=>{"use strict";e.exports=i}},u={};function l(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}};return c[e](r,r.exports,l),r.exports}l.m=c,a=[],l.O=(e,t,r,n)=>{if(!t){var o=1/0;for(u=0;u<a.length;u++){for(var[t,r,n]=a[u],i=!0,s=0;s<t.length;s++)(!1&n||o>=n)&&Object.keys(l.O).every(e=>l.O[e](t[s]))?t.splice(s--,1):(i=!1,n<o&&(o=n));if(i){a.splice(u--,1);var c=r();void 0!==c&&(e=c)}}return e}n=n||0;for(var u=a.length;u>0&&a[u-1][2]>n;u--)a[u]=a[u-1];a[u]=[t,r,n]},l.F={},l.E=e=>{Object.keys(l.F).map(t=>{l.F[t](e)})},l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},l.d=(e,t)=>{for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.miniCssF=e=>{},l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.p="/",s={524:0},l.F.j=e=>{if(!l.o(s,e)||void 0===s[e]){s[e]=null;var t=document.createElement("link");l.nc&&t.setAttribute("nonce",l.nc),t.rel="prefetch",t.as="script",t.href=l.p+l.u(e),document.head.appendChild(t)}},l.O.j=e=>0===s[e],l.O(0,[524],()=>{l.E(524)},5);var p={};return(()=>{"use strict";l.r(p),l.d(p,{default:()=>h});const e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-pmap"}').UU,t=`${e}.sopClassHandlerModule.dicom-pmap`;var r=l(326),n=l(2),o=l(545),i=l.n(o),a=l(557),s=l(142),c=l(669);const u=["1.2.840.10008.5.1.4.1.1.30"];function f(e,r,o){const l=e[0],{StudyInstanceUID:p,SeriesInstanceUID:f,SOPInstanceUID:y,SeriesDescription:m,SeriesNumber:S,SeriesDate:v,SOPClassUID:h,wadoRoot:I,wadoUri:g,wadoUriRoot:b}=l,w={Modality:"PMAP",isReconstructable:!0,displaySetInstanceUID:`pmap.${n.utils.guid()}`,SeriesDescription:m,SeriesNumber:S,SeriesDate:v,SOPInstanceUID:y,SeriesInstanceUID:f,StudyInstanceUID:p,SOPClassHandlerId:t,SOPClassUID:h,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,referencedVolumeURI:null,referencedVolumeId:null,isDerivedDisplaySet:!0,loadStatus:{loading:!1,loaded:!1},sopClassUids:u,instance:l,instances:[l],wadoRoot:I,wadoUriRoot:b,wadoUri:g,supportsWindowLevel:!0,label:m||`${i().t("Series")} ${S} - ${i().t("PMAP")}`},D=l.ReferencedSeriesSequence;if(!D)return void console.error("ReferencedSeriesSequence is missing for the parametric map");const _=D[0]||D;return w.referencedImages=l.ReferencedSeriesSequence.ReferencedInstanceSequence,w.referencedSeriesInstanceUID=_.SeriesInstanceUID,w.getReferenceDisplaySet=()=>{const{displaySetService:e}=r.services;if(w.referencedDisplaySetInstanceUID)return e.getDisplaySetByUID(w.referencedDisplaySetInstanceUID);const t=e.getDisplaySetsForSeries(w.referencedSeriesInstanceUID);if(!t||0===t.length)throw new Error("Referenced displaySet is missing for the parametric map");const n=t[0];return w.referencedDisplaySetInstanceUID=n.displaySetInstanceUID,n},w.getReferencedVolumeId=()=>{if(w.referencedVolumeId)return w.referencedVolumeId;const e=w.getReferenceDisplaySet().displaySetInstanceUID,t=`${c.VOLUME_LOADER_SCHEME}:${e}`;return w.referencedVolumeURI=e,w.referencedVolumeId=t,t},w.load=async({headers:e})=>await async function(e,t,r,n){const o=`${c.VOLUME_LOADER_SCHEME}:${e.displaySetInstanceUID}`,i=a.cache.getVolumeLoadObject(o);if(i)return i.promise;e.loading=!0,e.isLoaded=!1;const u=async function({displaySet:e,headers:t}){const r=await c.dicomLoaderService.findDicomDataPromise(e,null,t),n=e.getReferencedVolumeId(),o=a.cache.getVolume(n);if(!o)throw new Error("Referenced Volume is missing for the PMAP, and stack viewport PMAP is not supported yet");const{imageIds:i}=o,u=await s.adaptersPMAP.Cornerstone3D.ParametricMap.generateToolState(i,r,a.metaData),{pixelData:l}=u,p=l.constructor,f=e.displaySetInstanceUID,y=await a.volumeLoader.createAndCacheDerivedVolume(n,{volumeId:f,targetBuffer:{type:p.name}}),m=new p(l.length);for(let e=0;e<l.length;e++)m[e]=100*l[e];y.voxelManager.setCompleteScalarDataArray(m);const S=d(m),v=a.utilities.windowLevel.toWindowLevel(S[0],S[1]);return y.metadata.voiLut=[v],y.loadStatus={loaded:!0},y}({extensionManager:r,displaySet:e,headers:n});return a.cache.putVolumeLoadObject(o,{promise:u}).catch(e=>{throw e}),u.then(()=>{e.loading=!1,e.isLoaded=!0,t.services.segmentationService._broadcastEvent(t.services.segmentationService.EVENTS.SEGMENTATION_LOADING_COMPLETE,{pmapDisplaySet:e})}).catch(t=>{throw e.loading=!1,e.isLoaded=!1,t}),u}(w,r,o,e),[w]}const d=e=>{let t=e[0],r=e[0];for(let n=1;n<e.length;n++)e[n]<t&&(t=e[n]),e[n]>r&&(r=e[n]);return[t,r]};const y=function(e){const{servicesManager:t,extensionManager:r}=e;return[{name:"dicom-pmap",sopClassUids:u,getDisplaySetsFromSeries:e=>f(e,t,r)}]};function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},m.apply(null,arguments)}const S=r.lazy(()=>Promise.resolve().then(l.bind(l,51))),v=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(S,e)),h={id:e,getViewportModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>[{name:"dicom-pmap",component:o=>r.createElement(v,m({servicesManager:e,extensionManager:t,commandsManager:n},o))}],getSopClassHandlerModule:y}})(),p=l.O(p)})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@cornerstonejs/core"),require("@ohif/extension-cornerstone"),require("@ohif/i18n"),require("@ohif/ui-next")):"function"==typeof define&&define.amd?define(["@ohif/core","@cornerstonejs/adapters","@cornerstonejs/core","@ohif/extension-cornerstone","@ohif/i18n","@ohif/ui-next"],t):"object"==typeof exports?exports["ohif-extension-cornerstone-dicom-pmap"]=t(require("@ohif/core"),require("@cornerstonejs/adapters"),require("@cornerstonejs/core"),require("@ohif/extension-cornerstone"),require("@ohif/i18n"),require("@ohif/ui-next")):e["ohif-extension-cornerstone-dicom-pmap"]=t(e["@ohif/core"],e["@cornerstonejs/adapters"],e["@cornerstonejs/core"],e["@ohif/extension-cornerstone"],e["@ohif/i18n"],e["@ohif/ui-next"])}(globalThis,(e,t,r,n,o,a)=>(()=>{var i,s,l={224(e,t,r){"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(598),o=r.n(n),a=r(326),i=r(55),s=r(669);function l(){return(l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}function c(e){let{displaySets:t,children:r,viewportOptions:n,displaySetOptions:o,servicesManager:c}=e,u=n.viewportId,{displaySetService:p,segmentationService:f,uiNotificationService:d,customizationService:y}=c.services;if(1!==t.length)throw Error("PMAP viewport must have a single display set");let m=y.getCustomization("ui.loadingIndicatorTotalPercent"),S=t[0],[h,v]=(0,i.useViewportGrid)(),g=(0,a.useRef)(null),{viewports:b,activeViewportId:I}=h,w=S.getReferenceDisplaySet(),D=function(e,t){let{SharedFunctionalGroupsSequence:r}=t.instance,{PixelMeasuresSequence:n}=Array.isArray(r)?r[0]:r,{SpacingBetweenSlices:o,SliceThickness:a}=Array.isArray(n)?n[0]:n,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}}(w,S);g.current={displaySet:w,metadata:D};let[E,_]=(0,a.useState)(!S.isLoaded);(0,a.useEffect)(()=>{let{unsubscribe:e}=f.subscribe(f.EVENTS.SEGMENTATION_LOADING_COMPLETE,e=>{e.pmapDisplaySet?.displaySetInstanceUID===S.displaySetInstanceUID&&_(!1)});return()=>{e()}},[S]);let O=(0,a.useCallback)(()=>{let{displaySet:t}=g.current;o.unshift({});let[r]=o;return r.options=r.options??{},Object.assign(r.options,{colormap:{name:"rainbow_2",opacity:[{value:0,opacity:0},{value:.25,opacity:.25},{value:.5,opacity:.5},{value:.75,opacity:.75},{value:.9,opacity:.99}]},voi:{windowCenter:50,windowWidth:100}}),d.show({title:"Parametric Map",type:"warning",message:"The values are multiplied by 100 in the viewport for better visibility"}),a.createElement(s.OHIFCornerstoneViewport,l({},e,{displaySets:[t,S],viewportOptions:{viewportType:"volume",orientation:n.orientation,viewportId:n.viewportId,presentationIds:n.presentationIds},displaySetOptions:[{},r]}))},[o,e,S,n.orientation,n.viewportId,n.presentationIds,d]);(0,a.useEffect)(()=>{let e=p.subscribe(p.EVENTS.DISPLAY_SETS_REMOVED,({displaySetInstanceUIDs:e})=>{let t=b.get(I);e.includes(t.displaySetInstanceUID)&&v.setDisplaySetsForViewport({viewportId:I,displaySetInstanceUIDs:[]})});return()=>{e.unsubscribe()}},[I,p,v,b]);let P=null;return r&&r.length&&(P=r.map((e,t)=>e&&a.cloneElement(e,{viewportId:u,key:t}))),a.createElement(a.Fragment,null,a.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},E&&a.createElement(m,{className:"h-full w-full",totalNumbers:null,percentComplete:null,loadingText:"Loading Parametric Map..."}),O(),P))}c.propTypes={displaySets:o().arrayOf(o().object),viewportId:o().string.isRequired,dataSource:o().object,children:o().node};let u=c},856(e,t,r){"use strict";var n=r(183);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,a,i){if(i!==n){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 r={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:a,resetWarningCache:o};return r.PropTypes=r,r}},598(e,t,r){e.exports=r(856)()},183(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},249(e,t){"use strict";var r=Symbol.for("react.element"),n=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=(Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense")),i=(Symbol.for("react.memo"),Symbol.for("react.lazy")),s=Symbol.iterator,l={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},c=Object.assign,u={};function p(e,t,r){this.props=e,this.context=t,this.refs=u,this.updater=r||l}function f(){}function d(e,t,r){this.props=e,this.context=t,this.refs=u,this.updater=r||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")},f.prototype=p.prototype;var y=d.prototype=new f;y.constructor=d,c(y,p.prototype),y.isPureReactComponent=!0;var m=Array.isArray,S=Object.prototype.hasOwnProperty,h=null,v={key:!0,ref:!0,__self:!0,__source:!0};function g(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 b=null;t.Fragment=o,t.Suspense=a,t.cloneElement=function(e,t,n){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=c({},e.props),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=h),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(u in t)S.call(t,u)&&!v.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==l?l[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){l=Array(u);for(var p=0;p<u;p++)l[p]=arguments[p+2];o.children=l}return{$$typeof:r,type:e.type,key:a,ref:i,props:o,_owner:s}},t.createElement=function(e,t,n){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)S.call(t,o)&&!v.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=n;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:r,type:e,key:i,ref:s,props:a,_owner:h}},t.lazy=function(e){return{$$typeof:i,_payload:{_status:-1,_result:e},_init:g}},t.useCallback=function(e,t){return b.useCallback(e,t)},t.useEffect=function(e,t){return b.useEffect(e,t)},t.useRef=function(e){return b.useRef(e)},t.useState=function(e){return b.useState(e)}},326(e,t,r){"use strict";e.exports=r(249)},142(e){"use strict";e.exports=t},557(e){"use strict";e.exports=r},2(t){"use strict";t.exports=e},669(e){"use strict";e.exports=n},545(e){"use strict";e.exports=o},55(e){"use strict";e.exports=a}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}};return l[e](r,r.exports,u),r.exports}u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i=[],u.O=(e,t,r,n)=>{if(t){n=n||0;for(var o=i.length;o>0&&i[o-1][2]>n;o--)i[o]=i[o-1];i[o]=[t,r,n];return}for(var a=1/0,o=0;o<i.length;o++){for(var[t,r,n]=i[o],s=!0,l=0;l<t.length;l++)(!1&n||a>=n)&&Object.keys(u.O).every(e=>u.O[e](t[l]))?t.splice(l--,1):(s=!1,n<a&&(a=n));if(s){i.splice(o--,1);var c=r();void 0!==c&&(e=c)}}return e},u.F={},u.E=e=>{Object.keys(u.F).map(t=>{u.F[t](e)})},s={509:0},u.F.j=e=>{if(!u.o(s,e)||void 0===s[e]){s[e]=null;var t=document.createElement("link");u.nc&&t.setAttribute("nonce",u.nc),t.rel="prefetch",t.as="script",t.href=u.p+u.u(e),document.head.appendChild(t)}},u.O.j=e=>0===s[e],u.O(0,[509],()=>{[509].map(u.E)},5);var p={};return(()=>{"use strict";u.r(p),u.d(p,{default:()=>h});let e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-pmap"}').UU,t=`${e}.sopClassHandlerModule.dicom-pmap`;var r=u(326),n=u(2),o=u(545),a=u.n(o),i=u(557),s=u(142),l=u(669);let c=["1.2.840.10008.5.1.4.1.1.30"];async function f(e,t,r,n){let o=`${l.VOLUME_LOADER_SCHEME}:${e.displaySetInstanceUID}`,a=i.cache.getVolumeLoadObject(o);if(a)return a.promise;e.loading=!0,e.isLoaded=!1;let s=d({extensionManager:r,displaySet:e,headers:n});return i.cache.putVolumeLoadObject(o,{promise:s}).catch(e=>{throw e}),s.then(()=>{e.loading=!1,e.isLoaded=!0,t.services.segmentationService._broadcastEvent(t.services.segmentationService.EVENTS.SEGMENTATION_LOADING_COMPLETE,{pmapDisplaySet:e})}).catch(t=>{throw e.loading=!1,e.isLoaded=!1,t}),s}async function d({displaySet:e,headers:t}){let r=await l.dicomLoaderService.findDicomDataPromise(e,null,t),n=e.getReferencedVolumeId(),o=i.cache.getVolume(n);if(!o)throw Error("Referenced Volume is missing for the PMAP, and stack viewport PMAP is not supported yet");let{imageIds:a}=o,{pixelData:c}=await s.adaptersPMAP.Cornerstone3D.ParametricMap.generateToolState(a,r,i.metaData),u=c.constructor,p=e.displaySetInstanceUID,f=await i.volumeLoader.createAndCacheDerivedVolume(n,{volumeId:p,targetBuffer:{type:u.name}}),y=new u(c.length);for(let e=0;e<c.length;e++)y[e]=100*c[e];f.voxelManager.setCompleteScalarDataArray(y);let m=(e=>{let t=e[0],r=e[0];for(let n=1;n<e.length;n++)e[n]<t&&(t=e[n]),e[n]>r&&(r=e[n]);return[t,r]})(y),S=i.utilities.windowLevel.toWindowLevel(m[0],m[1]);return f.metadata.voiLut=[S],f.loadStatus={loaded:!0},f}function y(){return(y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}let m=r.lazy(()=>Promise.resolve().then(u.bind(u,224))),S=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(m,e)),h={id:e,getViewportModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>[{name:"dicom-pmap",component:o=>r.createElement(S,y({servicesManager:e,extensionManager:t,commandsManager:n},o))}],getSopClassHandlerModule:function(e){let{servicesManager:r,extensionManager:o}=e;return[{name:"dicom-pmap",sopClassUids:c,getDisplaySetsFromSeries:e=>(function(e,r,o){let i=e[0],{StudyInstanceUID:s,SeriesInstanceUID:u,SOPInstanceUID:p,SeriesDescription:d,SeriesNumber:y,SeriesDate:m,SOPClassUID:S,wadoRoot:h,wadoUri:v,wadoUriRoot:g}=i,b={Modality:"PMAP",isReconstructable:!0,displaySetInstanceUID:`pmap.${n.utils.guid()}`,SeriesDescription:d,SeriesNumber:y,SeriesDate:m,SOPInstanceUID:p,SeriesInstanceUID:u,StudyInstanceUID:s,SOPClassHandlerId:t,SOPClassUID:S,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,referencedVolumeURI:null,referencedVolumeId:null,isDerivedDisplaySet:!0,loadStatus:{loading:!1,loaded:!1},sopClassUids:c,instance:i,instances:[i],wadoRoot:h,wadoUriRoot:g,wadoUri:v,supportsWindowLevel:!0,label:d||`${a().t("Series")} ${y} - ${a().t("PMAP")}`},I=i.ReferencedSeriesSequence;if(!I)return void console.error("ReferencedSeriesSequence is missing for the parametric map");let w=I[0]||I;return b.referencedImages=i.ReferencedSeriesSequence.ReferencedInstanceSequence,b.referencedSeriesInstanceUID=w.SeriesInstanceUID,b.getReferenceDisplaySet=()=>{let{displaySetService:e}=r.services;if(b.referencedDisplaySetInstanceUID)return e.getDisplaySetByUID(b.referencedDisplaySetInstanceUID);let t=e.getDisplaySetsForSeries(b.referencedSeriesInstanceUID);if(!t||0===t.length)throw Error("Referenced displaySet is missing for the parametric map");let n=t[0];return b.referencedDisplaySetInstanceUID=n.displaySetInstanceUID,n},b.getReferencedVolumeId=()=>{if(b.referencedVolumeId)return b.referencedVolumeId;let e=b.getReferenceDisplaySet().displaySetInstanceUID,t=`${l.VOLUME_LOADER_SCHEME}:${e}`;return b.referencedVolumeURI=e,b.referencedVolumeId=t,t},b.load=async({headers:e})=>await f(b,r,o,e),[b]})(e,r,o)}]}}})(),p=u.O(p)})());
package/package.json CHANGED
@@ -1,42 +1,37 @@
1
1
  {
2
2
  "name": "@ohif/extension-cornerstone-dicom-pmap",
3
- "version": "3.13.0-beta.9",
3
+ "version": "3.13.0-beta.92",
4
4
  "description": "DICOM Parametric Map read workflow",
5
5
  "author": "OHIF",
6
6
  "license": "MIT",
7
+ "repository": "OHIF/Viewers",
7
8
  "main": "dist/ohif-extension-cornerstone-dicom-pmap.umd.js",
8
9
  "module": "src/index.tsx",
10
+ "engines": {
11
+ "node": ">=24"
12
+ },
9
13
  "files": [
10
14
  "dist/**",
11
15
  "public/**",
12
16
  "README.md"
13
17
  ],
14
- "repository": "OHIF/Viewers",
15
- "keywords": [
16
- "ohif-extension"
17
- ],
18
18
  "publishConfig": {
19
19
  "access": "public"
20
20
  },
21
- "engines": {
22
- "node": ">=14",
23
- "npm": ">=6",
24
- "yarn": ">=1.18.0"
25
- },
26
21
  "scripts": {
27
22
  "clean": "shx rm -rf dist",
28
- "clean:deep": "yarn run clean && shx rm -rf node_modules",
29
- "dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --output-pathinfo",
30
- "dev:dicom-pmap": "yarn run dev",
31
- "build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js",
32
- "build:package-1": "yarn run build",
33
- "start": "yarn run dev"
23
+ "clean:deep": "pnpm run clean && shx rm -rf node_modules",
24
+ "dev": "cross-env NODE_ENV=development rspack build --config .webpack/webpack.dev.js --watch",
25
+ "dev:dicom-pmap": "pnpm run dev",
26
+ "build": "cross-env NODE_ENV=production rspack build --config .webpack/webpack.prod.js",
27
+ "build:package-1": "pnpm run build",
28
+ "start": "pnpm run dev"
34
29
  },
35
30
  "peerDependencies": {
36
- "@ohif/core": "3.13.0-beta.9",
37
- "@ohif/extension-cornerstone": "3.13.0-beta.9",
38
- "@ohif/extension-default": "3.13.0-beta.9",
39
- "@ohif/i18n": "3.13.0-beta.9",
31
+ "@ohif/core": "3.13.0-beta.92",
32
+ "@ohif/extension-cornerstone": "3.13.0-beta.92",
33
+ "@ohif/extension-default": "3.13.0-beta.92",
34
+ "@ohif/i18n": "3.13.0-beta.92",
40
35
  "prop-types": "15.8.1",
41
36
  "react": "18.3.1",
42
37
  "react-dom": "18.3.1",
@@ -45,9 +40,15 @@
45
40
  "react-router-dom": "6.30.3"
46
41
  },
47
42
  "dependencies": {
48
- "@babel/runtime": "7.28.2",
49
- "@cornerstonejs/adapters": "4.15.29",
50
- "@cornerstonejs/core": "4.15.29",
51
- "@kitware/vtk.js": "34.15.1"
52
- }
43
+ "@babel/runtime": "7.29.7",
44
+ "@cornerstonejs/adapters": "5.0.2",
45
+ "@cornerstonejs/core": "5.0.2",
46
+ "@kitware/vtk.js": "35.5.3"
47
+ },
48
+ "devDependencies": {
49
+ "cross-env": "7.0.3"
50
+ },
51
+ "keywords": [
52
+ "ohif-extension"
53
+ ]
53
54
  }
@@ -1,9 +0,0 @@
1
- /**
2
- * @license React
3
- * react.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */