@ohif/app 3.8.0-beta.6 → 3.8.0-beta.61

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.
Files changed (61) hide show
  1. package/dist/{220.bundle.f7e1c96c94245e70f2be.js → 109.bundle.b4fee2a22b622839baf5.js} +4466 -3715
  2. package/dist/{471.bundle.b3d77b83b1593c09a504.js → 121.bundle.ed23e7752a11005322e6.js} +47 -51
  3. package/dist/{19.bundle.f6ac71d29001b0db0ec0.js → 155.bundle.3879b7d76680473fa69f.js} +198 -207
  4. package/dist/{687.bundle.f87fb1a36ef1ca951690.js → 164.bundle.80b2977d58cd927397c2.js} +22 -38
  5. package/dist/17dd54813d5acc10bf8f.wasm +0 -0
  6. package/dist/{506.bundle.06f5c5620d0088ec0102.js → 188.bundle.eca333a03f6b311bf2e6.js} +23 -28
  7. package/dist/191.bundle.4850ab82949bb6f0eb73.js +30339 -0
  8. package/dist/20fc4c659b85ccd2a9c0.wasm +0 -0
  9. package/dist/{126.bundle.cefdf26c03a5ab8d60c8.js → 250.bundle.a02414ebc6fed29530e7.js} +63 -69
  10. package/dist/{236.bundle.3148dc4715c254801727.js → 270.bundle.94f5c172fb943bda1d03.js} +156 -178
  11. package/dist/290.bundle.8b4d7dfbc7cfe418a0f1.js +8883 -0
  12. package/dist/{451.bundle.9fd36f52ff69594f0669.js → 295.bundle.462f3328c716cbe6c613.js} +45 -59
  13. package/dist/{125.bundle.253395f320b72180da63.js → 297.bundle.81d63bb0b66d63df6d86.js} +7 -8
  14. package/dist/{613.bundle.a0eee4dc2d2764c2f7cd.js → 317.bundle.d51f1681f4bdc829be5b.js} +83 -57
  15. package/dist/{788.bundle.af903bf0598f0ad618e3.js → 339.bundle.5691c7bc4504f1e4c3b2.js} +190 -239
  16. package/dist/{202.bundle.d3490836f71e001dd30f.js → 342.bundle.a039c24e9f661f3b884d.js} +544 -860
  17. package/dist/{221.bundle.3f5f700b4c1ee8b1ce94.js → 50.bundle.d3eccf1a90cad61405c0.js} +199 -189
  18. package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 504.bundle.aa165082e2acc5ccf080.js} +14338 -27291
  19. package/dist/{886.bundle.d5116d9b8ea4964b68a0.js → 530.bundle.ce13c30b93a28cc85098.js} +40 -44
  20. package/dist/{250.bundle.8084960e3318cda37317.js → 544.bundle.3cf20da53f349abd8d67.js} +39 -44
  21. package/dist/{663.bundle.e3539f14edf9214e07eb.js → 559.bundle.146b02440e81f9fffea3.js} +149 -141
  22. package/dist/{410.bundle.5e16274b1082de6e127e.js → 594.bundle.76e05b71ad06361c9de9.js} +31 -35
  23. package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 644.bundle.1e77691d2eeb96a423b0.js} +1852 -8945
  24. package/dist/{82.bundle.ae82f6434056c8d79fec.js → 68.bundle.ccbfa216e6d60ce3824f.js} +313 -324
  25. package/dist/{342.bundle.e485b92bd6d91bb7cc04.js → 704.bundle.042323b2cd8a9535050c.js} +1128 -737
  26. package/dist/{359.bundle.dedb5b782335939bdc52.js → 724.bundle.e821b6321fec63b9375a.js} +34 -37
  27. package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 726.bundle.2bdb443d1b5620d74e6e.js} +512 -879
  28. package/dist/{530.bundle.a03b6f942ace3e1baa1e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +37 -30
  29. package/dist/{822.bundle.891f2e57b1b7bc2f4cb4.js → 862.bundle.e3fe2aae7903cc2ae8df.js} +27 -29
  30. package/dist/{181.bundle.2ddc6f90740895a3949c.js → 889.bundle.6850a0b8c412e3befab5.js} +135 -107
  31. package/dist/{181.css → 889.css} +1 -1
  32. package/dist/{281.bundle.e4c37762343dc03e4fa0.js → 905.bundle.806f0e8307eb1c9d1f6e.js} +29 -31
  33. package/dist/{814.bundle.98e400df965d000d78e6.js → 907.bundle.84dba9f6e90672071d82.js} +16 -18
  34. package/dist/{417.bundle.af0a207c29b109f84159.js → 931.bundle.d270a1fda9a2836c3cc5.js} +26 -26
  35. package/dist/{686.bundle.dccef1f36e4bc79bcc48.js → 939.bundle.84ee0b844023d924a22b.js} +7 -8
  36. package/dist/{12.bundle.75c761bd89ad782675c8.js → 961.bundle.80a864ec4e08ed7bb3b7.js} +16 -18
  37. package/dist/{776.bundle.08eb381dc3d06708eb0f.js → 963.bundle.f9511286d05982090a14.js} +1629 -845
  38. package/dist/987.bundle.e7c041a6dfb4ddb41813.js +122926 -0
  39. package/dist/{app.bundle.eeb94536f34535b1153f.js → app.bundle.2399e4eb1c8930ab9c5e.js} +142184 -60944
  40. package/dist/app.bundle.css +11 -11
  41. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  42. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  43. package/dist/{dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
  44. package/dist/index.html +1 -1
  45. package/dist/{index.worker.e62ecca63f1a2e124230.worker.js → index.worker.64c896c4316fcd506666.worker.js} +2 -2
  46. package/dist/index.worker.64c896c4316fcd506666.worker.js.map +1 -0
  47. package/dist/polySeg.bundle.99be036bab9b7f011b0c.js +252 -0
  48. package/dist/serve.json +12 -0
  49. package/dist/sw.js +1 -1
  50. package/package.json +25 -22
  51. package/dist/23.bundle.e008ad788170f2ed5569.js +0 -900
  52. package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
  53. package/dist/743.bundle.489f7df3a089d4d374e1.js +0 -78007
  54. package/dist/75788f12450d4c5ed494.wasm +0 -0
  55. package/dist/775.bundle.2285e7e0e67878948c0d.js +0 -1009
  56. package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
  57. /package/dist/{19.css → 155.css} +0 -0
  58. /package/dist/{579.css → 481.css} +0 -0
  59. /package/dist/{221.css → 50.css} +0 -0
  60. /package/dist/{250.css → 544.css} +0 -0
  61. /package/dist/{776.css → 963.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[181],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[889],{
3
3
 
4
- /***/ 86181:
4
+ /***/ 1889:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -13,22 +13,22 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  });
14
14
 
15
15
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
16
- var react = __webpack_require__(43001);
16
+ var react = __webpack_require__(41766);
17
17
  // EXTERNAL MODULE: ../../../node_modules/react-resize-detector/build/index.esm.js
18
- var index_esm = __webpack_require__(7023);
18
+ var index_esm = __webpack_require__(78668);
19
19
  // EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
20
- var prop_types = __webpack_require__(3827);
20
+ var prop_types = __webpack_require__(11374);
21
21
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
22
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 348 modules
23
- var esm = __webpack_require__(14957);
24
- // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 331 modules
25
- var dist_esm = __webpack_require__(3743);
26
- // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
27
- var src = __webpack_require__(71771);
28
- // EXTERNAL MODULE: ../../ui/src/index.js + 485 modules
29
- var ui_src = __webpack_require__(71783);
22
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/index.js + 16 modules
23
+ var esm = __webpack_require__(20767);
24
+ // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 383 modules
25
+ var dist_esm = __webpack_require__(50719);
26
+ // EXTERNAL MODULE: ../../core/src/index.ts + 66 modules
27
+ var src = __webpack_require__(14283);
28
+ // EXTERNAL MODULE: ../../ui/src/index.js + 487 modules
29
+ var ui_src = __webpack_require__(55395);
30
30
  // EXTERNAL MODULE: ../../../extensions/cornerstone/src/state.ts
31
- var state = __webpack_require__(73704);
31
+ var state = __webpack_require__(71353);
32
32
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.css
33
33
  // extracted by mini-css-extract-plugin
34
34
 
@@ -38,16 +38,15 @@ var state = __webpack_require__(73704);
38
38
 
39
39
 
40
40
 
41
- function CornerstoneImageScrollbar(_ref) {
42
- let {
43
- viewportData,
44
- viewportId,
45
- element,
46
- imageSliceData,
47
- setImageSliceData,
48
- scrollbarHeight,
49
- servicesManager
50
- } = _ref;
41
+ function CornerstoneImageScrollbar({
42
+ viewportData,
43
+ viewportId,
44
+ element,
45
+ imageSliceData,
46
+ setImageSliceData,
47
+ scrollbarHeight,
48
+ servicesManager
49
+ }) {
51
50
  const {
52
51
  cineService,
53
52
  cornerstoneViewportService
@@ -140,7 +139,7 @@ function CornerstoneImageScrollbar(_ref) {
140
139
  element.removeEventListener(dist_esm.Enums.Events.VOLUME_NEW_IMAGE, updateVolumeIndex);
141
140
  };
142
141
  }, [viewportData, element]);
143
- return /*#__PURE__*/react.createElement(ui_src/* ImageScrollbar */.Ln, {
142
+ return /*#__PURE__*/react.createElement(ui_src/* ImageScrollbar */.uq, {
144
143
  onChange: evt => onImageScrollbarChange(evt, viewportId),
145
144
  max: imageSliceData.numberOfSlices ? imageSliceData.numberOfSlices - 1 : 0,
146
145
  height: scrollbarHeight,
@@ -158,9 +157,9 @@ CornerstoneImageScrollbar.propTypes = {
158
157
  };
159
158
  /* harmony default export */ const ViewportImageScrollbar = (CornerstoneImageScrollbar);
160
159
  // EXTERNAL MODULE: ../../../node_modules/gl-matrix/esm/index.js + 10 modules
161
- var gl_matrix_esm = __webpack_require__(45451);
160
+ var gl_matrix_esm = __webpack_require__(83636);
162
161
  // EXTERNAL MODULE: ../../../node_modules/moment/moment.js
163
- var moment = __webpack_require__(71271);
162
+ var moment = __webpack_require__(8291);
164
163
  var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
165
164
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/Viewport/Overlays/utils.ts
166
165
 
@@ -183,8 +182,7 @@ function isValidNumber(value) {
183
182
  * @param {number} precision
184
183
  * @returns {number} formatted number.
185
184
  */
186
- function formatNumberPrecision(number) {
187
- let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
185
+ function formatNumberPrecision(number, precision = 0) {
188
186
  if (number !== null) {
189
187
  return parseFloat(number).toFixed(precision);
190
188
  }
@@ -197,8 +195,7 @@ function formatNumberPrecision(number) {
197
195
  * @param {string} strFormat
198
196
  * @returns {string} formatted date.
199
197
  */
200
- function formatDICOMDate(date) {
201
- let strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';
198
+ function formatDICOMDate(date, strFormat = 'MMM D, YYYY') {
202
199
  return moment_default()(date, 'YYYYMMDD').format(strFormat);
203
200
  }
204
201
 
@@ -215,8 +212,7 @@ function formatDICOMDate(date) {
215
212
  * @param {string} strFormat
216
213
  * @returns {string} formatted name.
217
214
  */
218
- function formatDICOMTime(time) {
219
- let strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';
215
+ function formatDICOMTime(time, strFormat = 'HH:mm:ss') {
220
216
  return moment_default()(time, 'HH:mm:ss').format(strFormat);
221
217
  }
222
218
 
@@ -269,11 +265,10 @@ const EPSILON = 1e-4;
269
265
  /**
270
266
  * Window Level / Center Overlay item
271
267
  */
272
- function VOIOverlayItem(_ref) {
273
- let {
274
- voi,
275
- customization
276
- } = _ref;
268
+ function VOIOverlayItem({
269
+ voi,
270
+ customization
271
+ }) {
277
272
  const {
278
273
  windowWidth,
279
274
  windowCenter
@@ -300,11 +295,10 @@ function VOIOverlayItem(_ref) {
300
295
  /**
301
296
  * Zoom Level Overlay item
302
297
  */
303
- function ZoomOverlayItem(_ref2) {
304
- let {
305
- scale,
306
- customization
307
- } = _ref2;
298
+ function ZoomOverlayItem({
299
+ scale,
300
+ customization
301
+ }) {
308
302
  return /*#__PURE__*/react.createElement("div", {
309
303
  className: "overlay-item flex flex-row",
310
304
  style: {
@@ -320,12 +314,11 @@ function ZoomOverlayItem(_ref2) {
320
314
  /**
321
315
  * Instance Number Overlay Item
322
316
  */
323
- function InstanceNumberOverlayItem(_ref3) {
324
- let {
325
- instanceNumber,
326
- imageSliceData,
327
- customization
328
- } = _ref3;
317
+ function InstanceNumberOverlayItem({
318
+ instanceNumber,
319
+ imageSliceData,
320
+ customization
321
+ }) {
329
322
  const {
330
323
  imageIndex,
331
324
  numberOfSlices
@@ -345,14 +338,13 @@ function InstanceNumberOverlayItem(_ref3) {
345
338
  /**
346
339
  * Customizable Viewport Overlay
347
340
  */
348
- function CustomizableViewportOverlay(_ref4) {
349
- let {
350
- element,
351
- viewportData,
352
- imageSliceData,
353
- viewportId,
354
- servicesManager
355
- } = _ref4;
341
+ function CustomizableViewportOverlay({
342
+ element,
343
+ viewportData,
344
+ imageSliceData,
345
+ viewportId,
346
+ servicesManager
347
+ }) {
356
348
  const {
357
349
  toolbarService,
358
350
  cornerstoneViewportService,
@@ -535,7 +527,7 @@ function CustomizableViewportOverlay(_ref4) {
535
527
  key: `bottomRightOverlayItem_${i}`
536
528
  }, _renderOverlayItem(item))));
537
529
  }, [bottomRightCustomization, _renderOverlayItem]);
538
- return /*#__PURE__*/react.createElement(ui_src/* ViewportOverlay */.No, {
530
+ return /*#__PURE__*/react.createElement(ui_src/* ViewportOverlay */.pU, {
539
531
  topLeft: getTopLeftContent(),
540
532
  topRight: getTopRightContent(),
541
533
  bottomLeft: getBottomLeftContent(),
@@ -612,8 +604,8 @@ function _getInstanceNumberFromVolume(viewportData, viewportId, cornerstoneViewp
612
604
  const scanAxisNormal = direction.slice(6, 9);
613
605
 
614
606
  // check if viewPlaneNormal is parallel to scanAxisNormal
615
- const cross = gl_matrix_esm/* vec3.cross */.R3.cross(gl_matrix_esm/* vec3.create */.R3.create(), viewPlaneNormal, scanAxisNormal);
616
- const isAcquisitionPlane = gl_matrix_esm/* vec3.length */.R3.length(cross) < EPSILON;
607
+ const cross = gl_matrix_esm/* vec3.cross */.eR.cross(gl_matrix_esm/* vec3.create */.eR.create(), viewPlaneNormal, scanAxisNormal);
608
+ const isAcquisitionPlane = gl_matrix_esm/* vec3.length */.eR.length(cross) < EPSILON;
617
609
  if (isAcquisitionPlane) {
618
610
  const imageId = imageIds[imageIndex];
619
611
  if (!imageId) {
@@ -632,7 +624,7 @@ CustomizableViewportOverlay.propTypes = {
632
624
  };
633
625
  /* harmony default export */ const Overlays_CustomizableViewportOverlay = (CustomizableViewportOverlay);
634
626
  // EXTERNAL MODULE: ../../../node_modules/classnames/index.js
635
- var classnames = __webpack_require__(44921);
627
+ var classnames = __webpack_require__(61466);
636
628
  var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
637
629
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.css
638
630
  // extracted by mini-css-extract-plugin
@@ -649,15 +641,14 @@ const {
649
641
  getOrientationStringLPS,
650
642
  invertOrientationStringLPS
651
643
  } = esm.utilities.orientation;
652
- function ViewportOrientationMarkers(_ref) {
653
- let {
654
- element,
655
- viewportData,
656
- imageSliceData,
657
- viewportId,
658
- servicesManager,
659
- orientationMarkers = ['top', 'left']
660
- } = _ref;
644
+ function ViewportOrientationMarkers({
645
+ element,
646
+ viewportData,
647
+ imageSliceData,
648
+ viewportId,
649
+ servicesManager,
650
+ orientationMarkers = ['top', 'left']
651
+ }) {
661
652
  // Rotation is in degrees
662
653
  const [rotation, setRotation] = (0,react.useState)(0);
663
654
  const [flipHorizontal, setFlipHorizontal] = (0,react.useState)(false);
@@ -715,8 +706,8 @@ function ViewportOrientationMarkers(_ref) {
715
706
  viewUp,
716
707
  viewPlaneNormal
717
708
  } = viewport.getCamera();
718
- const viewRight = gl_matrix_esm/* vec3.create */.R3.create();
719
- gl_matrix_esm/* vec3.cross */.R3.cross(viewRight, viewUp, viewPlaneNormal);
709
+ const viewRight = gl_matrix_esm/* vec3.create */.eR.create();
710
+ gl_matrix_esm/* vec3.cross */.eR.cross(viewRight, viewUp, viewPlaneNormal);
720
711
  columnCosines = [-viewUp[0], -viewUp[1], -viewUp[2]];
721
712
  rowCosines = viewRight;
722
713
  }
@@ -818,11 +809,10 @@ function _getOrientationMarkers(rowCosines, columnCosines, rotation, flipVertica
818
809
 
819
810
 
820
811
 
821
- function ViewportImageSliceLoadingIndicator(_ref) {
822
- let {
823
- viewportData,
824
- element
825
- } = _ref;
812
+ function ViewportImageSliceLoadingIndicator({
813
+ viewportData,
814
+ element
815
+ }) {
826
816
  const [loading, setLoading] = (0,react.useState)(false);
827
817
  const [error, setError] = (0,react.useState)(false);
828
818
  const loadIndicatorRef = (0,react.useRef)(null);
@@ -961,20 +951,19 @@ function CornerstoneOverlays(props) {
961
951
  }
962
952
  /* harmony default export */ const Overlays_CornerstoneOverlays = (CornerstoneOverlays);
963
953
  // EXTERNAL MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js
964
- var getSOPInstanceAttributes = __webpack_require__(87172);
954
+ var getSOPInstanceAttributes = __webpack_require__(1663);
965
955
  // EXTERNAL MODULE: ./state/index.js + 1 modules
966
- var state_0 = __webpack_require__(62657);
956
+ var state_0 = __webpack_require__(15575);
967
957
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/components/CinePlayer/CinePlayer.tsx
968
958
 
969
959
 
970
960
 
971
961
 
972
- function WrappedCinePlayer(_ref) {
973
- let {
974
- enabledVPElement,
975
- viewportId,
976
- servicesManager
977
- } = _ref;
962
+ function WrappedCinePlayer({
963
+ enabledVPElement,
964
+ viewportId,
965
+ servicesManager
966
+ }) {
978
967
  const {
979
968
  toolbarService,
980
969
  customizationService,
@@ -985,11 +974,11 @@ function WrappedCinePlayer(_ref) {
985
974
  const [{
986
975
  isCineEnabled,
987
976
  cines
988
- }] = (0,ui_src/* useCine */.vQ)();
977
+ }] = (0,ui_src/* useCine */.tq)();
989
978
  const [newStackFrameRate, setNewStackFrameRate] = (0,react.useState)(24);
990
- const [appConfig] = (0,state_0/* useAppConfig */.M)();
979
+ const [appConfig] = (0,state_0/* useAppConfig */.r)();
991
980
  const {
992
- component: CinePlayerComponent = ui_src/* CinePlayer */.H6
981
+ component: CinePlayerComponent = ui_src/* CinePlayer */.F0
993
982
  } = customizationService.get('cinePlayer') ?? {};
994
983
  const handleCineClose = () => {
995
984
  toolbarService.recordInteraction({
@@ -1166,7 +1155,6 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1166
1155
  viewportOptions,
1167
1156
  displaySetOptions,
1168
1157
  servicesManager,
1169
- commandsManager,
1170
1158
  onElementEnabled,
1171
1159
  onElementDisabled,
1172
1160
  isJumpToMeasurementDisabled,
@@ -1190,7 +1178,7 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1190
1178
  viewportGridService,
1191
1179
  stateSyncService
1192
1180
  } = servicesManager.services;
1193
- const [viewportDialogState] = (0,ui_src/* useViewportDialog */.en)();
1181
+ const [viewportDialogState] = (0,ui_src/* useViewportDialog */.OR)();
1194
1182
  // useCallback for scroll bar height calculation
1195
1183
  const setImageScrollBarHeight = (0,react.useCallback)(() => {
1196
1184
  const scrollbarHeight = `${elementRef.current.clientHeight - 20}px`;
@@ -1220,13 +1208,18 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1220
1208
  element
1221
1209
  } = evt.detail;
1222
1210
  const viewportInfo = cornerstoneViewportService.getViewportInfo(viewportId);
1223
- (0,state/* setEnabledElement */.Yc)(viewportId, element);
1211
+ (0,state/* setEnabledElement */.ye)(viewportId, element);
1224
1212
  setEnabledVPElement(element);
1225
1213
  const renderingEngineId = viewportInfo.getRenderingEngineId();
1226
1214
  const toolGroupId = viewportInfo.getToolGroupId();
1227
1215
  const syncGroups = viewportInfo.getSyncGroups();
1228
1216
  toolGroupService.addViewportToToolGroup(viewportId, renderingEngineId, toolGroupId);
1229
1217
  syncGroupService.addViewportToSyncGroup(viewportId, renderingEngineId, syncGroups);
1218
+ const synchronizersStore = stateSyncService.getState().synchronizersStore;
1219
+ if (synchronizersStore?.[viewportId]?.length) {
1220
+ // If the viewport used to have a synchronizer, re apply it again
1221
+ _rehydrateSynchronizers(synchronizersStore, viewportId, syncGroupService);
1222
+ }
1230
1223
  if (onElementEnabled) {
1231
1224
  onElementEnabled(evt);
1232
1225
  }
@@ -1242,13 +1235,17 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1242
1235
  if (!viewportInfo) {
1243
1236
  return;
1244
1237
  }
1245
- cleanUpServices(viewportInfo);
1246
1238
  cornerstoneViewportService.storePresentation({
1247
1239
  viewportId
1248
1240
  });
1241
+
1242
+ // This should be done after the store presentation since synchronizers
1243
+ // will get cleaned up and they need the viewportInfo to be present
1244
+ cleanUpServices(viewportInfo);
1249
1245
  if (onElementDisabled) {
1250
1246
  onElementDisabled(viewportInfo);
1251
1247
  }
1248
+ cornerstoneViewportService.disableElement(viewportId);
1252
1249
  dist_esm.eventTarget.removeEventListener(dist_esm.Enums.Events.ELEMENT_ENABLED, elementEnabledHandler);
1253
1250
  };
1254
1251
  }, []);
@@ -1264,11 +1261,10 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1264
1261
  (0,react.useEffect)(() => {
1265
1262
  const {
1266
1263
  unsubscribe
1267
- } = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, async _ref => {
1268
- let {
1269
- displaySetInstanceUID: invalidatedDisplaySetInstanceUID,
1270
- invalidateData
1271
- } = _ref;
1264
+ } = displaySetService.subscribe(displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, async ({
1265
+ displaySetInstanceUID: invalidatedDisplaySetInstanceUID,
1266
+ invalidateData
1267
+ }) => {
1272
1268
  if (!invalidateData) {
1273
1269
  return;
1274
1270
  }
@@ -1295,10 +1291,9 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1295
1291
  // The presentation state will have been stored previously by closing
1296
1292
  // a viewport. Otherwise, this viewport will be unchanged and the
1297
1293
  // presentation information will be directly carried over.
1298
- const {
1299
- lutPresentationStore,
1300
- positionPresentationStore
1301
- } = stateSyncService.getState();
1294
+ const state = stateSyncService.getState();
1295
+ const lutPresentationStore = state.lutPresentationStore;
1296
+ const positionPresentationStore = state.positionPresentationStore;
1302
1297
  const {
1303
1298
  presentationIds
1304
1299
  } = viewportOptions;
@@ -1353,10 +1348,7 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1353
1348
  }, [displaySets, elementRef, viewportId]);
1354
1349
  return /*#__PURE__*/react.createElement(react.Fragment, null, /*#__PURE__*/react.createElement("div", {
1355
1350
  className: "viewport-wrapper"
1356
- }, /*#__PURE__*/react.createElement(index_esm/* default */.ZP, {
1357
- refreshMode: "debounce",
1358
- refreshRate: 50 // Wait 50 ms after last move to render
1359
- ,
1351
+ }, /*#__PURE__*/react.createElement(index_esm/* default */.Ay, {
1360
1352
  onResize: onResize,
1361
1353
  targetRef: elementRef.current
1362
1354
  }), /*#__PURE__*/react.createElement("div", {
@@ -1380,7 +1372,7 @@ const OHIFCornerstoneViewport = /*#__PURE__*/react.memo(props => {
1380
1372
  servicesManager: servicesManager
1381
1373
  })), /*#__PURE__*/react.createElement("div", {
1382
1374
  className: "absolute w-full"
1383
- }, viewportDialogState.viewportId === viewportId && /*#__PURE__*/react.createElement(ui_src/* Notification */.P_, {
1375
+ }, viewportDialogState.viewportId === viewportId && /*#__PURE__*/react.createElement(ui_src/* Notification */.Eg, {
1384
1376
  id: "viewport-notification",
1385
1377
  message: viewportDialogState.message,
1386
1378
  type: viewportDialogState.type,
@@ -1470,7 +1462,7 @@ function _jumpToMeasurement(measurement, targetElementRef, viewportId, measureme
1470
1462
  const {
1471
1463
  SOPInstanceUID: aSOPInstanceUID,
1472
1464
  frameNumber: aFrameNumber
1473
- } = (0,getSOPInstanceAttributes/* default */.Z)(imageId);
1465
+ } = (0,getSOPInstanceAttributes/* default */.A)(imageId);
1474
1466
  return aSOPInstanceUID === SOPInstanceUID && (!frameNumber || frameNumber === aFrameNumber);
1475
1467
  });
1476
1468
  } else {
@@ -1501,6 +1493,42 @@ function _jumpToMeasurement(measurement, targetElementRef, viewportId, measureme
1501
1493
  cacheJumpToMeasurementEvent = null;
1502
1494
  }
1503
1495
  }
1496
+ function _rehydrateSynchronizers(synchronizersStore, viewportId, syncGroupService) {
1497
+ synchronizersStore[viewportId].forEach(synchronizerObj => {
1498
+ if (!synchronizerObj.id) {
1499
+ return;
1500
+ }
1501
+ const {
1502
+ id,
1503
+ sourceViewports,
1504
+ targetViewports
1505
+ } = synchronizerObj;
1506
+ const synchronizer = syncGroupService.getSynchronizer(id);
1507
+ if (!synchronizer) {
1508
+ return;
1509
+ }
1510
+ const sourceViewportInfo = sourceViewports.find(sourceViewport => sourceViewport.viewportId === viewportId);
1511
+ const targetViewportInfo = targetViewports.find(targetViewport => targetViewport.viewportId === viewportId);
1512
+ const isSourceViewportInSynchronizer = synchronizer.getSourceViewports().find(sourceViewport => sourceViewport.viewportId === viewportId);
1513
+ const isTargetViewportInSynchronizer = synchronizer.getTargetViewports().find(targetViewport => targetViewport.viewportId === viewportId);
1514
+
1515
+ // if the viewport was previously a source viewport, add it again
1516
+ if (sourceViewportInfo && !isSourceViewportInSynchronizer) {
1517
+ synchronizer.addSource({
1518
+ viewportId: sourceViewportInfo.viewportId,
1519
+ renderingEngineId: sourceViewportInfo.renderingEngineId
1520
+ });
1521
+ }
1522
+
1523
+ // if the viewport was previously a target viewport, add it again
1524
+ if (targetViewportInfo && !isTargetViewportInSynchronizer) {
1525
+ synchronizer.addTarget({
1526
+ viewportId: targetViewportInfo.viewportId,
1527
+ renderingEngineId: targetViewportInfo.renderingEngineId
1528
+ });
1529
+ }
1530
+ });
1531
+ }
1504
1532
 
1505
1533
  // Component displayName
1506
1534
  OHIFCornerstoneViewport.displayName = 'OHIFCornerstoneViewport';
@@ -1,3 +1,3 @@
1
- .viewport-wrapper{height:100%;position:relative;width:100%}.cornerstone-viewport-element{background-color:#000;height:100%;outline:0!important;overflow:hidden;position:relative;width:100%}
1
+ .cornerstone-viewport-element,.viewport-wrapper{height:100%;position:relative;width:100%}.cornerstone-viewport-element{background-color:#000;outline:0!important;overflow:hidden}
2
2
  .viewport-overlay{max-width:40%}.viewport-overlay span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewport-overlay.left-viewport{text-align:left}.viewport-overlay.right-viewport-scrollbar{text-align:right}.viewport-overlay.right-viewport-scrollbar .flex.flex-row{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}
3
3
  .ViewportOrientationMarkers{--marker-width:100px;--marker-height:100px;--scrollbar-width:20px;font-size:15px;line-height:18px;pointer-events:none}.ViewportOrientationMarkers .orientation-marker{position:absolute}.ViewportOrientationMarkers .top-mid{left:50%;top:.6rem}.ViewportOrientationMarkers .left-mid{left:5px;top:47%}.ViewportOrientationMarkers .right-mid{left:calc(100% - var(--marker-width) - var(--scrollbar-width));top:47%}.ViewportOrientationMarkers .bottom-mid{left:47%;top:calc(100% - var(--marker-height) - .6rem)}.ViewportOrientationMarkers .right-mid .orientation-marker-value{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;min-width:var(--marker-width)}.ViewportOrientationMarkers .bottom-mid .orientation-marker-value{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;min-height:var(--marker-height)}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[281],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[905],{
3
3
 
4
- /***/ 42281:
4
+ /***/ 81905:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -13,13 +13,15 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  "default": () => (/* binding */ microscopy_src)
14
14
  });
15
15
 
16
- // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
17
- var src = __webpack_require__(71771);
16
+ // EXTERNAL MODULE: ../../core/src/index.ts + 66 modules
17
+ var src = __webpack_require__(14283);
18
+ // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
19
+ var i18next = __webpack_require__(92344);
18
20
  ;// CONCATENATED MODULE: ../../../modes/microscopy/package.json
19
- const package_namespaceObject = JSON.parse('{"u2":"@ohif/mode-microscopy"}');
21
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/mode-microscopy"}');
20
22
  ;// CONCATENATED MODULE: ../../../modes/microscopy/src/id.js
21
23
 
22
- const id = package_namespaceObject.u2;
24
+ const id = package_namespaceObject.UU;
23
25
 
24
26
  ;// CONCATENATED MODULE: ../../../modes/microscopy/src/toolbarButtons.js
25
27
  // TODO: torn, can either bake this here; or have to create a whole new button type
@@ -133,6 +135,7 @@ const toolbarButtons = [
133
135
 
134
136
 
135
137
 
138
+
136
139
  const ohif = {
137
140
  layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',
138
141
  sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',
@@ -160,25 +163,23 @@ const extensionDependencies = {
160
163
  '@ohif/extension-dicom-video': '^3.0.1',
161
164
  '@ohif/extension-dicom-microscopy': '^3.0.0'
162
165
  };
163
- function modeFactory(_ref) {
164
- let {
165
- modeConfiguration
166
- } = _ref;
166
+ function modeFactory({
167
+ modeConfiguration
168
+ }) {
167
169
  return {
168
170
  // TODO: We're using this as a route segment
169
171
  // We should not be.
170
172
  id: id,
171
173
  routeName: 'microscopy',
172
- displayName: 'Microscopy',
174
+ displayName: i18next/* default */.A.t('Modes:Microscopy'),
173
175
  /**
174
176
  * Lifecycle hooks
175
177
  */
176
- onModeEnter: _ref2 => {
177
- let {
178
- servicesManager,
179
- extensionManager,
180
- commandsManager
181
- } = _ref2;
178
+ onModeEnter: ({
179
+ servicesManager,
180
+ extensionManager,
181
+ commandsManager
182
+ }) => {
182
183
  const {
183
184
  toolbarService
184
185
  } = servicesManager.services;
@@ -186,10 +187,9 @@ function modeFactory(_ref) {
186
187
  toolbarService.addButtons(src_toolbarButtons);
187
188
  toolbarService.createButtonSection('primary', ['MeasurementTools', 'dragPan']);
188
189
  },
189
- onModeExit: _ref3 => {
190
- let {
191
- servicesManager
192
- } = _ref3;
190
+ onModeExit: ({
191
+ servicesManager
192
+ }) => {
193
193
  const {
194
194
  toolbarService
195
195
  } = servicesManager.services;
@@ -199,10 +199,9 @@ function modeFactory(_ref) {
199
199
  study: [],
200
200
  series: []
201
201
  },
202
- isValidMode: _ref4 => {
203
- let {
204
- modalities
205
- } = _ref4;
202
+ isValidMode: ({
203
+ modalities
204
+ }) => {
206
205
  const modalities_list = modalities.split('\\');
207
206
 
208
207
  // Slide Microscopy and ECG modality not supported by basic mode yet
@@ -213,11 +212,10 @@ function modeFactory(_ref) {
213
212
  /*init: ({ servicesManager, extensionManager }) => {
214
213
  //defaultViewerRouteInit
215
214
  },*/
216
- layoutTemplate: _ref5 => {
217
- let {
218
- location,
219
- servicesManager
220
- } = _ref5;
215
+ layoutTemplate: ({
216
+ location,
217
+ servicesManager
218
+ }) => {
221
219
  return {
222
220
  id: ohif.layout,
223
221
  props: {
@@ -249,7 +247,7 @@ function modeFactory(_ref) {
249
247
  // general handler needs to come last. For this case, the dicomvideo must
250
248
  // come first to remove video transfer syntax before ohif uses images
251
249
  sopClassHandlers: ['@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySopClassHandler', '@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySRSopClassHandler', dicomvideo.sopClassHandler, dicompdf.sopClassHandler],
252
- hotkeys: [...src/* hotkeys */.dD.defaults.hotkeyBindings],
250
+ hotkeys: [...src/* hotkeys */.ot.defaults.hotkeyBindings],
253
251
  ...modeConfiguration
254
252
  };
255
253
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[814],{
2
+ (globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[907],{
3
3
 
4
- /***/ 92814:
4
+ /***/ 55907:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -13,16 +13,16 @@ __webpack_require__.d(__webpack_exports__, {
13
13
  });
14
14
 
15
15
  // EXTERNAL MODULE: ../../../node_modules/react/index.js
16
- var react = __webpack_require__(43001);
16
+ var react = __webpack_require__(41766);
17
17
  ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/package.json
18
- const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-dicom-pdf"}');
18
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/extension-dicom-pdf"}');
19
19
  ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/id.js
20
20
 
21
- const id = package_namespaceObject.u2;
21
+ const id = package_namespaceObject.UU;
22
22
  const SOPClassHandlerId = `${id}.sopClassHandlerModule.dicom-pdf`;
23
23
 
24
- // EXTERNAL MODULE: ../../core/src/index.ts + 65 modules
25
- var src = __webpack_require__(71771);
24
+ // EXTERNAL MODULE: ../../core/src/index.ts + 66 modules
25
+ var src = __webpack_require__(14283);
26
26
  ;// CONCATENATED MODULE: ../../../extensions/dicom-pdf/src/getSopClassHandlerModule.js
27
27
 
28
28
 
@@ -90,11 +90,10 @@ const _getDisplaySetsFromSeries = (instances, servicesManager, extensionManager)
90
90
  return displaySet;
91
91
  });
92
92
  };
93
- function getSopClassHandlerModule(_ref) {
94
- let {
95
- servicesManager,
96
- extensionManager
97
- } = _ref;
93
+ function getSopClassHandlerModule({
94
+ servicesManager,
95
+ extensionManager
96
+ }) {
98
97
  const getDisplaySetsFromSeries = instances => {
99
98
  return _getDisplaySetsFromSeries(instances, servicesManager, extensionManager);
100
99
  };
@@ -110,7 +109,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
110
109
 
111
110
 
112
111
  const Component = /*#__PURE__*/react.lazy(() => {
113
- return __webpack_require__.e(/* import() */ 125).then(__webpack_require__.bind(__webpack_require__, 39125));
112
+ return __webpack_require__.e(/* import() */ 297).then(__webpack_require__.bind(__webpack_require__, 46297));
114
113
  });
115
114
  const OHIFCornerstonePdfViewport = props => {
116
115
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -132,11 +131,10 @@ const dicomPDFExtension = {
132
131
  * @param {object} [configuration={}]
133
132
  * @param {object|array} [configuration.csToolsConfig] - Passed directly to `initCornerstoneTools`
134
133
  */
135
- getViewportModule(_ref) {
136
- let {
137
- servicesManager,
138
- extensionManager
139
- } = _ref;
134
+ getViewportModule({
135
+ servicesManager,
136
+ extensionManager
137
+ }) {
140
138
  const ExtendedOHIFCornerstonePdfViewport = props => {
141
139
  return /*#__PURE__*/react.createElement(OHIFCornerstonePdfViewport, _extends({
142
140
  servicesManager: servicesManager,