hellfire 0.20.4 → 0.20.7

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/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [0.20.7](http://10.16.100.57/diffusion/115/paladin/compare/v0.20.6...v0.20.7) (2022-05-24)
6
+
7
+
8
+
9
+ ## [0.20.6](http://10.16.100.57/diffusion/115/paladin/compare/v0.20.5...v0.20.6) (2022-05-23)
10
+
11
+
12
+
13
+ ## [0.20.5](http://10.16.100.57/diffusion/115/paladin/compare/v0.20.4...v0.20.5) (2022-05-20)
14
+
15
+
16
+
5
17
  ## [0.20.4](http://10.16.100.57/diffusion/115/paladin/compare/v0.20.3...v0.20.4) (2022-05-19)
6
18
 
7
19
 
Binary file
@@ -0,0 +1,32 @@
1
+ <!doctype html>
2
+ <html lang="zh-Hans" class="default">
3
+ <head>
4
+ <meta name="renderer" content="webkit">
5
+ <meta charset="utf-8"/>
6
+ <title>examples</title>
7
+ <meta name="description" content="Soul Archetype Admin System"/>
8
+ <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1">
9
+ <meta name="viewport"
10
+ content="user-scalable=no, width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1"/>
11
+ <meta name="robots" content="noindex, nofollow, noodp, noarchive, nosnippet, noimageindex, noydir, nocache"/>
12
+ <meta name="referrer" content="origin"/>
13
+ <style>
14
+ html {
15
+ height: 100%;
16
+ width: 100%;
17
+ overflow: hidden;
18
+ }
19
+
20
+ body {
21
+ height: 100%;
22
+ width: 100%;
23
+ overflow: auto;
24
+ margin: 0;
25
+ }
26
+
27
+ </style>
28
+ <link rel="shortcut icon" href="./favicon.ico"><link href="./v0.17.0-46-g33a703a/main56d1bbe76fd28b6ffa02.css?56d1bbe76fd28b6ffa02" rel="stylesheet"></head>
29
+ <body>
30
+ <div id="app" style="height: 100%;"></div>
31
+ <script type="text/javascript" src="./v0.17.0-46-g33a703a/main-56d1bbe76fd28b6ffa02.js?56d1bbe76fd28b6ffa02"></script></body>
32
+ </html>
package/dist/index.js CHANGED
@@ -27195,7 +27195,6 @@ var __signature__$1H = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoa
27195
27195
  var getNewContext$d = cornerstoneTools.importInternal('drawing/getNewContext');
27196
27196
  var drawLines$2 = cornerstoneTools.importInternal('drawing/drawLines');
27197
27197
  var drawLinkedTextBox$7 = cornerstoneTools.importInternal('drawing/drawLinkedTextBox');
27198
- var moveNewHandle$4 = cornerstoneTools.importInternal('manipulators/moveNewHandle');
27199
27198
  var moveHandle = cornerstoneTools.importInternal('manipulators/moveHandle');
27200
27199
  var getLogger$3 = cornerstoneTools.importInternal('util/getLogger');
27201
27200
  var throttle$7 = cornerstoneTools.importInternal('util/throttle');
@@ -27203,15 +27202,15 @@ var getPixelSpacing$7 = cornerstoneTools.importInternal('util/getPixelSpacing');
27203
27202
  var getROITextBoxCoords$2 = cornerstoneTools.importInternal('util/getROITextBoxCoords');
27204
27203
  var numbersWithCommas$2 = cornerstoneTools.importInternal('util/numbersWithCommas');
27205
27204
  var lineSegDistance$5 = cornerstoneTools.importInternal('util/lineSegDistance');
27206
- var triggerEvent$3 = cornerstoneTools.importInternal('util/triggerEvent');
27207
27205
  var logger$8 = getLogger$3('tools:annotation:PolygonTool');
27208
27206
  var external$k = cornerstoneTools.external,
27209
27207
  addToolState$4 = cornerstoneTools.addToolState,
27210
27208
  toolColors$b = cornerstoneTools.toolColors,
27211
27209
  toolStyle$6 = cornerstoneTools.toolStyle,
27212
- EVENTS$4 = cornerstoneTools.EVENTS;
27210
+ getToolState$c = cornerstoneTools.getToolState;
27213
27211
  /**
27214
27212
  * 多边形绘制工具
27213
+ * 备注:在activeTool改变的地方添加判断,如果是从多边形工具切换到了别的工具,要手动结束掉未完成的绘制
27215
27214
  */
27216
27215
 
27217
27216
  var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
@@ -27233,76 +27232,25 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27233
27232
  drawHandles: true
27234
27233
  }
