@ohif/app 3.8.0-beta.71 → 3.8.0-beta.72
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/{155.bundle.091ace1591aff1f6b679.js → 155.bundle.bebcbc0ca715c7163f18.js} +53 -43
- package/dist/{191.bundle.ef35ed1f90a988b3952b.js → 191.bundle.c0ea2d031ffddeca32c9.js} +34 -127
- package/dist/{342.bundle.9be178d7555a64de203a.js → 342.bundle.521c0217f82380c0c2ad.js} +22 -8
- package/dist/{41.bundle.b5a6c70f88cf565cad3e.js → 41.bundle.9db45ce95f2fd889447d.js} +18 -7
- package/dist/{504.bundle.5ccd6d4269fa77a0a7e7.js → 433.bundle.6f2308ab10593784778c.js} +135 -11
- package/dist/{530.bundle.566bfd08dccb4cf6d98b.js → 530.bundle.f4b7966fb33eafb8cd5d.js} +17 -16
- package/dist/{559.bundle.fb8ac10c41eb734e2f3d.js → 540.bundle.792745c8d390c3fc83cf.js} +75 -42
- package/dist/{595.bundle.c25147a450c67defb3d5.js → 595.bundle.d9e4c2a6311ce8ed929b.js} +156 -67
- package/dist/{726.bundle.c8de818cf1a3ff0cf7d2.js → 726.bundle.0b3d9277d22fe7e15b89.js} +2 -2
- package/dist/{889.bundle.1c17d0d13e157ac21d38.js → 889.bundle.9ca0963a74448c6b0366.js} +1 -1
- package/dist/{90.bundle.27637ef740946d5c8948.js → 90.bundle.3c0e23243f8ad444dcb5.js} +2 -2
- package/dist/{987.bundle.6bdfb3cd8762b8889632.js → 987.bundle.e19408decfd59aadd118.js} +50 -137
- package/dist/{app.bundle.d1c8b09ab30d221fddf0.js → app.bundle.8aa9dfeaad37206d66e3.js} +28 -21
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/index.html +1 -1
- package/dist/{polySeg.bundle.01449e456b7d4a737d4f.js → polySeg.bundle.fe47718e6a8414f175b1.js} +3 -3
- package/dist/sw.js +1 -1
- package/package.json +18 -18
- /package/dist/{164.bundle.fcc94cd4e142a409769d.js → 164.bundle.403c8665844596f8a320.js} +0 -0
- /package/dist/{188.bundle.0081530bd886a18676eb.js → 188.bundle.c23415079424cb48aa70.js} +0 -0
- /package/dist/{2.bundle.ab8937194aad592bc7b4.js → 2.bundle.a423ca428b035655c6eb.js} +0 -0
- /package/dist/{425.bundle.e44cfce041ba5209a878.js → 425.bundle.fa277d2575477589ff4a.js} +0 -0
- /package/dist/{448.bundle.599d81471e1d7f7962bc.js → 448.bundle.2f5b66d084f92c556edd.js} +0 -0
- /package/dist/{574.bundle.b262cbe9f2afd7275271.js → 574.bundle.2b3369042aad5d553463.js} +0 -0
- /package/dist/{594.bundle.b70ca7a91d85ebd5d8c4.js → 594.bundle.2af345e8ec58d538a9ae.js} +0 -0
- /package/dist/{699.bundle.02c15c3cc4c04dbf7f51.js → 699.bundle.3783f122f84be6a5eb30.js} +0 -0
- /package/dist/{724.bundle.d50ce9fb0ab01b9378b7.js → 724.bundle.abdadacc4d7497aa7431.js} +0 -0
- /package/dist/{862.bundle.809c87a7ba9da6fb29c8.js → 862.bundle.47305c27f0fb939c2f97.js} +0 -0
- /package/dist/{905.bundle.206e44c3bbd1df1a900b.js → 905.bundle.aa96c1209ab1b78fdf2b.js} +0 -0
- /package/dist/{907.bundle.11700f7af989b5af8bc3.js → 907.bundle.f8db9076d882586ac6e6.js} +0 -0
- /package/dist/{961.bundle.a1ffb667eb04cbe07210.js → 961.bundle.0114ec1cc534b2b7739f.js} +0 -0
|
@@ -791,7 +791,7 @@ function promptSaveReport({
|
|
|
791
791
|
}
|
|
792
792
|
/* harmony default export */ const TrackedMeasurementsContext_promptSaveReport = (promptSaveReport);
|
|
793
793
|
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/index.tsx + 15 modules
|
|
794
|
-
var cornerstone_dicom_sr_src = __webpack_require__(
|
|
794
|
+
var cornerstone_dicom_sr_src = __webpack_require__(53540);
|
|
795
795
|
;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js
|
|
796
796
|
|
|
797
797
|
|
|
@@ -1119,51 +1119,54 @@ function TrackedMeasurementsContextProvider({
|
|
|
1119
1119
|
|
|
1120
1120
|
// ~~ Listen for changes to ViewportGrid for potential SRs hung in panes when idle
|
|
1121
1121
|
(0,react.useEffect)(() => {
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1122
|
+
const triggerPromptHydrateFlow = async () => {
|
|
1123
|
+
if (viewports.size > 0) {
|
|
1124
|
+
const activeViewport = viewports.get(activeViewportId);
|
|
1125
|
+
if (!activeViewport || !activeViewport?.displaySetInstanceUIDs?.length) {
|
|
1126
|
+
return;
|
|
1127
|
+
}
|
|
1127
1128
|
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1129
|
+
// Todo: Getting the first displaySetInstanceUID is wrong, but we don't have
|
|
1130
|
+
// tracking fusion viewports yet. This should change when we do.
|
|
1131
|
+
const {
|
|
1132
|
+
displaySetService
|
|
1133
|
+
} = servicesManager.services;
|
|
1134
|
+
const displaySet = displaySetService.getDisplaySetByUID(activeViewport.displaySetInstanceUIDs[0]);
|
|
1135
|
+
if (!displaySet) {
|
|
1136
|
+
return;
|
|
1137
|
+
}
|
|
1137
1138
|
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1139
|
+
// If this is an SR produced by our SR SOPClassHandler,
|
|
1140
|
+
// and it hasn't been loaded yet, do that now so we
|
|
1141
|
+
// can check if it can be rehydrated or not.
|
|
1142
|
+
//
|
|
1143
|
+
// Note: This happens:
|
|
1144
|
+
// - If the viewport is not currently an OHIFCornerstoneSRViewport
|
|
1145
|
+
// - If the displaySet has never been hung
|
|
1146
|
+
//
|
|
1147
|
+
// Otherwise, the displaySet will be loaded by the useEffect handler
|
|
1148
|
+
// listening to displaySet changes inside OHIFCornerstoneSRViewport.
|
|
1149
|
+
// The issue here is that this handler in TrackedMeasurementsContext
|
|
1150
|
+
// ends up occurring before the Viewport is created, so the displaySet
|
|
1151
|
+
// is not loaded yet, and isRehydratable is undefined unless we call load().
|
|
1152
|
+
if (displaySet.SOPClassHandlerId === SR_SOPCLASSHANDLERID && !displaySet.isLoaded && displaySet.load) {
|
|
1153
|
+
await displaySet.load();
|
|
1154
|
+
}
|
|
1154
1155
|
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1156
|
+
// Magic string
|
|
1157
|
+
// load function added by our sopClassHandler module
|
|
1158
|
+
if (displaySet.SOPClassHandlerId === SR_SOPCLASSHANDLERID && displaySet.isRehydratable === true) {
|
|
1159
|
+
console.log('sending event...', trackedMeasurements);
|
|
1160
|
+
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
|
1161
|
+
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
|
1162
|
+
SeriesInstanceUID: displaySet.SeriesInstanceUID,
|
|
1163
|
+
viewportId: activeViewportId
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1164
1166
|
}
|
|
1165
|
-
}
|
|
1166
|
-
|
|
1167
|
+
};
|
|
1168
|
+
triggerPromptHydrateFlow();
|
|
1169
|
+
}, [trackedMeasurements, activeViewportId, sendTrackedMeasurementsEvent, servicesManager.services, viewports]);
|
|
1167
1170
|
return /*#__PURE__*/react.createElement(TrackedMeasurementsContext.Provider, {
|
|
1168
1171
|
value: [trackedMeasurements, sendTrackedMeasurementsEvent]
|
|
1169
1172
|
}, children);
|
|
@@ -1256,7 +1259,8 @@ function PanelStudyBrowserTracking({
|
|
|
1256
1259
|
displaySetService,
|
|
1257
1260
|
uiDialogService,
|
|
1258
1261
|
hangingProtocolService,
|
|
1259
|
-
uiNotificationService
|
|
1262
|
+
uiNotificationService,
|
|
1263
|
+
measurementService
|
|
1260
1264
|
} = servicesManager.services;
|
|
1261
1265
|
const navigate = (0,dist/* useNavigate */.Zp)();
|
|
1262
1266
|
const {
|
|
@@ -1505,6 +1509,12 @@ function PanelStudyBrowserTracking({
|
|
|
1505
1509
|
sendTrackedMeasurementsEvent('UNTRACK_SERIES', {
|
|
1506
1510
|
SeriesInstanceUID: displaySet.SeriesInstanceUID
|
|
1507
1511
|
});
|
|
1512
|
+
const measurements = measurementService.getMeasurements();
|
|
1513
|
+
measurements.forEach(m => {
|
|
1514
|
+
if (m.referenceSeriesUID === displaySet.SeriesInstanceUID) {
|
|
1515
|
+
measurementService.remove(m.uid);
|
|
1516
|
+
}
|
|
1517
|
+
});
|
|
1508
1518
|
},
|
|
1509
1519
|
onClickThumbnail: () => {},
|
|
1510
1520
|
onDoubleClickThumbnail: onDoubleClickThumbnailHandler,
|
|
@@ -9538,129 +9538,6 @@ async function _addLabelmapToViewport(viewport, labelmapData, segmentationRepres
|
|
|
9538
9538
|
|
|
9539
9539
|
|
|
9540
9540
|
|
|
9541
|
-
/***/ }),
|
|
9542
|
-
|
|
9543
|
-
/***/ 31163:
|
|
9544
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9545
|
-
|
|
9546
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9547
|
-
/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
9548
|
-
/* harmony export */ });
|
|
9549
|
-
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50719);
|
|
9550
|
-
/* harmony import */ var _enums_SegmentationRepresentations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83946);
|
|
9551
|
-
/* harmony import */ var _stateManagement_segmentation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63421);
|
|
9552
|
-
/* harmony import */ var _stateManagement_segmentation_config_segmentationVisibility__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23308);
|
|
9553
|
-
/* harmony import */ var _stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30322);
|
|
9554
|
-
/* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(52610);
|
|
9555
|
-
/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(96214);
|
|
9556
|
-
/* harmony import */ var _Surface__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(57313);
|
|
9557
|
-
/* harmony import */ var _Contour__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2884);
|
|
9558
|
-
/* harmony import */ var _Labelmap__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(94318);
|
|
9559
|
-
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(61738);
|
|
9560
|
-
/* harmony import */ var _annotation_PlanarFreehandContourSegmentationTool__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(20070);
|
|
9561
|
-
|
|
9562
|
-
|
|
9563
|
-
|
|
9564
|
-
|
|
9565
|
-
|
|
9566
|
-
|
|
9567
|
-
|
|
9568
|
-
|
|
9569
|
-
|
|
9570
|
-
|
|
9571
|
-
|
|
9572
|
-
|
|
9573
|
-
|
|
9574
|
-
const planarContourToolName = _annotation_PlanarFreehandContourSegmentationTool__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A.toolName;
|
|
9575
|
-
class SegmentationDisplayTool extends _base__WEBPACK_IMPORTED_MODULE_6__/* .BaseTool */ .oS {
|
|
9576
|
-
constructor(toolProps = {}, defaultToolProps = {
|
|
9577
|
-
configuration: {},
|
|
9578
|
-
}) {
|
|
9579
|
-
super(toolProps, defaultToolProps);
|
|
9580
|
-
this.renderSegmentation = (toolGroupId) => {
|
|
9581
|
-
const toolGroup = (0,_store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_5__.getToolGroup)(toolGroupId);
|
|
9582
|
-
if (!toolGroup) {
|
|
9583
|
-
return;
|
|
9584
|
-
}
|
|
9585
|
-
const toolGroupSegmentationRepresentations = (0,_stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_4__.getSegmentationRepresentations)(toolGroupId);
|
|
9586
|
-
if (!toolGroupSegmentationRepresentations ||
|
|
9587
|
-
toolGroupSegmentationRepresentations.length === 0) {
|
|
9588
|
-
return;
|
|
9589
|
-
}
|
|
9590
|
-
const toolGroupViewports = toolGroup.viewportsInfo.map(({ renderingEngineId, viewportId }) => {
|
|
9591
|
-
const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.getEnabledElementByIds)(viewportId, renderingEngineId);
|
|
9592
|
-
if (enabledElement) {
|
|
9593
|
-
return enabledElement.viewport;
|
|
9594
|
-
}
|
|
9595
|
-
});
|
|
9596
|
-
const segmentationRenderList = toolGroupSegmentationRepresentations.map((representation) => {
|
|
9597
|
-
const config = this._getMergedRepresentationsConfig(toolGroupId);
|
|
9598
|
-
const viewportsRenderList = [];
|
|
9599
|
-
const renderers = {
|
|
9600
|
-
[_enums_SegmentationRepresentations__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.Labelmap]: _Labelmap__WEBPACK_IMPORTED_MODULE_9__/* .labelmapDisplay */ .Zy,
|
|
9601
|
-
[_enums_SegmentationRepresentations__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.Contour]: _Contour__WEBPACK_IMPORTED_MODULE_8__/* .contourDisplay */ .T,
|
|
9602
|
-
[_enums_SegmentationRepresentations__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.Surface]: _Surface__WEBPACK_IMPORTED_MODULE_7__/* .surfaceDisplay */ .u,
|
|
9603
|
-
};
|
|
9604
|
-
if (representation.type === _enums_SegmentationRepresentations__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.Contour) {
|
|
9605
|
-
this.addPlanarFreeHandToolIfAbsent(toolGroupId);
|
|
9606
|
-
}
|
|
9607
|
-
const display = renderers[representation.type];
|
|
9608
|
-
for (const viewport of toolGroupViewports) {
|
|
9609
|
-
const renderedViewport = display.render(viewport, representation, config);
|
|
9610
|
-
viewportsRenderList.push(renderedViewport);
|
|
9611
|
-
}
|
|
9612
|
-
return viewportsRenderList;
|
|
9613
|
-
});
|
|
9614
|
-
Promise.allSettled(segmentationRenderList).then(() => {
|
|
9615
|
-
toolGroupViewports.forEach((viewport) => {
|
|
9616
|
-
viewport.render();
|
|
9617
|
-
});
|
|
9618
|
-
});
|
|
9619
|
-
};
|
|
9620
|
-
}
|
|
9621
|
-
onSetToolEnabled() {
|
|
9622
|
-
const toolGroupId = this.toolGroupId;
|
|
9623
|
-
const toolGroupSegmentationRepresentations = (0,_stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_4__.getSegmentationRepresentations)(toolGroupId);
|
|
9624
|
-
if (!toolGroupSegmentationRepresentations ||
|
|
9625
|
-
toolGroupSegmentationRepresentations.length === 0) {
|
|
9626
|
-
return;
|
|
9627
|
-
}
|
|
9628
|
-
toolGroupSegmentationRepresentations.forEach((segmentationRepresentation) => {
|
|
9629
|
-
(0,_stateManagement_segmentation_config_segmentationVisibility__WEBPACK_IMPORTED_MODULE_3__.setSegmentationVisibility)(toolGroupId, segmentationRepresentation.segmentationRepresentationUID, true);
|
|
9630
|
-
});
|
|
9631
|
-
}
|
|
9632
|
-
onSetToolDisabled() {
|
|
9633
|
-
const toolGroupId = this.toolGroupId;
|
|
9634
|
-
const toolGroupSegmentationRepresentations = (0,_stateManagement_segmentation_segmentationState__WEBPACK_IMPORTED_MODULE_4__.getSegmentationRepresentations)(toolGroupId);
|
|
9635
|
-
if (!toolGroupSegmentationRepresentations ||
|
|
9636
|
-
toolGroupSegmentationRepresentations.length === 0) {
|
|
9637
|
-
return;
|
|
9638
|
-
}
|
|
9639
|
-
toolGroupSegmentationRepresentations.forEach((segmentationRepresentation) => {
|
|
9640
|
-
(0,_stateManagement_segmentation_config_segmentationVisibility__WEBPACK_IMPORTED_MODULE_3__.setSegmentationVisibility)(toolGroupId, segmentationRepresentation.segmentationRepresentationUID, false);
|
|
9641
|
-
});
|
|
9642
|
-
}
|
|
9643
|
-
addPlanarFreeHandToolIfAbsent(toolGroupId) {
|
|
9644
|
-
if (!(planarContourToolName in _store__WEBPACK_IMPORTED_MODULE_10__/* .state */ .wk.tools)) {
|
|
9645
|
-
(0,_store__WEBPACK_IMPORTED_MODULE_10__/* .addTool */ .Gx)(_annotation_PlanarFreehandContourSegmentationTool__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A);
|
|
9646
|
-
}
|
|
9647
|
-
const toolGroup = (0,_store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_5__.getToolGroup)(toolGroupId);
|
|
9648
|
-
if (!toolGroup.hasTool(planarContourToolName)) {
|
|
9649
|
-
toolGroup.addTool(planarContourToolName);
|
|
9650
|
-
toolGroup.setToolPassive(planarContourToolName);
|
|
9651
|
-
}
|
|
9652
|
-
}
|
|
9653
|
-
_getMergedRepresentationsConfig(toolGroupId) {
|
|
9654
|
-
const toolGroupConfig = _stateManagement_segmentation__WEBPACK_IMPORTED_MODULE_2__.config.getToolGroupSpecificConfig(toolGroupId);
|
|
9655
|
-
const globalConfig = _stateManagement_segmentation__WEBPACK_IMPORTED_MODULE_2__.config.getGlobalConfig();
|
|
9656
|
-
const mergedConfig = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.utilities.deepMerge(globalConfig, toolGroupConfig);
|
|
9657
|
-
return mergedConfig;
|
|
9658
|
-
}
|
|
9659
|
-
}
|
|
9660
|
-
SegmentationDisplayTool.toolName = 'SegmentationDisplay';
|
|
9661
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SegmentationDisplayTool);
|
|
9662
|
-
|
|
9663
|
-
|
|
9664
9541
|
/***/ }),
|
|
9665
9542
|
|
|
9666
9543
|
/***/ 94152:
|
|
@@ -20271,8 +20148,8 @@ class AnnotationEraserTool extends base/* BaseTool */.oS {
|
|
|
20271
20148
|
AnnotationEraserTool.toolName = 'Eraser';
|
|
20272
20149
|
/* harmony default export */ const tools_AnnotationEraserTool = (AnnotationEraserTool);
|
|
20273
20150
|
|
|
20274
|
-
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/displayTools/SegmentationDisplayTool.js
|
|
20275
|
-
var SegmentationDisplayTool = __webpack_require__(
|
|
20151
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/displayTools/SegmentationDisplayTool.js + 4 modules
|
|
20152
|
+
var SegmentationDisplayTool = __webpack_require__(33944);
|
|
20276
20153
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/segmentation/strategies/fillRectangle.js
|
|
20277
20154
|
var fillRectangle = __webpack_require__(21080);
|
|
20278
20155
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/tools/segmentation/strategies/eraseRectangle.js
|
|
@@ -23134,6 +23011,32 @@ function removeContourSegmentationAnnotation(annotation) {
|
|
|
23134
23011
|
|
|
23135
23012
|
|
|
23136
23013
|
|
|
23014
|
+
/***/ }),
|
|
23015
|
+
|
|
23016
|
+
/***/ 53891:
|
|
23017
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
23018
|
+
|
|
23019
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
23020
|
+
/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
23021
|
+
/* harmony export */ });
|
|
23022
|
+
function calculatePerimeter(polyline, closed) {
|
|
23023
|
+
let perimeter = 0;
|
|
23024
|
+
for (let i = 0; i < polyline.length - 1; i++) {
|
|
23025
|
+
const point1 = polyline[i];
|
|
23026
|
+
const point2 = polyline[i + 1];
|
|
23027
|
+
perimeter += Math.sqrt(Math.pow(point2[0] - point1[0], 2) + Math.pow(point2[1] - point1[1], 2));
|
|
23028
|
+
}
|
|
23029
|
+
if (closed) {
|
|
23030
|
+
const firstPoint = polyline[0];
|
|
23031
|
+
const lastPoint = polyline[polyline.length - 1];
|
|
23032
|
+
perimeter += Math.sqrt(Math.pow(lastPoint[0] - firstPoint[0], 2) +
|
|
23033
|
+
Math.pow(lastPoint[1] - firstPoint[1], 2));
|
|
23034
|
+
}
|
|
23035
|
+
return perimeter;
|
|
23036
|
+
}
|
|
23037
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (calculatePerimeter);
|
|
23038
|
+
|
|
23039
|
+
|
|
23137
23040
|
/***/ }),
|
|
23138
23041
|
|
|
23139
23042
|
/***/ 84045:
|
|
@@ -23190,6 +23093,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
23190
23093
|
AnnotationToPointData: () => (/* reexport */ contours_AnnotationToPointData),
|
|
23191
23094
|
acceptAutogeneratedInterpolations: () => (/* reexport */ acceptAutogeneratedInterpolations),
|
|
23192
23095
|
areCoplanarContours: () => (/* reexport */ areCoplanarContours),
|
|
23096
|
+
calculatePerimeter: () => (/* reexport */ calculatePerimeter/* default */.A),
|
|
23193
23097
|
contourFinder: () => (/* reexport */ contourFinder),
|
|
23194
23098
|
detectContourHoles: () => (/* reexport */ detectContourHoles),
|
|
23195
23099
|
findHandlePolylineIndex: () => (/* reexport */ findHandlePolylineIndex/* default */.A),
|
|
@@ -23608,6 +23512,8 @@ function acceptAutogeneratedInterpolations(annotationGroupSelector, selector) {
|
|
|
23608
23512
|
var interpolation = __webpack_require__(69115);
|
|
23609
23513
|
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/findHandlePolylineIndex.js
|
|
23610
23514
|
var findHandlePolylineIndex = __webpack_require__(84045);
|
|
23515
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/calculatePerimeter.js
|
|
23516
|
+
var calculatePerimeter = __webpack_require__(53891);
|
|
23611
23517
|
;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/contours/index.js
|
|
23612
23518
|
|
|
23613
23519
|
|
|
@@ -23624,6 +23530,7 @@ var findHandlePolylineIndex = __webpack_require__(84045);
|
|
|
23624
23530
|
|
|
23625
23531
|
|
|
23626
23532
|
|
|
23533
|
+
|
|
23627
23534
|
/***/ }),
|
|
23628
23535
|
|
|
23629
23536
|
/***/ 69115:
|
|
@@ -29244,7 +29151,7 @@ function getHoveredContourSegmentationAnnotation(segmentationId) {
|
|
|
29244
29151
|
/* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50719);
|
|
29245
29152
|
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84901);
|
|
29246
29153
|
/* harmony import */ var _store_ToolGroupManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(52610);
|
|
29247
|
-
/* harmony import */ var
|
|
29154
|
+
/* harmony import */ var _tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(94152);
|
|
29248
29155
|
|
|
29249
29156
|
|
|
29250
29157
|
|
|
@@ -29314,7 +29221,7 @@ class SegmentationRenderingEngine {
|
|
|
29314
29221
|
}
|
|
29315
29222
|
})
|
|
29316
29223
|
.filter(Boolean);
|
|
29317
|
-
const segmentationDisplayToolInstance = toolGroup.getToolInstance(
|
|
29224
|
+
const segmentationDisplayToolInstance = toolGroup.getToolInstance(_tools__WEBPACK_IMPORTED_MODULE_3__/* .SegmentationDisplayTool */ .t0.toolName);
|
|
29318
29225
|
if (!segmentationDisplayToolInstance) {
|
|
29319
29226
|
console.warn('No segmentation tool found inside', toolGroupId);
|
|
29320
29227
|
return;
|
|
@@ -2678,8 +2678,8 @@ function _generateToolState() {
|
|
|
2678
2678
|
// and over again.
|
|
2679
2679
|
sopUIDImageIdIndexMap = imageIds.reduce(function (acc, imageId) {
|
|
2680
2680
|
var _metadataProvider$get = metadataProvider.get("generalImageModule", imageId),
|
|
2681
|
-
|
|
2682
|
-
acc[
|
|
2681
|
+
sopInstanceUID = _metadataProvider$get.sopInstanceUID;
|
|
2682
|
+
acc[sopInstanceUID] = imageId;
|
|
2683
2683
|
return acc;
|
|
2684
2684
|
}, {});
|
|
2685
2685
|
overlapping = false;
|
|
@@ -4746,7 +4746,8 @@ var PlanarFreehandROI = /** @class */ (function () {
|
|
|
4746
4746
|
function PlanarFreehandROI() {
|
|
4747
4747
|
}
|
|
4748
4748
|
PlanarFreehandROI.getMeasurementData = function (MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {
|
|
4749
|
-
var _a
|
|
4749
|
+
var _a;
|
|
4750
|
+
var _b = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, PlanarFreehandROI.toolType), defaultState = _b.defaultState, NUMGroup = _b.NUMGroup, SCOORDGroup = _b.SCOORDGroup, ReferencedFrameNumber = _b.ReferencedFrameNumber;
|
|
4750
4751
|
var referencedImageId = defaultState.annotation.metadata.referencedImageId;
|
|
4751
4752
|
var GraphicData = SCOORDGroup.GraphicData;
|
|
4752
4753
|
var worldCoords = [];
|
|
@@ -4770,8 +4771,7 @@ var PlanarFreehandROI = /** @class */ (function () {
|
|
|
4770
4771
|
}
|
|
4771
4772
|
var state = defaultState;
|
|
4772
4773
|
state.annotation.data = {
|
|
4773
|
-
polyline: worldCoords,
|
|
4774
|
-
isOpenContour: isOpenContour,
|
|
4774
|
+
contour: { polyline: worldCoords, closed: !isOpenContour },
|
|
4775
4775
|
handles: {
|
|
4776
4776
|
points: points,
|
|
4777
4777
|
activeHandleIndex: null,
|
|
@@ -4779,13 +4779,21 @@ var PlanarFreehandROI = /** @class */ (function () {
|
|
|
4779
4779
|
hasMoved: false
|
|
4780
4780
|
}
|
|
4781
4781
|
},
|
|
4782
|
+
cachedStats: (_a = {},
|
|
4783
|
+
_a["imageId:".concat(referencedImageId)] = {
|
|
4784
|
+
area: NUMGroup
|
|
4785
|
+
? NUMGroup.MeasuredValueSequence.NumericValue
|
|
4786
|
+
: null
|
|
4787
|
+
},
|
|
4788
|
+
_a),
|
|
4782
4789
|
frameNumber: ReferencedFrameNumber
|
|
4783
4790
|
};
|
|
4784
4791
|
return state;
|
|
4785
4792
|
};
|
|
4786
4793
|
PlanarFreehandROI.getTID300RepresentationArguments = function (tool, worldToImageCoords) {
|
|
4787
4794
|
var data = tool.data, finding = tool.finding, findingSites = tool.findingSites, metadata = tool.metadata;
|
|
4788
|
-
var
|
|
4795
|
+
var _a = data.contour, polyline = _a.polyline, closed = _a.closed;
|
|
4796
|
+
var isOpenContour = closed !== true;
|
|
4789
4797
|
var referencedImageId = metadata.referencedImageId;
|
|
4790
4798
|
if (!referencedImageId) {
|
|
4791
4799
|
throw new Error("PlanarFreehandROI.getTID300RepresentationArguments: referencedImageId is not defined");
|
|
@@ -4799,12 +4807,18 @@ var PlanarFreehandROI = /** @class */ (function () {
|
|
|
4799
4807
|
// Explicitly expand to avoid ciruclar references.
|
|
4800
4808
|
points.push([firstPoint[0], firstPoint[1]]);
|
|
4801
4809
|
}
|
|
4802
|
-
var area =
|
|
4803
|
-
var perimeter = 0;
|
|
4810
|
+
var _b = data.cachedStats["imageId:".concat(referencedImageId)] || {}, area = _b.area, areaUnit = _b.areaUnit, modalityUnit = _b.modalityUnit, perimeter = _b.perimeter, mean = _b.mean, max = _b.max, stdDev = _b.stdDev;
|
|
4804
4811
|
return {
|
|
4812
|
+
/** From cachedStats */
|
|
4805
4813
|
points: points,
|
|
4806
4814
|
area: area,
|
|
4815
|
+
areaUnit: areaUnit,
|
|
4807
4816
|
perimeter: perimeter,
|
|
4817
|
+
modalityUnit: modalityUnit,
|
|
4818
|
+
mean: mean,
|
|
4819
|
+
max: max,
|
|
4820
|
+
stdDev: stdDev,
|
|
4821
|
+
/** Other */
|
|
4808
4822
|
trackingIdentifierTextValue: trackingIdentifierTextValue$2,
|
|
4809
4823
|
finding: finding,
|
|
4810
4824
|
findingSites: findingSites || []
|
|
@@ -162,6 +162,10 @@ function initSRToolGroup(extensionManager, toolGroupService) {
|
|
|
162
162
|
toolName: SRToolNames.SREllipticalROI
|
|
163
163
|
}, {
|
|
164
164
|
toolName: SRToolNames.SRCircleROI
|
|
165
|
+
}, {
|
|
166
|
+
toolName: SRToolNames.SRPlanarFreehandROI
|
|
167
|
+
}, {
|
|
168
|
+
toolName: SRToolNames.SRRectangleROI
|
|
165
169
|
}],
|
|
166
170
|
enabled: [{
|
|
167
171
|
toolName: SRToolNames.DICOMSRDisplay,
|
|
@@ -360,6 +364,20 @@ const toolbarButtons = [{
|
|
|
360
364
|
tooltip: 'Ellipse ROI',
|
|
361
365
|
commands: setToolActiveToolbar,
|
|
362
366
|
evaluate: 'evaluate.cornerstoneTool'
|
|
367
|
+
}), createButton({
|
|
368
|
+
id: 'PlanarFreehandROI',
|
|
369
|
+
icon: 'tool-freehand-polygon',
|
|
370
|
+
label: 'Freehand',
|
|
371
|
+
tooltip: 'Freehand ROI',
|
|
372
|
+
commands: setToolActiveToolbar,
|
|
373
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
374
|
+
}), createButton({
|
|
375
|
+
id: 'RectangleROI',
|
|
376
|
+
icon: 'tool-rectangle',
|
|
377
|
+
label: 'Rectangle',
|
|
378
|
+
tooltip: 'Rectangle ROI',
|
|
379
|
+
commands: setToolActiveToolbar,
|
|
380
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
363
381
|
}), createButton({
|
|
364
382
|
id: 'CircleROI',
|
|
365
383
|
icon: 'tool-circle',
|
|
@@ -617,13 +635,6 @@ const moreTools = [{
|
|
|
617
635
|
tooltip: 'Magnify',
|
|
618
636
|
commands: setToolActiveToolbar,
|
|
619
637
|
evaluate: 'evaluate.cornerstoneTool'
|
|
620
|
-
}), moreTools_createButton({
|
|
621
|
-
id: 'RectangleROI',
|
|
622
|
-
icon: 'tool-rectangle',
|
|
623
|
-
label: 'Rectangle',
|
|
624
|
-
tooltip: 'Rectangle',
|
|
625
|
-
commands: setToolActiveToolbar,
|
|
626
|
-
evaluate: 'evaluate.cornerstoneTool'
|
|
627
638
|
}), moreTools_createButton({
|
|
628
639
|
id: 'CalibrationLine',
|
|
629
640
|
icon: 'tool-calibration',
|