@ohif/app 3.7.0-beta.42 → 3.7.0-beta.44
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/{204.bundle.2ca243271f4e2e584757.js → 150.bundle.7be19d85d4a4427162b9.js} +71 -93
- package/dist/{181.bundle.3c90dbb782b783e30fd8.js → 181.bundle.f4289d6b1c5d35831e37.js} +4 -31
- package/dist/{195.bundle.b56618d38bc184f8ef78.js → 202.bundle.ac1e5e25d4daf54581b1.js} +3697 -972
- package/dist/{236.bundle.a2c84f9a7c7c704ca47b.js → 236.bundle.b8ef36ef4c5e4e5c3d2b.js} +1 -1
- package/dist/{506.bundle.508c7a7018c0600c6683.js → 506.bundle.65256204be221475de80.js} +4 -2
- package/dist/{663.bundle.24e14d035c31bc67a1af.js → 663.bundle.5188b8ef1cd9a46373d9.js} +4 -4
- package/dist/{678.bundle.efd4a623a9d1bf0aa918.js → 678.bundle.5289463d7f419d56f8f1.js} +72 -104
- package/dist/{754.bundle.36f6f0f1c2cad1ffeadc.js → 754.bundle.8a16fc8ad21fe00c2e15.js} +11928 -7138
- package/dist/{774.bundle.e2cf44623c1268d8433d.js → 774.bundle.8ba82ee206266eb2da5e.js} +55 -33
- package/dist/{810.bundle.b3e2cf57e00d35a12f30.js → 810.bundle.b8f43b6b094a0720e994.js} +30 -7
- package/dist/{821.bundle.544ef0da9b9ec7c869fa.js → 821.bundle.fcfa6ec47f096018c0e9.js} +2 -2
- package/dist/{869.bundle.51e2fc87fab5cb911ec1.js → 869.bundle.6375669c18e0907b248d.js} +33 -11
- package/dist/{925.bundle.150debc1fe2cafa1e036.js → 925.bundle.a2f1103d968c53a2b8fb.js} +26 -20
- package/dist/{app.bundle.3dbe3a748e06d0a8d9fc.js → app.bundle.9c84ff949c1d4b8f555f.js} +46 -22
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/index.html +1 -1
- package/dist/{index.worker.17eee78bdafa44cbb47d.worker.js → index.worker.e62ecca63f1a2e124230.worker.js} +2 -2
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +1 -0
- package/dist/sw.js +1 -1
- package/package.json +19 -20
- package/dist/899.bundle.dc9c8c0729bf29173303.js +0 -4769
- package/dist/index.worker.17eee78bdafa44cbb47d.worker.js.map +0 -1
- /package/dist/{12.bundle.2c6b0156319ff8d39285.js → 12.bundle.e8a38369f1a90100362f.js} +0 -0
- /package/dist/{128.bundle.ede0e35b2fc74164f0b0.js → 128.bundle.c4be183e141214e291da.js} +0 -0
- /package/dist/{281.bundle.399fb8e0048492f2f14d.js → 281.bundle.d394ad2bcce3cf7b325f.js} +0 -0
- /package/dist/{30.bundle.2991067a1b7d252441ce.js → 30.bundle.21b1175bc35138643825.js} +0 -0
- /package/dist/{348.bundle.226b1d5d97c0ea05a302.js → 348.bundle.fdc18553ec7c1b4f6a80.js} +0 -0
- /package/dist/{359.bundle.e4810515717797e10a0d.js → 359.bundle.f3867a42352f85e846bb.js} +0 -0
- /package/dist/{378.bundle.3ddca21119a8f6a02e90.js → 378.bundle.b7a073e9ed3fce6e27a5.js} +0 -0
- /package/dist/{410.bundle.4794b1ed5caa5c44d8ab.js → 410.bundle.8ae97aeddb3375a6d6c6.js} +0 -0
- /package/dist/{782.bundle.c113ddc2ec70ec2ccbea.js → 782.bundle.0b55dd2b0e7c80102eec.js} +0 -0
- /package/dist/{814.bundle.ce16dd6b97d682341a9e.js → 814.bundle.9f6f3b71096482162688.js} +0 -0
- /package/dist/{822.bundle.83c544a4283056f1331d.js → 822.bundle.34b66f1c1b27e7884df7.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(self["webpackChunk"] = self["webpackChunk"] || []).push([[
|
|
1
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[150],{
|
|
2
2
|
|
|
3
|
-
/***/
|
|
3
|
+
/***/ 48228:
|
|
4
4
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
@@ -22,21 +22,33 @@ const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
|
|
|
22
22
|
|
|
23
23
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
24
24
|
var react = __webpack_require__(43001);
|
|
25
|
-
// EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/Core/Math.js
|
|
26
|
-
var Core_Math = __webpack_require__(32899);
|
|
27
25
|
// EXTERNAL MODULE: ../../core/src/index.ts + 103 modules
|
|
28
26
|
var src = __webpack_require__(20599);
|
|
27
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 337 modules
|
|
28
|
+
var esm = __webpack_require__(45754);
|
|
29
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
|
|
30
|
+
var adapters_es = __webpack_require__(91202);
|
|
29
31
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
30
32
|
var dcmjs_es = __webpack_require__(67540);
|
|
33
|
+
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/dicomlabToRGB.ts
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Converts a CIELAB color to an RGB color using the dcmjs library.
|
|
38
|
+
* @param cielab - The CIELAB color to convert.
|
|
39
|
+
* @returns The RGB color as an array of three integers between 0 and 255.
|
|
40
|
+
*/
|
|
41
|
+
function dicomlabToRGB(cielab) {
|
|
42
|
+
const rgb = dcmjs_es["default"].data.Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));
|
|
43
|
+
return rgb;
|
|
44
|
+
}
|
|
45
|
+
|
|
31
46
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/getSopClassHandlerModule.js
|
|
32
47
|
|
|
33
48
|
|
|
34
49
|
|
|
35
50
|
|
|
36
|
-
|
|
37
|
-
DicomMessage,
|
|
38
|
-
DicomMetaDictionary
|
|
39
|
-
} = dcmjs_es["default"].data;
|
|
51
|
+
|
|
40
52
|
const sopClassUids = ['1.2.840.10008.5.1.4.1.1.66.4'];
|
|
41
53
|
let loadPromises = {};
|
|
42
54
|
function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) {
|
|
@@ -130,8 +142,12 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) {
|
|
|
130
142
|
// and also return the same promise to any other callers.
|
|
131
143
|
loadPromises[SOPInstanceUID] = new Promise(async (resolve, reject) => {
|
|
132
144
|
if (!segDisplaySet.segments || Object.keys(segDisplaySet.segments).length === 0) {
|
|
133
|
-
|
|
134
|
-
|
|
145
|
+
await _loadSegments({
|
|
146
|
+
extensionManager,
|
|
147
|
+
servicesManager,
|
|
148
|
+
segDisplaySet,
|
|
149
|
+
headers
|
|
150
|
+
});
|
|
135
151
|
}
|
|
136
152
|
const suppressEvents = true;
|
|
137
153
|
segmentationService.createSegmentationForSEGDisplaySet(segDisplaySet, null, suppressEvents).then(() => {
|
|
@@ -144,101 +160,62 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) {
|
|
|
144
160
|
});
|
|
145
161
|
return loadPromises[SOPInstanceUID];
|
|
146
162
|
}
|
|
147
|
-
async function _loadSegments(
|
|
163
|
+
async function _loadSegments(_ref2) {
|
|
164
|
+
let {
|
|
165
|
+
extensionManager,
|
|
166
|
+
servicesManager,
|
|
167
|
+
segDisplaySet,
|
|
168
|
+
headers
|
|
169
|
+
} = _ref2;
|
|
148
170
|
const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.common');
|
|
171
|
+
const {
|
|
172
|
+
segmentationService
|
|
173
|
+
} = servicesManager.services;
|
|
149
174
|
const {
|
|
150
175
|
dicomLoaderService
|
|
151
176
|
} = utilityModule.exports;
|
|
152
|
-
const
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (!Array.isArray(dataset.SegmentSequence)) {
|
|
157
|
-
dataset.SegmentSequence = [dataset.SegmentSequence];
|
|
177
|
+
const arrayBuffer = await dicomLoaderService.findDicomDataPromise(segDisplaySet, null, headers);
|
|
178
|
+
const cachedReferencedVolume = esm.cache.getVolume(segDisplaySet.referencedVolumeId);
|
|
179
|
+
if (!cachedReferencedVolume) {
|
|
180
|
+
throw new Error('Referenced Volume is missing for the SEG, and stack viewport SEG is not supported yet');
|
|
158
181
|
}
|
|
159
|
-
const
|
|
160
|
-
|
|
182
|
+
const {
|
|
183
|
+
imageIds
|
|
184
|
+
} = cachedReferencedVolume;
|
|
185
|
+
|
|
186
|
+
// Todo: what should be defaults here
|
|
187
|
+
const tolerance = 0.001;
|
|
188
|
+
const skipOverlapping = true;
|
|
189
|
+
esm.eventTarget.addEventListener(adapters_es/* Enums */.Yb.Events.SEGMENTATION_LOAD_PROGRESS, evt => {
|
|
190
|
+
const {
|
|
191
|
+
percentComplete
|
|
192
|
+
} = evt.detail;
|
|
193
|
+
segmentationService._broadcastEvent(segmentationService.EVENTS.SEGMENT_LOADING_COMPLETE, {
|
|
194
|
+
percentComplete
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
const results = await adapters_es/* adaptersSEG */.ok.Cornerstone3D.Segmentation.generateToolState(imageIds, arrayBuffer, esm.metaData, {
|
|
198
|
+
skipOverlapping,
|
|
199
|
+
tolerance,
|
|
200
|
+
eventTarget: esm.eventTarget,
|
|
201
|
+
triggerEvent: esm.triggerEvent
|
|
202
|
+
});
|
|
203
|
+
results.segMetadata.data.forEach((data, i) => {
|
|
204
|
+
if (i > 0) {
|
|
205
|
+
data.rgba = dicomlabToRGB(data.RecommendedDisplayCIELabValue);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
Object.assign(segDisplaySet, results);
|
|
161
209
|
}
|
|
162
210
|
function _segmentationExists(segDisplaySet, segmentationService) {
|
|
163
211
|
// This should be abstracted with the CornerstoneCacheService
|
|
164
212
|
return segmentationService.getSegmentation(segDisplaySet.displaySetInstanceUID);
|
|
165
213
|
}
|
|
166
|
-
function
|
|
167
|
-
let frameSize = Math.ceil(dataset.Rows * dataset.Columns / 8);
|
|
168
|
-
let nextOffset = 0;
|
|
169
|
-
Object.keys(segments).forEach(segmentKey => {
|
|
170
|
-
const segment = segments[segmentKey];
|
|
171
|
-
segment.numberOfFrames = segment.functionalGroups.length;
|
|
172
|
-
segment.size = segment.numberOfFrames * frameSize;
|
|
173
|
-
segment.offset = nextOffset;
|
|
174
|
-
nextOffset = segment.offset + segment.size;
|
|
175
|
-
const packedSegment = dataset.PixelData[0].slice(segment.offset, nextOffset);
|
|
176
|
-
segment.pixelData = dcmjs_es["default"].data.BitArray.unpack(packedSegment);
|
|
177
|
-
segment.geometry = geometryFromFunctionalGroups(dataset, segment.functionalGroups);
|
|
178
|
-
});
|
|
179
|
-
return segments;
|
|
180
|
-
}
|
|
181
|
-
function geometryFromFunctionalGroups(dataset, perFrame) {
|
|
182
|
-
let pixelMeasures = dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence;
|
|
183
|
-
let planeOrientation = dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence;
|
|
184
|
-
let planePosition = perFrame[0].PlanePositionSequence; // TODO: assume sorted frames!
|
|
185
|
-
|
|
186
|
-
const geometry = {};
|
|
187
|
-
|
|
188
|
-
// NB: DICOM PixelSpacing is defined as Row then Column,
|
|
189
|
-
// unlike ImageOrientationPatient
|
|
190
|
-
let spacingBetweenSlices = pixelMeasures.SpacingBetweenSlices;
|
|
191
|
-
if (!spacingBetweenSlices) {
|
|
192
|
-
if (pixelMeasures.SliceThickness) {
|
|
193
|
-
console.log('Using SliceThickness as SpacingBetweenSlices');
|
|
194
|
-
spacingBetweenSlices = pixelMeasures.SliceThickness;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
geometry.spacing = [pixelMeasures.PixelSpacing[1], pixelMeasures.PixelSpacing[0], spacingBetweenSlices].map(Number);
|
|
198
|
-
geometry.dimensions = [dataset.Columns, dataset.Rows, perFrame.length].map(Number);
|
|
199
|
-
let orientation = planeOrientation.ImageOrientationPatient.map(Number);
|
|
200
|
-
const columnStepToPatient = orientation.slice(0, 3);
|
|
201
|
-
const rowStepToPatient = orientation.slice(3, 6);
|
|
202
|
-
geometry.planeNormal = [];
|
|
203
|
-
Core_Math/* default.cross */.ZP.cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal);
|
|
204
|
-
let firstPosition = perFrame[0].PlanePositionSequence.ImagePositionPatient.map(Number);
|
|
205
|
-
let lastPosition = perFrame[perFrame.length - 1].PlanePositionSequence.ImagePositionPatient.map(Number);
|
|
206
|
-
geometry.sliceStep = [];
|
|
207
|
-
Core_Math/* default.subtract */.ZP.subtract(lastPosition, firstPosition, geometry.sliceStep);
|
|
208
|
-
Core_Math/* default.normalize */.ZP.normalize(geometry.sliceStep);
|
|
209
|
-
geometry.direction = columnStepToPatient.concat(rowStepToPatient).concat(geometry.sliceStep);
|
|
210
|
-
geometry.origin = planePosition.ImagePositionPatient.map(Number);
|
|
211
|
-
return geometry;
|
|
212
|
-
}
|
|
213
|
-
function _getSegments(dataset) {
|
|
214
|
-
const segments = {};
|
|
215
|
-
dataset.SegmentSequence.forEach(segment => {
|
|
216
|
-
const cielab = segment.RecommendedDisplayCIELabValue;
|
|
217
|
-
const rgba = dcmjs_es["default"].data.Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));
|
|
218
|
-
rgba.push(255);
|
|
219
|
-
const segmentNumber = segment.SegmentNumber;
|
|
220
|
-
segments[segmentNumber] = {
|
|
221
|
-
color: rgba,
|
|
222
|
-
functionalGroups: [],
|
|
223
|
-
offset: null,
|
|
224
|
-
size: null,
|
|
225
|
-
pixelData: null,
|
|
226
|
-
label: segment.SegmentLabel
|
|
227
|
-
};
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
// make a list of functional groups per segment
|
|
231
|
-
dataset.PerFrameFunctionalGroupsSequence.forEach(functionalGroup => {
|
|
232
|
-
const segmentNumber = functionalGroup.SegmentIdentificationSequence.ReferencedSegmentNumber;
|
|
233
|
-
segments[segmentNumber].functionalGroups.push(functionalGroup);
|
|
234
|
-
});
|
|
235
|
-
return _getPixelData(dataset, segments);
|
|
236
|
-
}
|
|
237
|
-
function getSopClassHandlerModule(_ref2) {
|
|
214
|
+
function getSopClassHandlerModule(_ref3) {
|
|
238
215
|
let {
|
|
239
216
|
servicesManager,
|
|
240
217
|
extensionManager
|
|
241
|
-
} =
|
|
218
|
+
} = _ref3;
|
|
242
219
|
const getDisplaySetsFromSeries = instances => {
|
|
243
220
|
return _getDisplaySetsFromSeries(instances, servicesManager, extensionManager);
|
|
244
221
|
};
|
|
@@ -654,7 +631,8 @@ const extension = {
|
|
|
654
631
|
const ExtendedOHIFCornerstoneSEGViewport = props => {
|
|
655
632
|
return /*#__PURE__*/react.createElement(OHIFCornerstoneSEGViewport, _extends({
|
|
656
633
|
servicesManager: servicesManager,
|
|
657
|
-
extensionManager: extensionManager
|
|
634
|
+
extensionManager: extensionManager,
|
|
635
|
+
commandsManager: commandsManager
|
|
658
636
|
}, props));
|
|
659
637
|
};
|
|
660
638
|
return [{
|
|
@@ -1132,6 +1132,7 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
|
|
|
1132
1132
|
viewportOptions,
|
|
1133
1133
|
displaySetOptions,
|
|
1134
1134
|
servicesManager,
|
|
1135
|
+
commandsManager,
|
|
1135
1136
|
onElementEnabled,
|
|
1136
1137
|
onElementDisabled,
|
|
1137
1138
|
isJumpToMeasurementDisabled,
|
|
@@ -1168,35 +1169,6 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
|
|
|
1168
1169
|
setImageScrollBarHeight();
|
|
1169
1170
|
}
|
|
1170
1171
|
}, [elementRef]);
|
|
1171
|
-
const storePresentation = () => {
|
|
1172
|
-
const currentPresentation = cornerstoneViewportService.getPresentation(viewportIndex);
|
|
1173
|
-
if (!currentPresentation || !currentPresentation.presentationIds) return;
|
|
1174
|
-
const {
|
|
1175
|
-
lutPresentationStore,
|
|
1176
|
-
positionPresentationStore
|
|
1177
|
-
} = stateSyncService.getState();
|
|
1178
|
-
const {
|
|
1179
|
-
presentationIds
|
|
1180
|
-
} = currentPresentation;
|
|
1181
|
-
const {
|
|
1182
|
-
lutPresentationId,
|
|
1183
|
-
positionPresentationId
|
|
1184
|
-
} = presentationIds || {};
|
|
1185
|
-
const storeState = {};
|
|
1186
|
-
if (lutPresentationId) {
|
|
1187
|
-
storeState.lutPresentationStore = {
|
|
1188
|
-
...lutPresentationStore,
|
|
1189
|
-
[lutPresentationId]: currentPresentation
|
|
1190
|
-
};
|
|
1191
|
-
}
|
|
1192
|
-
if (positionPresentationId) {
|
|
1193
|
-
storeState.positionPresentationStore = {
|
|
1194
|
-
...positionPresentationStore,
|
|
1195
|
-
[positionPresentationId]: currentPresentation
|
|
1196
|
-
};
|
|
1197
|
-
}
|
|
1198
|
-
stateSyncService.store(storeState);
|
|
1199
|
-
};
|
|
1200
1172
|
const cleanUpServices = (0,react.useCallback)(() => {
|
|
1201
1173
|
const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(viewportIndex);
|
|
1202
1174
|
if (!viewportInfo) {
|
|
@@ -1237,7 +1209,9 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
|
|
|
1237
1209
|
dist_esm.eventTarget.addEventListener(dist_esm.Enums.Events.ELEMENT_ENABLED, elementEnabledHandler);
|
|
1238
1210
|
setImageScrollBarHeight();
|
|
1239
1211
|
return () => {
|
|
1240
|
-
storePresentation
|
|
1212
|
+
commandsManager.runCommand('storePresentation', {
|
|
1213
|
+
viewportIndex
|
|
1214
|
+
});
|
|
1241
1215
|
cleanUpServices();
|
|
1242
1216
|
const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex(viewportIndex);
|
|
1243
1217
|
cornerstoneViewportService.disableElement(viewportIndex);
|
|
@@ -1329,7 +1303,6 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
|
|
|
1329
1303
|
unsubscribeFromJumpToMeasurementEvents();
|
|
1330
1304
|
};
|
|
1331
1305
|
}, [displaySets, elementRef, viewportIndex]);
|
|
1332
|
-
console.debug('OHIFCornerstoneViewport rendering');
|
|
1333
1306
|
return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
|
|
1334
1307
|
className: "viewport-wrapper"
|
|
1335
1308
|
}, /*#__PURE__*/react.createElement(index_esm/* default */.ZP, {
|