27235
27234
  };
27236
- _this = _super.call(this, props, defaultProps); // 已经开始绘制的图像的wadouri
27237
-
27238
- defineProperty(assertThisInitialized(_this), "moveNewHandlePlus", function (eventData, measurementData, interactionType) {
27239
- measurementData.count++;
27240
- var _eventData$currentPoi = eventData.currentPoints.image,
27241
- x = _eventData$currentPoi.x,
27242
- y = _eventData$currentPoi.y;
27243
- measurementData.handles['point' + measurementData.count] = {
27244
- x: x,
27245
- y: y,
27246
- highlight: true,
27247
- active: true,
27248
- isPoint: true
27249
- };
27250
- var element = eventData.element;
27251
- moveNewHandle$4(eventData, _this.name, measurementData, measurementData.handles['point' + measurementData.count], _this.options, interactionType, function () {
27252
- measurementData.handles['point' + measurementData.count].active = false;
27253
- external$k.cornerstone.updateImage(element);
27254
-
27255
- if (!_this.finishOnce) {
27256
- _this.moveNewHandlePlus(eventData, measurementData, interactionType);
27257
- }
27258
- });
27259
- });
27260
-
27261
- _this.currentWadoUri = null; // 结束一组
27235
+ _this = _super.call(this, props, defaultProps);
27236
+ _this.throttledUpdateCachedStats = throttle$7(_this.updateCachedStats, 110); // 一次只绘制一个element 不可以换到别的element上面绘制
27262
27237
 
