@ohif/app 3.8.0-beta.8 → 3.8.0-beta.81
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.
- package/dist/{220.bundle.f7e1c96c94245e70f2be.js → 109.bundle.b4fee2a22b622839baf5.js} +4466 -3715
- package/dist/{471.bundle.49c8d281adbae4a2c4df.js → 121.bundle.47f05840a5b3cdf75543.js} +94 -113
- package/dist/141.bundle.556b4c1e4cab770417ac.js +8620 -0
- package/dist/{687.bundle.9065db35c01823286f08.js → 164.bundle.fadc7c5d634402c73b5f.js} +22 -38
- package/dist/17dd54813d5acc10bf8f.wasm +0 -0
- package/dist/183.bundle.a3e238998be71c4b2af8.js +30410 -0
- package/dist/{506.bundle.5731bb4349e266491225.js → 188.bundle.51dc4b37920f45594393.js} +23 -28
- package/dist/{342.bundle.e7c3d500f86fdfcc62b5.js → 206.bundle.fcaa081a0d1f68095c31.js} +1991 -1145
- package/dist/20fc4c659b85ccd2a9c0.wasm +0 -0
- package/dist/217.bundle.d44bbaa50b6fa563fe15.js +115126 -0
- package/dist/{451.bundle.57c21db5d003c75e9d61.js → 295.bundle.5ace95771ced62bdcab8.js} +111 -128
- package/dist/{125.bundle.253395f320b72180da63.js → 297.bundle.194d8985ab974839b5b6.js} +7 -8
- package/dist/{19.bundle.f77c5787b6d8ac0b638b.js → 325.bundle.fd8e0c18db4708d03a91.js} +477 -373
- package/dist/335.bundle.8400aa5a88697a6b9d53.js +2590 -0
- package/dist/{202.bundle.d3490836f71e001dd30f.js → 342.bundle.e6d0bba29351b5650a8c.js} +566 -868
- package/dist/{776.bundle.a2dedb405a12ffd7699b.js → 41.bundle.0905b258a90a7c6437bb.js} +7453 -3624
- package/dist/422.bundle.c6fd037b075dd54f1ba7.js +865 -0
- package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 433.bundle.e0018820758f5a86fa7f.js} +14797 -27561
- package/dist/445.bundle.38c6d2af64e41cd7c614.js +7835 -0
- package/dist/{126.bundle.6e7111d58bcc937ffd80.js → 448.bundle.5e6da31477887bf53016.js} +356 -430
- package/dist/487.bundle.89d973049defb3ba6cb7.js +1876 -0
- package/dist/{886.bundle.c8dd3ecc42a4253de278.js → 530.bundle.207b38c15c4c01e4db0e.js} +104 -121
- package/dist/{250.bundle.aea3335667054bdefe36.js → 544.bundle.1c1f57118560046649c1.js} +37 -62
- package/dist/574.bundle.d648fea691d6709bf2b4.js +2652 -0
- package/dist/{181.css → 574.css} +1 -1
- package/dist/{410.bundle.15c855b0ff4a1a674fb8.js → 594.bundle.84076375b127b9c7f673.js} +183 -221
- package/dist/{221.bundle.aef554202c58483cb34e.js → 633.bundle.acab89baaa06a299d679.js} +365 -553
- package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 644.bundle.1e77691d2eeb96a423b0.js} +1852 -8945
- package/dist/{663.bundle.d7be28450db14266cdd0.js → 669.bundle.b17e8a621e38d92c653f.js} +310 -265
- package/dist/699.bundle.9367d7ef9f7615b2e733.js +772 -0
- package/dist/702.bundle.963481fbf871984b646f.js +8426 -0
- package/dist/722.bundle.afab1fe6bfcd569130ac.js +1083 -0
- package/dist/{359.bundle.45ecb3d28e8c22142606.js → 724.bundle.55f9f49816de931af91a.js} +165 -260
- package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 726.bundle.0b3d9277d22fe7e15b89.js} +512 -879
- package/dist/{530.bundle.a03b6f942ace3e1baa1e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +37 -30
- package/dist/{822.bundle.82cdc418f8f56da6060b.js → 862.bundle.d32ab08e64806b2e964d.js} +81 -97
- package/dist/{236.bundle.4e9924934a747afac132.js → 889.bundle.8ef8b723d0163d5d135c.js} +207 -199
- package/dist/{281.bundle.deb7492d143e7768d8bf.js → 905.bundle.8a96e1a75b7cfe5ec093.js} +157 -124
- package/dist/{814.bundle.c8c951d20039b63b865a.js → 907.bundle.5c88ed911bed18582da4.js} +16 -30
- package/dist/{417.bundle.af0a207c29b109f84159.js → 931.bundle.d270a1fda9a2836c3cc5.js} +26 -26
- package/dist/{686.bundle.dccef1f36e4bc79bcc48.js → 939.bundle.9d93b2e47c52338747a2.js} +7 -8
- package/dist/94.bundle.f5f2479c214180d05d42.js +778 -0
- package/dist/{12.bundle.b5ca13e5363f170ecb3b.js → 961.bundle.f4e52bc76d3044d05372.js} +20 -33
- package/dist/app-config.js +1 -0
- package/dist/app.bundle.css +16 -13
- package/dist/{app.bundle.a978edc59b9d82f2eb22.js → app.bundle.ed937512f7d19d61c411.js} +183396 -87682
- package/dist/assets/images/CT-AAA.png +0 -0
- package/dist/assets/images/CT-AAA2.png +0 -0
- package/dist/assets/images/CT-Air.png +0 -0
- package/dist/assets/images/CT-Bone.png +0 -0
- package/dist/assets/images/CT-Bones.png +0 -0
- package/dist/assets/images/CT-Cardiac.png +0 -0
- package/dist/assets/images/CT-Cardiac2.png +0 -0
- package/dist/assets/images/CT-Cardiac3.png +0 -0
- package/dist/assets/images/CT-Chest-Contrast-Enhanced.png +0 -0
- package/dist/assets/images/CT-Chest-Vessels.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries-2.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries-3.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries.png +0 -0
- package/dist/assets/images/CT-Cropped-Volume-Bone.png +0 -0
- package/dist/assets/images/CT-Fat.png +0 -0
- package/dist/assets/images/CT-Liver-Vasculature.png +0 -0
- package/dist/assets/images/CT-Lung.png +0 -0
- package/dist/assets/images/CT-MIP.png +0 -0
- package/dist/assets/images/CT-Muscle.png +0 -0
- package/dist/assets/images/CT-Pulmonary-Arteries.png +0 -0
- package/dist/assets/images/CT-Soft-Tissue.png +0 -0
- package/dist/assets/images/DTI-FA-Brain.png +0 -0
- package/dist/assets/images/MR-Angio.png +0 -0
- package/dist/assets/images/MR-Default.png +0 -0
- package/dist/assets/images/MR-MIP.png +0 -0
- package/dist/assets/images/MR-T2-Brain.png +0 -0
- package/dist/assets/images/VolumeRendering.png +0 -0
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/{dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
- package/dist/histogram-worker.bundle.829e14ec12c2b41a4323.js +359 -0
- package/dist/index.html +1 -1
- package/dist/{index.worker.e62ecca63f1a2e124230.worker.js → index.worker.64c896c4316fcd506666.worker.js} +2 -2
- package/dist/index.worker.64c896c4316fcd506666.worker.js.map +1 -0
- package/dist/polySeg.bundle.f1a6ece1396dc1385155.js +249 -0
- package/dist/serve.json +12 -0
- package/dist/sw.js +1 -1
- package/package.json +26 -22
- package/dist/181.bundle.a62b9f0ec692299acb35.js +0 -1527
- package/dist/23.bundle.e008ad788170f2ed5569.js +0 -900
- package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
- package/dist/613.bundle.9e7072e5b575354fe51e.js +0 -532
- package/dist/743.bundle.489f7df3a089d4d374e1.js +0 -78007
- package/dist/75788f12450d4c5ed494.wasm +0 -0
- package/dist/775.bundle.2285e7e0e67878948c0d.js +0 -1009
- package/dist/788.bundle.207ac23c0dfa70cbe3fb.js +0 -2682
- package/dist/82.bundle.d6fdcca0f67540bb226a.js +0 -1049
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
- /package/dist/{19.css → 325.css} +0 -0
- /package/dist/{776.css → 41.css} +0 -0
- /package/dist/{579.css → 481.css} +0 -0
- /package/dist/{250.css → 544.css} +0 -0
- /package/dist/{221.css → 633.css} +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[325,481],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 219:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
// EXPORTS
|
|
9
9
|
__webpack_require__.d(__webpack_exports__, {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
A: () => (/* binding */ src_getContextModule),
|
|
11
|
+
B: () => (/* reexport */ useTrackedMeasurements)
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
15
|
-
var react = __webpack_require__(
|
|
15
|
+
var react = __webpack_require__(41766);
|
|
16
16
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
17
|
-
var prop_types = __webpack_require__(
|
|
17
|
+
var prop_types = __webpack_require__(11374);
|
|
18
18
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
19
19
|
// EXTERNAL MODULE: ../../../node_modules/xstate/es/index.js + 22 modules
|
|
20
|
-
var es = __webpack_require__(
|
|
20
|
+
var es = __webpack_require__(57593);
|
|
21
21
|
// EXTERNAL MODULE: ../../../node_modules/@xstate/react/es/index.js + 8 modules
|
|
22
|
-
var react_es = __webpack_require__(
|
|
23
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
24
|
-
var src = __webpack_require__(
|
|
22
|
+
var react_es = __webpack_require__(6835);
|
|
23
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
|
|
24
|
+
var src = __webpack_require__(5085);
|
|
25
25
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
|
|
26
26
|
|
|
27
27
|
const RESPONSE = {
|
|
@@ -53,10 +53,27 @@ const machineConfiguration = {
|
|
|
53
53
|
off: {
|
|
54
54
|
type: 'final'
|
|
55
55
|
},
|
|
56
|
+
labellingOnly: {
|
|
57
|
+
on: {
|
|
58
|
+
TRACK_SERIES: [{
|
|
59
|
+
target: 'promptLabelAnnotation',
|
|
60
|
+
actions: ['setPreviousState']
|
|
61
|
+
}, {
|
|
62
|
+
target: 'off'
|
|
63
|
+
}]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
56
66
|
idle: {
|
|
57
67
|
entry: 'clearContext',
|
|
58
68
|
on: {
|
|
59
|
-
TRACK_SERIES:
|
|
69
|
+
TRACK_SERIES: [{
|
|
70
|
+
target: 'promptLabelAnnotation',
|
|
71
|
+
cond: 'isLabelOnMeasure',
|
|
72
|
+
actions: ['setPreviousState']
|
|
73
|
+
}, {
|
|
74
|
+
target: 'promptBeginTracking',
|
|
75
|
+
actions: ['setPreviousState']
|
|
76
|
+
}],
|
|
60
77
|
// Unused? We may only do PROMPT_HYDRATE_SR now?
|
|
61
78
|
SET_TRACKED_SERIES: [{
|
|
62
79
|
target: 'tracking',
|
|
@@ -69,7 +86,7 @@ const machineConfiguration = {
|
|
|
69
86
|
RESTORE_PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport',
|
|
70
87
|
HYDRATE_SR: 'hydrateStructuredReport',
|
|
71
88
|
UPDATE_ACTIVE_VIEWPORT_ID: {
|
|
72
|
-
actions: (0,es/* assign */.
|
|
89
|
+
actions: (0,es/* assign */.kp)({
|
|
73
90
|
activeViewportId: (_, event) => event.activeViewportId
|
|
74
91
|
})
|
|
75
92
|
}
|
|
@@ -82,6 +99,9 @@ const machineConfiguration = {
|
|
|
82
99
|
target: 'tracking',
|
|
83
100
|
actions: ['setTrackedStudyAndSeries', 'setIsDirty'],
|
|
84
101
|
cond: 'shouldSetStudyAndSeries'
|
|
102
|
+
}, {
|
|
103
|
+
target: 'labellingOnly',
|
|
104
|
+
cond: 'isLabelOnMeasureAndShouldKillMachine'
|
|
85
105
|
}, {
|
|
86
106
|
target: 'off',
|
|
87
107
|
cond: 'shouldKillMachine'
|
|
@@ -96,6 +116,10 @@ const machineConfiguration = {
|
|
|
96
116
|
tracking: {
|
|
97
117
|
on: {
|
|
98
118
|
TRACK_SERIES: [{
|
|
119
|
+
target: 'promptLabelAnnotation',
|
|
120
|
+
cond: 'isLabelOnMeasure',
|
|
121
|
+
actions: ['setPreviousState']
|
|
122
|
+
}, {
|
|
99
123
|
target: 'promptTrackNewStudy',
|
|
100
124
|
cond: 'isNewStudy'
|
|
101
125
|
}, {
|
|
@@ -224,6 +248,29 @@ const machineConfiguration = {
|
|
|
224
248
|
target: 'idle'
|
|
225
249
|
}
|
|
226
250
|
}
|
|
251
|
+
},
|
|
252
|
+
promptLabelAnnotation: {
|
|
253
|
+
invoke: {
|
|
254
|
+
src: 'promptLabelAnnotation',
|
|
255
|
+
onDone: [{
|
|
256
|
+
target: 'labellingOnly',
|
|
257
|
+
cond: 'wasLabellingOnly'
|
|
258
|
+
}, {
|
|
259
|
+
target: 'promptBeginTracking',
|
|
260
|
+
cond: 'wasIdle'
|
|
261
|
+
}, {
|
|
262
|
+
target: 'promptTrackNewStudy',
|
|
263
|
+
cond: 'wasTrackingAndIsNewStudy'
|
|
264
|
+
}, {
|
|
265
|
+
target: 'promptTrackNewSeries',
|
|
266
|
+
cond: 'wasTrackingAndIsNewSeries'
|
|
267
|
+
}, {
|
|
268
|
+
target: 'tracking',
|
|
269
|
+
cond: 'wasTracking'
|
|
270
|
+
}, {
|
|
271
|
+
target: 'off'
|
|
272
|
+
}]
|
|
273
|
+
}
|
|
227
274
|
}
|
|
228
275
|
},
|
|
229
276
|
strict: true
|
|
@@ -253,7 +300,7 @@ const defaultOptions = {
|
|
|
253
300
|
showStructuredReportDisplaySetInActiveViewport: (ctx, evt) => {
|
|
254
301
|
console.warn('showStructuredReportDisplaySetInActiveViewport: not implemented');
|
|
255
302
|
},
|
|
256
|
-
clearContext: (0,es/* assign */.
|
|
303
|
+
clearContext: (0,es/* assign */.kp)({
|
|
257
304
|
trackedStudy: '',
|
|
258
305
|
trackedSeries: [],
|
|
259
306
|
ignoredSeries: [],
|
|
@@ -262,7 +309,7 @@ const defaultOptions = {
|
|
|
262
309
|
prevIgnoredSeries: []
|
|
263
310
|
}),
|
|
264
311
|
// Promise resolves w/ `evt.data.*`
|
|
265
|
-
setTrackedStudyAndSeries: (0,es/* assign */.
|
|
312
|
+
setTrackedStudyAndSeries: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
266
313
|
prevTrackedStudy: ctx.trackedStudy,
|
|
267
314
|
prevTrackedSeries: ctx.trackedSeries.slice(),
|
|
268
315
|
prevIgnoredSeries: ctx.ignoredSeries.slice(),
|
|
@@ -271,7 +318,7 @@ const defaultOptions = {
|
|
|
271
318
|
trackedSeries: [evt.data.SeriesInstanceUID],
|
|
272
319
|
ignoredSeries: []
|
|
273
320
|
})),
|
|
274
|
-
setTrackedStudyAndMultipleSeries: (0,es/* assign */.
|
|
321
|
+
setTrackedStudyAndMultipleSeries: (0,es/* assign */.kp)((ctx, evt) => {
|
|
275
322
|
const studyInstanceUID = evt.StudyInstanceUID || evt.data.StudyInstanceUID;
|
|
276
323
|
const seriesInstanceUIDs = evt.SeriesInstanceUIDs || evt.data.SeriesInstanceUIDs;
|
|
277
324
|
return {
|
|
@@ -284,27 +331,32 @@ const defaultOptions = {
|
|
|
284
331
|
ignoredSeries: []
|
|
285
332
|
};
|
|
286
333
|
}),
|
|
287
|
-
setIsDirtyToClean: (0,es/* assign */.
|
|
334
|
+
setIsDirtyToClean: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
288
335
|
isDirty: false
|
|
289
336
|
})),
|
|
290
|
-
setIsDirty: (0,es/* assign */.
|
|
337
|
+
setIsDirty: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
291
338
|
isDirty: true
|
|
292
339
|
})),
|
|
293
|
-
ignoreSeries: (0,es/* assign */.
|
|
340
|
+
ignoreSeries: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
294
341
|
prevIgnoredSeries: [...ctx.ignoredSeries],
|
|
295
342
|
ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID]
|
|
296
343
|
})),
|
|
297
|
-
ignoreHydrationForSRSeries: (0,es/* assign */.
|
|
344
|
+
ignoreHydrationForSRSeries: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
298
345
|
ignoredSRSeriesForHydration: [...ctx.ignoredSRSeriesForHydration, evt.data.srSeriesInstanceUID]
|
|
299
346
|
})),
|
|
300
|
-
addTrackedSeries: (0,es/* assign */.
|
|
347
|
+
addTrackedSeries: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
301
348
|
prevTrackedSeries: [...ctx.trackedSeries],
|
|
302
349
|
trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID]
|
|
303
350
|
})),
|
|
304
|
-
removeTrackedSeries: (0,es/* assign */.
|
|
351
|
+
removeTrackedSeries: (0,es/* assign */.kp)((ctx, evt) => ({
|
|
305
352
|
prevTrackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID),
|
|
306
353
|
trackedSeries: ctx.trackedSeries.slice().filter(ser => ser !== evt.SeriesInstanceUID)
|
|
307
|
-
}))
|
|
354
|
+
})),
|
|
355
|
+
setPreviousState: (0,es/* assign */.kp)((ctx, evt, meta) => {
|
|
356
|
+
return {
|
|
357
|
+
prevState: meta.state.value
|
|
358
|
+
};
|
|
359
|
+
})
|
|
308
360
|
},
|
|
309
361
|
guards: {
|
|
310
362
|
// We set dirty any time we performan an action that:
|
|
@@ -330,6 +382,21 @@ const defaultOptions = {
|
|
|
330
382
|
evt.SeriesInstanceUID === undefined || ctx.trackedSeries.includes(evt.SeriesInstanceUID)
|
|
331
383
|
);
|
|
332
384
|
},
|
|
385
|
+
wasLabellingOnly: (ctx, evt, condMeta) => {
|
|
386
|
+
return ctx.prevState === 'labellingOnly';
|
|
387
|
+
},
|
|
388
|
+
wasIdle: (ctx, evt, condMeta) => {
|
|
389
|
+
return ctx.prevState === 'idle';
|
|
390
|
+
},
|
|
391
|
+
wasTracking: (ctx, evt, condMeta) => {
|
|
392
|
+
return ctx.prevState === 'tracking';
|
|
393
|
+
},
|
|
394
|
+
wasTrackingAndIsNewStudy: (ctx, evt, condMeta) => {
|
|
395
|
+
return ctx.prevState === 'tracking' && !ctx.ignoredSeries.includes(evt.data.SeriesInstanceUID) && ctx.trackedStudy !== evt.data.StudyInstanceUID;
|
|
396
|
+
},
|
|
397
|
+
wasTrackingAndIsNewSeries: (ctx, evt, condMeta) => {
|
|
398
|
+
return ctx.prevState === 'tracking' && !ctx.ignoredSeries.includes(evt.data.SeriesInstanceUID) && !ctx.trackedSeries.includes(evt.data.SeriesInstanceUID);
|
|
399
|
+
},
|
|
333
400
|
shouldKillMachine: (ctx, evt) => evt.data && evt.data.userResponse === RESPONSE.NO_NEVER,
|
|
334
401
|
shouldAddSeries: (ctx, evt) => evt.data && evt.data.userResponse === RESPONSE.ADD_SERIES,
|
|
335
402
|
shouldSetStudyAndSeries: (ctx, evt) => evt.data && evt.data.userResponse === RESPONSE.SET_STUDY_AND_SERIES,
|
|
@@ -350,8 +417,11 @@ const defaultOptions = {
|
|
|
350
417
|
}
|
|
351
418
|
};
|
|
352
419
|
|
|
420
|
+
// EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
|
|
421
|
+
var i18next = __webpack_require__(92344);
|
|
353
422
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptBeginTracking.js
|
|
354
423
|
|
|
424
|
+
|
|
355
425
|
const promptBeginTracking_RESPONSE = {
|
|
356
426
|
NO_NEVER: -1,
|
|
357
427
|
CANCEL: 0,
|
|
@@ -359,19 +429,20 @@ const promptBeginTracking_RESPONSE = {
|
|
|
359
429
|
ADD_SERIES: 2,
|
|
360
430
|
SET_STUDY_AND_SERIES: 3
|
|
361
431
|
};
|
|
362
|
-
function promptBeginTracking(
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
} = _ref;
|
|
432
|
+
function promptBeginTracking({
|
|
433
|
+
servicesManager,
|
|
434
|
+
extensionManager
|
|
435
|
+
}, ctx, evt) {
|
|
367
436
|
const {
|
|
368
437
|
uiViewportDialogService
|
|
369
438
|
} = servicesManager.services;
|
|
439
|
+
// When the state change happens after a promise, the state machine sends the retult in evt.data;
|
|
440
|
+
// In case of direct transition to the state, the state machine sends the data in evt;
|
|
370
441
|
const {
|
|
371
442
|
viewportId,
|
|
372
443
|
StudyInstanceUID,
|
|
373
444
|
SeriesInstanceUID
|
|
374
|
-
} = evt;
|
|
445
|
+
} = evt.data || evt;
|
|
375
446
|
return new Promise(async function (resolve, reject) {
|
|
376
447
|
let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
|
|
377
448
|
resolve({
|
|
@@ -384,21 +455,21 @@ function promptBeginTracking(_ref, ctx, evt) {
|
|
|
384
455
|
}
|
|
385
456
|
function _askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
386
457
|
return new Promise(function (resolve, reject) {
|
|
387
|
-
const message = 'Track measurements for this series?';
|
|
458
|
+
const message = i18next/* default */.A.t('MeasurementTable:Track measurements for this series?');
|
|
388
459
|
const actions = [{
|
|
389
460
|
id: 'prompt-begin-tracking-cancel',
|
|
390
|
-
type: src/* ButtonEnums.type */.
|
|
391
|
-
text: 'No',
|
|
461
|
+
type: src/* ButtonEnums.type */.Ny.NW.secondary,
|
|
462
|
+
text: i18next/* default */.A.t('Common:No'),
|
|
392
463
|
value: promptBeginTracking_RESPONSE.CANCEL
|
|
393
464
|
}, {
|
|
394
465
|
id: 'prompt-begin-tracking-no-do-not-ask-again',
|
|
395
|
-
type: src/* ButtonEnums.type */.
|
|
396
|
-
text: 'No, do not ask again',
|
|
466
|
+
type: src/* ButtonEnums.type */.Ny.NW.secondary,
|
|
467
|
+
text: i18next/* default */.A.t('MeasurementTable:No, do not ask again'),
|
|
397
468
|
value: promptBeginTracking_RESPONSE.NO_NEVER
|
|
398
469
|
}, {
|
|
399
470
|
id: 'prompt-begin-tracking-yes',
|
|
400
|
-
type: src/* ButtonEnums.type */.
|
|
401
|
-
text: 'Yes',
|
|
471
|
+
type: src/* ButtonEnums.type */.Ny.NW.primary,
|
|
472
|
+
text: i18next/* default */.A.t('Common:Yes'),
|
|
402
473
|
value: promptBeginTracking_RESPONSE.SET_STUDY_AND_SERIES
|
|
403
474
|
}];
|
|
404
475
|
const onSubmit = result => {
|
|
@@ -415,6 +486,12 @@ function _askTrackMeasurements(uiViewportDialogService, viewportId) {
|
|
|
415
486
|
onOutsideClick: () => {
|
|
416
487
|
uiViewportDialogService.hide();
|
|
417
488
|
resolve(promptBeginTracking_RESPONSE.CANCEL);
|
|
489
|
+
},
|
|
490
|
+
onKeyPress: event => {
|
|
491
|
+
if (event.key === 'Enter') {
|
|
492
|
+
const action = actions.find(action => action.id === 'prompt-begin-tracking-yes');
|
|
493
|
+
onSubmit(action.value);
|
|
494
|
+
}
|
|
418
495
|
}
|
|
419
496
|
});
|
|
420
497
|
});
|
|
@@ -430,19 +507,20 @@ const promptTrackNewSeries_RESPONSE = {
|
|
|
430
507
|
SET_STUDY_AND_SERIES: 3,
|
|
431
508
|
NO_NOT_FOR_SERIES: 4
|
|
432
509
|
};
|
|
433
|
-
function promptTrackNewSeries(
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
} = _ref;
|
|
510
|
+
function promptTrackNewSeries({
|
|
511
|
+
servicesManager,
|
|
512
|
+
extensionManager
|
|
513
|
+
}, ctx, evt) {
|
|
438
514
|
const {
|
|
439
515
|
UIViewportDialogService
|
|
440
516
|
} = servicesManager.services;
|
|
517
|
+
// When the state change happens after a promise, the state machine sends the retult in evt.data;
|
|
518
|
+
// In case of direct transition to the state, the state machine sends the data in evt;
|
|
441
519
|
const {
|
|
442
520
|
viewportId,
|
|
443
521
|
StudyInstanceUID,
|
|
444
522
|
SeriesInstanceUID
|
|
445
|
-
} = evt;
|
|
523
|
+
} = evt.data || evt;
|
|
446
524
|
return new Promise(async function (resolve, reject) {
|
|
447
525
|
let promptResult = await _askShouldAddMeasurements(UIViewportDialogService, viewportId);
|
|
448
526
|
if (promptResult === promptTrackNewSeries_RESPONSE.CREATE_REPORT) {
|
|
@@ -461,15 +539,15 @@ function _askShouldAddMeasurements(uiViewportDialogService, viewportId) {
|
|
|
461
539
|
return new Promise(function (resolve, reject) {
|
|
462
540
|
const message = 'Do you want to add this measurement to the existing report?';
|
|
463
541
|
const actions = [{
|
|
464
|
-
type: src/* ButtonEnums.type */.
|
|
542
|
+
type: src/* ButtonEnums.type */.Ny.NW.secondary,
|
|
465
543
|
text: 'Cancel',
|
|
466
544
|
value: promptTrackNewSeries_RESPONSE.CANCEL
|
|
467
545
|
}, {
|
|
468
|
-
type: src/* ButtonEnums.type */.
|
|
546
|
+
type: src/* ButtonEnums.type */.Ny.NW.primary,
|
|
469
547
|
text: 'Create new report',
|
|
470
548
|
value: promptTrackNewSeries_RESPONSE.CREATE_REPORT
|
|
471
549
|
}, {
|
|
472
|
-
type: src/* ButtonEnums.type */.
|
|
550
|
+
type: src/* ButtonEnums.type */.Ny.NW.primary,
|
|
473
551
|
text: 'Add to existing report',
|
|
474
552
|
value: promptTrackNewSeries_RESPONSE.ADD_SERIES
|
|
475
553
|
}];
|
|
@@ -525,6 +603,7 @@ function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
|
|
|
525
603
|
}
|
|
526
604
|
/* harmony default export */ const TrackedMeasurementsContext_promptTrackNewSeries = (promptTrackNewSeries);
|
|
527
605
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptTrackNewStudy.js
|
|
606
|
+
|
|
528
607
|
const promptTrackNewStudy_RESPONSE = {
|
|
529
608
|
NO_NEVER: -1,
|
|
530
609
|
CANCEL: 0,
|
|
@@ -533,19 +612,20 @@ const promptTrackNewStudy_RESPONSE = {
|
|
|
533
612
|
SET_STUDY_AND_SERIES: 3,
|
|
534
613
|
NO_NOT_FOR_SERIES: 4
|
|
535
614
|
};
|
|
536
|
-
function promptTrackNewStudy(
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
} = _ref;
|
|
615
|
+
function promptTrackNewStudy({
|
|
616
|
+
servicesManager,
|
|
617
|
+
extensionManager
|
|
618
|
+
}, ctx, evt) {
|
|
541
619
|
const {
|
|
542
620
|
UIViewportDialogService
|
|
543
621
|
} = servicesManager.services;
|
|
622
|
+
// When the state change happens after a promise, the state machine sends the retult in evt.data;
|
|
623
|
+
// In case of direct transition to the state, the state machine sends the data in evt;
|
|
544
624
|
const {
|
|
545
625
|
viewportId,
|
|
546
626
|
StudyInstanceUID,
|
|
547
627
|
SeriesInstanceUID
|
|
548
|
-
} = evt;
|
|
628
|
+
} = evt.data || evt;
|
|
549
629
|
return new Promise(async function (resolve, reject) {
|
|
550
630
|
let promptResult = await promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId);
|
|
551
631
|
if (promptResult === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES) {
|
|
@@ -562,18 +642,18 @@ function promptTrackNewStudy(_ref, ctx, evt) {
|
|
|
562
642
|
}
|
|
563
643
|
function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewportId) {
|
|
564
644
|
return new Promise(function (resolve, reject) {
|
|
565
|
-
const message = 'Track measurements for this series?';
|
|
645
|
+
const message = i18next/* default */.A.t('MeasurementTable:Track measurements for this series?');
|
|
566
646
|
const actions = [{
|
|
567
647
|
type: 'cancel',
|
|
568
|
-
text: 'No',
|
|
648
|
+
text: i18next/* default */.A.t('MeasurementTable:No'),
|
|
569
649
|
value: promptTrackNewStudy_RESPONSE.CANCEL
|
|
570
650
|
}, {
|
|
571
651
|
type: 'secondary',
|
|
572
|
-
text: 'No, do not ask again
|
|
652
|
+
text: i18next/* default */.A.t('MeasurementTable:No, do not ask again'),
|
|
573
653
|
value: promptTrackNewStudy_RESPONSE.NO_NOT_FOR_SERIES
|
|
574
654
|
}, {
|
|
575
655
|
type: 'primary',
|
|
576
|
-
text: 'Yes',
|
|
656
|
+
text: i18next/* default */.A.t('MeasurementTable:Yes'),
|
|
577
657
|
value: promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES
|
|
578
658
|
}];
|
|
579
659
|
const onSubmit = result => {
|
|
@@ -589,6 +669,12 @@ function promptTrackNewStudy_askTrackMeasurements(UIViewportDialogService, viewp
|
|
|
589
669
|
onOutsideClick: () => {
|
|
590
670
|
UIViewportDialogService.hide();
|
|
591
671
|
resolve(promptTrackNewStudy_RESPONSE.CANCEL);
|
|
672
|
+
},
|
|
673
|
+
onKeyPress: event => {
|
|
674
|
+
if (event.key === 'Enter') {
|
|
675
|
+
const action = actions.find(action => action.value === promptTrackNewStudy_RESPONSE.SET_STUDY_AND_SERIES);
|
|
676
|
+
onSubmit(action.value);
|
|
677
|
+
}
|
|
592
678
|
}
|
|
593
679
|
});
|
|
594
680
|
});
|
|
@@ -627,8 +713,8 @@ function promptTrackNewStudy_askSaveDiscardOrCancel(UIViewportDialogService, vie
|
|
|
627
713
|
});
|
|
628
714
|
}
|
|
629
715
|
/* harmony default export */ const TrackedMeasurementsContext_promptTrackNewStudy = (promptTrackNewStudy);
|
|
630
|
-
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts +
|
|
631
|
-
var default_src = __webpack_require__(
|
|
716
|
+
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 85 modules
|
|
717
|
+
var default_src = __webpack_require__(7206);
|
|
632
718
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js
|
|
633
719
|
const MIN_SR_SERIES_NUMBER = 4700;
|
|
634
720
|
function getNextSRSeriesNumber(displaySetService) {
|
|
@@ -652,12 +738,11 @@ const PROMPT_RESPONSES_RESPONSE = {
|
|
|
652
738
|
|
|
653
739
|
|
|
654
740
|
|
|
655
|
-
function promptSaveReport(
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
} = _ref;
|
|
741
|
+
function promptSaveReport({
|
|
742
|
+
servicesManager,
|
|
743
|
+
commandsManager,
|
|
744
|
+
extensionManager
|
|
745
|
+
}, ctx, evt) {
|
|
661
746
|
const {
|
|
662
747
|
uiDialogService,
|
|
663
748
|
measurementService,
|
|
@@ -717,8 +802,8 @@ function promptSaveReport(_ref, ctx, evt) {
|
|
|
717
802
|
});
|
|
718
803
|
}
|
|
719
804
|
/* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
|
|
720
|
-
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx +
|
|
721
|
-
var cornerstone_dicom_sr_src = __webpack_require__(
|
|
805
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 14 modules
|
|
806
|
+
var cornerstone_dicom_sr_src = __webpack_require__(61669);
|
|
722
807
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
|
|
723
808
|
|
|
724
809
|
|
|
@@ -731,12 +816,11 @@ const promptHydrateStructuredReport_RESPONSE = {
|
|
|
731
816
|
NO_NOT_FOR_SERIES: 4,
|
|
732
817
|
HYDRATE_REPORT: 5
|
|
733
818
|
};
|
|
734
|
-
function promptHydrateStructuredReport(
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
} = _ref;
|
|
819
|
+
function promptHydrateStructuredReport({
|
|
820
|
+
servicesManager,
|
|
821
|
+
extensionManager,
|
|
822
|
+
appConfig
|
|
823
|
+
}, ctx, evt) {
|
|
740
824
|
const {
|
|
741
825
|
uiViewportDialogService,
|
|
742
826
|
displaySetService
|
|
@@ -775,11 +859,11 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
|
|
|
775
859
|
return new Promise(function (resolve, reject) {
|
|
776
860
|
const message = 'Do you want to continue tracking measurements for this study?';
|
|
777
861
|
const actions = [{
|
|
778
|
-
type: src/* ButtonEnums.type */.
|
|
862
|
+
type: src/* ButtonEnums.type */.Ny.NW.secondary,
|
|
779
863
|
text: 'No',
|
|
780
864
|
value: promptHydrateStructuredReport_RESPONSE.CANCEL
|
|
781
865
|
}, {
|
|
782
|
-
type: src/* ButtonEnums.type */.
|
|
866
|
+
type: src/* ButtonEnums.type */.Ny.NW.primary,
|
|
783
867
|
text: 'Yes',
|
|
784
868
|
value: promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT
|
|
785
869
|
}];
|
|
@@ -796,6 +880,12 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
|
|
|
796
880
|
onOutsideClick: () => {
|
|
797
881
|
uiViewportDialogService.hide();
|
|
798
882
|
resolve(promptHydrateStructuredReport_RESPONSE.CANCEL);
|
|
883
|
+
},
|
|
884
|
+
onKeyPress: event => {
|
|
885
|
+
if (event.key === 'Enter') {
|
|
886
|
+
const action = actions.find(action => action.value === promptHydrateStructuredReport_RESPONSE.HYDRATE_REPORT);
|
|
887
|
+
onSubmit(action.value);
|
|
888
|
+
}
|
|
799
889
|
}
|
|
800
890
|
});
|
|
801
891
|
});
|
|
@@ -803,11 +893,11 @@ function promptHydrateStructuredReport_askTrackMeasurements(uiViewportDialogServ
|
|
|
803
893
|
/* harmony default export */ const TrackedMeasurementsContext_promptHydrateStructuredReport = (promptHydrateStructuredReport);
|
|
804
894
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx
|
|
805
895
|
|
|
806
|
-
function hydrateStructuredReport(
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
896
|
+
function hydrateStructuredReport({
|
|
897
|
+
servicesManager,
|
|
898
|
+
extensionManager,
|
|
899
|
+
appConfig
|
|
900
|
+
}, ctx, evt) {
|
|
811
901
|
const {
|
|
812
902
|
displaySetService
|
|
813
903
|
} = servicesManager.services;
|
|
@@ -819,7 +909,8 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
819
909
|
return new Promise((resolve, reject) => {
|
|
820
910
|
const hydrationResult = (0,cornerstone_dicom_sr_src.hydrateStructuredReport)({
|
|
821
911
|
servicesManager,
|
|
822
|
-
extensionManager
|
|
912
|
+
extensionManager,
|
|
913
|
+
appConfig
|
|
823
914
|
}, displaySetInstanceUID);
|
|
824
915
|
const StudyInstanceUID = hydrationResult.StudyInstanceUID;
|
|
825
916
|
const SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs;
|
|
@@ -834,7 +925,41 @@ function hydrateStructuredReport(_ref, ctx, evt) {
|
|
|
834
925
|
}
|
|
835
926
|
/* harmony default export */ const TrackedMeasurementsContext_hydrateStructuredReport = (hydrateStructuredReport);
|
|
836
927
|
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
837
|
-
var state = __webpack_require__(
|
|
928
|
+
var state = __webpack_require__(15575);
|
|
929
|
+
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptLabelAnnotation.js
|
|
930
|
+
function promptLabelAnnotation({
|
|
931
|
+
servicesManager,
|
|
932
|
+
extensionManager
|
|
933
|
+
}, ctx, evt) {
|
|
934
|
+
const {
|
|
935
|
+
measurementService,
|
|
936
|
+
customizationService
|
|
937
|
+
} = servicesManager.services;
|
|
938
|
+
const {
|
|
939
|
+
viewportId,
|
|
940
|
+
StudyInstanceUID,
|
|
941
|
+
SeriesInstanceUID,
|
|
942
|
+
measurementId
|
|
943
|
+
} = evt;
|
|
944
|
+
const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.common');
|
|
945
|
+
const {
|
|
946
|
+
showLabelAnnotationPopup
|
|
947
|
+
} = utilityModule.exports;
|
|
948
|
+
return new Promise(async function (resolve) {
|
|
949
|
+
const labelConfig = customizationService.get('measurementLabels');
|
|
950
|
+
const measurement = measurementService.getMeasurement(measurementId);
|
|
951
|
+
const value = await showLabelAnnotationPopup(measurement, servicesManager.services.uiDialogService, labelConfig);
|
|
952
|
+
measurementService.update(measurementId, {
|
|
953
|
+
...value
|
|
954
|
+
}, true);
|
|
955
|
+
resolve({
|
|
956
|
+
StudyInstanceUID,
|
|
957
|
+
SeriesInstanceUID,
|
|
958
|
+
viewportId
|
|
959
|
+
});
|
|
960
|
+
});
|
|
961
|
+
}
|
|
962
|
+
/* harmony default export */ const TrackedMeasurementsContext_promptLabelAnnotation = (promptLabelAnnotation);
|
|
838
963
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx
|
|
839
964
|
|
|
840
965
|
|
|
@@ -849,6 +974,7 @@ var state = __webpack_require__(62657);
|
|
|
849
974
|
|
|
850
975
|
|
|
851
976
|
|
|
977
|
+
|
|
852
978
|
const TrackedMeasurementsContext = /*#__PURE__*/react.createContext();
|
|
853
979
|
TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext';
|
|
854
980
|
const useTrackedMeasurements = () => (0,react.useContext)(TrackedMeasurementsContext);
|
|
@@ -858,26 +984,26 @@ const SR_SOPCLASSHANDLERID = '@ohif/extension-cornerstone-dicom-sr.sopClassHandl
|
|
|
858
984
|
*
|
|
859
985
|
* @param {*} param0
|
|
860
986
|
*/
|
|
861
|
-
function TrackedMeasurementsContextProvider(
|
|
862
|
-
|
|
987
|
+
function TrackedMeasurementsContextProvider({
|
|
988
|
+
servicesManager,
|
|
989
|
+
commandsManager,
|
|
990
|
+
extensionManager
|
|
991
|
+
},
|
|
992
|
+
// Bound by consumer
|
|
993
|
+
{
|
|
994
|
+
children
|
|
995
|
+
} // Component props
|
|
863
996
|
) {
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
commandsManager,
|
|
867
|
-
extensionManager
|
|
868
|
-
} = _ref;
|
|
869
|
-
let {
|
|
870
|
-
children
|
|
871
|
-
} = _ref2;
|
|
872
|
-
const [appConfig] = (0,state/* useAppConfig */.M)();
|
|
873
|
-
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
|
|
997
|
+
const [appConfig] = (0,state/* useAppConfig */.r)();
|
|
998
|
+
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.ih)();
|
|
874
999
|
const {
|
|
875
1000
|
activeViewportId,
|
|
876
1001
|
viewports
|
|
877
1002
|
} = viewportGrid;
|
|
878
1003
|
const {
|
|
879
1004
|
measurementService,
|
|
880
|
-
displaySetService
|
|
1005
|
+
displaySetService,
|
|
1006
|
+
customizationService
|
|
881
1007
|
} = servicesManager.services;
|
|
882
1008
|
const machineOptions = Object.assign({}, defaultOptions);
|
|
883
1009
|
machineOptions.actions = Object.assign({}, machineOptions.actions, {
|
|
@@ -974,8 +1100,22 @@ _ref2 // Component props
|
|
|
974
1100
|
servicesManager,
|
|
975
1101
|
extensionManager,
|
|
976
1102
|
appConfig
|
|
1103
|
+
}),
|
|
1104
|
+
promptLabelAnnotation: TrackedMeasurementsContext_promptLabelAnnotation.bind(null, {
|
|
1105
|
+
servicesManager,
|
|
1106
|
+
extensionManager
|
|
977
1107
|
})
|
|
978
1108
|
});
|
|
1109
|
+
machineOptions.guards = Object.assign({}, machineOptions.guards, {
|
|
1110
|
+
isLabelOnMeasure: (ctx, evt, condMeta) => {
|
|
1111
|
+
const labelConfig = customizationService.get('measurementLabels');
|
|
1112
|
+
return labelConfig?.labelOnMeasure;
|
|
1113
|
+
},
|
|
1114
|
+
isLabelOnMeasureAndShouldKillMachine: (ctx, evt, condMeta) => {
|
|
1115
|
+
const labelConfig = customizationService.get('measurementLabels');
|
|
1116
|
+
return evt.data && evt.data.userResponse === RESPONSE.NO_NEVER && labelConfig?.labelOnMeasure;
|
|
1117
|
+
}
|
|
1118
|
+
});
|
|
979
1119
|
|
|
980
1120
|
// TODO: IMPROVE
|
|
981
1121
|
// - Add measurement_updated to cornerstone; debounced? (ext side, or consumption?)
|
|
@@ -986,8 +1126,8 @@ _ref2 // Component props
|
|
|
986
1126
|
// - Fix viewport border resize
|
|
987
1127
|
// - created/destroyed hooks for extensions (cornerstone measurement subscriptions in it's `init`)
|
|
988
1128
|
|
|
989
|
-
const measurementTrackingMachine = (0,es/* Machine */.
|
|
990
|
-
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,react_es/* useMachine */.
|
|
1129
|
+
const measurementTrackingMachine = (0,es/* Machine */.u5)(machineConfiguration, machineOptions);
|
|
1130
|
+
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,react_es/* useMachine */.zl)(measurementTrackingMachine);
|
|
991
1131
|
(0,react.useEffect)(() => {
|
|
992
1132
|
// Update the state machine with the active viewport ID
|
|
993
1133
|
sendTrackedMeasurementsEvent('UPDATE_ACTIVE_VIEWPORT_ID', {
|
|
@@ -997,51 +1137,54 @@ _ref2 // Component props
|
|
|
997
1137
|
|
|
998
1138
|
// ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
|
|
999
1139
|
(0,react.useEffect)(() => {
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1140
|
+
const triggerPromptHydrateFlow = async () => {
|
|
1141
|
+
if (viewports.size > 0) {
|
|
1142
|
+
const activeViewport = viewports.get(activeViewportId);
|
|
1143
|
+
if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
|
|
1144
|
+
return;
|
|
1145
|
+
}
|
|
1005
1146
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1147
|
+
// Todo: Getting the first displaySetInstanceUID is wrong, but we don't have
|
|
1148
|
+
// tracking fusion viewports yet. This should change when we do.
|
|
1149
|
+
const {
|
|
1150
|
+
displaySetService
|
|
1151
|
+
} = servicesManager.services;
|
|
1152
|
+
const displaySet = displaySetService.getDisplaySetByUID(activeViewport.displaySetInstanceUIDs[0]);
|
|
1153
|
+
if (!displaySet) {
|
|
1154
|
+
return;
|
|
1155
|
+
}
|
|
1015
1156
|
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1157
|
+
// If this is an SR produced by our SR SOPClassHandler,
|
|
1158
|
+
// and it hasn't been loaded yet, do that now so we
|
|
1159
|
+
// can check if it can be rehydrated or not.
|
|
1160
|
+
//
|
|
1161
|
+
// Note: This happens:
|
|
1162
|
+
// - If the viewport is not currently an OHIFCornerstoneSRViewport
|
|
1163
|
+
// - If the displaySet has never been hung
|
|
1164
|
+
//
|
|
1165
|
+
// Otherwise, the displaySet will be loaded by the useEffect handler
|
|
1166
|
+
// listening to displaySet changes inside OHIFCornerstoneSRViewport.
|
|
1167
|
+
// The issue here is that this handler in TrackedMeasurementsContext
|
|
1168
|
+
// ends up occurring before the Viewport is created, so the displaySet
|
|
1169
|
+
// is not loaded yet, and isRehydratable is undefined unless we call load().
|
|
1170
|
+
if (displaySet.SOPClassHandlerId === SR_SOPCLASSHANDLERID && !displaySet.isLoaded && displaySet.load) {
|
|
1171
|
+
await displaySet.load();
|
|
1172
|
+
}
|
|
1032
1173
|
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1174
|
+
// Magic string
|
|
1175
|
+
// load function added by our sopClassHandler module
|
|
1176
|
+
if (displaySet.SOPClassHandlerId === SR_SOPCLASSHANDLERID && displaySet.isRehydratable === true) {
|
|
1177
|
+
console.log('sending event...', trackedMeasurements);
|
|
1178
|
+
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
|
1179
|
+
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
|
1180
|
+
SeriesInstanceUID: displaySet.SeriesInstanceUID,
|
|
1181
|
+
viewportId: activeViewportId
|
|
1182
|
+
});
|
|
1183
|
+
}
|
|
1042
1184
|
}
|
|
1043
|
-
}
|
|
1044
|
-
|
|
1185
|
+
};
|
|
1186
|
+
triggerPromptHydrateFlow();
|
|
1187
|
+
}, [trackedMeasurements, activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
|
|
1045
1188
|
return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
|
|
1046
1189
|
value: [trackedMeasurements, sendTrackedMeasurementsEvent]
|
|
1047
1190
|
}, children);
|
|
@@ -1060,12 +1203,11 @@ TrackedMeasurementsContextProvider.propTypes = {
|
|
|
1060
1203
|
|
|
1061
1204
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx
|
|
1062
1205
|
|
|
1063
|
-
function getContextModule(
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
} = _ref;
|
|
1206
|
+
function getContextModule({
|
|
1207
|
+
servicesManager,
|
|
1208
|
+
extensionManager,
|
|
1209
|
+
commandsManager
|
|
1210
|
+
}) {
|
|
1069
1211
|
const BoundTrackedMeasurementsContextProvider = TrackedMeasurementsContextProvider.bind(null, {
|
|
1070
1212
|
servicesManager,
|
|
1071
1213
|
extensionManager,
|
|
@@ -1082,7 +1224,7 @@ function getContextModule(_ref) {
|
|
|
1082
1224
|
|
|
1083
1225
|
/***/ }),
|
|
1084
1226
|
|
|
1085
|
-
/***/
|
|
1227
|
+
/***/ 84284:
|
|
1086
1228
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1087
1229
|
|
|
1088
1230
|
// ESM COMPAT FLAG
|
|
@@ -1093,21 +1235,21 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
1093
1235
|
"default": () => (/* binding */ measurement_tracking_src)
|
|
1094
1236
|
});
|
|
1095
1237
|
|
|
1096
|
-
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx +
|
|
1097
|
-
var getContextModule = __webpack_require__(
|
|
1238
|
+
// EXTERNAL MODULE: ../../../extensions/measurement-tracking/src/getContextModule.tsx + 13 modules
|
|
1239
|
+
var getContextModule = __webpack_require__(219);
|
|
1098
1240
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
1099
|
-
var react = __webpack_require__(
|
|
1241
|
+
var react = __webpack_require__(41766);
|
|
1100
1242
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
1101
|
-
var prop_types = __webpack_require__(
|
|
1243
|
+
var prop_types = __webpack_require__(11374);
|
|
1102
1244
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
1103
1245
|
// EXTERNAL MODULE: ../node_modules/react-router-dom/dist/index.js
|
|
1104
|
-
var dist = __webpack_require__(
|
|
1246
|
+
var dist = __webpack_require__(37396);
|
|
1105
1247
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
1106
|
-
var es = __webpack_require__(
|
|
1107
|
-
// EXTERNAL MODULE: ../../core/src/index.ts +
|
|
1108
|
-
var src = __webpack_require__(
|
|
1109
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
1110
|
-
var ui_src = __webpack_require__(
|
|
1248
|
+
var es = __webpack_require__(80619);
|
|
1249
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
|
|
1250
|
+
var src = __webpack_require__(55411);
|
|
1251
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 785 modules
|
|
1252
|
+
var ui_src = __webpack_require__(5085);
|
|
1111
1253
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
|
|
1112
1254
|
|
|
1113
1255
|
|
|
@@ -1124,36 +1266,36 @@ const {
|
|
|
1124
1266
|
*
|
|
1125
1267
|
* @param {*} param0
|
|
1126
1268
|
*/
|
|
1127
|
-
function PanelStudyBrowserTracking(
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
} = _ref;
|
|
1269
|
+
function PanelStudyBrowserTracking({
|
|
1270
|
+
servicesManager,
|
|
1271
|
+
getImageSrc,
|
|
1272
|
+
getStudiesForPatientByMRN,
|
|
1273
|
+
requestDisplaySetCreationForStudy,
|
|
1274
|
+
dataSource
|
|
1275
|
+
}) {
|
|
1135
1276
|
const {
|
|
1136
1277
|
displaySetService,
|
|
1137
1278
|
uiDialogService,
|
|
1138
1279
|
hangingProtocolService,
|
|
1139
|
-
uiNotificationService
|
|
1280
|
+
uiNotificationService,
|
|
1281
|
+
measurementService
|
|
1140
1282
|
} = servicesManager.services;
|
|
1141
|
-
const navigate = (0,dist/* useNavigate */.
|
|
1283
|
+
const navigate = (0,dist/* useNavigate */.Zp)();
|
|
1142
1284
|
const {
|
|
1143
1285
|
t
|
|
1144
|
-
} = (0,es/* useTranslation
|
|
1286
|
+
} = (0,es/* useTranslation */.Bd)('Common');
|
|
1145
1287
|
|
|
1146
1288
|
// Normally you nest the components so the tree isn't so deep, and the data
|
|
1147
1289
|
// doesn't have to have such an intense shape. This works well enough for now.
|
|
1148
1290
|
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
|
1149
1291
|
const {
|
|
1150
1292
|
StudyInstanceUIDs
|
|
1151
|
-
} = (0,ui_src/* useImageViewer */.
|
|
1293
|
+
} = (0,ui_src/* useImageViewer */.Bz)();
|
|
1152
1294
|
const [{
|
|
1153
1295
|
activeViewportId,
|
|
1154
1296
|
viewports
|
|
1155
|
-
}, viewportGridService] = (0,ui_src/* useViewportGrid */.
|
|
1156
|
-
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.
|
|
1297
|
+
}, viewportGridService] = (0,ui_src/* useViewportGrid */.ih)();
|
|
1298
|
+
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.B)();
|
|
1157
1299
|
const [activeTabName, setActiveTabName] = (0,react.useState)('primary');
|
|
1158
1300
|
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = (0,react.useState)([...StudyInstanceUIDs]);
|
|
1159
1301
|
const [studyDisplayList, setStudyDisplayList] = (0,react.useState)([]);
|
|
@@ -1236,7 +1378,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1236
1378
|
const newImageSrcEntry = {};
|
|
1237
1379
|
const displaySet = displaySetService.getDisplaySetByUID(dSet.displaySetInstanceUID);
|
|
1238
1380
|
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
|
1239
|
-
const imageId =
|
|
1381
|
+
const imageId = getImageIdForThumbnail(displaySet, imageIds);
|
|
1240
1382
|
|
|
1241
1383
|
// TODO: Is it okay that imageIds are not returned here for SR displaySets?
|
|
1242
1384
|
if (!imageId || displaySet?.unsupported) {
|
|
@@ -1283,7 +1425,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1283
1425
|
setJumpToDisplaySet(displaySetInstanceUID);
|
|
1284
1426
|
}
|
|
1285
1427
|
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
|
1286
|
-
const imageId =
|
|
1428
|
+
const imageId = getImageIdForThumbnail(displaySet, imageIds);
|
|
1287
1429
|
|
|
1288
1430
|
// TODO: Is it okay that imageIds are not returned here for SR displaysets?
|
|
1289
1431
|
if (!imageId) {
|
|
@@ -1369,7 +1511,66 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1369
1511
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
|
1370
1512
|
}
|
|
1371
1513
|
}, [expandedStudyInstanceUIDs, jumpToDisplaySet, tabs]);
|
|
1372
|
-
|
|
1514
|
+
const onClickUntrack = displaySetInstanceUID => {
|
|
1515
|
+
const onConfirm = () => {
|
|
1516
|
+
const displaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
|
|
1517
|
+
sendTrackedMeasurementsEvent('UNTRACK_SERIES', {
|
|
1518
|
+
SeriesInstanceUID: displaySet.SeriesInstanceUID
|
|
1519
|
+
});
|
|
1520
|
+
const measurements = measurementService.getMeasurements();
|
|
1521
|
+
measurements.forEach(m => {
|
|
1522
|
+
if (m.referenceSeriesUID === displaySet.SeriesInstanceUID) {
|
|
1523
|
+
measurementService.remove(m.uid);
|
|
1524
|
+
}
|
|
1525
|
+
});
|
|
1526
|
+
};
|
|
1527
|
+
uiDialogService.create({
|
|
1528
|
+
id: 'untrack-series',
|
|
1529
|
+
centralize: true,
|
|
1530
|
+
isDraggable: false,
|
|
1531
|
+
showOverlay: true,
|
|
1532
|
+
content: ui_src/* Dialog */.lG,
|
|
1533
|
+
contentProps: {
|
|
1534
|
+
title: 'Untrack Series',
|
|
1535
|
+
body: () => /*#__PURE__*/react.createElement("div", {
|
|
1536
|
+
className: "bg-primary-dark p-4 text-white"
|
|
1537
|
+
}, /*#__PURE__*/react.createElement("p", null, "Are you sure you want to untrack this series?"), /*#__PURE__*/react.createElement("p", {
|
|
1538
|
+
className: "mt-2"
|
|
1539
|
+
}, "This action cannot be undone and will delete all your existing measurements.")),
|
|
1540
|
+
actions: [{
|
|
1541
|
+
id: 'cancel',
|
|
1542
|
+
text: 'Cancel',
|
|
1543
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.secondary
|
|
1544
|
+
}, {
|
|
1545
|
+
id: 'yes',
|
|
1546
|
+
text: 'Yes',
|
|
1547
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.primary,
|
|
1548
|
+
classes: ['untrack-yes-button']
|
|
1549
|
+
}],
|
|
1550
|
+
onClose: () => uiDialogService.dismiss({
|
|
1551
|
+
id: 'untrack-series'
|
|
1552
|
+
}),
|
|
1553
|
+
onSubmit: async ({
|
|
1554
|
+
action
|
|
1555
|
+
}) => {
|
|
1556
|
+
switch (action.id) {
|
|
1557
|
+
case 'yes':
|
|
1558
|
+
onConfirm();
|
|
1559
|
+
uiDialogService.dismiss({
|
|
1560
|
+
id: 'untrack-series'
|
|
1561
|
+
});
|
|
1562
|
+
break;
|
|
1563
|
+
case 'cancel':
|
|
1564
|
+
uiDialogService.dismiss({
|
|
1565
|
+
id: 'untrack-series'
|
|
1566
|
+
});
|
|
1567
|
+
break;
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
});
|
|
1572
|
+
};
|
|
1573
|
+
return /*#__PURE__*/react.createElement(ui_src/* StudyBrowser */.M4, {
|
|
1373
1574
|
tabs: tabs,
|
|
1374
1575
|
servicesManager: servicesManager,
|
|
1375
1576
|
activeTabName: activeTabName,
|
|
@@ -1379,12 +1580,7 @@ function PanelStudyBrowserTracking(_ref) {
|
|
|
1379
1580
|
setActiveTabName(clickedTabName);
|
|
1380
1581
|
},
|
|
1381
1582
|
onClickUntrack: displaySetInstanceUID => {
|
|
1382
|
-
|
|
1383
|
-
// TODO: shift this somewhere else where we're centralizing this logic?
|
|
1384
|
-
// Potentially a helper from displaySetInstanceUID to this
|
|
1385
|
-
sendTrackedMeasurementsEvent('UNTRACK_SERIES', {
|
|
1386
|
-
SeriesInstanceUID: displaySet.SeriesInstanceUID
|
|
1387
|
-
});
|
|
1583
|
+
onClickUntrack(displaySetInstanceUID);
|
|
1388
1584
|
},
|
|
1389
1585
|
onClickThumbnail: () => {},
|
|
1390
1586
|
onDoubleClickThumbnail: onDoubleClickThumbnailHandler,
|
|
@@ -1401,6 +1597,18 @@ PanelStudyBrowserTracking.propTypes = {
|
|
|
1401
1597
|
requestDisplaySetCreationForStudy: (prop_types_default()).func.isRequired
|
|
1402
1598
|
};
|
|
1403
1599
|
/* harmony default export */ const PanelStudyBrowserTracking_PanelStudyBrowserTracking = (PanelStudyBrowserTracking);
|
|
1600
|
+
function getImageIdForThumbnail(displaySet, imageIds) {
|
|
1601
|
+
let imageId;
|
|
1602
|
+
if (displaySet.isDynamicVolume) {
|
|
1603
|
+
const timePoints = displaySet.dynamicVolumeInfo.timePoints;
|
|
1604
|
+
const middleIndex = Math.floor(timePoints.length / 2);
|
|
1605
|
+
const middleTimePointImageIds = timePoints[middleIndex];
|
|
1606
|
+
imageId = middleTimePointImageIds[Math.floor(middleTimePointImageIds.length / 2)];
|
|
1607
|
+
} else {
|
|
1608
|
+
imageId = imageIds[Math.floor(imageIds.length / 2)];
|
|
1609
|
+
}
|
|
1610
|
+
return imageId;
|
|
1611
|
+
}
|
|
1404
1612
|
|
|
1405
1613
|
/**
|
|
1406
1614
|
* Maps from the DataSource's format to a naturalized object
|
|
@@ -1432,14 +1640,6 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1432
1640
|
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
|
1433
1641
|
const componentType = _getComponentType(ds);
|
|
1434
1642
|
const numPanes = viewportGridService.getNumViewportPanes();
|
|
1435
|
-
const viewportIdentificator = [];
|
|
1436
|
-
if (numPanes !== 1) {
|
|
1437
|
-
viewports.forEach(viewportData => {
|
|
1438
|
-
if (viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
|
|
1439
|
-
viewportIdentificator.push(viewportData.viewportLabel);
|
|
1440
|
-
}
|
|
1441
|
-
});
|
|
1442
|
-
}
|
|
1443
1643
|
const array = componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
|
|
1444
1644
|
const {
|
|
1445
1645
|
displaySetInstanceUID
|
|
@@ -1461,10 +1661,8 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1461
1661
|
displaySetInstanceUID
|
|
1462
1662
|
// .. Any other data to pass
|
|
1463
1663
|
},
|
|
1464
|
-
|
|
1465
1664
|
isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
|
|
1466
|
-
isHydratedForDerivedDisplaySet: ds.isHydrated
|
|
1467
|
-
viewportIdentificator
|
|
1665
|
+
isHydratedForDerivedDisplaySet: ds.isHydrated
|
|
1468
1666
|
};
|
|
1469
1667
|
if (componentType === 'thumbnailNoImage') {
|
|
1470
1668
|
if (dataSource.reject && dataSource.reject.series) {
|
|
@@ -1475,7 +1673,7 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1475
1673
|
centralize: true,
|
|
1476
1674
|
isDraggable: false,
|
|
1477
1675
|
showOverlay: true,
|
|
1478
|
-
content: ui_src/* Dialog */.
|
|
1676
|
+
content: ui_src/* Dialog */.lG,
|
|
1479
1677
|
contentProps: {
|
|
1480
1678
|
title: 'Delete Report',
|
|
1481
1679
|
body: () => /*#__PURE__*/react.createElement("div", {
|
|
@@ -1486,11 +1684,11 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1486
1684
|
actions: [{
|
|
1487
1685
|
id: 'cancel',
|
|
1488
1686
|
text: 'Cancel',
|
|
1489
|
-
type: ui_src/* ButtonEnums.type */.
|
|
1687
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.secondary
|
|
1490
1688
|
}, {
|
|
1491
1689
|
id: 'yes',
|
|
1492
1690
|
text: 'Yes',
|
|
1493
|
-
type: ui_src/* ButtonEnums.type */.
|
|
1691
|
+
type: ui_src/* ButtonEnums.type */.Ny.NW.primary,
|
|
1494
1692
|
classes: ['reject-yes-button']
|
|
1495
1693
|
}],
|
|
1496
1694
|
onClose: () => uiDialogService.dismiss({
|
|
@@ -1500,10 +1698,9 @@ viewportGridService, dataSource, displaySetService, uiDialogService, uiNotificat
|
|
|
1500
1698
|
const yesButton = document.querySelector('.reject-yes-button');
|
|
1501
1699
|
yesButton.focus();
|
|
1502
1700
|
},
|
|
1503
|
-
onSubmit: async
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
} = _ref2;
|
|
1701
|
+
onSubmit: async ({
|
|
1702
|
+
action
|
|
1703
|
+
}) => {
|
|
1507
1704
|
switch (action.id) {
|
|
1508
1705
|
case 'yes':
|
|
1509
1706
|
try {
|
|
@@ -1659,7 +1856,8 @@ function getImageSrcFromImageId(cornerstone, imageId) {
|
|
|
1659
1856
|
const canvas = document.createElement('canvas');
|
|
1660
1857
|
cornerstone.utilities.loadImageToCanvas({
|
|
1661
1858
|
canvas,
|
|
1662
|
-
imageId
|
|
1859
|
+
imageId,
|
|
1860
|
+
thumbnail: true
|
|
1663
1861
|
}).then(imageId => {
|
|
1664
1862
|
resolve(canvas.toDataURL());
|
|
1665
1863
|
}).catch(reject);
|
|
@@ -1699,16 +1897,15 @@ function _getStudyForPatientUtility(extensionManager) {
|
|
|
1699
1897
|
* @param {object} commandsManager
|
|
1700
1898
|
* @param {object} extensionManager
|
|
1701
1899
|
*/
|
|
1702
|
-
function WrappedPanelStudyBrowserTracking(
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
} = _ref;
|
|
1900
|
+
function WrappedPanelStudyBrowserTracking({
|
|
1901
|
+
commandsManager,
|
|
1902
|
+
extensionManager,
|
|
1903
|
+
servicesManager
|
|
1904
|
+
}) {
|
|
1708
1905
|
const dataSource = extensionManager.getActiveDataSource()[0];
|
|
1709
1906
|
const getStudiesForPatientByMRN = _getStudyForPatientUtility(extensionManager);
|
|
1710
1907
|
const _getStudiesForPatientByMRN = getStudiesForPatientByMRN.bind(null, dataSource);
|
|
1711
|
-
const _getImageSrcFromImageId = _createGetImageSrcFromImageIdFn(extensionManager);
|
|
1908
|
+
const _getImageSrcFromImageId = (0,react.useCallback)(_createGetImageSrcFromImageIdFn(extensionManager), []);
|
|
1712
1909
|
const _requestDisplaySetCreationForStudy = PanelStudyBrowserTracking_requestDisplaySetCreationForStudy.bind(null, dataSource);
|
|
1713
1910
|
return /*#__PURE__*/react.createElement(PanelStudyBrowserTracking_PanelStudyBrowserTracking, {
|
|
1714
1911
|
servicesManager: servicesManager,
|
|
@@ -1746,47 +1943,11 @@ WrappedPanelStudyBrowserTracking.propTypes = {
|
|
|
1746
1943
|
};
|
|
1747
1944
|
/* harmony default export */ const panels_PanelStudyBrowserTracking = (WrappedPanelStudyBrowserTracking);
|
|
1748
1945
|
// EXTERNAL MODULE: ./hooks/index.js + 1 modules
|
|
1749
|
-
var hooks = __webpack_require__(
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
function ActionButtons(_ref) {
|
|
1756
|
-
let {
|
|
1757
|
-
onExportClick,
|
|
1758
|
-
onCreateReportClick,
|
|
1759
|
-
disabled
|
|
1760
|
-
} = _ref;
|
|
1761
|
-
const {
|
|
1762
|
-
t
|
|
1763
|
-
} = (0,es/* useTranslation */.$G)('MeasurementTable');
|
|
1764
|
-
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1765
|
-
onClick: onExportClick,
|
|
1766
|
-
disabled: disabled,
|
|
1767
|
-
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1768
|
-
size: ui_src/* ButtonEnums.size */.LZ.dp.small
|
|
1769
|
-
}, t('Export')), /*#__PURE__*/react.createElement(ui_src/* Button */.zx, {
|
|
1770
|
-
className: "ml-2",
|
|
1771
|
-
onClick: onCreateReportClick,
|
|
1772
|
-
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary,
|
|
1773
|
-
size: ui_src/* ButtonEnums.size */.LZ.dp.small,
|
|
1774
|
-
disabled: disabled
|
|
1775
|
-
}, t('Create Report')));
|
|
1776
|
-
}
|
|
1777
|
-
ActionButtons.propTypes = {
|
|
1778
|
-
onExportClick: (prop_types_default()).func,
|
|
1779
|
-
onCreateReportClick: (prop_types_default()).func,
|
|
1780
|
-
disabled: (prop_types_default()).bool
|
|
1781
|
-
};
|
|
1782
|
-
ActionButtons.defaultProps = {
|
|
1783
|
-
onExportClick: () => alert('Export'),
|
|
1784
|
-
onCreateReportClick: () => alert('Create Report'),
|
|
1785
|
-
disabled: false
|
|
1786
|
-
};
|
|
1787
|
-
/* harmony default export */ const PanelMeasurementTableTracking_ActionButtons = (ActionButtons);
|
|
1946
|
+
var hooks = __webpack_require__(25103);
|
|
1947
|
+
// EXTERNAL MODULE: ./state/index.js + 1 modules
|
|
1948
|
+
var state = __webpack_require__(15575);
|
|
1788
1949
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
1789
|
-
var lodash_debounce = __webpack_require__(
|
|
1950
|
+
var lodash_debounce = __webpack_require__(14771);
|
|
1790
1951
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
1791
1952
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx
|
|
1792
1953
|
|
|
@@ -1797,6 +1958,7 @@ var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce
|
|
|
1797
1958
|
|
|
1798
1959
|
|
|
1799
1960
|
|
|
1961
|
+
|
|
1800
1962
|
const {
|
|
1801
1963
|
downloadCSVReport
|
|
1802
1964
|
} = src.utils;
|
|
@@ -1812,21 +1974,23 @@ const DISPLAY_STUDY_SUMMARY_INITIAL_VALUE = {
|
|
|
1812
1974
|
// 'CT',
|
|
1813
1975
|
description: '' // 'CHEST/ABD/PELVIS W CONTRAST',
|
|
1814
1976
|
};
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1977
|
+
function PanelMeasurementTableTracking({
|
|
1978
|
+
servicesManager,
|
|
1979
|
+
extensionManager
|
|
1980
|
+
}) {
|
|
1981
|
+
const [viewportGrid] = (0,ui_src/* useViewportGrid */.ih)();
|
|
1982
|
+
const {
|
|
1983
|
+
t
|
|
1984
|
+
} = (0,es/* useTranslation */.Bd)('MeasurementTable');
|
|
1822
1985
|
const [measurementChangeTimestamp, setMeasurementsUpdated] = (0,react.useState)(Date.now().toString());
|
|
1823
|
-
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.
|
|
1986
|
+
const debouncedMeasurementChangeTimestamp = (0,hooks/* useDebounce */.d)(measurementChangeTimestamp, 200);
|
|
1824
1987
|
const {
|
|
1825
1988
|
measurementService,
|
|
1826
1989
|
uiDialogService,
|
|
1827
|
-
displaySetService
|
|
1990
|
+
displaySetService,
|
|
1991
|
+
customizationService
|
|
1828
1992
|
} = servicesManager.services;
|
|
1829
|
-
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.
|
|
1993
|
+
const [trackedMeasurements, sendTrackedMeasurementsEvent] = (0,getContextModule/* useTrackedMeasurements */.B)();
|
|
1830
1994
|
const {
|
|
1831
1995
|
trackedStudy,
|
|
1832
1996
|
trackedSeries
|
|
@@ -1834,6 +1998,7 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
1834
1998
|
const [displayStudySummary, setDisplayStudySummary] = (0,react.useState)(DISPLAY_STUDY_SUMMARY_INITIAL_VALUE);
|
|
1835
1999
|
const [displayMeasurements, setDisplayMeasurements] = (0,react.useState)([]);
|
|
1836
2000
|
const measurementsPanelRef = (0,react.useRef)(null);
|
|
2001
|
+
const [appConfig] = (0,state/* useAppConfig */.r)();
|
|
1837
2002
|
(0,react.useEffect)(() => {
|
|
1838
2003
|
const measurements = measurementService.getMeasurements();
|
|
1839
2004
|
const filteredMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
|
|
@@ -1909,109 +2074,40 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
1909
2074
|
const trackedMeasurements = measurements.filter(m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID));
|
|
1910
2075
|
downloadCSVReport(trackedMeasurements, measurementService);
|
|
1911
2076
|
}
|
|
1912
|
-
const jumpToImage =
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
} = _ref2;
|
|
2077
|
+
const jumpToImage = ({
|
|
2078
|
+
uid,
|
|
2079
|
+
isActive
|
|
2080
|
+
}) => {
|
|
1917
2081
|
measurementService.jumpToMeasurement(viewportGrid.activeViewportId, uid);
|
|
1918
2082
|
onMeasurementItemClickHandler({
|
|
1919
2083
|
uid,
|
|
1920
2084
|
isActive
|
|
1921
2085
|
});
|
|
1922
2086
|
};
|
|
1923
|
-
const onMeasurementItemEditHandler =
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
} = _ref3;
|
|
1928
|
-
const measurement = measurementService.getMeasurement(uid);
|
|
2087
|
+
const onMeasurementItemEditHandler = ({
|
|
2088
|
+
uid,
|
|
2089
|
+
isActive
|
|
2090
|
+
}) => {
|
|
1929
2091
|
jumpToImage({
|
|
1930
2092
|
uid,
|
|
1931
2093
|
isActive
|
|
1932
2094
|
});
|
|
1933
|
-
const
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
...value
|
|
1944
|
-
}, true);
|
|
1945
|
-
}
|
|
1946
|
-
}
|
|
1947
|
-
uiDialogService.dismiss({
|
|
1948
|
-
id: 'enter-annotation'
|
|
1949
|
-
});
|
|
1950
|
-
};
|
|
1951
|
-
uiDialogService.create({
|
|
1952
|
-
id: 'enter-annotation',
|
|
1953
|
-
centralize: true,
|
|
1954
|
-
isDraggable: false,
|
|
1955
|
-
showOverlay: true,
|
|
1956
|
-
content: ui_src/* Dialog */.Vq,
|
|
1957
|
-
contentProps: {
|
|
1958
|
-
title: 'Annotation',
|
|
1959
|
-
noCloseButton: true,
|
|
1960
|
-
value: {
|
|
1961
|
-
label: measurement.label || ''
|
|
1962
|
-
},
|
|
1963
|
-
body: _ref5 => {
|
|
1964
|
-
let {
|
|
1965
|
-
value,
|
|
1966
|
-
setValue
|
|
1967
|
-
} = _ref5;
|
|
1968
|
-
const onChangeHandler = event => {
|
|
1969
|
-
event.persist();
|
|
1970
|
-
setValue(value => ({
|
|
1971
|
-
...value,
|
|
1972
|
-
label: event.target.value
|
|
1973
|
-
}));
|
|
1974
|
-
};
|
|
1975
|
-
const onKeyPressHandler = event => {
|
|
1976
|
-
if (event.key === 'Enter') {
|
|
1977
|
-
onSubmitHandler({
|
|
1978
|
-
value,
|
|
1979
|
-
action: {
|
|
1980
|
-
id: 'save'
|
|
1981
|
-
}
|
|
1982
|
-
});
|
|
1983
|
-
}
|
|
1984
|
-
};
|
|
1985
|
-
return /*#__PURE__*/react.createElement(ui_src/* Input */.II, {
|
|
1986
|
-
label: "Enter your annotation",
|
|
1987
|
-
labelClassName: "text-white grow text-[14px] leading-[1.2]",
|
|
1988
|
-
autoFocus: true,
|
|
1989
|
-
id: "annotation",
|
|
1990
|
-
className: "border-primary-main bg-black",
|
|
1991
|
-
type: "text",
|
|
1992
|
-
value: value.label,
|
|
1993
|
-
onChange: onChangeHandler,
|
|
1994
|
-
onKeyPress: onKeyPressHandler
|
|
1995
|
-
});
|
|
1996
|
-
},
|
|
1997
|
-
actions: [{
|
|
1998
|
-
id: 'cancel',
|
|
1999
|
-
text: 'Cancel',
|
|
2000
|
-
type: ui_src/* ButtonEnums.type */.LZ.dt.secondary
|
|
2001
|
-
}, {
|
|
2002
|
-
id: 'save',
|
|
2003
|
-
text: 'Save',
|
|
2004
|
-
type: ui_src/* ButtonEnums.type */.LZ.dt.primary
|
|
2005
|
-
}],
|
|
2006
|
-
onSubmit: onSubmitHandler
|
|
2007
|
-
}
|
|
2095
|
+
const labelConfig = customizationService.get('measurementLabels');
|
|
2096
|
+
const measurement = measurementService.getMeasurement(uid);
|
|
2097
|
+
const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.common');
|
|
2098
|
+
const {
|
|
2099
|
+
showLabelAnnotationPopup
|
|
2100
|
+
} = utilityModule.exports;
|
|
2101
|
+
showLabelAnnotationPopup(measurement, uiDialogService, labelConfig).then(val => {
|
|
2102
|
+
measurementService.update(uid, {
|
|
2103
|
+
...val
|
|
2104
|
+
}, true);
|
|
2008
2105
|
});
|
|
2009
2106
|
};
|
|
2010
|
-
const onMeasurementItemClickHandler =
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
} = _ref6;
|
|
2107
|
+
const onMeasurementItemClickHandler = ({
|
|
2108
|
+
uid,
|
|
2109
|
+
isActive
|
|
2110
|
+
}) => {
|
|
2015
2111
|
if (!isActive) {
|
|
2016
2112
|
const measurements = [...displayMeasurements];
|
|
2017
2113
|
const measurement = measurements.find(m => m.uid === uid);
|
|
@@ -2022,37 +2118,44 @@ function PanelMeasurementTableTracking(_ref) {
|
|
|
2022
2118
|
};
|
|
2023
2119
|
const displayMeasurementsWithoutFindings = displayMeasurements.filter(dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT);
|
|
2024
2120
|
const additionalFindings = displayMeasurements.filter(dm => dm.measurementType === measurementService.VALUE_TYPES.POINT);
|
|
2121
|
+
const disabled = additionalFindings.length === 0 && displayMeasurementsWithoutFindings.length === 0;
|
|
2025
2122
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
2026
2123
|
className: "invisible-scrollbar overflow-y-auto overflow-x-hidden",
|
|
2027
2124
|
ref: measurementsPanelRef,
|
|
2028
2125
|
"data-cy": 'trackedMeasurements-panel'
|
|
2029
|
-
}, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.
|
|
2126
|
+
}, displayStudySummary.key && /*#__PURE__*/react.createElement(ui_src/* StudySummary */.u3, {
|
|
2030
2127
|
date: PanelMeasurementTableTracking_formatDate(displayStudySummary.date),
|
|
2031
2128
|
modality: displayStudySummary.modality,
|
|
2032
2129
|
description: displayStudySummary.description
|
|
2033
|
-
}), /*#__PURE__*/react.createElement(ui_src/* MeasurementTable */.
|
|
2130
|
+
}), /*#__PURE__*/react.createElement(ui_src/* MeasurementTable */.V, {
|
|
2034
2131
|
title: "Measurements",
|
|
2035
2132
|
data: displayMeasurementsWithoutFindings,
|
|
2036
2133
|
servicesManager: servicesManager,
|
|
2037
2134
|
onClick: jumpToImage,
|
|
2038
2135
|
onEdit: onMeasurementItemEditHandler
|
|
2039
|
-
}), additionalFindings.length !== 0 && /*#__PURE__*/react.createElement(ui_src/* MeasurementTable */.
|
|
2136
|
+
}), additionalFindings.length !== 0 && /*#__PURE__*/react.createElement(ui_src/* MeasurementTable */.V, {
|
|
2040
2137
|
title: "Additional Findings",
|
|
2041
2138
|
data: additionalFindings,
|
|
2042
2139
|
servicesManager: servicesManager,
|
|
2043
2140
|
onClick: jumpToImage,
|
|
2044
2141
|
onEdit: onMeasurementItemEditHandler
|
|
2045
|
-
})), /*#__PURE__*/react.createElement("div", {
|
|
2142
|
+
})), !appConfig?.disableEditing && /*#__PURE__*/react.createElement("div", {
|
|
2046
2143
|
className: "flex justify-center p-4"
|
|
2047
|
-
}, /*#__PURE__*/react.createElement(
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2144
|
+
}, /*#__PURE__*/react.createElement(ui_src/* ActionButtons */.wr, {
|
|
2145
|
+
t: t,
|
|
2146
|
+
actions: [{
|
|
2147
|
+
label: 'Export',
|
|
2148
|
+
onClick: exportReport
|
|
2149
|
+
}, {
|
|
2150
|
+
label: 'Create Report',
|
|
2151
|
+
onClick: () => {
|
|
2152
|
+
sendTrackedMeasurementsEvent('SAVE_REPORT', {
|
|
2153
|
+
viewportId: viewportGrid.activeViewportId,
|
|
2154
|
+
isBackupSave: true
|
|
2155
|
+
});
|
|
2156
|
+
}
|
|
2157
|
+
}],
|
|
2158
|
+
disabled: disabled
|
|
2056
2159
|
})));
|
|
2057
2160
|
}
|
|
2058
2161
|
PanelMeasurementTableTracking.propTypes = {
|
|
@@ -2123,24 +2226,26 @@ function _mapMeasurementToDisplay(measurement, types, displaySetService) {
|
|
|
2123
2226
|
|
|
2124
2227
|
|
|
2125
2228
|
|
|
2229
|
+
// EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
|
|
2230
|
+
var i18next = __webpack_require__(92344);
|
|
2126
2231
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/getPanelModule.tsx
|
|
2127
2232
|
|
|
2128
2233
|
|
|
2234
|
+
|
|
2129
2235
|
// TODO:
|
|
2130
2236
|
// - No loading UI exists yet
|
|
2131
2237
|
// - cancel promises when component is destroyed
|
|
2132
2238
|
// - show errors in UI for thumbnails if promise fails
|
|
2133
|
-
function getPanelModule(
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
} = _ref;
|
|
2239
|
+
function getPanelModule({
|
|
2240
|
+
commandsManager,
|
|
2241
|
+
extensionManager,
|
|
2242
|
+
servicesManager
|
|
2243
|
+
}) {
|
|
2139
2244
|
return [{
|
|
2140
2245
|
name: 'seriesList',
|
|
2141
2246
|
iconName: 'tab-studies',
|
|
2142
2247
|
iconLabel: 'Studies',
|
|
2143
|
-
label: 'Studies',
|
|
2248
|
+
label: i18next/* default */.A.t('SidePanel:Studies'),
|
|
2144
2249
|
component: panels_PanelStudyBrowserTracking.bind(null, {
|
|
2145
2250
|
commandsManager,
|
|
2146
2251
|
extensionManager,
|
|
@@ -2150,7 +2255,7 @@ function getPanelModule(_ref) {
|
|
|
2150
2255
|
name: 'trackedMeasurements',
|
|
2151
2256
|
iconName: 'tab-linear',
|
|
2152
2257
|
iconLabel: 'Measure',
|
|
2153
|
-
label: 'Measurements',
|
|
2258
|
+
label: i18next/* default */.A.t('SidePanel:Measurements'),
|
|
2154
2259
|
component: panels_PanelMeasurementTableTracking.bind(null, {
|
|
2155
2260
|
commandsManager,
|
|
2156
2261
|
extensionManager,
|
|
@@ -2163,19 +2268,18 @@ function getPanelModule(_ref) {
|
|
|
2163
2268
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2164
2269
|
|
|
2165
2270
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
2166
|
-
return __webpack_require__.e(/* import() */
|
|
2271
|
+
return __webpack_require__.e(/* import() */ 862).then(__webpack_require__.bind(__webpack_require__, 49862));
|
|
2167
2272
|
});
|
|
2168
2273
|
const OHIFCornerstoneViewport = props => {
|
|
2169
2274
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
2170
2275
|
fallback: /*#__PURE__*/react.createElement("div", null, "Loading...")
|
|
2171
2276
|
}, /*#__PURE__*/react.createElement(Component, props));
|
|
2172
2277
|
};
|
|
2173
|
-
function getViewportModule(
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
} = _ref;
|
|
2278
|
+
function getViewportModule({
|
|
2279
|
+
servicesManager,
|
|
2280
|
+
commandsManager,
|
|
2281
|
+
extensionManager
|
|
2282
|
+
}) {
|
|
2179
2283
|
const ExtendedOHIFCornerstoneTrackingViewport = props => {
|
|
2180
2284
|
return /*#__PURE__*/react.createElement(OHIFCornerstoneViewport, _extends({
|
|
2181
2285
|
servicesManager: servicesManager,
|
|
@@ -2190,10 +2294,10 @@ function getViewportModule(_ref) {
|
|
|
2190
2294
|
}
|
|
2191
2295
|
/* harmony default export */ const src_getViewportModule = (getViewportModule);
|
|
2192
2296
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/package.json
|
|
2193
|
-
const package_namespaceObject = JSON.parse('{"
|
|
2297
|
+
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-measurement-tracking"}');
|
|
2194
2298
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/id.js
|
|
2195
2299
|
|
|
2196
|
-
const id = package_namespaceObject.
|
|
2300
|
+
const id = package_namespaceObject.UU;
|
|
2197
2301
|
|
|
2198
2302
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/index.tsx
|
|
2199
2303
|
|
|
@@ -2205,7 +2309,7 @@ const measurementTrackingExtension = {
|
|
|
2205
2309
|
* Only required property. Should be a unique value across all extensions.
|
|
2206
2310
|
*/
|
|
2207
2311
|
id: id,
|
|
2208
|
-
getContextModule: getContextModule/* default */.
|
|
2312
|
+
getContextModule: getContextModule/* default */.A,
|
|
2209
2313
|
getPanelModule: src_getPanelModule,
|
|
2210
2314
|
getViewportModule: src_getViewportModule
|
|
2211
2315
|
};
|