dicomweb-proxy
Version:
A proxy to translate between dicomweb and dimse
2 lines • 4.29 kB
JavaScript
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9862],{49862:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var r=n(86326),s=n(97598),i=n.n(s),o=n(2836),a=n(4667),l=n(55844),c=n(15327),u=n(99993);function d(){return d=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},d.apply(null,arguments)}function m(e){const{displaySets:t,viewportId:n,servicesManager:s,extensionManager:i}=e,{measurementService:m,cornerstoneViewportService:p,viewportGridService:f,viewportActionCornersService:v}=s.services,S=t[0],{t:I}=(0,u.Bd)("Common"),[w]=(0,o.ihW)(),{activeViewportId:g}=w,[b,h]=(0,l.B)(),[D,V]=(0,r.useState)(!1),[T,y]=(0,r.useState)(null),[C,k]=(0,r.useState)(null),{trackedSeries:M}=b.context,{SeriesInstanceUID:R}=S,A=(0,r.useCallback)((()=>{const e=p.getCornerstoneViewport(n);if(e instanceof c.BaseVolumeViewport){const t=e?.getCurrentImageId();if(!t)return void(D&&V(!1))}M.includes(R)!==D&&V(!D)}),[D,b,n,R]),N=(0,r.useCallback)((e=>{e.detail.element!==C&&(e.detail.element?.addEventListener(c.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,A),k(e.detail.element))}),[A,C]),O=(0,r.useCallback)((()=>{C?.removeEventListener(c.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,A)}),[A,C]);(0,r.useEffect)(A,[A]),(0,r.useEffect)((()=>{const{unsubscribe:e}=p.subscribe(p.EVENTS.VIEWPORT_DATA_CHANGED,(e=>{e.viewportId===n&&A()}));return()=>{e()}}),[A,n]),(0,r.useEffect)((()=>D?(a.annotation.config.style.setViewportToolStyles(n,{ReferenceLines:{lineDash:"4,4"},global:{lineDash:""}}),void p.getRenderingEngine().renderViewport(n)):(a.annotation.config.style.setViewportToolStyles(n,{global:{lineDash:"4,4"}}),p.getRenderingEngine().renderViewport(n),()=>{a.annotation.config.style.setViewportToolStyles(n,{})})),[D]),(0,r.useEffect)((()=>{const e=m.EVENTS.MEASUREMENT_ADDED,t=m.EVENTS.RAW_MEASUREMENT_ADDED,r=[];return[e,t].forEach((e=>{r.push(m.subscribe(e,(({source:e,measurement:t})=>{const{activeViewportId:r}=f.getState();if(n===r){const{referenceStudyUID:e,referenceSeriesUID:r,uid:s,toolName:i}=t;h("SET_DIRTY",{SeriesInstanceUID:r}),h("TRACK_SERIES",{viewportId:n,StudyInstanceUID:e,SeriesInstanceUID:r,measurementId:s,toolName:i})}})).unsubscribe)})),()=>{r.forEach((e=>{e()}))}}),[m,h,n,f]);const U=(0,r.useCallback)((e=>{const t=function(e,t,n,r){const{measurementService:s,viewportGridService:i}=t.services,o=s.getMeasurements(),{activeViewportId:a,viewports:l}=i.getState(),{displaySetInstanceUIDs:c}=l.get(a),{trackedSeries:u}=r.context,d=o.filter((e=>u.includes(e.referenceSeriesUID)&&c.includes(e.displaySetInstanceUID)));if(!d.length)return;const m=d.length,E=d.map((e=>e.uid));let p=E.findIndex((e=>e===n));-1===p?p=0:(p+=e,p<0?p=m-1:p===m&&(p=0));return E[p]}(e,s,T,b);t&&(y(t),m.jumpToMeasurement(n,t))}),[m,s,T,b,n]);(0,r.useEffect)((()=>{const e=function(e,t){if(!e)return null;return r.createElement(o.m_M,null,r.createElement(o.k$k,{asChild:!0},r.createElement("span",null,r.createElement(o.FI1.StatusTracking,{className:"text-muted-foreground mt-0.5 ml-0.5"}))),r.createElement(o.ZIw,{align:"start",side:"bottom"},e?r.createElement(r.Fragment,null,t("Series is tracked and can be viewed in the measurement panel")):r.createElement(r.Fragment,null,t("Measurements for untracked series will not be shown in the measurements panel"))))}(D,I),t=E(D,U,n===g);v.addComponents([{viewportId:n,id:"viewportStatusComponent",component:e,indexPriority:-100,location:v.LOCATIONS.topLeft},{viewportId:n,id:"viewportActionArrowsComponent",component:t,indexPriority:0,location:v.LOCATIONS.topRight}])}),[g,D,U,v,n]);return r.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},(()=>{const{component:t}=i.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone");return r.createElement(t,d({},e,{onElementEnabled:t=>{e.onElementEnabled?.(t),N(t)},onElementDisabled:O}))})())}m.propTypes={displaySets:i().arrayOf(i().object.isRequired).isRequired,viewportId:i().string.isRequired,dataSource:i().object,children:i().node};const E=(e,t,n)=>e?r.createElement(o.$IX,{onArrowsClick:e=>t(e),className:n?"visible":"invisible group-hover/pane:visible"}):null;const p=m}}]);
//# sourceMappingURL=9862.bundle.7ab369b3c9a083a59d2f.js.map