27263
- _this.finishOnce = true;
27264
- _this.throttledUpdateCachedStats = throttle$7(_this.updateCachedStats, 110);
27265
- _this.elementCache = null;
27238
+ _this.isDrawing = false;
27239
+ _this.currentElement = null;
27266
27240
  document.addEventListener('keyup', function (e) {
27267
27241
  if (e.keyCode === 27) {
27268
- _this.finishOnce = true;
27269
- _this.currentWadoUri = null;
27242
+ _this.isDrawing = false;
27270
27243
 
27271
- if (_this.elementCache) {
27272
- var toolData = cornerstoneTools.getToolState(_this.elementCache, _this.name);
27244
+ if (_this.currentElement) {
27245
+ var toolData = cornerstoneTools.getToolState(_this.currentElement, _this.name);
27273
27246
 
27274
27247
  if (toolData && toolData.data && toolData.data.length > 0) {
27275
27248
  for (var i = 0; i < toolData.data.length; i++) {
27276
- toolData.data[i].active = false;
27249
+ toolData.data[i].complete = true;
27277
27250
  }
27278
27251
  }
27279
27252
 
27280
- var isToolLocked = lodash$1.get(cornerstoneTools, ['store', 'state', 'isToolLocked']); // 会锁住 需要手动解锁state
27281
-
27282
-
27283
- if (isToolLocked) {
27284
- var enable = external$k.cornerstone.getEnabledElement(_this.elementCache); // 情况:添加一个点后没有move,这时候就不会走moveHandler,下面mouseup模拟的endHandler也不会生效,所以需要先模拟move
27285
-
27286
- triggerEvent$3(_this.elementCache, EVENTS$4.MOUSE_MOVE, {
27287
- element: _this.elementCache,
27288
- currentPoints: {
27289
- page: cornerstoneMath.point.pageToPoint(e)
27290
- },
27291
- image: enable.image,
27292
- buttons: getEventButtons(e)
27293
- });
27294
- triggerEvent$3(_this.elementCache, EVENTS$4.MOUSE_UP, {
27295
- element: _this.elementCache,
27296
- currentPoints: {
27297
- page: cornerstoneMath.point.pageToPoint(e)
27298
- },
27299
- image: enable.image,
27300
- buttons: getEventButtons(e)
27301
- });
27302
- }
27303
-
27304
- external$k.cornerstone.updateImage(_this.elementCache);
27305
- _this.elementCache = null;
27253
+ external$k.cornerstone.updateImage(_this.currentElement);
27306
27254
  }
27307
27255
  }
27308
27256
  });
@@ -27312,12 +27260,9 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27312
27260
  createClass(PolygonTool, [{
27313
27261
  key: "createNewMeasurement",
27314
27262
  value: function createNewMeasurement(eventData) {
27315
- var _eventData$currentPoi2 = eventData.currentPoints.image,
27316
- x = _eventData$currentPoi2.x,
27317
- y = _eventData$currentPoi2.y;
27318
- var imageId = eventData.image.imageId; // 持续一次完整的多边形绘制
27319
-
27320
- this.currentWadoUri = imageId;
27263
+ var _eventData$currentPoi = eventData.currentPoints.image,
27264
+ x = _eventData$currentPoi.x,
27265
+ y = _eventData$currentPoi.y;
27321
27266
  return {
27322
27267
  visible: true,
27323
27268
  active: true,
@@ -27347,33 +27292,60 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27347
27292
  }
27348
27293
  };
27349
27294
  }
27295
+ /**
27296
+ * - create new tool data
27297
+ * - update未完成的tool data
27298
+ */
27299
+
27350
27300
  }, {
27351
27301
  key: "addNewMeasurement",
27352
27302
  value: function addNewMeasurement(evt, interactionType) {
27353
- var _this2 = this;
27354
-
27355
- // 单次测量数据产生期间不产生多余的测量
27356
- if (!this.finishOnce) {
27357
- return;
27358
- }
27359
-
27360
- this.finishOnce = false;
27361
27303
  evt.preventDefault();
27362
27304
  evt.stopPropagation();
27363
27305
  var eventData = evt.detail;
27364
- var imageId = eventData.image.imageId;
27306
+ var element = eventData.element; // 找到未绘制完毕的tool data
27365
27307
 
27366
- if (this.currentWadoUri && this.currentWadoUri !== imageId) {
27367
- return;
27308
+ var pendingMeasurement = this.getIncomplete(element);
27309
+ var measurementData;
27310
+ var currentPoint;
27311
+ this.isDrawing = true;
27312
+ this.currentElement = element;
27313
+
27314
+ if (pendingMeasurement) {
27315
+ measurementData = pendingMeasurement;
27316
+ measurementData.count++;
27317
+ var _eventData$currentPoi2 = eventData.currentPoints.image,
27318
+ x = _eventData$currentPoi2.x,
27319
+ y = _eventData$currentPoi2.y;
27320
+ measurementData.handles['point' + measurementData.count] = {
27321
+ x: x,
27322
+ y: y,
27323
+ highlight: true,
27324
+ active: false,
27325
+ isPoint: true
27326
+ };
27327
+ currentPoint = measurementData.handles['point' + measurementData.count];
27328
+ measurementData.invalidated = true;
27329
+ } else {
27330
+ measurementData = this.createNewMeasurement(eventData);
27331
+ addToolState$4(element, this.name, measurementData);
27332
+ currentPoint = measurementData.handles.point1;
27368
27333
  }
27369
27334
 
27370
- var measurementData = this.createNewMeasurement(eventData);
27371
- var element = evt.detail.element;
27372
- addToolState$4(element, this.name, measurementData);
27373
27335
  external$k.cornerstone.updateImage(element);
27374
- moveHandle(eventData, this.name, measurementData, measurementData.handles.point1, this.options, interactionType, function () {
27375
- _this2.moveNewHandlePlus(eventData, measurementData, interactionType);
27376
- });
27336
+ moveHandle(eventData, this.name, measurementData, currentPoint, this.options, interactionType);
27337
+ }
27338
+ }, {
27339
+ key: "getIncomplete",
27340
+ value: function getIncomplete(element) {
27341
+ var toolState = getToolState$c(element, this.name);
27342
+
27343
+ if (toolState && Array.isArray(toolState.data)) {
27344
+ return toolState.data.find(function (_ref) {
27345
+ var complete = _ref.complete;
27346
+ return complete === false;
27347
+ });
27348
+ }
27377
27349
  }
27378
27350
  }, {
27379
27351
  key: "updateCachedStats",
@@ -27406,7 +27378,6 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27406
27378
 
27407
27379
  if (vertices.length < 3) {
27408
27380
  data.cachedStats = null;
27409
- data.invalidated = false;
27410
27381
  return;
27411
27382
  } // 计算面积
27412
27383
 
@@ -27443,10 +27414,10 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27443
27414
  }, {
27444
27415
  key: "renderToolData",
27445
27416
  value: function renderToolData(evt) {
27446
- var _this3 = this;
27417
+ var _this2 = this;
27447
27418
 
27448
27419
  var eventData = evt.detail;
27449
- var toolData = cornerstoneTools.getToolState(evt.currentTarget, this.name);
27420
+ var toolData = getToolState$c(evt.currentTarget, this.name);
27450
27421
 
27451
27422
  if (!toolData) {
27452
27423
  return;
@@ -27456,23 +27427,17 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27456
27427
  var image = eventData.image,
27457
27428
  element = eventData.element; // 如果还在绘制进行中 提示esc退出工具
27458
27429
 
27459
- if (!this.finishOnce) {
27430
+ if (this.isDrawing) {
27460
27431
  var width = element.clientWidth;
27461
- this.elementCache = eventData.element;
27462
27432
  _default$h(context, '按ESC键结束多边形绘制', width / 2 - 100, 0, '#d06479', {
27463
27433
  fontSize: 17
27464
27434
  });
27435
+ } else {
27436
+ this.currentElement = null;
27465
27437
  }
27466
27438
 
27467
27439
  var _loop = function _loop(i) {
27468
- var data = toolData.data[i]; // 处理esc退出工具后还未释放当前point的问题
27469
-
27470
- if (_this3.finishOnce && !data.complete) {
27471
- data.complete = true;
27472
- delete data.handles['point' + data.count];
27473
- data.count--;
27474
- external$k.cornerstone.updateImage(element);
27475
- }
27440
+ var data = toolData.data[i];
27476
27441
 
27477
27442
  if (data.visible === false) {
27478
27443
  return "continue";
@@ -27481,7 +27446,7 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27481
27446
  var color = toolColors$b.getColorIfActive(data);
27482
27447
  var handles = data.handles; // 点的绘制
27483
27448
 
27484
- var drawHandlesOnHover = _this3.configuration.drawHandlesOnHover;
27449
+ var drawHandlesOnHover = _this2.configuration.drawHandlesOnHover;
27485
27450
  var handleOptions = {
27486
27451
  color: cornerstoneTools.toolColors.getActiveColor() === color ? color : 'transparent',
27487
27452
  handleRadius: 2,
@@ -27523,14 +27488,14 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27523
27488
  if (data.invalidated === true) {
27524
27489
  // 数据更新
27525
27490
  if (data.cachedStats) {
27526
- _this3.throttledUpdateCachedStats(image, element, data);
27491
+ _this2.throttledUpdateCachedStats(image, element, data);
27527
27492
  } else {
27528
- _this3.updateCachedStats(image, element, data);
27493
+ _this2.updateCachedStats(image, element, data);
27529
27494
  }
27530
27495
  } // 文字绘制
27531
27496
 
27532
27497
 
27533
- if (lines && lines.length > 2) {
27498
+ if (lines && lines.length > 2 && data.cachedStats) {
27534
27499
  var seriesModule = external$k.cornerstone.metaData.get('generalSeriesModule', image.imageId) || {};
27535
27500
  var modality = seriesModule.modality;
27536
27501
 
@@ -27565,7 +27530,7 @@ var PolygonTool = /*#__PURE__*/function (_BaseAnnotationPlusTo) {
27565
27530
  return _findTextBoxAnchorPoints$2(handles.start, handles.end);
27566
27531
  };
27567
27532
 
27568
- var textBoxContent = _createTextBoxContent$2(context, image.color, data.cachedStats, modality, hasPixelSpacing, _this3.configuration);
27533
+ var textBoxContent = _createTextBoxContent$2(context, image.color, data.cachedStats, modality, hasPixelSpacing, _this2.configuration);
27569
27534
 
27570
27535
  drawLinkedTextBox$7(context, element, data.handles.textBox, textBoxContent, mockHandles, textBoxAnchorPoints, color, lineWidth, 10, true);
27571
27536
  }
@@ -27735,21 +27700,26 @@ function _findTextBoxAnchorPoints$2(startHandle, endHandle) {
27735
27700
  }
27736
27701
 
27737
27702
  function _createTextBoxContent$2(context, isColorImage) {
27738
- var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
27739
- area = _ref.area,
27740
- mean = _ref.mean,
27741
- stdDev = _ref.stdDev,
27742
- min = _ref.min,
27743
- max = _ref.max,
27744
- meanStdDevSUV = _ref.meanStdDevSUV;
27703
+ var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
27704
+ area = _ref2.area,
27705
+ mean = _ref2.mean,
27706
+ stdDev = _ref2.stdDev,
27707
+ min = _ref2.min,
27708
+ max = _ref2.max,
27709
+ meanStdDevSUV = _ref2.meanStdDevSUV;
27710
+
27711
+ var modality = arguments.length > 3 ? arguments[3] : undefined;
27745
27712
  var hasPixelSpacing = arguments.length > 4 ? arguments[4] : undefined;
27713
+ var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
27746
27714
  var textLines = [];
27747
27715
  textLines.push(formatArea(area, hasPixelSpacing));
27748
27716
 
27749
27717
  if (!isColorImage) {
27750
- var meanString = "Mean: ".concat(numbersWithCommas$2(mean.toFixed(1)));
27751
- var stdDevString = "StdDev: ".concat(numbersWithCommas$2(stdDev.toFixed(1)));
27752
- textLines.push("Min/Max: ".concat(min.toFixed(1), " / ").concat(max.toFixed(1)));
27718
+ var unit = _getUnit$2(modality, options.showHounsfieldUnits);
27719
+
27720
+ var meanString = "Mean: ".concat(numbersWithCommas$2(mean.toFixed(1)), " ").concat(unit);
27721
+ var stdDevString = "StdDev: ".concat(numbersWithCommas$2(stdDev.toFixed(1)), " ").concat(unit);
27722
+ textLines.push("Min/Max: ".concat(min.toFixed(1), " ").concat(unit, " / ").concat(max.toFixed(1), " ").concat(unit));
27753
27723
  textLines.push("".concat(meanString));
27754
27724
  textLines.push("".concat(stdDevString));
27755
27725
  }
@@ -27781,26 +27751,8 @@ function isInPolygon(point, points) {
27781
27751
  return nCross % 2 === 1;
27782
27752
  }
27783
27753
 
27784
- function getEventButtons(event) {
27785
- if (typeof event.buttons === 'number') {
27786
- return event.buttons;
27787
- }
27788
-
27789
- switch (event.which) {
27790
- case 0:
27791
- return 0;
27792
-
27793
- case 1:
27794
- return 1;
27795
-
27796
- case 2:
27797
- return 4;
27798
-
27799
- case 3:
27800
- return 2;
27801
- }
27802
-
27803
- return 0;
27754
+ function _getUnit$2(modality, showHounsfieldUnits) {
27755
+ return modality === 'CT' && showHounsfieldUnits !== false ? 'HU' : '';
27804
27756
  }
27805
27757
 
27806
27758
  (function () {
@@ -27813,7 +27765,6 @@ function getEventButtons(event) {
27813
27765
  reactHotLoader.register(getNewContext$d, "getNewContext", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27814
27766
  reactHotLoader.register(drawLines$2, "drawLines", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27815
27767
  reactHotLoader.register(drawLinkedTextBox$7, "drawLinkedTextBox", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27816
- reactHotLoader.register(moveNewHandle$4, "moveNewHandle", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27817
27768
  reactHotLoader.register(moveHandle, "moveHandle", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27818
27769
  reactHotLoader.register(getLogger$3, "getLogger", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27819
27770
  reactHotLoader.register(throttle$7, "throttle", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
@@ -27821,13 +27772,12 @@ function getEventButtons(event) {
27821
27772
  reactHotLoader.register(getROITextBoxCoords$2, "getROITextBoxCoords", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27822
27773
  reactHotLoader.register(numbersWithCommas$2, "numbersWithCommas", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27823
27774
  reactHotLoader.register(lineSegDistance$5, "lineSegDistance", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27824
- reactHotLoader.register(triggerEvent$3, "triggerEvent", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27825
27775
  reactHotLoader.register(logger$8, "logger", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27826
27776
  reactHotLoader.register(external$k, "external", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27827
27777
  reactHotLoader.register(addToolState$4, "addToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27828
27778
  reactHotLoader.register(toolColors$b, "toolColors", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27829
27779
  reactHotLoader.register(toolStyle$6, "toolStyle", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27830
- reactHotLoader.register(EVENTS$4, "EVENTS", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27780
+ reactHotLoader.register(getToolState$c, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27831
27781
  reactHotLoader.register(PolygonTool, "PolygonTool", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27832
27782
  reactHotLoader.register(calculatePolygonStatistics, "calculatePolygonStatistics", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27833
27783
  reactHotLoader.register(_getPolygonImageCoordinates, "_getPolygonImageCoordinates", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
@@ -27835,7 +27785,7 @@ function getEventButtons(event) {
27835
27785
  reactHotLoader.register(_createTextBoxContent$2, "_createTextBoxContent", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27836
27786
  reactHotLoader.register(formatArea, "formatArea", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27837
27787
  reactHotLoader.register(isInPolygon, "isInPolygon", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27838
- reactHotLoader.register(getEventButtons, "getEventButtons", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27788
+ reactHotLoader.register(_getUnit$2, "_getUnit", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/PolygonTool.js");
27839
27789
  })();
27840
27790
 
27841
27791
  (function () {
@@ -27851,10 +27801,10 @@ function getEventButtons(event) {
27851
27801
  var __signature__$1I = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
27852
27802
  return a;
27853
27803
  };
27854
- var getToolState$c = cornerstoneTools.getToolState;
27804
+ var getToolState$d = cornerstoneTools.getToolState;
27855
27805
 
27856
27806
  var _default$x = function _default(element) {
27857
- var toolData = getToolState$c(element, 'stack');
27807
+ var toolData = getToolState$d(element, 'stack');
27858
27808
 
27859
27809
  if (!toolData || !toolData.data || !toolData.data.length) {
27860
27810
  return;
@@ -27871,7 +27821,7 @@ var _default$x = function _default(element) {
27871
27821
  return;
27872
27822
  }
27873
27823
 
27874
- reactHotLoader.register(getToolState$c, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/getImagesLength.js");
27824
+ reactHotLoader.register(getToolState$d, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/getImagesLength.js");
27875
27825
  reactHotLoader.register(_default$x, "default", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/getImagesLength.js");
27876
27826
  })();
27877
27827
 
@@ -27889,7 +27839,7 @@ var __signature__$1J = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoa
27889
27839
  return a;
27890
27840
  };
27891
27841
  var scrollToIndex$1 = cornerstoneTools.importInternal('util/scrollToIndex');
27892
- var getToolState$d = cornerstoneTools.getToolState;
27842
+ var getToolState$e = cornerstoneTools.getToolState;
27893
27843
  var globalCineTimer;
27894
27844
 
27895
27845
  function startAutoCine(activeElement, options) {
@@ -27901,7 +27851,7 @@ function startAutoCine(activeElement, options) {
27901
27851
  globalCineTimer = null;
27902
27852
  }
27903
27853
 
27904
- var toolData = getToolState$d(activeElement, 'stack');
27854
+ var toolData = getToolState$e(activeElement, 'stack');
27905
27855
 
27906
27856
  if (!toolData || !toolData.data || !toolData.data.length) {
27907
27857
  return;
@@ -27946,7 +27896,7 @@ var _default$y = {
27946
27896
  }
27947
27897
 
27948
27898
  reactHotLoader.register(scrollToIndex$1, "scrollToIndex", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/autoCine.js");
27949
- reactHotLoader.register(getToolState$d, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/autoCine.js");
27899
+ reactHotLoader.register(getToolState$e, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/autoCine.js");
27950
27900
  reactHotLoader.register(globalCineTimer, "globalCineTimer", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/autoCine.js");
27951
27901
  reactHotLoader.register(startAutoCine, "startAutoCine", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/autoCine.js");
27952
27902
  reactHotLoader.register(stopAutoCine, "stopAutoCine", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/custom/autoCine.js");
@@ -28407,7 +28357,7 @@ var _default$A = function _default(synchronizer, sourceElement, targetElement, e
28407
28357
  var __signature__$1M = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
28408
28358
  return a;
28409
28359
  };
28410
- var getToolState$e = cornerstoneTools.getToolState;
28360
+ var getToolState$f = cornerstoneTools.getToolState;
28411
28361
  /**
28412
28362
  * Propogate scrolling actions from the source element to the target element.
28413
28363
  * @export
@@ -28465,7 +28415,7 @@ var _default$B = function _default(synchronizer, sourceElement, targetElement, e
28465
28415
  return;
28466
28416
  }
28467
28417
 
28468
- reactHotLoader.register(getToolState$e, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/synchronization/stackScrollSynchronizer.js");
28418
+ reactHotLoader.register(getToolState$f, "getToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/synchronization/stackScrollSynchronizer.js");
28469
28419
  reactHotLoader.register(_default$B, "default", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/synchronization/stackScrollSynchronizer.js");
28470
28420
  })();
28471
28421
 
@@ -49108,7 +49058,7 @@ function _arrayLikeToArray$b(arr, len) { if (len == null || len > arr.length) le
49108
49058
  var __signature__$31 = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
49109
49059
  return a;
49110
49060
  };
49111
- var triggerEvent$4 = _default$E.importInternal('util/triggerEvent');
49061
+ var triggerEvent$3 = _default$E.importInternal('util/triggerEvent');
49112
49062
  /**
49113
49063
  *
49114
49064
  * 每次click 都会检查, 目前比较损耗性能.
@@ -49141,13 +49091,13 @@ function checkAndUnLockToolState(evt, checkIsSelf) {
49141
49091
  continue;
49142
49092
  }
49143
49093
 
49144
- triggerEvent$4(enabledElement.element, _default$E.EVENTS.MOUSE_UP, {
49094
+ triggerEvent$3(enabledElement.element, _default$E.EVENTS.MOUSE_UP, {
49145
49095
  element: enabledElement.element,
49146
49096
  currentPoints: {
49147
49097
  page: cornerstoneMath.point.pageToPoint(evt)
49148
49098
  },
49149
49099
  image: enabledElement.image,
49150
- buttons: getEventButtons$1(evt)
49100
+ buttons: getEventButtons(evt)
49151
49101
  });
49152
49102
  cornerstone.updateImage(enabledElement.element);
49153
49103
  console.log('---------异常数据, 处理完毕---------');
@@ -49223,7 +49173,7 @@ function getActiveToolStateElement() {
49223
49173
  }
49224
49174
  }
49225
49175
 
49226
- function getEventButtons$1(event) {
49176
+ function getEventButtons(event) {
49227
49177
  if (typeof event.buttons === 'number') {
49228
49178
  return event.buttons;
49229
49179
  }
@@ -49249,6 +49199,52 @@ function getEventButtons$1(event) {
49249
49199
  return 0;
49250
49200
  }
49251
49201
 
49202
+ function autoFinishPolygon() {
49203
+ try {
49204
+ fireKeyEvent(document.body, 'keyup', 27);
49205
+ console.log('---------自动结束多边形绘制---------');
49206
+ } catch (e) {
49207
+ console.log('---------自动结束多边形绘制失败---------', e);
49208
+ }
49209
+ }
49210
+
49211
+ function fireKeyEvent(el, evtType, keyCode) {
49212
+ var doc = el.ownerDocument,
49213
+ win = doc.defaultView || doc.parentWindow,
49214
+ evtObj;
49215
+
49216
+ if (doc.createEvent) {
49217
+ if (win.KeyEvent) {
49218
+ evtObj = doc.createEvent('KeyEvents');
49219
+ evtObj.initKeyEvent(evtType, true, true, win, false, false, false, false, keyCode, 0);
49220
+ } else {
49221
+ evtObj = doc.createEvent('UIEvents');
49222
+ Object.defineProperty(evtObj, 'keyCode', {
49223
+ get: function get() {
49224
+ return this.keyCodeVal;
49225
+ }
49226
+ });
49227
+ Object.defineProperty(evtObj, 'which', {
49228
+ get: function get() {
49229
+ return this.keyCodeVal;
49230
+ }
49231
+ });
49232
+ evtObj.initUIEvent(evtType, true, true, win, 1);
49233
+ evtObj.keyCodeVal = keyCode;
49234
+
49235
+ if (evtObj.keyCode !== keyCode) {
49236
+ console.log("keyCode " + evtObj.keyCode + " 和 (" + evtObj.which + ") 不匹配");
49237
+ }
49238
+ }
49239
+
49240
+ el.dispatchEvent(evtObj);
49241
+ } else if (doc.createEventObject) {
49242
+ evtObj = doc.createEventObject();
49243
+ evtObj.keyCode = keyCode;
49244
+ el.fireEvent('on' + evtType, evtObj);
49245
+ }
49246
+ }
49247
+
49252
49248
  (function () {
49253
49249
  var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
49254
49250
 
@@ -49256,10 +49252,12 @@ function getEventButtons$1(event) {
49256
49252
  return;
49257
49253
  }
49258
49254
 
49259
- reactHotLoader.register(triggerEvent$4, "triggerEvent", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49255
+ reactHotLoader.register(triggerEvent$3, "triggerEvent", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49260
49256
  reactHotLoader.register(checkAndUnLockToolState, "checkAndUnLockToolState", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49261
49257
  reactHotLoader.register(getActiveToolStateElement, "getActiveToolStateElement", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49262
- reactHotLoader.register(getEventButtons$1, "getEventButtons", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49258
+ reactHotLoader.register(getEventButtons, "getEventButtons", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49259
+ reactHotLoader.register(autoFinishPolygon, "autoFinishPolygon", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49260
+ reactHotLoader.register(fireKeyEvent, "fireKeyEvent", "/Users/huyeqing/workspace/chainz/paladin/src/cornerstone-plus/cornerstone-tools-plus/util/unlockToolState.js");
49263
49261
  })();
49264
49262
 
49265
49263
  (function () {
@@ -49794,7 +49792,7 @@ var DicomViewport = /*#__PURE__*/function (_Component) {
49794
49792
  };
49795
49793
  });
49796
49794
 
49797
- defineProperty(assertThisInitialized(_this), "setActiveTool", function (activeTool) {
49795
+ defineProperty(assertThisInitialized(_this), "setActiveTool", function (activeTool, prevTool) {
49798
49796
  var leftMouseToolNames = _this.availableTools.filter(function (tool) {
49799
49797
  if (!tool.mouseButtonMasks) {
49800
49798
  return;
@@ -49846,6 +49844,27 @@ var DicomViewport = /*#__PURE__*/function (_Component) {
49846
49844
  } else {
49847
49845
  _default$E.clearToolState(_this.element, 'CrosshairsMPR');
49848
49846
  }
49847
+ } // 从多边形工具切换到了别的工具,要手动结束掉未完成的绘制
49848
+
49849
+
49850
+ if (prevTool && prevTool === 'Polygon') {
49851
+ var needAutoFinish = false;
49852
+
49853
+ var _toolData = _default$E.getToolState(_this.element, 'Polygon');
49854
+
49855
+ if (_toolData && _toolData.data && _toolData.data.length > 0) {
49856
+ for (var i = 0; i < _toolData.data.length; i++) {
49857
+ if (!_toolData.data[i].complete) {
49858
+ _toolData.data[i].complete = true;
49859
+ needAutoFinish = true;
49860
+ }
49861
+ }
49862
+ }
49863
+
49864
+ if (needAutoFinish) {
49865
+ autoFinishPolygon();
49866
+ cornerstone.updateImage(_this.element);
49867
+ }
49849
49868
  }
49850
49869
  });
49851
49870
 
@@ -50777,7 +50796,7 @@ var DicomViewport = /*#__PURE__*/function (_Component) {
50777
50796
  break;
50778
50797
 
50779
50798
  case prevProps.activeTool !== this.props.activeTool:
50780
- this.setActiveTool(this.props.activeTool);
50799
+ this.setActiveTool(this.props.activeTool, prevProps.activeTool);
50781
50800
  break;
50782
50801
 
50783
50802
  case prevProps.activeIndex !== this.props.activeIndex: