@ohif/app 3.9.0-beta.45 → 3.9.0-beta.47
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/031089e563a18ada8441.wasm +0 -0
- package/dist/{445.bundle.38c6d2af64e41cd7c614.js → 10.bundle.c626810bd199ab63f3a2.js} +3 -3
- package/dist/{501.bundle.2f703ca4598a3be0d748.js → 129.bundle.3102eccbd5c78524c3dd.js} +6036 -11592
- package/dist/{140.bundle.fcf29be726bb9dcea834.js → 153.bundle.d3732d0fdebb39e139b4.js} +7 -4
- package/dist/{139.bundle.09e5af0a9ae8a285af77.js → 169.bundle.eeb9614e7b06f896c70f.js} +65 -535
- package/dist/{139.css → 169.css} +0 -1
- package/dist/{164.bundle.2b23bfbcb23497d7c87a.js → 196.bundle.cf8c2311aafb5312bbf7.js} +15562 -8539
- package/dist/{342.bundle.fcb2038060a062129d34.js → 202.bundle.bb0e8196739bb896dc9e.js} +238 -276
- package/dist/{129.bundle.894f29369d609094208b.js → 210.bundle.d6d6cbd1b65e4f506ed1.js} +46 -46
- package/dist/{363.bundle.c7e38cf0c1fc7d19a701.js → 217.bundle.042317b439df47cd38b1.js} +2099 -195
- package/dist/{363.css → 217.css} +1 -0
- package/dist/{14.bundle.60eed1138c62b91572a7.js → 246.bundle.288317813cd5781e64f7.js} +11 -11
- package/dist/250.bundle.4743b359797751102600.js +663 -0
- package/dist/{944.bundle.baa0880e0bbde13fccc5.js → 281.bundle.5946cbee5150dec1532f.js} +241 -254
- package/dist/{727.bundle.7b7f3962207601643615.js → 286.bundle.985c5ebbb2158c7e59ab.js} +4 -4
- package/dist/29.bundle.976319462f33868497c2.js +12347 -0
- package/dist/{675.bundle.c9720f40fd7c7e9b7e54.js → 315.bundle.92d7aefc4dc9cfd951bd.js} +18 -18
- package/dist/{218.bundle.a1709956bc65c4f54874.js → 353.bundle.58b3ea80771ebaca956b.js} +8 -8
- package/dist/{799.bundle.33fc63add3b915d0c2b2.js → 360.bundle.81592d66456d25930928.js} +62 -62
- package/dist/{555.bundle.768f1594e1d40b707342.js → 372.bundle.5e3dc2539055ca5861e6.js} +50 -50
- package/dist/{211.bundle.194272cd32bedb302303.js → 376.bundle.45b94427174400b86d5d.js} +8 -8
- package/dist/{612.bundle.297a033523539e0b47f9.js → 412.bundle.836f106f6e2896dc42a5.js} +4 -4
- package/dist/{931.bundle.058f8de4606f27b31f4f.js → 417.bundle.abf8bcee0f246002acb9.js} +25 -25
- package/dist/{370.bundle.bd9884c274c26a54dfae.js → 428.bundle.744fc5865b2d747de88a.js} +829 -1511
- package/dist/{483.bundle.0f1848f6a2cf34829fef.js → 497.bundle.ee102d6243f984113f08.js} +141 -141
- package/dist/{323.bundle.955cc8f5eb5c01295118.js → 498.bundle.bb47c493dd02451f77ef.js} +17 -17
- package/dist/{552.bundle.0d11c419f675cb5a63b1.js → 502.bundle.857675fc2cbb2fbe3e47.js} +8 -9
- package/dist/{835.bundle.5d1951da8bbc6afdf3e0.js → 530.bundle.87f8b13ff55bf7b2a6d1.js} +28 -28
- package/dist/{121.bundle.57fe5a392b0910f33c2d.js → 552.bundle.95c0f28b051797242104.js} +733 -62
- package/dist/{265.bundle.61b0e1ce9d444704a976.js → 571.bundle.a80609c9815339516d77.js} +24 -24
- package/dist/{853.bundle.26b774ab3259f3e6087c.js → 591.bundle.1dca7dfd3e0490ea6dc1.js} +15 -14
- package/dist/604.bundle.83f50929b208c60e48da.js +1950 -0
- package/dist/610.min.worker.js +1 -1
- package/dist/610.min.worker.js.map +1 -1
- package/dist/{792.bundle.485ad2f98823a4b3feb1.js → 658.bundle.219ed199728759098008.js} +17 -17
- package/dist/{989.bundle.4be1e8f36734961852a8.js → 791.bundle.be08fa50f9a84244253b.js} +11 -11
- package/dist/{722.bundle.1242e0348afc63ca4f5e.js → 793.bundle.c92f52ddff0e3bf506e6.js} +13 -13
- package/dist/{914.bundle.e15be8089bf422ed7b51.js → 818.bundle.cda4e369fdee5459a544.js} +1239 -627
- package/dist/{726.bundle.90d63d40a19b058034ee.js → 831.bundle.9e1a3495947e5bb49756.js} +512 -512
- package/dist/{382.bundle.7cdad0f12b64f248dd28.js → 842.bundle.0664bcdeb7f153ab52bb.js} +11 -11
- package/dist/{806.bundle.1ec5fda0b16e053350d7.js → 888.bundle.2d02f805cedcf5d2ee7d.js} +14 -14
- package/dist/{702.bundle.963481fbf871984b646f.js → 909.bundle.1fbb8bb4c41d0bb2994d.js} +119 -381
- package/dist/{109.bundle.b4fee2a22b622839baf5.js → 931.bundle.f6fa2a436ace89ebf60f.js} +5036 -4642
- package/dist/{141.bundle.556b4c1e4cab770417ac.js → 937.bundle.cc709c922731f9496810.js} +86 -478
- package/dist/{444.bundle.75f58f53dab4d04db97d.js → 944.bundle.194f4f4e4e55ec466b78.js} +9 -10
- package/dist/945.min.worker.js +1 -1
- package/dist/945.min.worker.js.map +1 -1
- package/dist/{194.bundle.e6fb48f13f312eded76b.js → 962.bundle.225fcd92e6a5af66b6a2.js} +33 -37
- package/dist/{920.bundle.f75637a18563de8c8235.js → 978.bundle.4edc8c4615d7e3b4717a.js} +6 -6
- package/dist/{236.bundle.34db90a140e37d34fd71.js → 993.bundle.aa31ebda5a5f62c44de5.js} +2363 -2351
- package/dist/{717.bundle.3b84fbd289af82208a19.js → 994.bundle.269ce05b16fd6aa28006.js} +90 -164
- package/dist/app-config.js +58 -4
- package/dist/app.bundle.css +3 -3
- package/dist/{app.bundle.e2d3b6781252f9c7b2a3.js → app.bundle.ecc3736aff52e6abfd49.js} +52547 -36094
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/dicom-microscopy-viewer/5004fdc02f329ce53b69.wasm +0 -0
- package/dist/dicom-microscopy-viewer/c22b37c3488e1d6c3aa4.wasm +0 -0
- package/dist/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js +3 -0
- package/dist/{dicomMicroscopyViewer.min.js.LICENSE.txt → dicom-microscopy-viewer/dicomMicroscopyViewer.min.js.LICENSE.txt} +11 -0
- package/dist/dicom-microscopy-viewer/index.worker.min.worker.js +2 -0
- package/dist/dicom-microscopy-viewer/index.worker.min.worker.js.map +1 -0
- package/dist/{histogram-worker.bundle.6b31e5ed4c4a7a6998f2.js → histogram-worker.bundle.e7e9fea2c3236b0e747a.js} +12 -16
- package/dist/index.html +1 -1
- package/dist/index.worker.5a5a581362c14598c3d9.worker.js +2 -0
- package/dist/index.worker.5a5a581362c14598c3d9.worker.js.map +1 -0
- package/dist/{polySeg.bundle.df492df5042827938ba4.js → polySeg.bundle.b25c61224998018d0f79.js} +24 -5
- package/dist/{suv-peak-worker.bundle.8f4b505fad3d371489fe.js → suv-peak-worker.bundle.eb11e71db02e52601ecf.js} +40 -21
- package/dist/sw.js +1 -1
- package/package.json +25 -33
- package/dist/117.bundle.1f7b56504d506e7259e3.js +0 -6552
- package/dist/172.bundle.e0ee762bee7496d6491e.js +0 -662
- package/dist/36785fbd89b0e17f6099.wasm +0 -0
- package/dist/62ab5d58a2bea7b5a1dc.wasm +0 -0
- package/dist/644.bundle.1e77691d2eeb96a423b0.js +0 -19159
- package/dist/75a0c2dfe07b824c7d21.wasm +0 -0
- package/dist/dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js +0 -13
- package/dist/dicomMicroscopyViewer.min.js +0 -3
- package/dist/index.worker.f4bda803c15bc6359d5f.worker.js +0 -2
- package/dist/index.worker.f4bda803c15bc6359d5f.worker.js.map +0 -1
- package/dist/index.worker.min.worker.js +0 -2
- package/dist/index.worker.min.worker.js.map +0 -1
- /package/dist/{129.css → 210.css} +0 -0
- /package/dist/{727.css → 286.css} +0 -0
- /package/dist/{172.css → 552.css} +0 -0
- /package/dist/{404.css → 757.css} +0 -0
- /package/dist/{717.css → 994.css} +0 -0
- /package/dist/{65916ef3def695744bda.wasm → dicom-microscopy-viewer/65916ef3def695744bda.wasm} +0 -0
- /package/dist/{b6b803111e2d06a825bd.wasm → dicom-microscopy-viewer/b6b803111e2d06a825bd.wasm} +0 -0
|
@@ -1,7 +1,673 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[552,757],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 3094:
|
|
5
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
|
+
|
|
7
|
+
// ESM COMPAT FLAG
|
|
8
|
+
__webpack_require__.r(__webpack_exports__);
|
|
9
|
+
|
|
10
|
+
// EXPORTS
|
|
11
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
12
|
+
"default": () => (/* binding */ src_DicomMicroscopyViewport)
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
16
|
+
var react = __webpack_require__(43001);
|
|
17
|
+
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
18
|
+
var prop_types = __webpack_require__(3827);
|
|
19
|
+
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
20
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 784 modules
|
|
21
|
+
var src = __webpack_require__(38604);
|
|
22
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/DicomMicroscopyViewport.css
|
|
23
|
+
// extracted by mini-css-extract-plugin
|
|
24
|
+
|
|
25
|
+
// EXTERNAL MODULE: ../../../node_modules/classnames/index.js
|
|
26
|
+
var classnames = __webpack_require__(33901);
|
|
27
|
+
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
28
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/components/ViewportOverlay/listComponentGenerator.tsx
|
|
29
|
+
const listComponentGenerator = props => {
|
|
30
|
+
const {
|
|
31
|
+
list,
|
|
32
|
+
itemGenerator
|
|
33
|
+
} = props;
|
|
34
|
+
if (!list) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
return list.map(item => {
|
|
38
|
+
if (!item) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const generator = item.generator || itemGenerator;
|
|
42
|
+
if (!generator) {
|
|
43
|
+
throw new Error(`No generator for ${item}`);
|
|
44
|
+
}
|
|
45
|
+
return generator({
|
|
46
|
+
...props,
|
|
47
|
+
item
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
/* harmony default export */ const ViewportOverlay_listComponentGenerator = (listComponentGenerator);
|
|
52
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/components/ViewportOverlay/ViewportOverlay.css
|
|
53
|
+
// extracted by mini-css-extract-plugin
|
|
54
|
+
|
|
55
|
+
// EXTERNAL MODULE: ../../../node_modules/moment/moment.js
|
|
56
|
+
var moment_moment = __webpack_require__(71271);
|
|
57
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 28 modules
|
|
58
|
+
var esm = __webpack_require__(62709);
|
|
59
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/components/ViewportOverlay/utils.ts
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Checks if value is valid.
|
|
65
|
+
*
|
|
66
|
+
* @param {number} value
|
|
67
|
+
* @returns {boolean} is valid.
|
|
68
|
+
*/
|
|
69
|
+
function isValidNumber(value) {
|
|
70
|
+
return typeof value === 'number' && !isNaN(value);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Formats number precision.
|
|
75
|
+
*
|
|
76
|
+
* @param {number} number
|
|
77
|
+
* @param {number} precision
|
|
78
|
+
* @returns {number} formatted number.
|
|
79
|
+
*/
|
|
80
|
+
function utils_formatNumberPrecision(number, precision) {
|
|
81
|
+
if (number !== null) {
|
|
82
|
+
return parseFloat(number).toFixed(precision);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Formats DICOM date.
|
|
88
|
+
*
|
|
89
|
+
* @param {string} date
|
|
90
|
+
* @param {string} strFormat
|
|
91
|
+
* @returns {string} formatted date.
|
|
92
|
+
*/
|
|
93
|
+
function utils_formatDICOMDate(date, strFormat = 'MMM D, YYYY') {
|
|
94
|
+
return moment(date, 'YYYYMMDD').format(strFormat);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* DICOM Time is stored as HHmmss.SSS, where:
|
|
99
|
+
* HH 24 hour time:
|
|
100
|
+
* m mm 0..59 Minutes
|
|
101
|
+
* s ss 0..59 Seconds
|
|
102
|
+
* S SS SSS 0..999 Fractional seconds
|
|
103
|
+
*
|
|
104
|
+
* Goal: '24:12:12'
|
|
105
|
+
*
|
|
106
|
+
* @param {*} time
|
|
107
|
+
* @param {string} strFormat
|
|
108
|
+
* @returns {string} formatted name.
|
|
109
|
+
*/
|
|
110
|
+
function utils_formatDICOMTime(time, strFormat = 'HH:mm:ss') {
|
|
111
|
+
return moment(time, 'HH:mm:ss').format(strFormat);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Formats a patient name for display purposes
|
|
116
|
+
*
|
|
117
|
+
* @param {string} name
|
|
118
|
+
* @returns {string} formatted name.
|
|
119
|
+
*/
|
|
120
|
+
function utils_formatPN(name) {
|
|
121
|
+
if (!name) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Convert the first ^ to a ', '. String.replace() only affects
|
|
126
|
+
// the first appearance of the character.
|
|
127
|
+
const commaBetweenFirstAndLast = name.replace('^', ', ');
|
|
128
|
+
|
|
129
|
+
// Replace any remaining '^' characters with spaces
|
|
130
|
+
const cleaned = commaBetweenFirstAndLast.replace(/\^/g, ' ');
|
|
131
|
+
|
|
132
|
+
// Trim any extraneous whitespace
|
|
133
|
+
return cleaned.trim();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Gets compression type
|
|
138
|
+
*
|
|
139
|
+
* @param {number} imageId
|
|
140
|
+
* @returns {string} compression type.
|
|
141
|
+
*/
|
|
142
|
+
function getCompression(imageId) {
|
|
143
|
+
const generalImageModule = cornerstone.metaData.get('generalImageModule', imageId) || {};
|
|
144
|
+
const {
|
|
145
|
+
lossyImageCompression,
|
|
146
|
+
lossyImageCompressionRatio,
|
|
147
|
+
lossyImageCompressionMethod
|
|
148
|
+
} = generalImageModule;
|
|
149
|
+
if (lossyImageCompression === '01' && lossyImageCompressionRatio !== '') {
|
|
150
|
+
const compressionMethod = lossyImageCompressionMethod || 'Lossy: ';
|
|
151
|
+
const compressionRatio = utils_formatNumberPrecision(lossyImageCompressionRatio, 2);
|
|
152
|
+
return compressionMethod + compressionRatio + ' : 1';
|
|
153
|
+
}
|
|
154
|
+
return 'Lossless / Uncompressed';
|
|
155
|
+
}
|
|
156
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/components/ViewportOverlay/index.tsx
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
*
|
|
164
|
+
* @param {*} config is a configuration object that defines four lists of elements,
|
|
165
|
+
* one topLeft, topRight, bottomLeft, bottomRight contents.
|
|
166
|
+
* @param {*} extensionManager is used to load the image data.
|
|
167
|
+
* @returns
|
|
168
|
+
*/
|
|
169
|
+
const generateFromConfig = ({
|
|
170
|
+
topLeft = [],
|
|
171
|
+
topRight = [],
|
|
172
|
+
bottomLeft = [],
|
|
173
|
+
bottomRight = [],
|
|
174
|
+
itemGenerator = () => {}
|
|
175
|
+
}) => {
|
|
176
|
+
return props => {
|
|
177
|
+
const topLeftClass = 'top-viewport left-viewport text-primary-light';
|
|
178
|
+
const topRightClass = 'top-viewport right-viewport-scrollbar text-primary-light';
|
|
179
|
+
const bottomRightClass = 'bottom-viewport right-viewport-scrollbar text-primary-light';
|
|
180
|
+
const bottomLeftClass = 'bottom-viewport left-viewport text-primary-light';
|
|
181
|
+
const overlay = 'absolute pointer-events-none microscopy-viewport-overlay';
|
|
182
|
+
return /*#__PURE__*/react.createElement(react.Fragment, null, topLeft && topLeft.length > 0 && /*#__PURE__*/react.createElement("div", {
|
|
183
|
+
"data-cy": 'viewport-overlay-top-left',
|
|
184
|
+
className: classnames_default()(overlay, topLeftClass)
|
|
185
|
+
}, ViewportOverlay_listComponentGenerator({
|
|
186
|
+
...props,
|
|
187
|
+
list: topLeft,
|
|
188
|
+
itemGenerator
|
|
189
|
+
})), topRight && topRight.length > 0 && /*#__PURE__*/react.createElement("div", {
|
|
190
|
+
"data-cy": 'viewport-overlay-top-right',
|
|
191
|
+
className: classnames_default()(overlay, topRightClass)
|
|
192
|
+
}, ViewportOverlay_listComponentGenerator({
|
|
193
|
+
...props,
|
|
194
|
+
list: topRight,
|
|
195
|
+
itemGenerator
|
|
196
|
+
})), bottomRight && bottomRight.length > 0 && /*#__PURE__*/react.createElement("div", {
|
|
197
|
+
"data-cy": 'viewport-overlay-bottom-right',
|
|
198
|
+
className: classnames_default()(overlay, bottomRightClass)
|
|
199
|
+
}, ViewportOverlay_listComponentGenerator({
|
|
200
|
+
...props,
|
|
201
|
+
list: bottomRight,
|
|
202
|
+
itemGenerator
|
|
203
|
+
})), bottomLeft && bottomLeft.length > 0 && /*#__PURE__*/react.createElement("div", {
|
|
204
|
+
"data-cy": 'viewport-overlay-bottom-left',
|
|
205
|
+
className: classnames_default()(overlay, bottomLeftClass)
|
|
206
|
+
}, ViewportOverlay_listComponentGenerator({
|
|
207
|
+
...props,
|
|
208
|
+
list: bottomLeft,
|
|
209
|
+
itemGenerator
|
|
210
|
+
})));
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
const itemGenerator = props => {
|
|
214
|
+
const {
|
|
215
|
+
item
|
|
216
|
+
} = props;
|
|
217
|
+
const {
|
|
218
|
+
title,
|
|
219
|
+
value: valueFunc,
|
|
220
|
+
condition,
|
|
221
|
+
contents
|
|
222
|
+
} = item;
|
|
223
|
+
props.image = {
|
|
224
|
+
...props.image,
|
|
225
|
+
...props.metadata
|
|
226
|
+
};
|
|
227
|
+
props.formatDate = formatDICOMDate;
|
|
228
|
+
props.formatTime = formatDICOMTime;
|
|
229
|
+
props.formatPN = formatPN;
|
|
230
|
+
props.formatNumberPrecision = formatNumberPrecision;
|
|
231
|
+
if (condition && !condition(props)) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
if (!contents && !valueFunc) {
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
const value = valueFunc && valueFunc(props);
|
|
238
|
+
const contentsValue = contents && contents(props) || [{
|
|
239
|
+
className: 'mr-1',
|
|
240
|
+
value: title
|
|
241
|
+
}, {
|
|
242
|
+
classname: 'mr-1 font-light',
|
|
243
|
+
value
|
|
244
|
+
}];
|
|
245
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
246
|
+
key: item.id,
|
|
247
|
+
className: "flex flex-row"
|
|
248
|
+
}, contentsValue.map((content, idx) => /*#__PURE__*/React.createElement("span", {
|
|
249
|
+
key: idx,
|
|
250
|
+
className: content.className
|
|
251
|
+
}, content.value)));
|
|
252
|
+
};
|
|
253
|
+
/* harmony default export */ const ViewportOverlay = (generateFromConfig({}));
|
|
254
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
|
|
255
|
+
var core_src = __webpack_require__(63810);
|
|
256
|
+
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 93 modules
|
|
257
|
+
var default_src = __webpack_require__(32281);
|
|
258
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/dicomWebClient.ts
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* create a DICOMwebClient object to be used by Dicom Microscopy Viewer
|
|
264
|
+
*
|
|
265
|
+
* Referenced the code from `/extensions/default/src/DicomWebDataSource/index.js`
|
|
266
|
+
*
|
|
267
|
+
* @param param0
|
|
268
|
+
* @returns
|
|
269
|
+
*/
|
|
270
|
+
function getDicomWebClient({
|
|
271
|
+
extensionManager,
|
|
272
|
+
servicesManager
|
|
273
|
+
}) {
|
|
274
|
+
const dataSourceConfig = window.config.dataSources.find(ds => ds.sourceName === extensionManager.activeDataSource);
|
|
275
|
+
const {
|
|
276
|
+
userAuthenticationService
|
|
277
|
+
} = servicesManager.services;
|
|
278
|
+
const {
|
|
279
|
+
wadoRoot,
|
|
280
|
+
staticWado,
|
|
281
|
+
singlepart
|
|
282
|
+
} = dataSourceConfig.configuration;
|
|
283
|
+
const wadoConfig = {
|
|
284
|
+
url: wadoRoot || '/dicomlocal',
|
|
285
|
+
staticWado,
|
|
286
|
+
singlepart,
|
|
287
|
+
headers: userAuthenticationService.getAuthorizationHeader(),
|
|
288
|
+
errorInterceptor: core_src/* errorHandler */.Po.getHTTPErrorHandler()
|
|
289
|
+
};
|
|
290
|
+
const client = new default_src.StaticWadoClient(wadoConfig);
|
|
291
|
+
client.wadoURL = wadoConfig.url;
|
|
292
|
+
if (extensionManager.activeDataSource === 'dicomlocal') {
|
|
293
|
+
/**
|
|
294
|
+
* For local data source, override the retrieveInstanceFrames() method of the
|
|
295
|
+
* dicomweb-client to retrieve image data from memory cached metadata.
|
|
296
|
+
* Other methods of the client doesn't matter, as we are feeding the DMV
|
|
297
|
+
* with the series metadata already.
|
|
298
|
+
*
|
|
299
|
+
* @param {Object} options
|
|
300
|
+
* @param {String} options.studyInstanceUID - Study Instance UID
|
|
301
|
+
* @param {String} options.seriesInstanceUID - Series Instance UID
|
|
302
|
+
* @param {String} options.sopInstanceUID - SOP Instance UID
|
|
303
|
+
* @param {String} options.frameNumbers - One-based indices of Frame Items
|
|
304
|
+
* @param {Object} [options.queryParams] - HTTP query parameters
|
|
305
|
+
* @returns {ArrayBuffer[]} Rendered Frame Items as byte arrays
|
|
306
|
+
*/
|
|
307
|
+
//
|
|
308
|
+
client.retrieveInstanceFrames = async options => {
|
|
309
|
+
if (!('studyInstanceUID' in options)) {
|
|
310
|
+
throw new Error('Study Instance UID is required for retrieval of instance frames');
|
|
311
|
+
}
|
|
312
|
+
if (!('seriesInstanceUID' in options)) {
|
|
313
|
+
throw new Error('Series Instance UID is required for retrieval of instance frames');
|
|
314
|
+
}
|
|
315
|
+
if (!('sopInstanceUID' in options)) {
|
|
316
|
+
throw new Error('SOP Instance UID is required for retrieval of instance frames');
|
|
317
|
+
}
|
|
318
|
+
if (!('frameNumbers' in options)) {
|
|
319
|
+
throw new Error('frame numbers are required for retrieval of instance frames');
|
|
320
|
+
}
|
|
321
|
+
console.log(`retrieve frames ${options.frameNumbers.toString()} of instance ${options.sopInstanceUID}`);
|
|
322
|
+
const instance = core_src.DicomMetadataStore.getInstance(options.studyInstanceUID, options.seriesInstanceUID, options.sopInstanceUID);
|
|
323
|
+
const frameNumbers = Array.isArray(options.frameNumbers) ? options.frameNumbers : options.frameNumbers.split(',');
|
|
324
|
+
return frameNumbers.map(fr => Array.isArray(instance.PixelData) ? instance.PixelData[+fr - 1] : instance.PixelData);
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
return client;
|
|
328
|
+
}
|
|
329
|
+
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
330
|
+
var dcmjs_es = __webpack_require__(67540);
|
|
331
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/cleanDenaturalizedDataset.ts
|
|
332
|
+
|
|
333
|
+
function isPrimitive(v) {
|
|
334
|
+
return !(typeof v == 'object' || Array.isArray(v));
|
|
335
|
+
}
|
|
336
|
+
const vrNumerics = ['DS', 'FL', 'FD', 'IS', 'OD', 'OF', 'OL', 'OV', 'SL', 'SS', 'SV', 'UL', 'US', 'UV'];
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Specialized for DICOM JSON format dataset cleaning.
|
|
340
|
+
* @param obj
|
|
341
|
+
* @returns
|
|
342
|
+
*/
|
|
343
|
+
function cleanDenaturalizedDataset(obj, options) {
|
|
344
|
+
if (Array.isArray(obj)) {
|
|
345
|
+
const newAry = obj.map(o => isPrimitive(o) ? o : cleanDenaturalizedDataset(o, options));
|
|
346
|
+
return newAry;
|
|
347
|
+
} else if (isPrimitive(obj)) {
|
|
348
|
+
return obj;
|
|
349
|
+
} else {
|
|
350
|
+
Object.keys(obj).forEach(key => {
|
|
351
|
+
if (obj[key].Value === null && obj[key].vr) {
|
|
352
|
+
delete obj[key].Value;
|
|
353
|
+
} else if (Array.isArray(obj[key].Value) && obj[key].vr) {
|
|
354
|
+
if (obj[key].Value.length === 1 && obj[key].Value[0].BulkDataURI) {
|
|
355
|
+
default_src.dicomWebUtils.fixBulkDataURI(obj[key].Value[0], options, options.dataSourceConfig);
|
|
356
|
+
obj[key].BulkDataURI = obj[key].Value[0].BulkDataURI;
|
|
357
|
+
|
|
358
|
+
// prevent mixed-content blockage
|
|
359
|
+
if (window.location.protocol === 'https:' && obj[key].BulkDataURI.startsWith('http:')) {
|
|
360
|
+
obj[key].BulkDataURI = obj[key].BulkDataURI.replace('http:', 'https:');
|
|
361
|
+
}
|
|
362
|
+
delete obj[key].Value;
|
|
363
|
+
} else if (vrNumerics.includes(obj[key].vr)) {
|
|
364
|
+
obj[key].Value = obj[key].Value.map(v => +v);
|
|
365
|
+
} else {
|
|
366
|
+
obj[key].Value = obj[key].Value.map(entry => cleanDenaturalizedDataset(entry, options));
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
return obj;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/DicomMicroscopyViewport.tsx
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
class DicomMicroscopyViewport extends react.Component {
|
|
383
|
+
constructor(props) {
|
|
384
|
+
super(props);
|
|
385
|
+
this.state = {
|
|
386
|
+
error: null,
|
|
387
|
+
isLoaded: false
|
|
388
|
+
};
|
|
389
|
+
this.microscopyService = void 0;
|
|
390
|
+
this.viewer = null;
|
|
391
|
+
// dicom-microscopy-viewer instance
|
|
392
|
+
this.managedViewer = null;
|
|
393
|
+
// managed wrapper of microscopy-dicom extension
|
|
394
|
+
this.container = /*#__PURE__*/react.createRef();
|
|
395
|
+
this.overlayElement = /*#__PURE__*/react.createRef();
|
|
396
|
+
this.setViewportActiveHandler = () => {
|
|
397
|
+
const {
|
|
398
|
+
setViewportActive,
|
|
399
|
+
viewportId,
|
|
400
|
+
activeViewportId
|
|
401
|
+
} = this.props;
|
|
402
|
+
if (viewportId !== activeViewportId) {
|
|
403
|
+
setViewportActive(viewportId);
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
const {
|
|
407
|
+
microscopyService
|
|
408
|
+
} = this.props.servicesManager.services;
|
|
409
|
+
this.microscopyService = microscopyService;
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Need to return this as a function to prevent webpack from munging it.
|
|
413
|
+
*/
|
|
414
|
+
static getImportPath() {
|
|
415
|
+
return '/dicom-microscopy-viewer/dicomMicroscopyViewer.min.js';
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Get the nearest ROI from the mouse click point
|
|
420
|
+
*
|
|
421
|
+
* @param event
|
|
422
|
+
* @param autoselect
|
|
423
|
+
* @returns
|
|
424
|
+
*/
|
|
425
|
+
getNearbyROI(event, autoselect = true) {
|
|
426
|
+
const symbols = Object.getOwnPropertySymbols(this.viewer);
|
|
427
|
+
const _drawingSource = symbols.find(p => p.description === 'drawingSource');
|
|
428
|
+
const _pyramid = symbols.find(p => p.description === 'pyramid');
|
|
429
|
+
const _map = symbols.find(p => p.description === 'map');
|
|
430
|
+
const _affine = symbols.find(p => p.description === 'affine');
|
|
431
|
+
const feature = this.viewer[_drawingSource].getClosestFeatureToCoordinate(this.viewer[_map].getEventCoordinate(event));
|
|
432
|
+
if (!feature) {
|
|
433
|
+
return null;
|
|
434
|
+
}
|
|
435
|
+
const roiAnnotation = this.viewer._getROIFromFeature(feature, this.viewer[_pyramid].metadata, this.viewer[_affine]);
|
|
436
|
+
if (roiAnnotation && autoselect) {
|
|
437
|
+
this.microscopyService.selectAnnotation(roiAnnotation);
|
|
438
|
+
}
|
|
439
|
+
return roiAnnotation;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
// install the microscopy renderer into the web page.
|
|
443
|
+
// you should only do this once.
|
|
444
|
+
async installOpenLayersRenderer(container, displaySet) {
|
|
445
|
+
const loadViewer = async metadata => {
|
|
446
|
+
await import( /* webpackIgnore: true */DicomMicroscopyViewport.getImportPath());
|
|
447
|
+
const {
|
|
448
|
+
viewer: DicomMicroscopyViewer,
|
|
449
|
+
metadata: metadataUtils
|
|
450
|
+
} = window.dicomMicroscopyViewer;
|
|
451
|
+
const microscopyViewer = DicomMicroscopyViewer.VolumeImageViewer;
|
|
452
|
+
const client = getDicomWebClient({
|
|
453
|
+
extensionManager: this.props.extensionManager,
|
|
454
|
+
servicesManager: this.props.servicesManager
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
// Parse, format, and filter metadata
|
|
458
|
+
const volumeImages = [];
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* This block of code is the original way of loading DICOM into dicom-microscopy-viewer
|
|
462
|
+
* as in their documentation.
|
|
463
|
+
* But we have the metadata already loaded by our loaders.
|
|
464
|
+
* As the metadata for microscopy DIOM files tends to be big and we don't
|
|
465
|
+
* want to double load it, below we have the mechanism to reconstruct the
|
|
466
|
+
* DICOM JSON structure (denaturalized) from naturalized metadata.
|
|
467
|
+
* (NOTE: Our loaders cache only naturalized metadata, not the denaturalized.)
|
|
468
|
+
*/
|
|
469
|
+
// {
|
|
470
|
+
// const retrieveOptions = {
|
|
471
|
+
// studyInstanceUID: metadata[0].StudyInstanceUID,
|
|
472
|
+
// seriesInstanceUID: metadata[0].SeriesInstanceUID,
|
|
473
|
+
// };
|
|
474
|
+
// metadata = await client.retrieveSeriesMetadata(retrieveOptions);
|
|
475
|
+
// // Parse, format, and filter metadata
|
|
476
|
+
// metadata.forEach(m => {
|
|
477
|
+
// if (
|
|
478
|
+
// volumeImages.length > 0 &&
|
|
479
|
+
// m['00200052'].Value[0] != volumeImages[0].FrameOfReferenceUID
|
|
480
|
+
// ) {
|
|
481
|
+
// console.warn(
|
|
482
|
+
// 'Expected FrameOfReferenceUID of difference instances within a series to be the same, found multiple different values',
|
|
483
|
+
// m['00200052'].Value[0]
|
|
484
|
+
// );
|
|
485
|
+
// m['00200052'].Value[0] = volumeImages[0].FrameOfReferenceUID;
|
|
486
|
+
// }
|
|
487
|
+
// NOTE: depending on different data source, image.ImageType sometimes
|
|
488
|
+
// is a string, not a string array.
|
|
489
|
+
// m['00080008'] = transformImageTypeUnnaturalized(m['00080008']);
|
|
490
|
+
|
|
491
|
+
// const image = new metadataUtils.VLWholeSlideMicroscopyImage({
|
|
492
|
+
// metadata: m,
|
|
493
|
+
// });
|
|
494
|
+
// const imageFlavor = image.ImageType[2];
|
|
495
|
+
// if (imageFlavor === 'VOLUME' || imageFlavor === 'THUMBNAIL') {
|
|
496
|
+
// volumeImages.push(image);
|
|
497
|
+
// }
|
|
498
|
+
// });
|
|
499
|
+
// }
|
|
500
|
+
|
|
501
|
+
metadata.forEach(m => {
|
|
502
|
+
// NOTE: depending on different data source, image.ImageType sometimes
|
|
503
|
+
// is a string, not a string array.
|
|
504
|
+
m.ImageType = typeof m.ImageType === 'string' ? m.ImageType.split('\\') : m.ImageType;
|
|
505
|
+
const inst = cleanDenaturalizedDataset(dcmjs_es["default"].data.DicomMetaDictionary.denaturalizeDataset(m), {
|
|
506
|
+
StudyInstanceUID: m.StudyInstanceUID,
|
|
507
|
+
SeriesInstanceUID: m.SeriesInstanceUID,
|
|
508
|
+
dataSourceConfig: this.props.dataSource.getConfig()
|
|
509
|
+
});
|
|
510
|
+
if (!inst['00480105']) {
|
|
511
|
+
// Optical Path Sequence, no OpticalPathIdentifier?
|
|
512
|
+
// NOTE: this is actually a not-well formatted DICOM VL Whole Slide Microscopy Image.
|
|
513
|
+
inst['00480105'] = {
|
|
514
|
+
vr: 'SQ',
|
|
515
|
+
Value: [{
|
|
516
|
+
'00480106': {
|
|
517
|
+
vr: 'SH',
|
|
518
|
+
Value: ['1']
|
|
519
|
+
}
|
|
520
|
+
}]
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
const image = new metadataUtils.VLWholeSlideMicroscopyImage({
|
|
524
|
+
metadata: inst
|
|
525
|
+
});
|
|
526
|
+
const imageFlavor = image.ImageType[2];
|
|
527
|
+
if (imageFlavor === 'VOLUME' || imageFlavor === 'THUMBNAIL') {
|
|
528
|
+
volumeImages.push(image);
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
// format metadata for microscopy-viewer
|
|
533
|
+
const options = {
|
|
534
|
+
client,
|
|
535
|
+
metadata: volumeImages,
|
|
536
|
+
retrieveRendered: false,
|
|
537
|
+
controls: ['overview', 'position']
|
|
538
|
+
};
|
|
539
|
+
this.viewer = new microscopyViewer(options);
|
|
540
|
+
if (this.overlayElement && this.overlayElement.current && this.viewer.addViewportOverlay) {
|
|
541
|
+
this.viewer.addViewportOverlay({
|
|
542
|
+
element: this.overlayElement.current,
|
|
543
|
+
coordinates: [0, 0],
|
|
544
|
+
// TODO: dicom-microscopy-viewer documentation says this can be false to be automatically, but it is not.
|
|
545
|
+
navigate: true,
|
|
546
|
+
className: 'OpenLayersOverlay'
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
this.viewer.render({
|
|
550
|
+
container
|
|
551
|
+
});
|
|
552
|
+
const {
|
|
553
|
+
StudyInstanceUID,
|
|
554
|
+
SeriesInstanceUID
|
|
555
|
+
} = displaySet;
|
|
556
|
+
this.managedViewer = this.microscopyService.addViewer(this.viewer, this.props.viewportId, container, StudyInstanceUID, SeriesInstanceUID);
|
|
557
|
+
this.managedViewer.addContextMenuCallback(event => {
|
|
558
|
+
// TODO: refactor this after Bill's changes on ContextMenu feature get merged
|
|
559
|
+
// const roiAnnotationNearBy = this.getNearbyROI(event);
|
|
560
|
+
});
|
|
561
|
+
};
|
|
562
|
+
this.microscopyService.clearAnnotations();
|
|
563
|
+
let smDisplaySet = displaySet;
|
|
564
|
+
if (displaySet.Modality === 'SR') {
|
|
565
|
+
// for SR displaySet, let's load the actual image displaySet
|
|
566
|
+
smDisplaySet = displaySet.getSourceDisplaySet();
|
|
567
|
+
}
|
|
568
|
+
console.log('Loading viewer metadata', smDisplaySet);
|
|
569
|
+
await loadViewer(smDisplaySet.others);
|
|
570
|
+
if (displaySet.Modality === 'SR') {
|
|
571
|
+
displaySet.load(smDisplaySet);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
componentDidMount() {
|
|
575
|
+
const {
|
|
576
|
+
displaySets,
|
|
577
|
+
viewportOptions
|
|
578
|
+
} = this.props;
|
|
579
|
+
// Todo-rename: this is always getting the 0
|
|
580
|
+
const displaySet = displaySets[0];
|
|
581
|
+
this.installOpenLayersRenderer(this.container.current, displaySet).then(() => {
|
|
582
|
+
this.setState({
|
|
583
|
+
isLoaded: true
|
|
584
|
+
});
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
588
|
+
if (this.managedViewer && prevProps.displaySets !== this.props.displaySets) {
|
|
589
|
+
const {
|
|
590
|
+
displaySets
|
|
591
|
+
} = this.props;
|
|
592
|
+
const displaySet = displaySets[0];
|
|
593
|
+
this.microscopyService.clearAnnotations();
|
|
594
|
+
|
|
595
|
+
// loading SR
|
|
596
|
+
if (displaySet.Modality === 'SR') {
|
|
597
|
+
const referencedDisplaySet = displaySet.getSourceDisplaySet();
|
|
598
|
+
displaySet.load(referencedDisplaySet);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
componentWillUnmount() {
|
|
603
|
+
this.microscopyService.removeViewer(this.viewer);
|
|
604
|
+
}
|
|
605
|
+
render() {
|
|
606
|
+
const style = {
|
|
607
|
+
width: '100%',
|
|
608
|
+
height: '100%'
|
|
609
|
+
};
|
|
610
|
+
const displaySet = this.props.displaySets[0];
|
|
611
|
+
const firstInstance = displaySet.firstInstance || displaySet.instance;
|
|
612
|
+
return /*#__PURE__*/react.createElement("div", {
|
|
613
|
+
className: 'DicomMicroscopyViewer',
|
|
614
|
+
style: style,
|
|
615
|
+
onClick: this.setViewportActiveHandler
|
|
616
|
+
}, /*#__PURE__*/react.createElement("div", {
|
|
617
|
+
style: {
|
|
618
|
+
...style,
|
|
619
|
+
display: 'none'
|
|
620
|
+
}
|
|
621
|
+
}, /*#__PURE__*/react.createElement("div", {
|
|
622
|
+
style: {
|
|
623
|
+
...style
|
|
624
|
+
},
|
|
625
|
+
ref: this.overlayElement
|
|
626
|
+
}, /*#__PURE__*/react.createElement("div", {
|
|
627
|
+
style: {
|
|
628
|
+
position: 'relative',
|
|
629
|
+
height: '100%',
|
|
630
|
+
width: '100%'
|
|
631
|
+
}
|
|
632
|
+
}, displaySet && firstInstance.imageId && /*#__PURE__*/react.createElement(ViewportOverlay, {
|
|
633
|
+
displaySet: displaySet,
|
|
634
|
+
instance: displaySet.instance,
|
|
635
|
+
metadata: displaySet.metadata
|
|
636
|
+
})))), this.state.error ? /*#__PURE__*/react.createElement("h2", null, JSON.stringify(this.state.error)) : /*#__PURE__*/react.createElement("div", {
|
|
637
|
+
style: style,
|
|
638
|
+
ref: ref => {
|
|
639
|
+
this.container.current = ref;
|
|
640
|
+
this.props.resizeRef.current = ref;
|
|
641
|
+
}
|
|
642
|
+
}), this.state.isLoaded ? null : /*#__PURE__*/react.createElement(src/* LoadingIndicatorProgress */.LE, {
|
|
643
|
+
className: 'h-full w-full bg-black'
|
|
644
|
+
}));
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
DicomMicroscopyViewport.propTypes = {
|
|
648
|
+
viewportData: (prop_types_default()).object,
|
|
649
|
+
activeViewportId: (prop_types_default()).string,
|
|
650
|
+
setViewportActive: (prop_types_default()).func,
|
|
651
|
+
// props from OHIF Viewport Grid
|
|
652
|
+
displaySets: (prop_types_default()).array,
|
|
653
|
+
viewportId: (prop_types_default()).string,
|
|
654
|
+
viewportLabel: (prop_types_default()).string,
|
|
655
|
+
dataSource: (prop_types_default()).object,
|
|
656
|
+
viewportOptions: (prop_types_default()).object,
|
|
657
|
+
displaySetOptions: (prop_types_default()).array,
|
|
658
|
+
// other props from wrapping component
|
|
659
|
+
servicesManager: (prop_types_default()).object,
|
|
660
|
+
extensionManager: (prop_types_default()).object,
|
|
661
|
+
commandsManager: (prop_types_default()).object,
|
|
662
|
+
resizeRef: prop_types_default().oneOfType([(prop_types_default()).func, prop_types_default().shape({
|
|
663
|
+
current: (prop_types_default()).any
|
|
664
|
+
})])
|
|
665
|
+
};
|
|
666
|
+
/* harmony default export */ const src_DicomMicroscopyViewport = (DicomMicroscopyViewport);
|
|
667
|
+
|
|
668
|
+
/***/ }),
|
|
669
|
+
|
|
670
|
+
/***/ 82065:
|
|
5
671
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
672
|
|
|
7
673
|
// ESM COMPAT FLAG
|
|
@@ -13,21 +679,21 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
13
679
|
});
|
|
14
680
|
|
|
15
681
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/package.json
|
|
16
|
-
const package_namespaceObject =
|
|
682
|
+
const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-dicom-microscopy"}');
|
|
17
683
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/id.js
|
|
18
684
|
|
|
19
|
-
const id = package_namespaceObject.
|
|
685
|
+
const id = package_namespaceObject.u2;
|
|
20
686
|
|
|
21
687
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
22
|
-
var react = __webpack_require__(
|
|
23
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
24
|
-
var src = __webpack_require__(
|
|
688
|
+
var react = __webpack_require__(43001);
|
|
689
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 784 modules
|
|
690
|
+
var src = __webpack_require__(38604);
|
|
25
691
|
// EXTERNAL MODULE: ../../core/src/index.ts + 72 modules
|
|
26
|
-
var core_src = __webpack_require__(
|
|
692
|
+
var core_src = __webpack_require__(63810);
|
|
27
693
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
28
|
-
var es = __webpack_require__(
|
|
29
|
-
// EXTERNAL MODULE: ../../../node_modules/mathjs/lib/esm/index.js +
|
|
30
|
-
var esm = __webpack_require__(
|
|
694
|
+
var es = __webpack_require__(69190);
|
|
695
|
+
// EXTERNAL MODULE: ../../../node_modules/mathjs/lib/esm/index.js + 1003 modules
|
|
696
|
+
var esm = __webpack_require__(5931);
|
|
31
697
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/coordinateFormatScoord3d2Geometry.js
|
|
32
698
|
|
|
33
699
|
|
|
@@ -117,9 +783,9 @@ function mapSlideCoord2PixelCoord(options) {
|
|
|
117
783
|
}
|
|
118
784
|
const point = options.point;
|
|
119
785
|
const m = [[orientation[0] * spacing[1], orientation[3] * spacing[0], offset[0]], [orientation[1] * spacing[1], orientation[4] * spacing[0], offset[1]], [0, 0, 1]];
|
|
120
|
-
const mInverted = (0,esm/* inv */.
|
|
786
|
+
const mInverted = (0,esm/* inv */.JBn)(m);
|
|
121
787
|
const vSlide = [[point[0]], [point[1]], [1]];
|
|
122
|
-
const vImage = (0,esm/* multiply */.
|
|
788
|
+
const vImage = (0,esm/* multiply */.JpY)(mInverted, vSlide);
|
|
123
789
|
const row = Number(vImage[1][0].toFixed(4));
|
|
124
790
|
const col = Number(vImage[0][0].toFixed(4));
|
|
125
791
|
return [col, row];
|
|
@@ -212,7 +878,7 @@ const EVENTS = {
|
|
|
212
878
|
* ViewerManager encapsulates the complexity of the third-party viewer and
|
|
213
879
|
* expose only the features/behaviors that are relevant to the application
|
|
214
880
|
*/
|
|
215
|
-
class ViewerManager extends core_src/* PubSubService */.
|
|
881
|
+
class ViewerManager extends core_src/* PubSubService */.hC {
|
|
216
882
|
constructor(viewer, viewportId, container, studyInstanceUID, seriesInstanceUID) {
|
|
217
883
|
super(EVENTS);
|
|
218
884
|
this.viewer = viewer;
|
|
@@ -615,7 +1281,7 @@ const RoiAnnotation_EVENTS = {
|
|
|
615
1281
|
/**
|
|
616
1282
|
* Represents a single annotation for the Microscopy Viewer
|
|
617
1283
|
*/
|
|
618
|
-
class RoiAnnotation extends core_src/* PubSubService */.
|
|
1284
|
+
class RoiAnnotation extends core_src/* PubSubService */.hC {
|
|
619
1285
|
constructor(roiGraphic, studyInstanceUID, seriesInstanceUID, label = '', viewState = null) {
|
|
620
1286
|
super(RoiAnnotation_EVENTS);
|
|
621
1287
|
this.uid = roiGraphic.uid;
|
|
@@ -786,7 +1452,7 @@ const MicroscopyService_EVENTS = {
|
|
|
786
1452
|
* viewers and handle their ROI graphics to create, remove and modify the
|
|
787
1453
|
* ROI annotations relevant to the application
|
|
788
1454
|
*/
|
|
789
|
-
class MicroscopyService extends core_src/* PubSubService */.
|
|
1455
|
+
class MicroscopyService extends core_src/* PubSubService */.hC {
|
|
790
1456
|
constructor(servicesManager) {
|
|
791
1457
|
super(MicroscopyService_EVENTS);
|
|
792
1458
|
this.servicesManager = void 0;
|
|
@@ -1373,7 +2039,7 @@ MicroscopyService.REGISTRATION = servicesManager => {
|
|
|
1373
2039
|
};
|
|
1374
2040
|
|
|
1375
2041
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
1376
|
-
var dcmjs_es = __webpack_require__(
|
|
2042
|
+
var dcmjs_es = __webpack_require__(67540);
|
|
1377
2043
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/callInputDialog.tsx
|
|
1378
2044
|
|
|
1379
2045
|
|
|
@@ -1416,7 +2082,7 @@ function callInputDialog({
|
|
|
1416
2082
|
centralize: true,
|
|
1417
2083
|
isDraggable: false,
|
|
1418
2084
|
showOverlay: true,
|
|
1419
|
-
content: src/* Dialog */.
|
|
2085
|
+
content: src/* Dialog */.Vq,
|
|
1420
2086
|
contentProps: {
|
|
1421
2087
|
title: title,
|
|
1422
2088
|
value: {
|
|
@@ -1429,18 +2095,18 @@ function callInputDialog({
|
|
|
1429
2095
|
actions: [{
|
|
1430
2096
|
id: 'cancel',
|
|
1431
2097
|
text: 'Cancel',
|
|
1432
|
-
type: src/* ButtonEnums.type */.
|
|
2098
|
+
type: src/* ButtonEnums.type */.LZ.dt.secondary
|
|
1433
2099
|
}, {
|
|
1434
2100
|
id: 'save',
|
|
1435
2101
|
text: 'Save',
|
|
1436
|
-
type: src/* ButtonEnums.type */.
|
|
2102
|
+
type: src/* ButtonEnums.type */.LZ.dt.primary
|
|
1437
2103
|
}],
|
|
1438
2104
|
onSubmit: onSubmitHandler,
|
|
1439
2105
|
body: ({
|
|
1440
2106
|
value,
|
|
1441
2107
|
setValue
|
|
1442
2108
|
}) => {
|
|
1443
|
-
return /*#__PURE__*/react.createElement(src/* Input */.
|
|
2109
|
+
return /*#__PURE__*/react.createElement(src/* Input */.II, {
|
|
1444
2110
|
label: "Enter your annotation",
|
|
1445
2111
|
labelClassName: "text-white text-[14px] leading-[1.2]",
|
|
1446
2112
|
autoFocus: true,
|
|
@@ -1503,34 +2169,34 @@ function constructSR(metadata, {
|
|
|
1503
2169
|
} = metadata;
|
|
1504
2170
|
|
|
1505
2171
|
// construct Comprehensive3DSR dataset
|
|
1506
|
-
const observationContext = new dcmjs_es
|
|
1507
|
-
observerPersonContext: new dcmjs_es
|
|
1508
|
-
observerType: new dcmjs_es
|
|
2172
|
+
const observationContext = new dcmjs_es["default"].sr.templates.ObservationContext({
|
|
2173
|
+
observerPersonContext: new dcmjs_es["default"].sr.templates.ObserverContext({
|
|
2174
|
+
observerType: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1509
2175
|
value: '121006',
|
|
1510
2176
|
schemeDesignator: 'DCM',
|
|
1511
2177
|
meaning: 'Person'
|
|
1512
2178
|
}),
|
|
1513
|
-
observerIdentifyingAttributes: new dcmjs_es
|
|
2179
|
+
observerIdentifyingAttributes: new dcmjs_es["default"].sr.templates.PersonObserverIdentifyingAttributes({
|
|
1514
2180
|
name: '@ohif/extension-dicom-microscopy'
|
|
1515
2181
|
})
|
|
1516
2182
|
}),
|
|
1517
|
-
observerDeviceContext: new dcmjs_es
|
|
1518
|
-
observerType: new dcmjs_es
|
|
2183
|
+
observerDeviceContext: new dcmjs_es["default"].sr.templates.ObserverContext({
|
|
2184
|
+
observerType: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1519
2185
|
value: '121007',
|
|
1520
2186
|
schemeDesignator: 'DCM',
|
|
1521
2187
|
meaning: 'Device'
|
|
1522
2188
|
}),
|
|
1523
|
-
observerIdentifyingAttributes: new dcmjs_es
|
|
2189
|
+
observerIdentifyingAttributes: new dcmjs_es["default"].sr.templates.DeviceObserverIdentifyingAttributes({
|
|
1524
2190
|
uid: DEVICE_OBSERVER_UID
|
|
1525
2191
|
})
|
|
1526
2192
|
}),
|
|
1527
|
-
subjectContext: new dcmjs_es
|
|
1528
|
-
subjectClass: new dcmjs_es
|
|
2193
|
+
subjectContext: new dcmjs_es["default"].sr.templates.SubjectContext({
|
|
2194
|
+
subjectClass: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1529
2195
|
value: '121027',
|
|
1530
2196
|
schemeDesignator: 'DCM',
|
|
1531
2197
|
meaning: 'Specimen'
|
|
1532
2198
|
}),
|
|
1533
|
-
subjectClassSpecificContext: new dcmjs_es
|
|
2199
|
+
subjectClassSpecificContext: new dcmjs_es["default"].sr.templates.SubjectContextSpecimen({
|
|
1534
2200
|
uid: SpecimenDescriptionSequence.SpecimenUID,
|
|
1535
2201
|
identifier: SpecimenDescriptionSequence.SpecimenIdentifier || metadata.SeriesInstanceUID,
|
|
1536
2202
|
containerIdentifier: metadata.ContainerIdentifier || metadata.SeriesInstanceUID
|
|
@@ -1562,14 +2228,14 @@ function constructSR(metadata, {
|
|
|
1562
2228
|
const ConceptName = Array.isArray(measurement.ConceptNameCodeSequence) ? measurement.ConceptNameCodeSequence[0] : measurement.ConceptNameCodeSequence;
|
|
1563
2229
|
const MeasuredValue = Array.isArray(measurement.MeasuredValueSequence) ? measurement.MeasuredValueSequence[0] : measurement.MeasuredValueSequence;
|
|
1564
2230
|
const MeasuredValueUnits = Array.isArray(MeasuredValue.MeasurementUnitsCodeSequence) ? MeasuredValue.MeasurementUnitsCodeSequence[0] : MeasuredValue.MeasurementUnitsCodeSequence;
|
|
1565
|
-
return new dcmjs_es
|
|
1566
|
-
name: new dcmjs_es
|
|
2231
|
+
return new dcmjs_es["default"].sr.valueTypes.NumContentItem({
|
|
2232
|
+
name: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1567
2233
|
meaning: ConceptName.CodeMeaning,
|
|
1568
2234
|
value: ConceptName.CodeValue,
|
|
1569
2235
|
schemeDesignator: ConceptName.CodingSchemeDesignator
|
|
1570
2236
|
}),
|
|
1571
2237
|
value: MeasuredValue.NumericValue,
|
|
1572
|
-
unit: new dcmjs_es
|
|
2238
|
+
unit: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1573
2239
|
value: MeasuredValueUnits.CodeValue,
|
|
1574
2240
|
meaning: MeasuredValueUnits.CodeMeaning,
|
|
1575
2241
|
schemeDesignator: MeasuredValueUnits.CodingSchemeDesignator
|
|
@@ -1580,8 +2246,8 @@ function constructSR(metadata, {
|
|
|
1580
2246
|
/** Avoid incompatibility with dcmjs */
|
|
1581
2247
|
evaluations = evaluations.map(evaluation => {
|
|
1582
2248
|
const ConceptName = Array.isArray(evaluation.ConceptNameCodeSequence) ? evaluation.ConceptNameCodeSequence[0] : evaluation.ConceptNameCodeSequence;
|
|
1583
|
-
return new dcmjs_es
|
|
1584
|
-
name: new dcmjs_es
|
|
2249
|
+
return new dcmjs_es["default"].sr.valueTypes.TextContentItem({
|
|
2250
|
+
name: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1585
2251
|
value: ConceptName.CodeValue,
|
|
1586
2252
|
meaning: ConceptName.CodeMeaning,
|
|
1587
2253
|
schemeDesignator: ConceptName.CodingSchemeDesignator
|
|
@@ -1591,17 +2257,17 @@ function constructSR(metadata, {
|
|
|
1591
2257
|
});
|
|
1592
2258
|
});
|
|
1593
2259
|
const identifier = `ROI #${i + 1}`;
|
|
1594
|
-
const group = new dcmjs_es
|
|
1595
|
-
trackingIdentifier: new dcmjs_es
|
|
2260
|
+
const group = new dcmjs_es["default"].sr.templates.PlanarROIMeasurementsAndQualitativeEvaluations({
|
|
2261
|
+
trackingIdentifier: new dcmjs_es["default"].sr.templates.TrackingIdentifier({
|
|
1596
2262
|
uid: roi.uid,
|
|
1597
2263
|
identifier: presentationState ? identifier.concat(`(${JSON.stringify(presentationState)})`) : identifier
|
|
1598
2264
|
}),
|
|
1599
|
-
referencedRegion: new dcmjs_es
|
|
2265
|
+
referencedRegion: new dcmjs_es["default"].sr.contentItems.ImageRegion3D({
|
|
1600
2266
|
graphicType: roi.scoord3d.graphicType,
|
|
1601
2267
|
graphicData: roi.scoord3d.graphicData,
|
|
1602
2268
|
frameOfReferenceUID: roi.scoord3d.frameOfReferenceUID
|
|
1603
2269
|
}),
|
|
1604
|
-
findingType: new dcmjs_es
|
|
2270
|
+
findingType: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1605
2271
|
value: label,
|
|
1606
2272
|
schemeDesignator: '@ohif/extension-dicom-microscopy',
|
|
1607
2273
|
meaning: 'FREETEXT'
|
|
@@ -1612,23 +2278,23 @@ function constructSR(metadata, {
|
|
|
1612
2278
|
});
|
|
1613
2279
|
imagingMeasurements.push(...group);
|
|
1614
2280
|
}
|
|
1615
|
-
const measurementReport = new dcmjs_es
|
|
1616
|
-
languageOfContentItemAndDescendants: new dcmjs_es
|
|
2281
|
+
const measurementReport = new dcmjs_es["default"].sr.templates.MeasurementReport({
|
|
2282
|
+
languageOfContentItemAndDescendants: new dcmjs_es["default"].sr.templates.LanguageOfContentItemAndDescendants({}),
|
|
1617
2283
|
observationContext,
|
|
1618
|
-
procedureReported: new dcmjs_es
|
|
2284
|
+
procedureReported: new dcmjs_es["default"].sr.coding.CodedConcept({
|
|
1619
2285
|
value: '112703',
|
|
1620
2286
|
schemeDesignator: 'DCM',
|
|
1621
2287
|
meaning: 'Whole Slide Imaging'
|
|
1622
2288
|
}),
|
|
1623
2289
|
imagingMeasurements
|
|
1624
2290
|
});
|
|
1625
|
-
const dataset = new dcmjs_es
|
|
2291
|
+
const dataset = new dcmjs_es["default"].sr.documents.Comprehensive3DSR({
|
|
1626
2292
|
content: measurementReport[0],
|
|
1627
2293
|
evidence: [metadata],
|
|
1628
|
-
seriesInstanceUID: dcmjs_es
|
|
2294
|
+
seriesInstanceUID: dcmjs_es["default"].data.DicomMetaDictionary.uid(),
|
|
1629
2295
|
seriesNumber: SeriesNumber,
|
|
1630
2296
|
seriesDescription: SeriesDescription || 'Whole slide imaging structured report',
|
|
1631
|
-
sopInstanceUID: dcmjs_es
|
|
2297
|
+
sopInstanceUID: dcmjs_es["default"].data.DicomMetaDictionary.uid(),
|
|
1632
2298
|
instanceNumber: 1,
|
|
1633
2299
|
manufacturer: 'dcmjs-org'
|
|
1634
2300
|
});
|
|
@@ -1648,7 +2314,7 @@ function constructSR(metadata, {
|
|
|
1648
2314
|
vr: 'UI'
|
|
1649
2315
|
},
|
|
1650
2316
|
ImplementationClassUID: {
|
|
1651
|
-
Value: [dcmjs_es
|
|
2317
|
+
Value: [dcmjs_es["default"].data.DicomMetaDictionary.uid()],
|
|
1652
2318
|
vr: 'UI'
|
|
1653
2319
|
},
|
|
1654
2320
|
ImplementationVersionName: {
|
|
@@ -1686,7 +2352,7 @@ function saveByteArray(buffer, filename) {
|
|
|
1686
2352
|
let saving = false;
|
|
1687
2353
|
const {
|
|
1688
2354
|
datasetToBuffer
|
|
1689
|
-
} = dcmjs_es
|
|
2355
|
+
} = dcmjs_es["default"].data;
|
|
1690
2356
|
const formatArea = area => {
|
|
1691
2357
|
let mult = 1;
|
|
1692
2358
|
let unit = 'mm';
|
|
@@ -1995,7 +2661,7 @@ function MicroscopyPanel(props) {
|
|
|
1995
2661
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
1996
2662
|
className: "ohif-scrollbar overflow-y-auto overflow-x-hidden",
|
|
1997
2663
|
"data-cy": 'measurements-panel'
|
|
1998
|
-
}, /*#__PURE__*/react.createElement(src/* MeasurementTable */.
|
|
2664
|
+
}, /*#__PURE__*/react.createElement(src/* MeasurementTable */.wt, {
|
|
1999
2665
|
title: "Measurements",
|
|
2000
2666
|
servicesManager: props.servicesManager,
|
|
2001
2667
|
data: data,
|
|
@@ -2004,7 +2670,7 @@ function MicroscopyPanel(props) {
|
|
|
2004
2670
|
onDelete: onMeasurementDeleteHandler
|
|
2005
2671
|
})));
|
|
2006
2672
|
}
|
|
2007
|
-
const connectedMicroscopyPanel = (0,es/* withTranslation */.
|
|
2673
|
+
const connectedMicroscopyPanel = (0,es/* withTranslation */.Zh)(['MicroscopyTable', 'Common'])(MicroscopyPanel);
|
|
2008
2674
|
/* harmony default export */ const MicroscopyPanel_MicroscopyPanel = (connectedMicroscopyPanel);
|
|
2009
2675
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/getPanelModule.tsx
|
|
2010
2676
|
|
|
@@ -2025,7 +2691,7 @@ function getPanelModule({
|
|
|
2025
2691
|
const [{
|
|
2026
2692
|
activeViewportId,
|
|
2027
2693
|
viewports
|
|
2028
|
-
}] = (0,src/* useViewportGrid */.
|
|
2694
|
+
}] = (0,src/* useViewportGrid */.O_)();
|
|
2029
2695
|
return /*#__PURE__*/react.createElement(MicroscopyPanel_MicroscopyPanel, {
|
|
2030
2696
|
viewports: viewports,
|
|
2031
2697
|
activeViewportId: activeViewportId,
|
|
@@ -2182,7 +2848,7 @@ function getCommandsModule({
|
|
|
2182
2848
|
|
|
2183
2849
|
const {
|
|
2184
2850
|
utils
|
|
2185
|
-
} = core_src
|
|
2851
|
+
} = core_src["default"];
|
|
2186
2852
|
const SOP_CLASS_UIDS = {
|
|
2187
2853
|
VL_WHOLE_SLIDE_MICROSCOPY_IMAGE_STORAGE: '1.2.840.10008.5.1.4.1.1.77.1.6'
|
|
2188
2854
|
};
|
|
@@ -2305,11 +2971,14 @@ const DCM_CODE_VALUES = {
|
|
|
2305
2971
|
function toArray(item) {
|
|
2306
2972
|
return Array.isArray(item) ? item : [item];
|
|
2307
2973
|
}
|
|
2308
|
-
|
|
2974
|
+
// EXTERNAL MODULE: ../../../extensions/dicom-microscopy/src/DicomMicroscopyViewport.tsx + 7 modules
|
|
2975
|
+
var DicomMicroscopyViewport = __webpack_require__(3094);
|
|
2976
|
+
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/loadSR.ts
|
|
2977
|
+
|
|
2309
2978
|
|
|
2310
2979
|
|
|
2311
2980
|
|
|
2312
|
-
const MeasurementReport = dcmjs_es
|
|
2981
|
+
const MeasurementReport = dcmjs_es["default"].adapters.DICOMMicroscopyViewer.MeasurementReport;
|
|
2313
2982
|
|
|
2314
2983
|
// Define as async so that it returns a promise, expected by the ViewportGrid
|
|
2315
2984
|
async function loadSR(microscopyService, microscopySRDisplaySet, referencedDisplaySet) {
|
|
@@ -2346,7 +3015,9 @@ async function loadSR(microscopyService, microscopySRDisplaySet, referencedDispl
|
|
|
2346
3015
|
async function _getROIsFromToolState(naturalizedDataset, FrameOfReferenceUID) {
|
|
2347
3016
|
const toolState = MeasurementReport.generateToolState(naturalizedDataset);
|
|
2348
3017
|
const tools = Object.getOwnPropertyNames(toolState);
|
|
2349
|
-
|
|
3018
|
+
// Does a dynamic import to prevent webpack from rebuilding the library
|
|
3019
|
+
await import( /* webpackIgnore: true */DicomMicroscopyViewport["default"].getImportPath());
|
|
3020
|
+
const DICOMMicroscopyViewer = window.dicomMicroscopyViewer;
|
|
2350
3021
|
const measurementGroupContentItems = _getMeasurementGroups(naturalizedDataset);
|
|
2351
3022
|
const rois = [];
|
|
2352
3023
|
const labels = [];
|
|
@@ -2480,7 +3151,7 @@ function getSourceDisplaySet(allDisplaySets, microscopySRDisplaySet) {
|
|
|
2480
3151
|
|
|
2481
3152
|
const {
|
|
2482
3153
|
utils: DicomMicroscopySRSopClassHandler_utils
|
|
2483
|
-
} = core_src
|
|
3154
|
+
} = core_src["default"];
|
|
2484
3155
|
const DicomMicroscopySRSopClassHandler_SOP_CLASS_UIDS = {
|
|
2485
3156
|
COMPREHENSIVE_3D_SR: '1.2.840.10008.5.1.4.1.1.88.34'
|
|
2486
3157
|
};
|
|
@@ -2575,12 +3246,12 @@ function getDicomMicroscopySRSopClassHandler({
|
|
|
2575
3246
|
};
|
|
2576
3247
|
}
|
|
2577
3248
|
// EXTERNAL MODULE: ../../../node_modules/react-resize-detector/build/index.esm.js
|
|
2578
|
-
var index_esm = __webpack_require__(
|
|
3249
|
+
var index_esm = __webpack_require__(7023);
|
|
2579
3250
|
// EXTERNAL MODULE: ../../../node_modules/lodash.debounce/index.js
|
|
2580
|
-
var lodash_debounce = __webpack_require__(
|
|
3251
|
+
var lodash_debounce = __webpack_require__(8324);
|
|
2581
3252
|
var lodash_debounce_default = /*#__PURE__*/__webpack_require__.n(lodash_debounce);
|
|
2582
3253
|
;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/index.tsx
|
|
2583
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (
|
|
3254
|
+
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); }
|
|
2584
3255
|
|
|
2585
3256
|
|
|
2586
3257
|
|
|
@@ -2592,7 +3263,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
2592
3263
|
|
|
2593
3264
|
|
|
2594
3265
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
2595
|
-
return Promise.
|
|
3266
|
+
return Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 3094));
|
|
2596
3267
|
});
|
|
2597
3268
|
const MicroscopyViewport = props => {
|
|
2598
3269
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
@@ -2640,7 +3311,7 @@ const extension = {
|
|
|
2640
3311
|
const {
|
|
2641
3312
|
viewportOptions
|
|
2642
3313
|
} = props;
|
|
2643
|
-
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.
|
|
3314
|
+
const [viewportGrid, viewportGridService] = (0,src/* useViewportGrid */.O_)();
|
|
2644
3315
|
const {
|
|
2645
3316
|
activeViewportId
|
|
2646
3317
|
} = viewportGrid;
|
|
@@ -2658,7 +3329,7 @@ const extension = {
|
|
|
2658
3329
|
}, 100);
|
|
2659
3330
|
const {
|
|
2660
3331
|
ref: resizeRef
|
|
2661
|
-
} = (0,index_esm/* useResizeDetector */.
|
|
3332
|
+
} = (0,index_esm/* useResizeDetector */.N)({
|
|
2662
3333
|
onResize,
|
|
2663
3334
|
handleHeight: true,
|
|
2664
3335
|
handleWidth: true
|