@ohif/app 3.9.0-beta.63 → 3.9.0-beta.65

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.
Files changed (26) hide show
  1. package/dist/{281.bundle.7c7901a50253c44b7442.js → 281.bundle.b8b7d64372d238b1bed7.js} +2 -2
  2. package/dist/{360.bundle.8a8f7bd0f6abe249c0bf.js → 360.bundle.e9046bdadd9127c4c283.js} +64 -42
  3. package/dist/{516.bundle.2ef0b13819eba82a074a.js → 516.bundle.693f55fcf3bb54b40468.js} +2 -2
  4. package/dist/714.bundle.9b2c17c05367d7c0d610.js +714 -0
  5. package/dist/{842.bundle.1f7c1ed6e3fc4b3d6c0d.js → 842.bundle.a18175a4463177477ae0.js} +2 -2
  6. package/dist/app.bundle.css +2 -2
  7. package/dist/{app.bundle.7f68c3bf1b59a4296eb8.js → app.bundle.ebe09d60104c52d101df.js} +24 -9
  8. package/dist/index.html +1 -1
  9. package/dist/sw.js +1 -1
  10. package/package.json +18 -18
  11. package/dist/571.bundle.2b4e21bc61d7685a5fdb.js +0 -439
  12. /package/dist/{153.bundle.afe3ef7a718e10fe4dad.js → 153.bundle.0ae1608ab0c459f10034.js} +0 -0
  13. /package/dist/{210.bundle.ab7a30ddd8918c2430c0.js → 210.bundle.257ad99561da3bcd8898.js} +0 -0
  14. /package/dist/{246.bundle.56cb7242fd5fffa7e162.js → 246.bundle.fbf55ff25ff129a8803b.js} +0 -0
  15. /package/dist/{353.bundle.f24a9a5a6c132b064183.js → 353.bundle.35ad75ecf210b279b5d2.js} +0 -0
  16. /package/dist/{376.bundle.ba616b300f3928c0ff01.js → 376.bundle.c07661d7af53d348e9a6.js} +0 -0
  17. /package/dist/{502.bundle.ebdcf21b4235a0467291.js → 502.bundle.5ccd0605d5f7143e1a18.js} +0 -0
  18. /package/dist/{591.bundle.f10188994bacf4ea603f.js → 591.bundle.93e22748fb59e587b62c.js} +0 -0
  19. /package/dist/{65.bundle.51f001957a96f638b829.js → 65.bundle.9b25384f1dd15b04c099.js} +0 -0
  20. /package/dist/{791.bundle.4b3194aec51358ee63b5.js → 791.bundle.4debb283e99b3c663b79.js} +0 -0
  21. /package/dist/{888.bundle.e4baf21a08c731ff0cde.js → 888.bundle.f2989b50bdb1b0d4b5da.js} +0 -0
  22. /package/dist/{913.bundle.92c848a924160e13ea85.js → 913.bundle.f982e2af9e7287fc3539.js} +0 -0
  23. /package/dist/{944.bundle.4cae5a299a033b49d859.js → 944.bundle.c6c7ffe0ac1321ccbcea.js} +0 -0
  24. /package/dist/{962.bundle.716a1bdba3c497f813d3.js → 962.bundle.85a0fcaaf3c0aeeb6789.js} +0 -0
  25. /package/dist/{978.bundle.b4c917071818698e2d80.js → 978.bundle.56bcd4d2eea3e8622913.js} +0 -0
  26. /package/dist/{994.bundle.69e100d89d343c11903d.js → 994.bundle.ceeeed48891cf977dd14.js} +0 -0
