@ohif/app 3.12.0-beta.104 → 3.12.0-beta.106
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/{1403.bundle.ea5eb28d7e1c937ccbbf.js → 1403.bundle.b45c67c19dabf9c62ead.js} +2 -0
- package/dist/{1608.bundle.a25c80a3971ed6361b51.js → 1608.bundle.0687c661f1c9edfb3b8a.js} +2 -2
- package/dist/{1730.bundle.d1acf1f07ca5b3892f15.js → 1730.bundle.c9e0d9f751d8b24cfbe2.js} +4 -2
- package/dist/{1927.bundle.019331c266d306772371.js → 1927.bundle.3050588e95f43cf57cdd.js} +1 -1
- package/dist/{2701.bundle.e01a06411f68459ac955.js → 2701.bundle.12bd01a80a9f8ea4cd94.js} +2 -2
- package/dist/{2842.bundle.7852a204d3510fca8b27.js → 2842.bundle.72b8e407027b26a34584.js} +68 -101
- package/dist/{1903.bundle.27b8f13121796caad7a2.js → 3081.bundle.71a2f4b2706114346d67.js} +56 -9
- package/dist/{3343.bundle.f8fe9316b0ff68d087f7.js → 3343.bundle.d7578ce8f75d158c0bab.js} +2 -0
- package/dist/{3353.bundle.a0f1654c642395bbbbbc.js → 3353.bundle.7d5f628fe7eb8fe738ce.js} +146 -144
- package/dist/{3461.bundle.93c1d3ecf976a746f785.js → 3461.bundle.84ff305e012481a9ded5.js} +2 -2
- package/dist/{4019.bundle.01f63d5dd5b96ded0c00.js → 4019.bundle.cdb81fb4777792f6175d.js} +132 -10
- package/dist/{4202.bundle.fa6f6adfd3d08a1cdcd7.js → 4202.bundle.5a0f8e4004c5d8a68548.js} +1 -1
- package/dist/{4775.bundle.f463033dbb9c8da57d52.js → 4775.bundle.cc7c126b04c9c6214d9f.js} +2 -0
- package/dist/{4819.bundle.58e054b5b00d756e2d14.js → 4819.bundle.ce13d222206c192b78f8.js} +2 -2
- package/dist/{5028.bundle.862ac206a79ac2818f64.js → 5028.bundle.d011dac918b575c5472a.js} +2 -2
- package/dist/{5400.bundle.de97508611da1c00d58a.js → 5400.bundle.be4bdac337da734fdcd3.js} +1 -0
- package/dist/{5448.bundle.9a36e001169ea3bfeb6c.js → 5448.bundle.2a82fcfac24d62355154.js} +22 -6
- package/dist/{5462.bundle.a81a691eeef782ab95b9.js → 5462.bundle.21beddaca145b7465c72.js} +2 -0
- package/dist/{5549.bundle.d5def6a3124a3a481b7c.js → 5549.bundle.4d086f8682a317140e65.js} +159 -155
- package/dist/{6163.bundle.f327d1e8aea322893404.js → 6163.bundle.e0d7dbf2a795589d1ba0.js} +4 -2
- package/dist/{7412.bundle.aec4834a71fc27c4ce06.js → 7412.bundle.7b062eda3b01de135817.js} +119 -151
- package/dist/{7639.bundle.6444531fac0b110595e5.js → 7639.bundle.096a5aaabaff706ab769.js} +9 -5
- package/dist/{8305.bundle.b1fb25aa020e0d0faec8.js → 8305.bundle.b4a98270e518f46feaa0.js} +2 -2
- package/dist/{8558.bundle.6b45234a8d6365bff3b9.js → 8558.bundle.0fd075bf5ebda9511e73.js} +3 -1
- package/dist/{8583.bundle.246b35769cd393843c6e.js → 8583.bundle.7534fbaf03a232fd85c5.js} +2 -2
- package/dist/{9195.bundle.5f9be23bc1e8857cc478.js → 9195.bundle.6663852fdc83058f3686.js} +2 -2
- package/dist/{9845.bundle.155759f5e8d8070ee16f.js → 9845.bundle.255e7c7f7a88193b4e47.js} +2 -2
- package/dist/{9862.bundle.bb6b5cab9e8eda1cc675.js → 9862.bundle.2992313d0e19d394e6a5.js} +1 -1
- package/dist/app.bundle.css +1 -1
- package/dist/{app.bundle.41cd81f26da8a340185f.js → app.bundle.faddb2bd6978a85105c6.js} +75 -24
- package/dist/{compute.bundle.fdee4a0f193ee2e1b6da.js → compute.bundle.6f1bd84d7c7116ff82a4.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/{polySeg.bundle.11f9746cd60c9811a412.js → polySeg.bundle.d4bcf15986821b88dec9.js} +1 -1
- package/dist/sw.js +1 -1
- package/package.json +21 -21
- /package/dist/{1459.bundle.5dc3647b918b624cead1.js → 1459.bundle.93b2412d40d25b566a2c.js} +0 -0
- /package/dist/{1933.bundle.d9f39020c89b72d593cc.js → 1933.bundle.a5eb66b39be97a7c6e1e.js} +0 -0
- /package/dist/{2018.bundle.3790d08e5f93c334eb29.js → 2018.bundle.17a0d310b03d6dbab3e4.js} +0 -0
- /package/dist/{213.bundle.4cdd711da5e5f19a6c76.js → 213.bundle.8e5031f961dbbf058e5d.js} +0 -0
- /package/dist/{2424.bundle.9bb3300eaecd20077a37.js → 2424.bundle.55a38e540e3ac2db94d5.js} +0 -0
- /package/dist/{5457.bundle.105e15da7973e5b61959.js → 5457.bundle.5357429ada1334292c6a.js} +0 -0
- /package/dist/{5485.bundle.07103c4b490382c0ee77.js → 5485.bundle.52d28268e556576dd215.js} +0 -0
- /package/dist/{5858.bundle.d5f4bf849aaeebf5025c.js → 5858.bundle.ff6b340cf7457db76a1a.js} +0 -0
- /package/dist/{6027.bundle.83186e7c3d210cd30320.js → 6027.bundle.4cb3d089c1bec23076d7.js} +0 -0
- /package/dist/{85.bundle.3cb557e3015e5c652610.js → 85.bundle.9855c5d5c7602012d954.js} +0 -0
- /package/dist/{9927.bundle.ca2f72f62468744559e4.js → 9927.bundle.d89e796c1107971d4277.js} +0 -0
|
@@ -109,6 +109,8 @@ var SegmentationRepresentations;
|
|
|
109
109
|
/* harmony export */ });
|
|
110
110
|
var StrategyCallbacks;
|
|
111
111
|
(function (StrategyCallbacks) {
|
|
112
|
+
StrategyCallbacks["CalculateCursorGeometry"] = "calculateCursorGeometry";
|
|
113
|
+
StrategyCallbacks["RenderCursor"] = "renderCursor";
|
|
112
114
|
StrategyCallbacks["OnInteractionStart"] = "onInteractionStart";
|
|
113
115
|
StrategyCallbacks["OnInteractionEnd"] = "onInteractionEnd";
|
|
114
116
|
StrategyCallbacks["Preview"] = "preview";
|
|
@@ -19,8 +19,8 @@ var prop_types = __webpack_require__(97598);
|
|
|
19
19
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
20
20
|
// EXTERNAL MODULE: ../../ui-next/src/index.ts + 3075 modules
|
|
21
21
|
var src = __webpack_require__(12517);
|
|
22
|
-
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx +
|
|
23
|
-
var cornerstone_src = __webpack_require__(
|
|
22
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 193 modules
|
|
23
|
+
var cornerstone_src = __webpack_require__(63081);
|
|
24
24
|
;// ../../../extensions/cornerstone-dicom-rt/src/utils/promptHydrateRT.ts
|
|
25
25
|
|
|
26
26
|
function promptHydrateRT({
|
|
@@ -109,6 +109,8 @@ var SegmentationRepresentations;
|
|
|
109
109
|
/* harmony export */ });
|
|
110
110
|
var StrategyCallbacks;
|
|
111
111
|
(function (StrategyCallbacks) {
|
|
112
|
+
StrategyCallbacks["CalculateCursorGeometry"] = "calculateCursorGeometry";
|
|
113
|
+
StrategyCallbacks["RenderCursor"] = "renderCursor";
|
|
112
114
|
StrategyCallbacks["OnInteractionStart"] = "onInteractionStart";
|
|
113
115
|
StrategyCallbacks["OnInteractionEnd"] = "onInteractionEnd";
|
|
114
116
|
StrategyCallbacks["Preview"] = "preview";
|
|
@@ -1413,8 +1415,8 @@ function WorkflowPanel({
|
|
|
1413
1415
|
|
|
1414
1416
|
// EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 139 modules
|
|
1415
1417
|
var default_src = __webpack_require__(39195);
|
|
1416
|
-
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx +
|
|
1417
|
-
var cornerstone_src = __webpack_require__(
|
|
1418
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 193 modules
|
|
1419
|
+
var cornerstone_src = __webpack_require__(63081);
|
|
1418
1420
|
;// ../../../extensions/cornerstone-dynamic-volume/src/panels/DynamicExport.tsx
|
|
1419
1421
|
|
|
1420
1422
|
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
/******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
|
|
171
171
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
172
172
|
/******/ // return url for filenames based on template
|
|
173
|
-
/******/ return "" + chunkId + ".bundle." + {"732":"6978ac30a1e36abf06db","5858":"
|
|
173
|
+
/******/ return "" + chunkId + ".bundle." + {"732":"6978ac30a1e36abf06db","5858":"ff6b340cf7457db76a1a","8094":"5c44190a325ac23e3e5c"}[chunkId] + ".js";
|
|
174
174
|
/******/ };
|
|
175
175
|
/******/ })();
|
|
176
176
|
/******/
|
|
@@ -23,8 +23,8 @@ var src = __webpack_require__(42356);
|
|
|
23
23
|
var dicomSRModule = __webpack_require__(76654);
|
|
24
24
|
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/utils/createReferencedImageDisplaySet.ts
|
|
25
25
|
var createReferencedImageDisplaySet = __webpack_require__(92643);
|
|
26
|
-
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx +
|
|
27
|
-
var cornerstone_src = __webpack_require__(
|
|
26
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 193 modules
|
|
27
|
+
var cornerstone_src = __webpack_require__(63081);
|
|
28
28
|
// EXTERNAL MODULE: ../../ui-next/src/index.ts + 3075 modules
|
|
29
29
|
var ui_next_src = __webpack_require__(12517);
|
|
30
30
|
// EXTERNAL MODULE: ../../core/src/contextProviders/SystemProvider.tsx
|
|
@@ -2057,8 +2057,40 @@ function buildMetadata(image) {
|
|
|
2057
2057
|
|
|
2058
2058
|
|
|
2059
2059
|
|
|
2060
|
+
const DEFAULT_THICKNESS_SINGLE_SLICE = 1;
|
|
2061
|
+
function getPixelSpacingForCubicVoxel(metadata) {
|
|
2062
|
+
if (metadata.columnPixelSpacing !== undefined) {
|
|
2063
|
+
return metadata.columnPixelSpacing;
|
|
2064
|
+
}
|
|
2065
|
+
if (metadata.rowPixelSpacing !== undefined) {
|
|
2066
|
+
return metadata.rowPixelSpacing;
|
|
2067
|
+
}
|
|
2068
|
+
if (metadata.pixelSpacing?.[1] !== undefined) {
|
|
2069
|
+
return metadata.pixelSpacing[1];
|
|
2070
|
+
}
|
|
2071
|
+
if (metadata.pixelSpacing?.[0] !== undefined) {
|
|
2072
|
+
return metadata.pixelSpacing[0];
|
|
2073
|
+
}
|
|
2074
|
+
return undefined;
|
|
2075
|
+
}
|
|
2060
2076
|
function calculateSpacingBetweenImageIds(imageIds) {
|
|
2061
2077
|
const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('imagePlaneModule', imageIds[0]);
|
|
2078
|
+
if (imageIds.length === 1) {
|
|
2079
|
+
const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('imagePlaneModule', imageIds[0]);
|
|
2080
|
+
if (sliceThickness)
|
|
2081
|
+
return sliceThickness;
|
|
2082
|
+
if (spacingBetweenSlices)
|
|
2083
|
+
return spacingBetweenSlices;
|
|
2084
|
+
const pixelSpacingValue = getPixelSpacingForCubicVoxel({
|
|
2085
|
+
columnPixelSpacing,
|
|
2086
|
+
rowPixelSpacing,
|
|
2087
|
+
pixelSpacing,
|
|
2088
|
+
});
|
|
2089
|
+
if (pixelSpacingValue !== undefined) {
|
|
2090
|
+
return pixelSpacingValue;
|
|
2091
|
+
}
|
|
2092
|
+
return DEFAULT_THICKNESS_SINGLE_SLICE;
|
|
2093
|
+
}
|
|
2062
2094
|
const rowCosineVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .eR.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
|
|
2063
2095
|
const colCosineVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .eR.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
|
|
2064
2096
|
const scanAxisNormal = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
|
|
@@ -2093,8 +2125,6 @@ function calculateSpacingBetweenImageIds(imageIds) {
|
|
|
2093
2125
|
imageIds[0],
|
|
2094
2126
|
imageIds[Math.floor(imageIds.length / 2)],
|
|
2095
2127
|
];
|
|
2096
|
-
const firstImageDistance = getDistance(prefetchedImageIds[0]);
|
|
2097
|
-
const middleImageDistance = getDistance(prefetchedImageIds[1]);
|
|
2098
2128
|
const metadataForMiddleImage = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('imagePlaneModule', prefetchedImageIds[1]);
|
|
2099
2129
|
if (!metadataForMiddleImage) {
|
|
2100
2130
|
throw new Error('Incomplete metadata required for volume construction.');
|
|
@@ -2107,7 +2137,7 @@ function calculateSpacingBetweenImageIds(imageIds) {
|
|
|
2107
2137
|
Math.abs(distanceBetweenFirstAndMiddleImages) /
|
|
2108
2138
|
Math.floor(imageIds.length / 2);
|
|
2109
2139
|
}
|
|
2110
|
-
const { sliceThickness, spacingBetweenSlices } = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('imagePlaneModule', imageIds[0]);
|
|
2140
|
+
const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = _metaData__WEBPACK_IMPORTED_MODULE_1__.get('imagePlaneModule', imageIds[0]);
|
|
2111
2141
|
const { strictZSpacingForVolumeViewport } = (0,_init__WEBPACK_IMPORTED_MODULE_2__/* .getConfiguration */ .D0)().rendering;
|
|
2112
2142
|
if ((spacing === 0 || isNaN(spacing)) && !strictZSpacingForVolumeViewport) {
|
|
2113
2143
|
if (spacingBetweenSlices) {
|
|
@@ -2119,8 +2149,18 @@ function calculateSpacingBetweenImageIds(imageIds) {
|
|
|
2119
2149
|
spacing = sliceThickness;
|
|
2120
2150
|
}
|
|
2121
2151
|
else {
|
|
2122
|
-
|
|
2123
|
-
|
|
2152
|
+
const pixelSpacingValue = getPixelSpacingForCubicVoxel({
|
|
2153
|
+
columnPixelSpacing,
|
|
2154
|
+
rowPixelSpacing,
|
|
2155
|
+
pixelSpacing,
|
|
2156
|
+
});
|
|
2157
|
+
if (pixelSpacingValue) {
|
|
2158
|
+
spacing = pixelSpacingValue;
|
|
2159
|
+
}
|
|
2160
|
+
else {
|
|
2161
|
+
console.debug(`Could not calculate spacing and no pixel spacing found. Using default thickness (${DEFAULT_THICKNESS_SINGLE_SLICE} mm)`);
|
|
2162
|
+
spacing = DEFAULT_THICKNESS_SINGLE_SLICE;
|
|
2163
|
+
}
|
|
2124
2164
|
}
|
|
2125
2165
|
}
|
|
2126
2166
|
return spacing;
|
|
@@ -4279,7 +4319,7 @@ var isEqual = __webpack_require__(74638);
|
|
|
4279
4319
|
|
|
4280
4320
|
|
|
4281
4321
|
function isValidVolume(imageIds) {
|
|
4282
|
-
if (imageIds.length
|
|
4322
|
+
if (!imageIds.length) {
|
|
4283
4323
|
return false;
|
|
4284
4324
|
}
|
|
4285
4325
|
const imageId0 = imageIds[0];
|
|
@@ -4877,6 +4917,8 @@ function scroll_scroll(viewport, options) {
|
|
|
4877
4917
|
function scrollVolume(viewport, volumeId, delta, scrollSlabs = false) {
|
|
4878
4918
|
const useSlabThickness = scrollSlabs;
|
|
4879
4919
|
const { numScrollSteps, currentStepIndex, sliceRangeInfo } = (0,getVolumeViewportScrollInfo/* default */.A)(viewport, volumeId, useSlabThickness);
|
|
4920
|
+
if (numScrollSteps === 0)
|
|
4921
|
+
return;
|
|
4880
4922
|
if (!sliceRangeInfo) {
|
|
4881
4923
|
return;
|
|
4882
4924
|
}
|
|
@@ -8808,12 +8850,10 @@ function defaultGetTextLines(data, targetId) {
|
|
|
8808
8850
|
/* harmony import */ var _strategies_eraseSphere__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1989);
|
|
8809
8851
|
/* harmony import */ var _strategies_fillCircle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(56789);
|
|
8810
8852
|
/* harmony import */ var _strategies_eraseCircle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(33852);
|
|
8811
|
-
/* harmony import */ var
|
|
8812
|
-
/* harmony import */ var
|
|
8813
|
-
/* harmony import */ var
|
|
8814
|
-
/* harmony import */ var
|
|
8815
|
-
/* harmony import */ var _strategies_utils_getStrategyData__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(40905);
|
|
8816
|
-
|
|
8853
|
+
/* harmony import */ var _cursors_elementCursor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7001);
|
|
8854
|
+
/* harmony import */ var _utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(58640);
|
|
8855
|
+
/* harmony import */ var _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(23631);
|
|
8856
|
+
/* harmony import */ var _strategies_utils_getStrategyData__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(40905);
|
|
8817
8857
|
|
|
8818
8858
|
|
|
8819
8859
|
|
|
@@ -8825,7 +8865,7 @@ function defaultGetTextLines(data, targetId) {
|
|
|
8825
8865
|
|
|
8826
8866
|
|
|
8827
8867
|
|
|
8828
|
-
class BrushTool extends
|
|
8868
|
+
class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A {
|
|
8829
8869
|
constructor(toolProps = {}, defaultToolProps = {
|
|
8830
8870
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
8831
8871
|
configuration: {
|
|
@@ -8912,7 +8952,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
8912
8952
|
const { viewport } = enabledElement;
|
|
8913
8953
|
this._editData = this.createEditData(element);
|
|
8914
8954
|
this._activateDraw(element);
|
|
8915
|
-
(0,
|
|
8955
|
+
(0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_7__.hideElementCursor)(element);
|
|
8916
8956
|
evt.preventDefault();
|
|
8917
8957
|
this._previewData.isDrag = false;
|
|
8918
8958
|
this._previewData.timerStart = Date.now();
|
|
@@ -8926,7 +8966,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
8926
8966
|
world: gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.clone */ .eR.clone(worldPoint),
|
|
8927
8967
|
};
|
|
8928
8968
|
const hoverData = this._hoverData || this.createHoverData(element);
|
|
8929
|
-
(0,
|
|
8969
|
+
(0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(hoverData.viewportIdsToRender);
|
|
8930
8970
|
const operationData = this.getOperationData(element);
|
|
8931
8971
|
if (!operationData) {
|
|
8932
8972
|
return false;
|
|
@@ -8935,6 +8975,9 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
8935
8975
|
return true;
|
|
8936
8976
|
};
|
|
8937
8977
|
this.mouseMoveCallback = (evt) => {
|
|
8978
|
+
if (!this.isPrimary) {
|
|
8979
|
+
return;
|
|
8980
|
+
}
|
|
8938
8981
|
if (this.mode === _enums__WEBPACK_IMPORTED_MODULE_2__.ToolModes.Active) {
|
|
8939
8982
|
this.updateCursor(evt);
|
|
8940
8983
|
if (!this.configuration.preview.enabled) {
|
|
@@ -8983,7 +9026,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
8983
9026
|
}
|
|
8984
9027
|
const { viewport } = enabledElement;
|
|
8985
9028
|
const activeStrategy = this.configuration.activeStrategy;
|
|
8986
|
-
const strategyData = (0,
|
|
9029
|
+
const strategyData = (0,_strategies_utils_getStrategyData__WEBPACK_IMPORTED_MODULE_10__/* .getStrategyData */ .S)({
|
|
8987
9030
|
operationData,
|
|
8988
9031
|
viewport,
|
|
8989
9032
|
strategy: activeStrategy,
|
|
@@ -9005,7 +9048,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
9005
9048
|
const { viewport } = enabledElement;
|
|
9006
9049
|
this.updateCursor(evt);
|
|
9007
9050
|
const { viewportIdsToRender } = this._hoverData;
|
|
9008
|
-
(0,
|
|
9051
|
+
(0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(viewportIdsToRender);
|
|
9009
9052
|
const delta = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec2.distance */ .Zc.distance(currentPoints.canvas, this._previewData.startPoint);
|
|
9010
9053
|
const { dragTimeMs, dragMoveDistance } = this.configuration.preview;
|
|
9011
9054
|
if (!this._previewData.isDrag &&
|
|
@@ -9067,7 +9110,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
9067
9110
|
}
|
|
9068
9111
|
this.doneEditMemo();
|
|
9069
9112
|
this._deactivateDraw(element);
|
|
9070
|
-
(0,
|
|
9113
|
+
(0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_7__.resetElementCursor)(element);
|
|
9071
9114
|
this.updateCursor(evt);
|
|
9072
9115
|
this._editData = null;
|
|
9073
9116
|
this._lastDragInfo = null;
|
|
@@ -9101,55 +9144,12 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
9101
9144
|
if (!this._hoverData) {
|
|
9102
9145
|
return;
|
|
9103
9146
|
}
|
|
9104
|
-
|
|
9147
|
+
BrushTool.activeCursorTool = this;
|
|
9148
|
+
(0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(this._hoverData.viewportIdsToRender);
|
|
9105
9149
|
}
|
|
9106
9150
|
_calculateCursor(element, centerCanvas) {
|
|
9107
9151
|
const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.getEnabledElement)(element);
|
|
9108
|
-
|
|
9109
|
-
const { canvasToWorld } = viewport;
|
|
9110
|
-
const camera = viewport.getCamera();
|
|
9111
|
-
const { brushSize } = this.configuration;
|
|
9112
|
-
const viewUp = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.fromValues */ .eR.fromValues(camera.viewUp[0], camera.viewUp[1], camera.viewUp[2]);
|
|
9113
|
-
const viewPlaneNormal = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.fromValues */ .eR.fromValues(camera.viewPlaneNormal[0], camera.viewPlaneNormal[1], camera.viewPlaneNormal[2]);
|
|
9114
|
-
const viewRight = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.create */ .eR.create();
|
|
9115
|
-
gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.cross */ .eR.cross(viewRight, viewUp, viewPlaneNormal);
|
|
9116
|
-
const centerCursorInWorld = canvasToWorld([
|
|
9117
|
-
centerCanvas[0],
|
|
9118
|
-
centerCanvas[1],
|
|
9119
|
-
]);
|
|
9120
|
-
const bottomCursorInWorld = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.create */ .eR.create();
|
|
9121
|
-
const topCursorInWorld = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.create */ .eR.create();
|
|
9122
|
-
const leftCursorInWorld = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.create */ .eR.create();
|
|
9123
|
-
const rightCursorInWorld = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.create */ .eR.create();
|
|
9124
|
-
for (let i = 0; i <= 2; i++) {
|
|
9125
|
-
bottomCursorInWorld[i] = centerCursorInWorld[i] - viewUp[i] * brushSize;
|
|
9126
|
-
topCursorInWorld[i] = centerCursorInWorld[i] + viewUp[i] * brushSize;
|
|
9127
|
-
leftCursorInWorld[i] = centerCursorInWorld[i] - viewRight[i] * brushSize;
|
|
9128
|
-
rightCursorInWorld[i] = centerCursorInWorld[i] + viewRight[i] * brushSize;
|
|
9129
|
-
}
|
|
9130
|
-
if (!this._hoverData) {
|
|
9131
|
-
return;
|
|
9132
|
-
}
|
|
9133
|
-
const { brushCursor } = this._hoverData;
|
|
9134
|
-
const { data } = brushCursor;
|
|
9135
|
-
if (data.handles === undefined) {
|
|
9136
|
-
data.handles = {};
|
|
9137
|
-
}
|
|
9138
|
-
data.handles.points = [
|
|
9139
|
-
bottomCursorInWorld,
|
|
9140
|
-
topCursorInWorld,
|
|
9141
|
-
leftCursorInWorld,
|
|
9142
|
-
rightCursorInWorld,
|
|
9143
|
-
];
|
|
9144
|
-
const activeStrategy = this.configuration.activeStrategy;
|
|
9145
|
-
const strategy = this.configuration.strategies[activeStrategy];
|
|
9146
|
-
if (typeof strategy?.computeInnerCircleRadius === 'function') {
|
|
9147
|
-
strategy.computeInnerCircleRadius({
|
|
9148
|
-
configuration: this.configuration,
|
|
9149
|
-
viewport,
|
|
9150
|
-
});
|
|
9151
|
-
}
|
|
9152
|
-
data.invalidated = false;
|
|
9152
|
+
this.applyActiveStrategyCallback(enabledElement, this.getOperationData(element), _enums__WEBPACK_IMPORTED_MODULE_2__.StrategyCallbacks.CalculateCursorGeometry);
|
|
9153
9153
|
}
|
|
9154
9154
|
getStatistics(element, segmentIndices) {
|
|
9155
9155
|
if (!element) {
|
|
@@ -9197,7 +9197,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
9197
9197
|
this._hoverData.brushCursor.metadata.segmentColor = segmentColor;
|
|
9198
9198
|
}
|
|
9199
9199
|
renderAnnotation(enabledElement, svgDrawingHelper) {
|
|
9200
|
-
if (!this._hoverData) {
|
|
9200
|
+
if (!this._hoverData || BrushTool.activeCursorTool !== this) {
|
|
9201
9201
|
return;
|
|
9202
9202
|
}
|
|
9203
9203
|
const { viewport } = enabledElement;
|
|
@@ -9211,40 +9211,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
|
|
|
9211
9211
|
const { element } = viewport;
|
|
9212
9212
|
this._calculateCursor(element, centerCanvas);
|
|
9213
9213
|
}
|
|
9214
|
-
|
|
9215
|
-
if (!toolMetadata) {
|
|
9216
|
-
return;
|
|
9217
|
-
}
|
|
9218
|
-
const annotationUID = toolMetadata.brushCursorUID;
|
|
9219
|
-
const data = brushCursor.data;
|
|
9220
|
-
const { points } = data.handles;
|
|
9221
|
-
const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
|
|
9222
|
-
const bottom = canvasCoordinates[0];
|
|
9223
|
-
const top = canvasCoordinates[1];
|
|
9224
|
-
const center = [
|
|
9225
|
-
Math.floor((bottom[0] + top[0]) / 2),
|
|
9226
|
-
Math.floor((bottom[1] + top[1]) / 2),
|
|
9227
|
-
];
|
|
9228
|
-
const radius = Math.abs(bottom[1] - Math.floor((bottom[1] + top[1]) / 2));
|
|
9229
|
-
const color = `rgb(${toolMetadata.segmentColor?.slice(0, 3) || [0, 0, 0]})`;
|
|
9230
|
-
if (!viewport.getRenderingEngine()) {
|
|
9231
|
-
console.warn('Rendering Engine has been destroyed');
|
|
9232
|
-
return;
|
|
9233
|
-
}
|
|
9234
|
-
const circleUID = '0';
|
|
9235
|
-
(0,_drawingSvg__WEBPACK_IMPORTED_MODULE_7__.drawCircle)(svgDrawingHelper, annotationUID, circleUID, center, radius, {
|
|
9236
|
-
color,
|
|
9237
|
-
lineDash: this.centerSegmentIndexInfo.segmentIndex === 0 ? [1, 2] : null,
|
|
9238
|
-
});
|
|
9239
|
-
const { dynamicRadiusInCanvas } = this.configuration?.threshold || {
|
|
9240
|
-
dynamicRadiusInCanvas: 0,
|
|
9241
|
-
};
|
|
9242
|
-
if (dynamicRadiusInCanvas) {
|
|
9243
|
-
const circleUID1 = '1';
|
|
9244
|
-
(0,_drawingSvg__WEBPACK_IMPORTED_MODULE_7__.drawCircle)(svgDrawingHelper, annotationUID, circleUID1, center, dynamicRadiusInCanvas, {
|
|
9245
|
-
color,
|
|
9246
|
-
});
|
|
9247
|
-
}
|
|
9214
|
+
this.applyActiveStrategyCallback(enabledElement, this.getOperationData(viewport.element), _enums__WEBPACK_IMPORTED_MODULE_2__.StrategyCallbacks.RenderCursor, svgDrawingHelper);
|
|
9248
9215
|
}
|
|
9249
9216
|
}
|
|
9250
9217
|
BrushTool.toolName = 'Brush';
|
|
@@ -9269,7 +9236,7 @@ BrushTool.toolName = 'Brush';
|
|
|
9269
9236
|
/* harmony import */ var _utilities_boundingBox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72282);
|
|
9270
9237
|
/* harmony import */ var _BrushStrategy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(55887);
|
|
9271
9238
|
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29857);
|
|
9272
|
-
/* harmony import */ var _compositions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(
|
|
9239
|
+
/* harmony import */ var _compositions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(64664);
|
|
9273
9240
|
/* harmony import */ var _utilities_math_sphere__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(62783);
|
|
9274
9241
|
|
|
9275
9242
|
|
|
@@ -9492,7 +9459,7 @@ function fillOutsideCircle() {
|
|
|
9492
9459
|
/* harmony import */ var _utilities_boundingBox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72282);
|
|
9493
9460
|
/* harmony import */ var _BrushStrategy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(55887);
|
|
9494
9461
|
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29857);
|
|
9495
|
-
/* harmony import */ var _compositions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(
|
|
9462
|
+
/* harmony import */ var _compositions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(64664);
|
|
9496
9463
|
|
|
9497
9464
|
|
|
9498
9465
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[3081],{
|
|
3
3
|
|
|
4
4
|
/***/ 38007:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
@@ -1659,7 +1659,7 @@ function useViewportSegmentations({
|
|
|
1659
1659
|
|
|
1660
1660
|
/***/ }),
|
|
1661
1661
|
|
|
1662
|
-
/***/
|
|
1662
|
+
/***/ 63081:
|
|
1663
1663
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1664
1664
|
|
|
1665
1665
|
// ESM COMPAT FLAG
|
|
@@ -18844,9 +18844,26 @@ ToolGroupService.REGISTRATION = {
|
|
|
18844
18844
|
;// ../../../extensions/cornerstone/src/services/ToolGroupService/index.js
|
|
18845
18845
|
|
|
18846
18846
|
/* harmony default export */ const services_ToolGroupService = (ToolGroupService);
|
|
18847
|
+
;// ../../../extensions/cornerstone/src/utils/isAnyDisplaySetCommon.ts
|
|
18848
|
+
/**
|
|
18849
|
+
* Checks whether two viewports share at least one common display set.
|
|
18850
|
+
*
|
|
18851
|
+
* This method checks to see if the source and target share a display set.
|
|
18852
|
+
* It performs an O(n * m) comparison between the display sets of each viewport.
|
|
18853
|
+
* Since each viewport typically contains only a small number of display sets (≤ 5),
|
|
18854
|
+
* the computational cost is negligible.
|
|
18855
|
+
*
|
|
18856
|
+
* @param sourceDisplaySetUIDs - Array of displaySetInstanceUID from the source viewport.
|
|
18857
|
+
* @param targetDisplaySetUIDs - Array of displaySetInstanceUID from the target viewport.
|
|
18858
|
+
* @returns true if at least one display set is common; false otherwise.
|
|
18859
|
+
*/
|
|
18860
|
+
function isAnyDisplaySetCommon(sourceDisplaySetUIDs, targetDisplaySetUIDs) {
|
|
18861
|
+
return sourceDisplaySetUIDs.some(uid => targetDisplaySetUIDs.includes(uid));
|
|
18862
|
+
}
|
|
18847
18863
|
;// ../../../extensions/cornerstone/src/services/SyncGroupService/createHydrateSegmentationSynchronizer.ts
|
|
18848
18864
|
|
|
18849
18865
|
|
|
18866
|
+
|
|
18850
18867
|
const {
|
|
18851
18868
|
createSynchronizer
|
|
18852
18869
|
} = dist_esm.SynchronizerManager;
|
|
@@ -18870,6 +18887,13 @@ function createHydrateSegmentationSynchronizer(synchronizerName, {
|
|
|
18870
18887
|
});
|
|
18871
18888
|
return stackImageSynchronizer;
|
|
18872
18889
|
}
|
|
18890
|
+
|
|
18891
|
+
/**
|
|
18892
|
+
* This method will add the segmentation representation to any target viewports having:
|
|
18893
|
+
*
|
|
18894
|
+
* 1. the same FrameOfReferenceUID (FOR) as the segmentation representation, or
|
|
18895
|
+
* 2. a shared DisplaySet with the source viewport when no FOR is present.
|
|
18896
|
+
*/
|
|
18873
18897
|
const segmentationRepresentationModifiedCallback = async (synchronizerInstance, sourceViewport, targetViewport, sourceEvent, {
|
|
18874
18898
|
servicesManager,
|
|
18875
18899
|
options
|
|
@@ -18880,14 +18904,20 @@ const segmentationRepresentationModifiedCallback = async (synchronizerInstance,
|
|
|
18880
18904
|
type: segmentationRepresentationType
|
|
18881
18905
|
} = event.detail;
|
|
18882
18906
|
const {
|
|
18883
|
-
segmentationService
|
|
18907
|
+
segmentationService,
|
|
18908
|
+
cornerstoneViewportService
|
|
18884
18909
|
} = servicesManager.services;
|
|
18885
18910
|
const targetViewportId = targetViewport.viewportId;
|
|
18911
|
+
const sourceViewportId = sourceViewport.viewportId;
|
|
18886
18912
|
const {
|
|
18887
18913
|
viewport
|
|
18888
18914
|
} = (0,esm.getEnabledElementByViewportId)(targetViewportId);
|
|
18889
|
-
const
|
|
18890
|
-
|
|
18915
|
+
const sourceViewportInfo = cornerstoneViewportService.getViewportInfo(sourceViewportId);
|
|
18916
|
+
const targetViewportInfo = cornerstoneViewportService.getViewportInfo(targetViewportId);
|
|
18917
|
+
const sourceDisplaySetUIDs = extractDisplaySetUIDs(sourceViewportInfo);
|
|
18918
|
+
const targetDisplaySetUIDs = extractDisplaySetUIDs(targetViewportInfo);
|
|
18919
|
+
const sharedDisplaySetExists = isAnyDisplaySetCommon(sourceDisplaySetUIDs, targetDisplaySetUIDs);
|
|
18920
|
+
if (!sharedDisplaySetExists && !viewport.getFrameOfReferenceUID()) {
|
|
18891
18921
|
return;
|
|
18892
18922
|
}
|
|
18893
18923
|
const targetViewportRepresentation = segmentationService.getSegmentationRepresentations(targetViewportId, {
|
|
@@ -18907,6 +18937,13 @@ const segmentationRepresentationModifiedCallback = async (synchronizerInstance,
|
|
|
18907
18937
|
}
|
|
18908
18938
|
});
|
|
18909
18939
|
};
|
|
18940
|
+
|
|
18941
|
+
/**
|
|
18942
|
+
* Extracts the displaySetInstanceUIDs from a viewportInfo.
|
|
18943
|
+
*/
|
|
18944
|
+
function extractDisplaySetUIDs(viewportInfo) {
|
|
18945
|
+
return viewportInfo.getViewportData().data.map(ds => ds.displaySetInstanceUID);
|
|
18946
|
+
}
|
|
18910
18947
|
;// ../../../extensions/cornerstone/src/services/SyncGroupService/SyncGroupService.ts
|
|
18911
18948
|
var _SyncGroupService;
|
|
18912
18949
|
|
|
@@ -23608,16 +23645,17 @@ const workerFn = () => {
|
|
|
23608
23645
|
name: 'histogram-worker' // name used by the browser to name the worker
|
|
23609
23646
|
});
|
|
23610
23647
|
};
|
|
23648
|
+
|
|
23649
|
+
// Register worker once at module load time
|
|
23650
|
+
workerManager.registerWorker('histogram-worker', workerFn, WorkerOptions);
|
|
23611
23651
|
const getViewportVolumeHistogram = async (viewport, volume, options) => {
|
|
23612
|
-
workerManager.registerWorker('histogram-worker', workerFn, WorkerOptions);
|
|
23613
23652
|
const volumeImageData = viewport.getImageData(volume.volumeId);
|
|
23614
23653
|
if (!volumeImageData) {
|
|
23615
23654
|
return undefined;
|
|
23616
23655
|
}
|
|
23617
23656
|
let scalarData = volume.scalarData;
|
|
23618
23657
|
if (volume.numTimePoints > 1) {
|
|
23619
|
-
|
|
23620
|
-
scalarData = volume.voxelManager.getTimePointScalarData(targetTimePoint);
|
|
23658
|
+
scalarData = volume.voxelManager.getDimensionGroupScalarData(volume.numTimePoints);
|
|
23621
23659
|
} else {
|
|
23622
23660
|
scalarData = volume.voxelManager.getCompleteScalarDataArray();
|
|
23623
23661
|
}
|
|
@@ -23666,6 +23704,9 @@ const getViewportVolumeHistogram = async (viewport, volume, options) => {
|
|
|
23666
23704
|
* Gets node opacity from volume actor
|
|
23667
23705
|
*/
|
|
23668
23706
|
const getNodeOpacity = (volumeActor, nodeIndex) => {
|
|
23707
|
+
if (!volumeActor) {
|
|
23708
|
+
return undefined;
|
|
23709
|
+
}
|
|
23669
23710
|
const volumeOpacity = volumeActor.getProperty().getScalarOpacity(0);
|
|
23670
23711
|
const nodeValue = [];
|
|
23671
23712
|
volumeOpacity.getNodeValue(nodeIndex, nodeValue);
|
|
@@ -23676,6 +23717,9 @@ const getNodeOpacity = (volumeActor, nodeIndex) => {
|
|
|
23676
23717
|
* Checks if the opacity applied to the PET volume follows a specific pattern
|
|
23677
23718
|
*/
|
|
23678
23719
|
const isPetVolumeWithDefaultOpacity = (volumeId, volumeActor) => {
|
|
23720
|
+
if (!volumeActor) {
|
|
23721
|
+
return false;
|
|
23722
|
+
}
|
|
23679
23723
|
const volume = esm.cache.getVolume(volumeId);
|
|
23680
23724
|
if (!volume || volume.metadata.Modality !== 'PT') {
|
|
23681
23725
|
return false;
|
|
@@ -23707,6 +23751,9 @@ const isPetVolumeWithDefaultOpacity = (volumeId, volumeActor) => {
|
|
|
23707
23751
|
* Checks if volume has constant opacity
|
|
23708
23752
|
*/
|
|
23709
23753
|
const isVolumeWithConstantOpacity = volumeActor => {
|
|
23754
|
+
if (!volumeActor) {
|
|
23755
|
+
return false;
|
|
23756
|
+
}
|
|
23710
23757
|
const volumeOpacity = volumeActor.getProperty().getScalarOpacity(0);
|
|
23711
23758
|
const opacitySize = volumeOpacity.getSize();
|
|
23712
23759
|
const firstNodeValue = [];
|
|
@@ -23733,7 +23780,7 @@ const getWindowLevelsData = async (viewport, viewportInfo, getVolumeOpacity) =>
|
|
|
23733
23780
|
const viewportProperties = viewport.getProperties();
|
|
23734
23781
|
const {
|
|
23735
23782
|
voiRange
|
|
23736
|
-
} = viewportProperties;
|
|
23783
|
+
} = viewportProperties || {};
|
|
23737
23784
|
const viewportVoi = voiRange ? {
|
|
23738
23785
|
windowWidth: voiRange.upper - voiRange.lower,
|
|
23739
23786
|
windowCenter: voiRange.lower + (voiRange.upper - voiRange.lower) / 2
|
|
@@ -109,6 +109,8 @@ var SegmentationRepresentations;
|
|
|
109
109
|
/* harmony export */ });
|
|
110
110
|
var StrategyCallbacks;
|
|
111
111
|
(function (StrategyCallbacks) {
|
|
112
|
+
StrategyCallbacks["CalculateCursorGeometry"] = "calculateCursorGeometry";
|
|
113
|
+
StrategyCallbacks["RenderCursor"] = "renderCursor";
|
|
112
114
|
StrategyCallbacks["OnInteractionStart"] = "onInteractionStart";
|
|
113
115
|
StrategyCallbacks["OnInteractionEnd"] = "onInteractionEnd";
|
|
114
116
|
StrategyCallbacks["Preview"] = "preview";
|