@ohif/extension-cornerstone-dicom-pmap 3.10.0-beta.21 → 3.10.0-beta.23

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,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/ui")):"function"==typeof define&&define.amd?define(["@cornerstonejs/adapters","@cornerstonejs/core","@ohif/core","@ohif/extension-cornerstone","@ohif/ui"],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/ui")):e["ohif-extension-cornerstone-dicom-pmap"]=t(e["@cornerstonejs/adapters"],e["@cornerstonejs/core"],e["@ohif/core"],e["@ohif/extension-cornerstone"],e["@ohif/ui"])}(self,((e,t,r,n,o)=>(()=>{var a,i,s={51:(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(307);function s(){return s=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},s.apply(null,arguments)}function c(e){const{displaySets:t,children:r,viewportOptions:n,displaySetOptions:o,servicesManager:c,extensionManager:u}=e,l=n.viewportId,{displaySetService:p,segmentationService:f,uiNotificationService:d}=c.services;if(1!==t.length)throw new Error("PMAP viewport must have a single display set");const y=t[0],[m,S]=(0,i.useViewportGrid)(),v=(0,a.useRef)(null),{viewports:h,activeViewportId:g}=m,I=y.getReferenceDisplaySet(),b=function(e,t){const{SharedFunctionalGroupsSequence:r}=t.instance,n=Array.isArray(r)?r[0]:r,{PixelMeasuresSequence:o}=n,a=Array.isArray(o)?o[0]:o,{SpacingBetweenSlices:i,SliceThickness:s}=a,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||i};return u}(I,y);v.current={displaySet:I,metadata:b};const[w,D]=(0,a.useState)(!y.isLoaded);(0,a.useEffect)((()=>{const{unsubscribe:e}=f.subscribe(f.EVENTS.SEGMENTATION_LOADING_COMPLETE,(e=>{e.pmapDisplaySet?.displaySetInstanceUID===y.displaySetInstanceUID&&D(!1)}));return()=>{e()}}),[y]);const _=(0,a.useCallback)((()=>{const{displaySet:t}=v.current,{component:r}=u.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone");o.unshift({});const[i]=o;return i.options=i.options??{},Object.assign(i.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(r,s({},e,{displaySets:[t,y],viewportOptions:{viewportType:"volume",orientation:n.orientation,viewportId:n.viewportId},displaySetOptions:[{},i]}))}),[u,o,e,y,n.orientation,n.viewportId]);(0,a.useEffect)((()=>{const e=p.subscribe(p.EVENTS.DISPLAY_SETS_REMOVED,(({displaySetInstanceUIDs:e})=>{const t=h.get(g);e.includes(t.displaySetInstanceUID)&&S.setDisplaySetsForViewport({viewportId:g,displaySetInstanceUIDs:[]})}));return()=>{e.unsubscribe()}}),[g,p,S,h]);let E=null;return r&&r.length&&(E=r.map(((e,t)=>e&&a.cloneElement(e,{viewportId:l,key:t})))),a.createElement(a.Fragment,null,a.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},w&&a.createElement(i.LoadingIndicatorTotalPercent,{className:"h-full w-full",totalNumbers:null,percentComplete:null,loadingText:"Loading Parametric Map..."}),_(),E))}c.propTypes={displaySets:o().arrayOf(o().object),viewportId:o().string.isRequired,dataSource:o().object,children:o().node};const 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=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: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"),i=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 g(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 I=g.prototype=new h;I.constructor=g,m(I,v.prototype),I.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,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)w.call(t,o)&&!_.hasOwnProperty(o)&&(a[o]=t[o]);var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){for(var u=Array(c),l=0;l<c;l++)u[l]=arguments[l+2];a.children=u}if(e&&e.defaultProps)for(o in c=e.defaultProps)void 0===a[o]&&(a[o]=c[o]);return{$$typeof:r,type:e,key:i,ref:s,props:a,_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,a,i){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 i=i(c=e),e=""===a?"."+x(c,0):a,b(i)?(o="",null!=e&&(o=e.replace(P,"$&/")+"/"),U(i,t,o,"",(function(e){return e}))):null!=i&&(O(i)&&(i=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||c&&c.key===i.key?"":(""+i.key).replace(P,"$&/")+"/")+e)),t.push(i)),1;if(c=0,a=""===a?".":a+":",b(e))for(var u=0;u<e.length;u++){var l=a+x(s=e[u],u);c+=U(s,t,o,l,i)}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=a+x(s,u++),i);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=i,t.PureComponent=g,t.StrictMode=a,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),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=D.current),void 0!==t.key&&(a=""+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:a,ref:i,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},307:e=>{"use strict";e.exports=o}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}};return s[e](r,r.exports,u),r.exports}u.m=s,a=[],u.O=(e,t,r,n)=>{if(!t){var o=1/0;for(l=0;l<a.length;l++){t=a[l][0],r=a[l][1],n=a[l][2];for(var i=!0,s=0;s<t.length;s++)(!1&n||o>=n)&&Object.keys(u.O).every((e=>u.O[e](t[s])))?t.splice(s--,1):(i=!1,n<o&&(o=n));if(i){a.splice(l--,1);var c=r();void 0!==c&&(e=c)}}return e}n=n||0;for(var l=a.length;l>0&&a[l-1][2]>n;l--)a[l]=a[l-1];a[l]=[t,r,n]},u.F={},u.E=e=>{Object.keys(u.F).map((t=>{u.F[t](e)}))},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.miniCssF=e=>{},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.p="/",i={524:0},u.F.j=e=>{if(!u.o(i,e)||void 0===i[e]){i[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===i[e],u.O(0,[524],(()=>{u.E(524)}),5);var l={};return(()=>{"use strict";u.r(l),u.d(l,{default:()=>v});const e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-pmap"}').UU,t=`${e}.sopClassHandlerModule.dicom-pmap`;var r=u(326),n=u(2),o=u(557),a=u(142),i=u(669);const s="cornerstoneStreamingImageVolume",c=["1.2.840.10008.5.1.4.1.1.30"];function p(e,r,u){const l=e[0],{StudyInstanceUID:p,SeriesInstanceUID:d,SOPInstanceUID:y,SeriesDescription:m,SeriesNumber:S,SeriesDate:v,SOPClassUID:h,wadoRoot:g,wadoUri:I,wadoUriRoot:b}=l,w={Modality:"PMAP",isReconstructable:!0,displaySetInstanceUID:`pmap.${n.utils.guid()}`,SeriesDescription:m,SeriesNumber:S,SeriesDate:v,SOPInstanceUID:y,SeriesInstanceUID:d,StudyInstanceUID:p,SOPClassHandlerId:t,SOPClassUID:h,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,referencedVolumeURI:null,referencedVolumeId:null,isDerivedDisplaySet:!0,loadStatus:{loading:!1,loaded:!1},sopClassUids:c,instance:l,instances:[l],wadoRoot:g,wadoUriRoot:b,wadoUri:I,isOverlayDisplaySet:!0},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=`${s}:${e}`;return w.referencedVolumeURI=e,w.referencedVolumeId=t,t},w.load=async({headers:e})=>await async function(e,t,r,n){const c=`${s}:${e.displaySetInstanceUID}`,u=o.cache.getVolumeLoadObject(c);if(u)return u.promise;e.loading=!0,e.isLoaded=!1;const l=async function({displaySet:e,headers:t}){const r=await i.dicomLoaderService.findDicomDataPromise(e,null,t),n=e.getReferencedVolumeId(),s=o.cache.getVolume(n);if(!s)throw new Error("Referenced Volume is missing for the PMAP, and stack viewport PMAP is not supported yet");const{imageIds:c}=s,u=await a.adaptersPMAP.Cornerstone3D.ParametricMap.generateToolState(c,r,o.metaData),{pixelData:l}=u,p=l.constructor,d=e.displaySetInstanceUID,y=await o.volumeLoader.createAndCacheDerivedVolume(n,{volumeId:d,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=f(m),v=o.utilities.windowLevel.toWindowLevel(S[0],S[1]);return y.metadata.voiLut=[v],y.loadStatus={loaded:!0},y}({extensionManager:r,displaySet:e,headers:n});return o.cache.putVolumeLoadObject(c,{promise:l}).catch((e=>{throw e})),l.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})),l}(w,r,u,e),[w]}const f=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 d=function({servicesManager:e,extensionManager:t}){return[{name:"dicom-pmap",sopClassUids:c,getDisplaySetsFromSeries:r=>p(r,e,t)}]};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},y.apply(null,arguments)}const m=r.lazy((()=>Promise.resolve().then(u.bind(u,51)))),S=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(m,e)),v={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:d}})(),l=u.O(l)})()));
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/ui")):"function"==typeof define&&define.amd?define(["@cornerstonejs/adapters","@cornerstonejs/core","@ohif/core","@ohif/extension-cornerstone","@ohif/ui"],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/ui")):e["ohif-extension-cornerstone-dicom-pmap"]=t(e["@cornerstonejs/adapters"],e["@cornerstonejs/core"],e["@ohif/core"],e["@ohif/extension-cornerstone"],e["@ohif/ui"])}(self,((e,t,r,n,o)=>(()=>{var a,i,s={51:(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(307);function s(){return s=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},s.apply(null,arguments)}function c(e){const{displaySets:t,children:r,viewportOptions:n,displaySetOptions:o,servicesManager:c,extensionManager:u}=e,l=n.viewportId,{displaySetService:p,segmentationService:f,uiNotificationService:d}=c.services;if(1!==t.length)throw new Error("PMAP viewport must have a single display set");const y=t[0],[m,S]=(0,i.useViewportGrid)(),v=(0,a.useRef)(null),{viewports:h,activeViewportId:g}=m,I=y.getReferenceDisplaySet(),b=function(e,t){const{SharedFunctionalGroupsSequence:r}=t.instance,n=Array.isArray(r)?r[0]:r,{PixelMeasuresSequence:o}=n,a=Array.isArray(o)?o[0]:o,{SpacingBetweenSlices:i,SliceThickness:s}=a,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||i};return u}(I,y);v.current={displaySet:I,metadata:b};const[w,D]=(0,a.useState)(!y.isLoaded);(0,a.useEffect)((()=>{const{unsubscribe:e}=f.subscribe(f.EVENTS.SEGMENTATION_LOADING_COMPLETE,(e=>{e.pmapDisplaySet?.displaySetInstanceUID===y.displaySetInstanceUID&&D(!1)}));return()=>{e()}}),[y]);const _=(0,a.useCallback)((()=>{const{displaySet:t}=v.current,{component:r}=u.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone");o.unshift({});const[i]=o;return i.options=i.options??{},Object.assign(i.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(r,s({},e,{displaySets:[t,y],viewportOptions:{viewportType:"volume",orientation:n.orientation,viewportId:n.viewportId,presentationIds:n.presentationIds},displaySetOptions:[{},i]}))}),[u,o,e,y,n.orientation,n.viewportId]);(0,a.useEffect)((()=>{const e=p.subscribe(p.EVENTS.DISPLAY_SETS_REMOVED,(({displaySetInstanceUIDs:e})=>{const t=h.get(g);e.includes(t.displaySetInstanceUID)&&S.setDisplaySetsForViewport({viewportId:g,displaySetInstanceUIDs:[]})}));return()=>{e.unsubscribe()}}),[g,p,S,h]);let E=null;return r&&r.length&&(E=r.map(((e,t)=>e&&a.cloneElement(e,{viewportId:l,key:t})))),a.createElement(a.Fragment,null,a.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},w&&a.createElement(i.LoadingIndicatorTotalPercent,{className:"h-full w-full",totalNumbers:null,percentComplete:null,loadingText:"Loading Parametric Map..."}),_(),E))}c.propTypes={displaySets:o().arrayOf(o().object),viewportId:o().string.isRequired,dataSource:o().object,children:o().node};const 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=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: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"),i=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 g(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 I=g.prototype=new h;I.constructor=g,m(I,v.prototype),I.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,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)w.call(t,o)&&!_.hasOwnProperty(o)&&(a[o]=t[o]);var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){for(var u=Array(c),l=0;l<c;l++)u[l]=arguments[l+2];a.children=u}if(e&&e.defaultProps)for(o in c=e.defaultProps)void 0===a[o]&&(a[o]=c[o]);return{$$typeof:r,type:e,key:i,ref:s,props:a,_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,a,i){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 i=i(c=e),e=""===a?"."+x(c,0):a,b(i)?(o="",null!=e&&(o=e.replace(P,"$&/")+"/"),U(i,t,o,"",(function(e){return e}))):null!=i&&(O(i)&&(i=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||c&&c.key===i.key?"":(""+i.key).replace(P,"$&/")+"/")+e)),t.push(i)),1;if(c=0,a=""===a?".":a+":",b(e))for(var u=0;u<e.length;u++){var l=a+x(s=e[u],u);c+=U(s,t,o,l,i)}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=a+x(s,u++),i);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=i,t.PureComponent=g,t.StrictMode=a,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),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=D.current),void 0!==t.key&&(a=""+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:a,ref:i,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},307:e=>{"use strict";e.exports=o}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}};return s[e](r,r.exports,u),r.exports}u.m=s,a=[],u.O=(e,t,r,n)=>{if(!t){var o=1/0;for(l=0;l<a.length;l++){t=a[l][0],r=a[l][1],n=a[l][2];for(var i=!0,s=0;s<t.length;s++)(!1&n||o>=n)&&Object.keys(u.O).every((e=>u.O[e](t[s])))?t.splice(s--,1):(i=!1,n<o&&(o=n));if(i){a.splice(l--,1);var c=r();void 0!==c&&(e=c)}}return e}n=n||0;for(var l=a.length;l>0&&a[l-1][2]>n;l--)a[l]=a[l-1];a[l]=[t,r,n]},u.F={},u.E=e=>{Object.keys(u.F).map((t=>{u.F[t](e)}))},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.miniCssF=e=>{},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.p="/",i={524:0},u.F.j=e=>{if(!u.o(i,e)||void 0===i[e]){i[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===i[e],u.O(0,[524],(()=>{u.E(524)}),5);var l={};return(()=>{"use strict";u.r(l),u.d(l,{default:()=>v});const e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-pmap"}').UU,t=`${e}.sopClassHandlerModule.dicom-pmap`;var r=u(326),n=u(2),o=u(557),a=u(142),i=u(669);const s="cornerstoneStreamingImageVolume",c=["1.2.840.10008.5.1.4.1.1.30"];function p(e,r,u){const l=e[0],{StudyInstanceUID:p,SeriesInstanceUID:d,SOPInstanceUID:y,SeriesDescription:m,SeriesNumber:S,SeriesDate:v,SOPClassUID:h,wadoRoot:g,wadoUri:I,wadoUriRoot:b}=l,w={Modality:"PMAP",isReconstructable:!0,displaySetInstanceUID:`pmap.${n.utils.guid()}`,SeriesDescription:m,SeriesNumber:S,SeriesDate:v,SOPInstanceUID:y,SeriesInstanceUID:d,StudyInstanceUID:p,SOPClassHandlerId:t,SOPClassUID:h,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,referencedVolumeURI:null,referencedVolumeId:null,isDerivedDisplaySet:!0,loadStatus:{loading:!1,loaded:!1},sopClassUids:c,instance:l,instances:[l],wadoRoot:g,wadoUriRoot:b,wadoUri:I,isOverlayDisplaySet:!0},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=`${s}:${e}`;return w.referencedVolumeURI=e,w.referencedVolumeId=t,t},w.load=async({headers:e})=>await async function(e,t,r,n){const c=`${s}:${e.displaySetInstanceUID}`,u=o.cache.getVolumeLoadObject(c);if(u)return u.promise;e.loading=!0,e.isLoaded=!1;const l=async function({displaySet:e,headers:t}){const r=await i.dicomLoaderService.findDicomDataPromise(e,null,t),n=e.getReferencedVolumeId(),s=o.cache.getVolume(n);if(!s)throw new Error("Referenced Volume is missing for the PMAP, and stack viewport PMAP is not supported yet");const{imageIds:c}=s,u=await a.adaptersPMAP.Cornerstone3D.ParametricMap.generateToolState(c,r,o.metaData),{pixelData:l}=u,p=l.constructor,d=e.displaySetInstanceUID,y=await o.volumeLoader.createAndCacheDerivedVolume(n,{volumeId:d,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=f(m),v=o.utilities.windowLevel.toWindowLevel(S[0],S[1]);return y.metadata.voiLut=[v],y.loadStatus={loaded:!0},y}({extensionManager:r,displaySet:e,headers:n});return o.cache.putVolumeLoadObject(c,{promise:l}).catch((e=>{throw e})),l.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})),l}(w,r,u,e),[w]}const f=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 d=function({servicesManager:e,extensionManager:t}){return[{name:"dicom-pmap",sopClassUids:c,getDisplaySetsFromSeries:r=>p(r,e,t)}]};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},y.apply(null,arguments)}const m=r.lazy((()=>Promise.resolve().then(u.bind(u,51)))),S=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(m,e)),v={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:d}})(),l=u.O(l)})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohif/extension-cornerstone-dicom-pmap",
3
- "version": "3.10.0-beta.21",
3
+ "version": "3.10.0-beta.23",
4
4
  "description": "DICOM Parametric Map read workflow",
5
5
  "author": "OHIF",
6
6
  "license": "MIT",
@@ -33,10 +33,10 @@
33
33
  "start": "yarn run dev"
34
34
  },
35
35
  "peerDependencies": {
36
- "@ohif/core": "3.10.0-beta.21",
37
- "@ohif/extension-cornerstone": "3.10.0-beta.21",
38
- "@ohif/extension-default": "3.10.0-beta.21",
39
- "@ohif/i18n": "3.10.0-beta.21",
36
+ "@ohif/core": "3.10.0-beta.23",
37
+ "@ohif/extension-cornerstone": "3.10.0-beta.23",
38
+ "@ohif/extension-default": "3.10.0-beta.23",
39
+ "@ohif/i18n": "3.10.0-beta.23",
40
40
  "prop-types": "^15.6.2",
41
41
  "react": "^18.3.1",
42
42
  "react-dom": "^18.3.1",