@@ -1,439 +0,0 @@
1
- "use strict";
2
- (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[571],{
3
-
4
- /***/ 85571:
5
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
-
7
- __webpack_require__.r(__webpack_exports__);
8
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
10
- /* harmony export */ });
11
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3827);
12
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);
13
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43001);
14
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69190);
15
- /* harmony import */ var _ohif_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84793);
16
- /* harmony import */ var _tools_modules_dicomSRModule__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75449);
17
- /* harmony import */ var _ohif_ui__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(38604);
18
- /* harmony import */ var _utils_hydrateStructuredReport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83330);
19
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(52490);
20
- /* harmony import */ var _utils_createReferencedImageDisplaySet__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(92522);
21
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
- const MEASUREMENT_TRACKING_EXTENSION_ID = '@ohif/extension-measurement-tracking';
32
- const SR_TOOLGROUP_BASE_NAME = 'SRToolGroup';
33
- function OHIFCornerstoneSRViewport(props) {
34
- const {
35
- children,
36
- dataSource,
37
- displaySets,
38
- viewportOptions,
39
- servicesManager,
40
- extensionManager
41
- } = props;
42
- const [appConfig] = (0,_state__WEBPACK_IMPORTED_MODULE_7__/* .useAppConfig */ .M)();
43
- const {
44
- displaySetService,
45
- cornerstoneViewportService,
46
- measurementService,
47
- viewportActionCornersService
48
- } = servicesManager.services;
49
- const viewportId = viewportOptions.viewportId;
50
-
51
- // SR viewport will always have a single display set
52
- if (displaySets.length > 1) {
53
- throw new Error('SR viewport should only have a single display set');
54
- }
55
- const srDisplaySet = displaySets[0];
56
- const [viewportGrid, viewportGridService] = (0,_ohif_ui__WEBPACK_IMPORTED_MODULE_5__/* .useViewportGrid */ .O_)();
57
- const [measurementSelected, setMeasurementSelected] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);
58
- const [measurementCount, setMeasurementCount] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(1);
59
- const [activeImageDisplaySetData, setActiveImageDisplaySetData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
60
- const [referencedDisplaySetMetadata, setReferencedDisplaySetMetadata] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
61
- const [element, setElement] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
62
- const {
63
- viewports,
64
- activeViewportId
65
- } = viewportGrid;
66
- const {
67
- t
68
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__/* .useTranslation */ .$G)('Common');
69
-
70
- // Optional hook into tracking extension, if present.
71
- let trackedMeasurements;
72
- let sendTrackedMeasurementsEvent;
73
- const hasMeasurementTrackingExtension = extensionManager.registeredExtensionIds.includes(MEASUREMENT_TRACKING_EXTENSION_ID);
74
- if (hasMeasurementTrackingExtension) {
75
- const contextModule = extensionManager.getModuleEntry('@ohif/extension-measurement-tracking.contextModule.TrackedMeasurementsContext');
76
- const tracked = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(contextModule.context);
77
- trackedMeasurements = tracked?.[0];
78
- sendTrackedMeasurementsEvent = tracked?.[1];
79
- }
80
- if (!sendTrackedMeasurementsEvent) {
81
- // if no panels from measurement-tracking extension is used, this code will run
82
- trackedMeasurements = null;
83
- sendTrackedMeasurementsEvent = (eventName, {
84
- displaySetInstanceUID
85
- }) => {
86
- measurementService.clearMeasurements();
87
- const {
88
- SeriesInstanceUIDs
89
- } = (0,_utils_hydrateStructuredReport__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)({
90
- servicesManager,
91
- extensionManager,
92
- appConfig
93
- }, displaySetInstanceUID);
94
- const displaySets = displaySetService.getDisplaySetsForSeries(SeriesInstanceUIDs[0]);
95
- if (displaySets.length) {
96
- viewportGridService.setDisplaySetsForViewports([{
97
- viewportId: activeViewportId,
98
- displaySetInstanceUIDs: [displaySets[0].displaySetInstanceUID]
99
- }]);
100
- }
101
- };
102
- }
103
-
104
- /**
105
- * Store the tracking identifiers per viewport in order to be able to
106
- * show the SR measurements on the referenced image on the correct viewport,
107
- * when multiple viewports are used.
108
- */
109
- const setTrackingIdentifiers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(measurementSelected => {
110
- const {
111
- measurements
112
- } = srDisplaySet;
113
- (0,_tools_modules_dicomSRModule__WEBPACK_IMPORTED_MODULE_4__/* .setTrackingUniqueIdentifiersForElement */ .l2)(element, measurements.map(measurement => measurement.TrackingUniqueIdentifier), measurementSelected);
114
- }, [element, measurementSelected, srDisplaySet]);
115
-
116
- /**
117
- * OnElementEnabled callback which is called after the cornerstoneExtension
118
- * has enabled the element. Note: we delegate all the image rendering to
119
- * cornerstoneExtension, so we don't need to do anything here regarding
120
- * the image rendering, element enabling etc.
121
- */
122
- const onElementEnabled = evt => {
123
- setElement(evt.detail.element);
124
- };
125
- const updateViewport = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(newMeasurementSelected => {
126
- const {
127
- StudyInstanceUID,
128
- displaySetInstanceUID,
129
- sopClassUids
130
- } = srDisplaySet;
131
- if (!StudyInstanceUID || !displaySetInstanceUID) {
132
- return;
133
- }
134
- if (sopClassUids && sopClassUids.length > 1) {
135
- // Todo: what happens if there are multiple SOP Classes? Why we are
136
- // not throwing an error?
137
- console.warn('More than one SOPClassUID in the same series is not yet supported.');
138
- }
139
-
140
- // if (!srDisplaySet.measurements || !srDisplaySet.measurements.length) {
141
- // return;
142
- // }
143
-
144
- _getViewportReferencedDisplaySetData(srDisplaySet, newMeasurementSelected, displaySetService).then(({
145
- referencedDisplaySet,
146
- referencedDisplaySetMetadata
147
- }) => {
148
- setMeasurementSelected(newMeasurementSelected);
149
- setActiveImageDisplaySetData(referencedDisplaySet);
150
- setReferencedDisplaySetMetadata(referencedDisplaySetMetadata);
151
- if (referencedDisplaySet.displaySetInstanceUID === activeImageDisplaySetData?.displaySetInstanceUID) {
152
- const {
153
- measurements
154
- } = srDisplaySet;
155
-
156
- // it means that we have a new referenced display set, and the
157
- // imageIdIndex will handle it by updating the viewport, but if they
158
- // are the same we just need to use measurementService to jump to the
159
- // new measurement
160
- const csViewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
161
- const imageIds = csViewport.getImageIds();
162
- const imageIdIndex = imageIds.indexOf(measurements[newMeasurementSelected].imageId);
163
- if (imageIdIndex !== -1) {
164
- csViewport.setImageIdIndex(imageIdIndex);
165
- }
166
- }
167
- });
168
- }, [dataSource, srDisplaySet, activeImageDisplaySetData, viewportId]);
169
- const getCornerstoneViewport = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {
170
- if (!activeImageDisplaySetData) {
171
- return null;
172
- }
173
- const {
174
- component: Component
175
- } = extensionManager.getModuleEntry('@ohif/extension-cornerstone.viewportModule.cornerstone');
176
- const {
177
- measurements
178
- } = srDisplaySet;
179
- const measurement = measurements[measurementSelected];
180
- if (!measurement) {
181
- return null;
182
- }
183
- const initialImageIndex = activeImageDisplaySetData.images.findIndex(image => image.imageId === measurement.imageId);
184
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(Component, _extends({}, props, {
185
- // should be passed second since we don't want SR displaySet to
186
- // override the activeImageDisplaySetData
187
- displaySets: [activeImageDisplaySetData]
188
- // It is possible that there is a hanging protocol applying viewportOptions
189
- // for the SR, so inherit the viewport options
190
- // TODO: Ensure the viewport options are set correctly with respect to
191
- // stack etc, in the incoming viewport options.
192
- ,
193
- viewportOptions: {
194
- ...viewportOptions,
195
- toolGroupId: `${SR_TOOLGROUP_BASE_NAME}`,
196
- // viewportType should not be required, as the stack type should be
197
- // required already in order to view SR, but sometimes segmentation
198
- // views set the viewport type without fixing the allowed display
199
- viewportType: 'stack',
200
- // The positionIds for the viewport aren't meaningful for the child display sets
201
- positionIds: null
202
- },
203
- onElementEnabled: evt => {
204
- props.onElementEnabled?.(evt);
205
- onElementEnabled(evt);
206
- },
207
- initialImageIndex: initialImageIndex,
208
- isJumpToMeasurementDisabled: true
209
- }));
210
- }, [activeImageDisplaySetData, viewportId, measurementSelected]);
211
- const onMeasurementChange = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(direction => {
212
- let newMeasurementSelected = measurementSelected;
213
- newMeasurementSelected += direction;
214
- if (newMeasurementSelected >= measurementCount) {
215
- newMeasurementSelected = 0;
216
- } else if (newMeasurementSelected < 0) {
217
- newMeasurementSelected = measurementCount - 1;
218
- }
219
- setTrackingIdentifiers(newMeasurementSelected);
220
- updateViewport(newMeasurementSelected);
221
- }, [measurementSelected, measurementCount, updateViewport, setTrackingIdentifiers]);
222
-
223
- /**
224
- Cleanup the SR viewport when the viewport is destroyed
225
- */
226
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
227
- const onDisplaySetsRemovedSubscription = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SETS_REMOVED, ({
228
- displaySetInstanceUIDs
229
- }) => {
230
- const activeViewport = viewports.get(activeViewportId);
231
- if (displaySetInstanceUIDs.includes(activeViewport.displaySetInstanceUID)) {
232
- viewportGridService.setDisplaySetsForViewport({
233
- viewportId: activeViewportId,
234
- displaySetInstanceUIDs: []
235
- });
236
- }
237
- });
238
- return () => {
239
- onDisplaySetsRemovedSubscription.unsubscribe();
240
- };
241
- }, []);
242
-
243
- /**
244
- * Loading the measurements from the SR viewport, which goes through the
245
- * isHydratable check, the outcome for the isHydrated state here is always FALSE
246
- * since we don't do the hydration here. Todo: can't we just set it as false? why
247
- * we are changing the state here? isHydrated is always false at this stage, and
248
- * if it is hydrated we don't even use the SR viewport.
249
- */
250
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
251
- const loadSR = async () => {
252
- if (!srDisplaySet.isLoaded) {
253
- await srDisplaySet.load();
254
- }
255
- const numMeasurements = srDisplaySet.measurements.length;
256
- setMeasurementCount(numMeasurements);
257
- updateViewport(measurementSelected);
258
- };
259
- loadSR();
260
- }, [srDisplaySet]);
261
-
262
- /**
263
- * Hook to update the tracking identifiers when the selected measurement changes or
264
- * the element changes
265
- */
266
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
267
- const updateSR = async () => {
268
- if (!srDisplaySet.isLoaded) {
269
- await srDisplaySet.load();
270
- }
271
- if (!element || !srDisplaySet.isLoaded) {
272
- return;
273
- }
274
- setTrackingIdentifiers(measurementSelected);
275
- };
276
- updateSR();
277
- }, [measurementSelected, element, setTrackingIdentifiers, srDisplaySet]);
278
-
279
- /**
280
- * Todo: what is this, not sure what it does regarding the react aspect,
281
- * it is updating a local variable? which is not state.
282
- */
283
- const [isLocked, setIsLocked] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(trackedMeasurements?.context?.trackedSeries?.length > 0);
284
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
285
- setIsLocked(trackedMeasurements?.context?.trackedSeries?.length > 0);
286
- }, [trackedMeasurements]);
287
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
288
- viewportActionCornersService.setComponents([{
289
- viewportId,
290
- id: 'viewportStatusComponent',
291
- component: _getStatusComponent({
292
- srDisplaySet,
293
- viewportId,
294
- isRehydratable: srDisplaySet.isRehydratable,
295
- isLocked,
296
- sendTrackedMeasurementsEvent,
297
- t
298
- }),
299
- indexPriority: -100,
300
- location: viewportActionCornersService.LOCATIONS.topLeft
301
- }, {
302
- viewportId,
303
- id: 'viewportActionArrowsComponent',
304
- index: 0,
305
- component: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_5__/* .ViewportActionArrows */ .PG, {
306
- key: "actionArrows",
307
- onArrowsClick: onMeasurementChange
308
- }),
309
- indexPriority: 0,
310
- location: viewportActionCornersService.LOCATIONS.topRight
311
- }]);
312
- }, [isLocked, onMeasurementChange, sendTrackedMeasurementsEvent, srDisplaySet, t, viewportActionCornersService, viewportId]);
313
-
314
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315
- let childrenWithProps = null;
316
- if (!activeImageDisplaySetData || !referencedDisplaySetMetadata) {
317
- return null;
318
- }
319
- if (children && children.length) {
320
- childrenWithProps = children.map((child, index) => {
321
- return child && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.cloneElement(child, {
322
- viewportId,
323
- key: index
324
- });
325
- });
326
- }
327
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", {
328
- className: "relative flex h-full w-full flex-row overflow-hidden"
329
- }, getCornerstoneViewport(), childrenWithProps));
330
- }
331
- OHIFCornerstoneSRViewport.propTypes = {
332
- displaySets: prop_types__WEBPACK_IMPORTED_MODULE_0___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_0___default().object)),
333
- viewportId: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string).isRequired,
334
- dataSource: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object),
335
- children: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().node),
336
- viewportLabel: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string),
337
- viewportOptions: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object),
338
- servicesManager: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().object).isRequired,
339
- extensionManager: prop_types__WEBPACK_IMPORTED_MODULE_0___default().instanceOf(_ohif_core__WEBPACK_IMPORTED_MODULE_3__/* .ExtensionManager */ .W$).isRequired
340
- };
341
- async function _getViewportReferencedDisplaySetData(displaySet, measurementSelected, displaySetService) {
342
- const {
343
- measurements
344
- } = displaySet;
345
- const measurement = measurements[measurementSelected];
346
- const {
347
- displaySetInstanceUID
348
- } = measurement;
349
- if (!displaySet.keyImageDisplaySet) {
350
- // Create a new display set, and preserve a reference to it here,
351
- // so that it can be re-displayed and shown inside the SR viewport.
352
- // This is only for ease of redisplay - the display set is stored in the
353
- // usual manner in the display set service.
354
- displaySet.keyImageDisplaySet = (0,_utils_createReferencedImageDisplaySet__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z)(displaySetService, displaySet);
355
- }
356
- const referencedDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
357
- const image0 = referencedDisplaySet.images[0];
358
- const referencedDisplaySetMetadata = {
359
- PatientID: image0.PatientID,
360
- PatientName: image0.PatientName,
361
- PatientSex: image0.PatientSex,
362
- PatientAge: image0.PatientAge,
363
- SliceThickness: image0.SliceThickness,
364
- StudyDate: image0.StudyDate,
365
- SeriesDescription: image0.SeriesDescription,
366
- SeriesInstanceUID: image0.SeriesInstanceUID,
367
- SeriesNumber: image0.SeriesNumber,
368
- ManufacturerModelName: image0.ManufacturerModelName,
369
- SpacingBetweenSlices: image0.SpacingBetweenSlices
370
- };
371
- return {
372
- referencedDisplaySetMetadata,
373
- referencedDisplaySet
374
- };
375
- }
376
- function _getStatusComponent({
377
- srDisplaySet,
378
- viewportId,
379
- isRehydratable,
380
- isLocked,
381
- sendTrackedMeasurementsEvent,
382
- t
383
- }) {
384
- const handleMouseUp = () => {
385
- sendTrackedMeasurementsEvent('HYDRATE_SR', {
386
- displaySetInstanceUID: srDisplaySet.displaySetInstanceUID,
387
- viewportId
388
- });
389
- };
390
- const loadStr = t('LOAD');
391
-
392
- // 1 - Incompatible
393
- // 2 - Locked
394
- // 3 - Rehydratable / Open
395
- const state = isRehydratable && !isLocked ? 3 : isRehydratable && isLocked ? 2 : 1;
396
- let ToolTipMessage = null;
397
- let StatusIcon = null;
398
- switch (state) {
399
- case 1:
400
- StatusIcon = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_5__/* .Icon */ .JO, {
401
- name: "status-alert"
402
- });
403
- ToolTipMessage = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", null, "This structured report is not compatible", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("br", null), "with this application.");
404
- break;
405
- case 2:
406
- StatusIcon = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_5__/* .Icon */ .JO, {
407
- name: "status-locked"
408
- });
409
- ToolTipMessage = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", null, "This structured report is currently read-only", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("br", null), "because you are tracking measurements in", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("br", null), "another viewport.");
410
- break;
411
- case 3:
412
- StatusIcon = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_5__/* .Icon */ .JO, {
413
- className: "text-aqua-pale",
414
- name: "status-untracked"
415
- });
416
- ToolTipMessage = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", null, `Click ${loadStr} to restore measurements.`);
417
- }
418
- const StatusArea = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", {
419
- className: "flex h-6 cursor-default text-sm leading-6 text-white"
420
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", {
421
- className: "bg-customgray-100 flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"
422
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(StatusIcon, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("span", {
423
- className: "ml-1"
424
- }, "SR")), state === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", {
425
- className: "bg-primary-main hover:bg-primary-light ml-1 cursor-pointer rounded px-1.5 hover:text-black"
426
- // Using onMouseUp here because onClick is not working when the viewport is not active and is styled with pointer-events:none
427
- ,
428
- onMouseUp: handleMouseUp
429
- }, loadStr));
430
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, ToolTipMessage && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_ohif_ui__WEBPACK_IMPORTED_MODULE_5__/* .Tooltip */ .u, {
431
- content: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(ToolTipMessage, null),
432
- position: "bottom-left"
433
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(StatusArea, null)), !ToolTipMessage && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(StatusArea, null));
434
- }
435
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OHIFCornerstoneSRViewport);
436
-
437
- /***/ })
438
-
439
- }]);