@ohif/app 3.10.0-beta.69 → 3.10.0-beta.70

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 (26) hide show
  1. package/dist/{1394.bundle.d19f0a0deb8a73c8fefd.js → 1394.bundle.1a453834d06334cef67f.js} +4 -4
  2. package/dist/{4834.bundle.367db81c87eeb401e656.js → 4834.bundle.49abf3aa79c4997b4b0e.js} +2 -0
  3. package/dist/{5247.bundle.db088038874e41000468.js → 5247.bundle.90fabd86036d59556d50.js} +2 -2
  4. package/dist/{6027.bundle.0e0854c3f867f5e7f02c.js → 6027.bundle.eb3f3ec47661a86d0fec.js} +2 -0
  5. package/dist/{6925.bundle.55d26c569ab76e06359b.js → 6925.bundle.41ea5717e0d6374935af.js} +2 -2
  6. package/dist/{7197.bundle.a6cd0d7b57ccbfbaa4ef.js → 7197.bundle.728479d2fa3c04cdbd48.js} +2 -2
  7. package/dist/{7955.bundle.c4ce2e5172462f80c452.js → 7955.bundle.04aef52ad63c3c407657.js} +2 -0
  8. package/dist/{8008.bundle.02e4aad2abe7339284c5.js → 8008.bundle.c5dfef69ca623e291f85.js} +2 -0
  9. package/dist/{8228.bundle.cd7fee1b0b4b230de88f.js → 8228.bundle.acc58a15955327766ded.js} +2 -2
  10. package/dist/{8259.bundle.f990309d26067a952af4.js → 8259.bundle.de3a8dd3ec5caac634f6.js} +2 -0
  11. package/dist/{8558.bundle.842c0850e1f3d2cf4f5d.js → 8558.bundle.70268b078cd338afe0e7.js} +1 -1
  12. package/dist/{265.bundle.4fbbcbfef613fe7759c0.js → 8836.bundle.a286b662d44377751f02.js} +105 -72
  13. package/dist/{9551.bundle.fb487aea1dde51b9702b.js → 9551.bundle.7bc33b964167fbd1abcc.js} +2 -0
  14. package/dist/{app.bundle.19142a3c1d1d46df8ab9.js → app.bundle.8880622a87f97803bb29.js} +115 -93
  15. package/dist/app.bundle.css +2 -2
  16. package/dist/index.html +1 -1
  17. package/dist/sw.js +1 -1
  18. package/package.json +18 -18
  19. /package/dist/{1266.bundle.ca0512f0bb0bec2d9fac.js → 1266.bundle.8d389257e128721104b3.js} +0 -0
  20. /package/dist/{213.bundle.8341172ec7418451b405.js → 213.bundle.99dfdcf47c09b6626045.js} +0 -0
  21. /package/dist/{2424.bundle.c3aa452135cf074c3e6c.js → 2424.bundle.94a7d8dd48e442133c12.js} +0 -0
  22. /package/dist/{2825.bundle.f69ab8ec1e265a2f4329.js → 2825.bundle.1b51c458d1b3bc3b8a63.js} +0 -0
  23. /package/dist/{3198.bundle.12acc53c486af9cf73f8.js → 3198.bundle.fca913f3a4db16d6dd8a.js} +0 -0
  24. /package/dist/{5139.bundle.3c95ad50c088b68f45b0.js → 5139.bundle.cfef26d113e0c53131b8.js} +0 -0
  25. /package/dist/{5770.bundle.b5e26399b2d476fe68d4.js → 5770.bundle.ceecf8ad567ca6fa54de.js} +0 -0
  26. /package/dist/{7013.bundle.69c0c9a409b9691bc22d.js → 7013.bundle.399115d1b79fd6e4fc28.js} +0 -0
@@ -22,8 +22,8 @@ var es = __webpack_require__(70574);
22
22
  var react_es = __webpack_require__(95261);
23
23
  // EXTERNAL MODULE: ../../ui-next/src/index.ts + 2624 modules
24
24
  var src = __webpack_require__(18817);
25
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 120 modules
26
- var default_src = __webpack_require__(90265);
25
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 121 modules
26
+ var default_src = __webpack_require__(8836);
27
27
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js
28
28
 
29
29
  const RESPONSE = {
@@ -1168,8 +1168,8 @@ var src = __webpack_require__(10532);
1168
1168
  var ui_src = __webpack_require__(32907);
1169
1169
  // EXTERNAL MODULE: ../../ui-next/src/index.ts + 2624 modules
1170
1170
  var ui_next_src = __webpack_require__(18817);
1171
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 120 modules
1172
- var default_src = __webpack_require__(90265);
1171
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 121 modules
1172
+ var default_src = __webpack_require__(8836);
1173
1173
  ;// CONCATENATED MODULE: ../../../extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/constants/actionIcons.ts
1174
1174
  const defaultActionIcons = [{
1175
1175
  id: 'settings',
@@ -266,11 +266,13 @@ function modeFactory({
266
266
  id: ohif.layout,
267
267
  props: {
268
268
  leftPanels: [ohif.leftPanel],
269
+ leftPanelResizable: true,
269
270
  leftPanelClosed: true,
270
271
  // we have problem with rendering thumbnails for microscopy images
271
272
  rightPanelClosed: true,
272
273
  // we do not have the save microscopy measurements yet
273
274
  rightPanels: ['@ohif/extension-dicom-microscopy.panelModule.measure'],
275
+ rightPanelResizable: true,
274
276
  viewports: [{
275
277
  namespace: '@ohif/extension-dicom-microscopy.viewportModule.microscopy-dicom',
276
278
  displaySetsToDisplay: [
@@ -1381,8 +1381,8 @@ MicroscopyService.REGISTRATION = servicesManager => {
1381
1381
 
1382
1382
  // EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
1383
1383
  var dcmjs_es = __webpack_require__(5842);
1384
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 120 modules
1385
- var default_src = __webpack_require__(90265);
1384
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 121 modules
1385
+ var default_src = __webpack_require__(8836);
1386
1386
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/utils/DEVICE_OBSERVER_UID.js
1387
1387
  // We need to define a UID for this extension as a device, and it should be the same for all saves:
1388
1388
 
@@ -390,7 +390,9 @@ function modeFactory({
390
390
  props: {
391
391
  // TODO: Should be optional, or required to pass empty array for slots?
392
392
  leftPanels: [ohif.thumbnailList],
393
+ leftPanelResizable: true,
393
394
  rightPanels: [ohif.measurements],
395
+ rightPanelResizable: true,
394
396
  viewports: [{
395
397
  namespace: cs3d.viewport,
396
398
  displaySetsToDisplay: [ohif.sopClassHandler]
@@ -970,8 +970,8 @@ function initWADOImageLoader(userAuthenticationService, appConfig, extensionMana
970
970
  function destroy() {
971
971
  console.debug('Destroying WADO Image Loader');
972
972
  }
973
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 120 modules
974
- var default_src = __webpack_require__(90265);
973
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 121 modules
974
+ var default_src = __webpack_require__(8836);
975
975
  // EXTERNAL MODULE: ../../../extensions/cornerstone/src/state.ts
976
976
  var state = __webpack_require__(71353);
977
977
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/getActiveViewportEnabledElement.ts
@@ -345,8 +345,8 @@ function getHangingProtocolModule() {
345
345
  }
346
346
  /* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
347
347
 
348
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 120 modules
349
- var default_src = __webpack_require__(90265);
348
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 121 modules
349
+ var default_src = __webpack_require__(8836);
350
350
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Filters/General/ImageMarchingSquares.js + 2 modules
351
351
  var ImageMarchingSquares = __webpack_require__(38993);
352
352
  // EXTERNAL MODULE: ../../../node_modules/@kitware/vtk.js/Common/Core/DataArray.js
@@ -777,7 +777,9 @@ function modeFactory({
777
777
  id: ohif.layout,
778
778
  props: {
779
779
  leftPanels: [[src_dynamicVolume.leftPanel, src_cornerstone.activeViewportWindowLevel]],
780
+ leftPanelResizable: true,
780
781
  rightPanels: [],
782
+ rightPanelResizable: true,
781
783
  rightPanelClosed: true,
782
784
  viewports: [{
783
785
  namespace: src_cornerstone.viewport,
@@ -782,7 +782,9 @@ function modeFactory({
782
782
  id: ohif.layout,
783
783
  props: {
784
784
  leftPanels: [ohif.leftPanel],
785
+ leftPanelResizable: true,
785
786
  rightPanels: [cornerstone.panelTool],
787
+ rightPanelResizable: true,
786
788
  // leftPanelClosed: true,
787
789
  viewports: [{
788
790
  namespace: cornerstone.viewport,
@@ -19,8 +19,8 @@ var prop_types = __webpack_require__(97598);
19
19
  var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
20
20
  // EXTERNAL MODULE: ../../ui/src/index.js + 691 modules
21
21
  var src = __webpack_require__(32907);
22
- // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 120 modules
23
- var default_src = __webpack_require__(90265);
22
+ // EXTERNAL MODULE: ../../../extensions/default/src/index.ts + 121 modules
23
+ var default_src = __webpack_require__(8836);
24
24
  ;// CONCATENATED MODULE: ../../../extensions/dicom-microscopy/src/DicomMicroscopyViewport.css
25
25
  // extracted by mini-css-extract-plugin
26
26
 
@@ -852,8 +852,10 @@ function modeFactory() {
852
852
  // leftPanels: [ohif.thumbnailList],
853
853
  // rightPanels: [dicomSeg.panel, ohif.measurements],
854
854
  leftPanels: [tracked.thumbnailList],
855
+ leftPanelResizable: true,
855
856
  // Can use cornerstone.measurements for all measurements
856
857
  rightPanels: [cornerstone.panel, tracked.measurements, cornerstone.measurements],
858
+ rightPanelResizable: true,
857
859
  // rightPanelClosed: true, // optional prop to start with collapse panels
858
860
  viewports: [{
859
861
  namespace: tracked.viewport,
@@ -740,7 +740,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
740
740
 
741
741
 
742
742
  const Component = /*#__PURE__*/react.lazy(() => {
743
- return Promise.all(/* import() */[__webpack_require__.e(5038), __webpack_require__.e(3864), __webpack_require__.e(3334), __webpack_require__.e(265), __webpack_require__.e(6925), __webpack_require__.e(4438)]).then(__webpack_require__.bind(__webpack_require__, 23121));
743
+ return Promise.all(/* import() */[__webpack_require__.e(5038), __webpack_require__.e(3864), __webpack_require__.e(3334), __webpack_require__.e(8836), __webpack_require__.e(6925), __webpack_require__.e(4438)]).then(__webpack_require__.bind(__webpack_require__, 23121));
744
744
  });
745
745
  const OHIFCornerstoneRTViewport = props => {
746
746
  return /*#__PURE__*/react.createElement(react.Suspense, {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- (self["webpackChunk"] = self["webpackChunk"] || []).push([[265],{
2
+ (self["webpackChunk"] = self["webpackChunk"] || []).push([[8836],{
3
3
 
4
- /***/ 90265:
4
+ /***/ 8836:
5
5
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
6
 
7
7
  // ESM COMPAT FLAG
@@ -3051,8 +3051,8 @@ function ViewerHeader({
3051
3051
  hotkeyDefinitions,
3052
3052
  hotkeyDefaults
3053
3053
  } = hotkeysManager;
3054
- const versionNumber = "3.10.0-beta.69";
3055
- const commitHash = "f00d18292f02e8910215d913edfc994850a68d88";
3054
+ const versionNumber = "3.10.0-beta.70";
3055
+ const commitHash = "d9abc3da8d94d6c5ab0cc5af25a5f61849905a35";
3056
3056
  const menuOptions = [{
3057
3057
  title: t('Header:About'),
3058
3058
  icon: 'info',
@@ -3213,21 +3213,46 @@ const SidePanelWithServices = ({
3213
3213
  /* harmony default export */ const Components_SidePanelWithServices = (SidePanelWithServices);
3214
3214
  // EXTERNAL MODULE: ../../../node_modules/react-resizable-panels/dist/react-resizable-panels.browser.esm.js
3215
3215
  var react_resizable_panels_browser_esm = __webpack_require__(17825);
3216
+ ;// CONCATENATED MODULE: ../../../extensions/default/src/ViewerLayout/constants/panels.ts
3217
+ const expandedInsideBorderSize = 4;
3218
+ const collapsedInsideBorderSize = 4;
3219
+ const collapsedOutsideBorderSize = 8;
3220
+ const collapsedWidth = 25;
3221
+ const rightPanelInitialExpandedWidth = 280;
3222
+ const leftPanelInitialExpandedWidth = 282;
3223
+ const panelGroupDefinition = {
3224
+ groupId: 'viewerLayoutResizablePanelGroup',
3225
+ shared: {
3226
+ expandedInsideBorderSize,
3227
+ collapsedInsideBorderSize,
3228
+ collapsedOutsideBorderSize,
3229
+ collapsedWidth
3230
+ },
3231
+ left: {
3232
+ // id
3233
+ panelId: 'viewerLayoutResizableLeftPanel',
3234
+ // expanded width
3235
+ initialExpandedWidth: leftPanelInitialExpandedWidth,
3236
+ // expanded width + expanded inside border
3237
+ minimumExpandedOffsetWidth: 145 + expandedInsideBorderSize,
3238
+ // initial expanded width
3239
+ initialExpandedOffsetWidth: leftPanelInitialExpandedWidth + expandedInsideBorderSize,
3240
+ // collapsed width + collapsed inside border + collapsed outside border
3241
+ collapsedOffsetWidth: collapsedWidth + collapsedInsideBorderSize + collapsedOutsideBorderSize
3242
+ },
3243
+ right: {
3244
+ panelId: 'viewerLayoutResizableRightPanel',
3245
+ initialExpandedWidth: rightPanelInitialExpandedWidth,
3246
+ minimumExpandedOffsetWidth: rightPanelInitialExpandedWidth + expandedInsideBorderSize,
3247
+ initialExpandedOffsetWidth: rightPanelInitialExpandedWidth + expandedInsideBorderSize,
3248
+ collapsedOffsetWidth: collapsedWidth + collapsedInsideBorderSize + collapsedOutsideBorderSize
3249
+ }
3250
+ };
3251
+
3216
3252
  ;// CONCATENATED MODULE: ../../../extensions/default/src/ViewerLayout/ResizablePanelsHook.tsx
3217
3253
 
3218
3254
 
3219
3255
 
3220
- // Id needed to grab the panel group for converting pixels to percentages
3221
- const viewerLayoutResizablePanelGroupId = 'viewerLayoutResizablePanelGroup';
3222
- const viewerLayoutResizableLeftPanelId = 'viewerLayoutResizableLeftPanel';
3223
- const viewerLayoutResizableRightPanelId = 'viewerLayoutResizableRightPanel';
3224
- const sidePanelExpandedDefaultWidth = 280;
3225
- const sidePanelExpandedInsideBorderSize = 4;
3226
- const sidePanelExpandedDefaultOffsetWidth = sidePanelExpandedDefaultWidth + sidePanelExpandedInsideBorderSize;
3227
- const sidePanelCollapsedInsideBorderSize = 4;
3228
- const sidePanelCollapsedOutsideBorderSize = 8;
3229
- const sidePanelCollapsedWidth = 25;
3230
- const sidePanelCollapsedOffsetWidth = sidePanelCollapsedWidth + sidePanelCollapsedInsideBorderSize + sidePanelCollapsedOutsideBorderSize;
3231
3256
 
3232
3257
  /**
3233
3258
  * Set the minimum and maximum css style width attributes for the given element.
@@ -3247,12 +3272,12 @@ const setMinMaxWidth = (elem, width) => {
3247
3272
  elem.style.maxWidth = elem.style.minWidth;
3248
3273
  };
3249
3274
  const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClosed, setRightPanelClosed) => {
3250
- const [leftPanelExpandedWidth, setLeftPanelExpandedWidth] = (0,react.useState)(sidePanelExpandedDefaultWidth);
3251
- const [rightPanelExpandedWidth, setRightPanelExpandedWidth] = (0,react.useState)(sidePanelExpandedDefaultWidth);
3252
-
3253
- // Percentage sizes.
3254
- const [resizablePanelCollapsedSize, setResizablePanelCollapsedSize] = (0,react.useState)(0);
3255
- const [resizablePanelDefaultSize, setResizablePanelDefaultSize] = (0,react.useState)(0);
3275
+ const [leftPanelExpandedWidth, setLeftPanelExpandedWidth] = (0,react.useState)(panelGroupDefinition.left.initialExpandedWidth);
3276
+ const [rightPanelExpandedWidth, setRightPanelExpandedWidth] = (0,react.useState)(panelGroupDefinition.right.initialExpandedWidth);
3277
+ const [leftResizablePanelMinimumSize, setLeftResizablePanelMinimumSize] = (0,react.useState)(0);
3278
+ const [rightResizablePanelMinimumSize, setRightResizablePanelMinimumSize] = (0,react.useState)(0);
3279
+ const [leftResizeablePanelCollapsedSize, setLeftResizePanelCollapsedSize] = (0,react.useState)(0);
3280
+ const [rightResizePanelCollapsedSize, setRightResizePanelCollapsedSize] = (0,react.useState)(0);
3256
3281
  const resizablePanelGroupElemRef = (0,react.useRef)(null);
3257
3282
  const resizableLeftPanelElemRef = (0,react.useRef)(null);
3258
3283
  const resizableRightPanelElemRef = (0,react.useRef)(null);
@@ -3265,26 +3290,29 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3265
3290
  // converting between percentages and pixels in various callbacks.
3266
3291
  // - Expand those panels that are initially expanded.
3267
3292
  (0,react.useLayoutEffect)(() => {
3268
- const panelGroupElem = (0,react_resizable_panels_browser_esm/* getPanelGroupElement */.Gx)(viewerLayoutResizablePanelGroupId);
3293
+ const panelGroupElem = (0,react_resizable_panels_browser_esm/* getPanelGroupElement */.Gx)(panelGroupDefinition.groupId);
3269
3294
  resizablePanelGroupElemRef.current = panelGroupElem;
3270
3295
  const {
3271
3296
  width: panelGroupWidth
3272
3297
  } = panelGroupElem.getBoundingClientRect();
3273
- const leftPanelElem = (0,react_resizable_panels_browser_esm/* getPanelElement */.PV)(viewerLayoutResizableLeftPanelId);
3298
+ const leftPanelElem = (0,react_resizable_panels_browser_esm/* getPanelElement */.PV)(panelGroupDefinition.left.panelId);
3274
3299
  resizableLeftPanelElemRef.current = leftPanelElem;
3275
- const rightPanelElem = (0,react_resizable_panels_browser_esm/* getPanelElement */.PV)(viewerLayoutResizableRightPanelId);
3300
+ const rightPanelElem = (0,react_resizable_panels_browser_esm/* getPanelElement */.PV)(panelGroupDefinition.right.panelId);
3276
3301
  resizableRightPanelElemRef.current = rightPanelElem;
3277
- const resizablePanelExpandedSize = sidePanelExpandedDefaultOffsetWidth / panelGroupWidth * 100;
3278
3302
 
3279
3303
  // Since both resizable panels are collapsed by default (i.e. their default size is zero),
3280
3304
  // on the very first render check if either/both side panels should be expanded.
3305
+ // we use the initialExpandedOffsetWidth on the first render incase the panel has min width but we want the initial state to be larger than that
3306
+
3281
3307
  if (!leftPanelClosed) {
3282
- resizableLeftPanelAPIRef?.current?.expand(resizablePanelExpandedSize);
3283
- setMinMaxWidth(leftPanelElem, sidePanelExpandedDefaultOffsetWidth);
3308
+ const leftResizablePanelExpandedSize = panelGroupDefinition.left.initialExpandedOffsetWidth / panelGroupWidth * 100;
3309
+ resizableLeftPanelAPIRef?.current?.expand(leftResizablePanelExpandedSize);
3310
+ setMinMaxWidth(leftPanelElem, panelGroupDefinition.left.initialExpandedOffsetWidth);
3284
3311
  }
3285
3312
  if (!rightPanelClosed) {
3286
- resizableRightPanelAPIRef?.current?.expand(resizablePanelExpandedSize);
3287
- setMinMaxWidth(rightPanelElem, sidePanelExpandedDefaultOffsetWidth);
3313
+ const rightResizablePanelExpandedSize = panelGroupDefinition.right.initialExpandedOffsetWidth / panelGroupWidth * 100;
3314
+ resizableRightPanelAPIRef?.current?.expand(rightResizablePanelExpandedSize);
3315
+ setMinMaxWidth(rightPanelElem, panelGroupDefinition.right.initialExpandedOffsetWidth);
3288
3316
  }
3289
3317
  }, []); // no dependencies because this useLayoutEffect is only needed on the very first render
3290
3318
 
@@ -3311,11 +3339,11 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3311
3339
  // is executed on the render following an update of the minimum percentage size
3312
3340
  // for a panel.
3313
3341
  if (!resizableLeftPanelAPIRef.current.isCollapsed()) {
3314
- const leftSize = (leftPanelExpandedWidth + sidePanelExpandedInsideBorderSize) / panelGroupWidth * 100;
3342
+ const leftSize = (leftPanelExpandedWidth + panelGroupDefinition.shared.expandedInsideBorderSize) / panelGroupWidth * 100;
3315
3343
  resizableLeftPanelAPIRef.current.resize(leftSize);
3316
3344
  }
3317
3345
  if (!resizableRightPanelAPIRef.current.isCollapsed()) {
3318
- const rightSize = (rightPanelExpandedWidth + sidePanelExpandedInsideBorderSize) / panelGroupWidth * 100;
3346
+ const rightSize = (rightPanelExpandedWidth + panelGroupDefinition.shared.expandedInsideBorderSize) / panelGroupWidth * 100;
3319
3347
  resizableRightPanelAPIRef.current.resize(rightSize);
3320
3348
  }
3321
3349
 
@@ -3325,11 +3353,14 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3325
3353
  const {
3326
3354
  width: panelGroupWidth
3327
3355
  } = resizablePanelGroupElemRef.current.getBoundingClientRect();
3328
- const defaultSize = sidePanelExpandedDefaultOffsetWidth / panelGroupWidth * 100;
3356
+ const minimumLeftSize = panelGroupDefinition.left.minimumExpandedOffsetWidth / panelGroupWidth * 100;
3357
+ const minimumRightSize = panelGroupDefinition.right.minimumExpandedOffsetWidth / panelGroupWidth * 100;
3329
3358
 
3330
3359
  // Set the new default and collapsed resizable panel sizes.
3331
- setResizablePanelDefaultSize(Math.min(50, defaultSize));
3332
- setResizablePanelCollapsedSize(sidePanelCollapsedOffsetWidth / panelGroupWidth * 100);
3360
+ setLeftResizablePanelMinimumSize(Math.min(50, minimumLeftSize));
3361
+ setRightResizablePanelMinimumSize(Math.min(50, minimumRightSize));
3362
+ setLeftResizePanelCollapsedSize(panelGroupDefinition.left.collapsedOffsetWidth / panelGroupWidth * 100);
3363
+ setRightResizePanelCollapsedSize(panelGroupDefinition.right.collapsedOffsetWidth / panelGroupWidth * 100);
3333
3364
  if (resizableLeftPanelAPIRef.current.isCollapsed() && resizableRightPanelAPIRef.current.isCollapsed()) {
3334
3365
  return;
3335
3366
  }
@@ -3338,22 +3369,22 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3338
3369
  // too small to display either side panel at its current width.
3339
3370
 
3340
3371
  // Determine the current widths of the two side panels.
3341
- let leftPanelOffsetWidth = resizableLeftPanelAPIRef.current.isCollapsed() ? sidePanelCollapsedOffsetWidth : leftPanelExpandedWidth + sidePanelExpandedInsideBorderSize;
3342
- let rightPanelOffsetWidth = resizableRightPanelAPIRef.current.isCollapsed() ? sidePanelCollapsedOffsetWidth : rightPanelExpandedWidth + sidePanelExpandedInsideBorderSize;
3372
+ let leftPanelOffsetWidth = resizableLeftPanelAPIRef.current.isCollapsed() ? panelGroupDefinition.left.collapsedOffsetWidth : leftPanelExpandedWidth + panelGroupDefinition.shared.expandedInsideBorderSize;
3373
+ let rightPanelOffsetWidth = resizableRightPanelAPIRef.current.isCollapsed() ? panelGroupDefinition.right.collapsedOffsetWidth : rightPanelExpandedWidth + panelGroupDefinition.shared.expandedInsideBorderSize;
3343
3374
  if (!resizableLeftPanelAPIRef.current.isCollapsed() && leftPanelOffsetWidth + rightPanelOffsetWidth > panelGroupWidth) {
3344
3375
  // There is not enough space to show both panels at their pre-resize widths.
3345
3376
  // Note that at this point, the viewport grid component is zero width.
3346
3377
  // Reduce the left panel width so that both panels might fit.
3347
- leftPanelOffsetWidth = Math.max(panelGroupWidth - rightPanelOffsetWidth, sidePanelExpandedDefaultOffsetWidth);
3348
- setLeftPanelExpandedWidth(leftPanelOffsetWidth - sidePanelExpandedInsideBorderSize);
3378
+ leftPanelOffsetWidth = Math.max(panelGroupWidth - rightPanelOffsetWidth, panelGroupDefinition.left.minimumExpandedOffsetWidth);
3379
+ setLeftPanelExpandedWidth(leftPanelOffsetWidth - panelGroupDefinition.shared.expandedInsideBorderSize);
3349
3380
  setMinMaxWidth(resizableLeftPanelElemRef.current, leftPanelOffsetWidth);
3350
3381
  }
3351
3382
  if (!resizableRightPanelAPIRef.current.isCollapsed() && rightPanelOffsetWidth + leftPanelOffsetWidth > panelGroupWidth) {
3352
3383
  // There is not enough space to show both panels at their pre-resize widths.
3353
3384
  // Note that at this point, the viewport grid component is zero width.
3354
3385
  // Reduce the right panel width so that both panels might fit.
3355
- rightPanelOffsetWidth = Math.max(panelGroupWidth - leftPanelOffsetWidth, sidePanelExpandedDefaultOffsetWidth);
3356
- setRightPanelExpandedWidth(rightPanelOffsetWidth - sidePanelExpandedInsideBorderSize);
3386
+ rightPanelOffsetWidth = Math.max(panelGroupWidth - leftPanelOffsetWidth, panelGroupDefinition.right.minimumExpandedOffsetWidth);
3387
+ setRightPanelExpandedWidth(rightPanelOffsetWidth - panelGroupDefinition.shared.expandedInsideBorderSize);
3357
3388
  setMinMaxWidth(resizableRightPanelElemRef.current, rightPanelOffsetWidth);
3358
3389
  }
3359
3390
  });
@@ -3361,7 +3392,7 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3361
3392
  return () => {
3362
3393
  observer.disconnect();
3363
3394
  };
3364
- }, [leftPanelExpandedWidth, resizablePanelDefaultSize, rightPanelExpandedWidth]);
3395
+ }, [leftPanelExpandedWidth, rightPanelExpandedWidth, leftResizablePanelMinimumSize, rightResizablePanelMinimumSize]);
3365
3396
 
3366
3397
  /**
3367
3398
  * Handles dragging of either side panel resize handle.
@@ -3374,10 +3405,10 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3374
3405
  } else {
3375
3406
  isResizableHandleDraggingRef.current = false;
3376
3407
  if (resizableLeftPanelAPIRef?.current?.isExpanded()) {
3377
- setMinMaxWidth(resizableLeftPanelElemRef.current, leftPanelExpandedWidth + sidePanelExpandedInsideBorderSize);
3408
+ setMinMaxWidth(resizableLeftPanelElemRef.current, leftPanelExpandedWidth + panelGroupDefinition.shared.expandedInsideBorderSize);
3378
3409
  }
3379
3410
  if (resizableRightPanelAPIRef?.current?.isExpanded()) {
3380
- setMinMaxWidth(resizableRightPanelElemRef.current, rightPanelExpandedWidth + sidePanelExpandedInsideBorderSize);
3411
+ setMinMaxWidth(resizableRightPanelElemRef.current, rightPanelExpandedWidth + panelGroupDefinition.shared.expandedInsideBorderSize);
3381
3412
  }
3382
3413
  }
3383
3414
  }, [leftPanelExpandedWidth, rightPanelExpandedWidth]);
@@ -3387,12 +3418,12 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3387
3418
  resizableLeftPanelAPIRef?.current?.collapse();
3388
3419
  }, [setLeftPanelClosed]);
3389
3420
  const onLeftPanelOpen = (0,react.useCallback)(() => {
3390
- resizableLeftPanelAPIRef?.current?.expand();
3391
- if (!isResizableHandleDraggingRef.current) {
3392
- setMinMaxWidth(resizableLeftPanelElemRef.current, leftPanelExpandedWidth + sidePanelExpandedInsideBorderSize);
3393
- }
3421
+ const {
3422
+ width: panelGroupWidth
3423
+ } = resizablePanelGroupElemRef.current.getBoundingClientRect();
3424
+ resizableLeftPanelAPIRef?.current?.expand(panelGroupDefinition.left.initialExpandedOffsetWidth / panelGroupWidth * 100);
3394
3425
  setLeftPanelClosed(false);
3395
- }, [leftPanelExpandedWidth, setLeftPanelClosed]);
3426
+ }, [setLeftPanelClosed]);
3396
3427
  const onLeftPanelResize = (0,react.useCallback)(size => {
3397
3428
  if (resizableLeftPanelAPIRef.current.isCollapsed()) {
3398
3429
  return;
@@ -3400,7 +3431,8 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3400
3431
  const {
3401
3432
  width: panelGroupWidth
3402
3433
  } = resizablePanelGroupElemRef.current.getBoundingClientRect();
3403
- setLeftPanelExpandedWidth(size / 100 * panelGroupWidth - sidePanelExpandedInsideBorderSize);
3434
+ const newExpandedWidth = size / 100 * panelGroupWidth - panelGroupDefinition.shared.expandedInsideBorderSize;
3435
+ setLeftPanelExpandedWidth(newExpandedWidth);
3404
3436
  }, []);
3405
3437
  const onRightPanelClose = (0,react.useCallback)(() => {
3406
3438
  setRightPanelClosed(true);
@@ -3408,12 +3440,12 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3408
3440
  resizableRightPanelAPIRef?.current?.collapse();
3409
3441
  }, [setRightPanelClosed]);
3410
3442
  const onRightPanelOpen = (0,react.useCallback)(() => {
3411
- resizableRightPanelAPIRef?.current?.expand();
3412
- if (!isResizableHandleDraggingRef.current) {
3413
- setMinMaxWidth(resizableRightPanelElemRef.current, rightPanelExpandedWidth + sidePanelExpandedInsideBorderSize);
3414
- }
3443
+ const {
3444
+ width: panelGroupWidth
3445
+ } = resizablePanelGroupElemRef.current.getBoundingClientRect();
3446
+ resizableRightPanelAPIRef?.current?.expand(panelGroupDefinition.right.initialExpandedOffsetWidth / panelGroupWidth * 100);
3415
3447
  setRightPanelClosed(false);
3416
- }, [rightPanelExpandedWidth, setRightPanelClosed]);
3448
+ }, [setRightPanelClosed]);
3417
3449
  const onRightPanelResize = (0,react.useCallback)(size => {
3418
3450
  if (resizableRightPanelAPIRef?.current?.isCollapsed()) {
3419
3451
  return;
@@ -3421,52 +3453,53 @@ const useResizablePanels = (leftPanelClosed, setLeftPanelClosed, rightPanelClose
3421
3453
  const {
3422
3454
  width: panelGroupWidth
3423
3455
  } = resizablePanelGroupElemRef.current.getBoundingClientRect();
3424
- setRightPanelExpandedWidth(size / 100 * panelGroupWidth - sidePanelExpandedInsideBorderSize);
3456
+ const newExpandedWidth = size / 100 * panelGroupWidth - panelGroupDefinition.shared.expandedInsideBorderSize;
3457
+ setRightPanelExpandedWidth(newExpandedWidth);
3425
3458
  }, []);
3426
3459
  return [{
3427
3460
  expandedWidth: leftPanelExpandedWidth,
3428
- collapsedWidth: sidePanelCollapsedWidth,
3429
- collapsedInsideBorderSize: sidePanelCollapsedInsideBorderSize,
3430
- collapsedOutsideBorderSize: sidePanelCollapsedOutsideBorderSize,
3431
- expandedInsideBorderSize: sidePanelExpandedInsideBorderSize,
3461
+ collapsedWidth: panelGroupDefinition.shared.collapsedWidth,
3462
+ collapsedInsideBorderSize: panelGroupDefinition.shared.collapsedInsideBorderSize,
3463
+ collapsedOutsideBorderSize: panelGroupDefinition.shared.collapsedOutsideBorderSize,
3464
+ expandedInsideBorderSize: panelGroupDefinition.shared.expandedInsideBorderSize,
3432
3465
  onClose: onLeftPanelClose,
3433
3466
  onOpen: onLeftPanelOpen
3434
3467
  }, {
3435
3468
  expandedWidth: rightPanelExpandedWidth,
3436
- collapsedWidth: sidePanelCollapsedWidth,
3437
- collapsedInsideBorderSize: sidePanelCollapsedInsideBorderSize,
3438
- collapsedOutsideBorderSize: sidePanelCollapsedOutsideBorderSize,
3439
- expandedInsideBorderSize: sidePanelExpandedInsideBorderSize,
3469
+ collapsedWidth: panelGroupDefinition.shared.collapsedWidth,
3470
+ collapsedInsideBorderSize: panelGroupDefinition.shared.collapsedInsideBorderSize,
3471
+ collapsedOutsideBorderSize: panelGroupDefinition.shared.collapsedOutsideBorderSize,
3472
+ expandedInsideBorderSize: panelGroupDefinition.shared.expandedInsideBorderSize,
3440
3473
  onClose: onRightPanelClose,
3441
3474
  onOpen: onRightPanelOpen
3442
3475
  }, {
3443
3476
  direction: 'horizontal',
3444
- id: viewerLayoutResizablePanelGroupId
3477
+ id: panelGroupDefinition.groupId
3445
3478
  }, {
3446
- defaultSize: resizablePanelDefaultSize,
3447
- minSize: resizablePanelDefaultSize,
3479
+ defaultSize: leftResizablePanelMinimumSize,
3480
+ minSize: leftResizablePanelMinimumSize,
3448
3481
  onResize: onLeftPanelResize,
3449
3482
  collapsible: true,
3450
- collapsedSize: resizablePanelCollapsedSize,
3483
+ collapsedSize: leftResizeablePanelCollapsedSize,
3451
3484
  onCollapse: () => setLeftPanelClosed(true),
3452
3485
  onExpand: () => setLeftPanelClosed(false),
3453
3486
  ref: resizableLeftPanelAPIRef,
3454
3487
  order: 0,
3455
- id: viewerLayoutResizableLeftPanelId
3488
+ id: panelGroupDefinition.left.panelId
3456
3489
  }, {
3457
3490
  order: 1,
3458
3491
  id: 'viewerLayoutResizableViewportGridPanel'
3459
3492
  }, {
3460
- defaultSize: resizablePanelDefaultSize,
3461
- minSize: resizablePanelDefaultSize,
3493
+ defaultSize: rightResizablePanelMinimumSize,
3494
+ minSize: rightResizablePanelMinimumSize,
3462
3495
  onResize: onRightPanelResize,
3463
3496
  collapsible: true,
3464
- collapsedSize: resizablePanelCollapsedSize,
3497
+ collapsedSize: rightResizePanelCollapsedSize,
3465
3498
  onCollapse: () => setRightPanelClosed(true),
3466
3499
  onExpand: () => setRightPanelClosed(false),
3467
3500
  ref: resizableRightPanelAPIRef,
3468
3501
  order: 2,
3469
- id: viewerLayoutResizableRightPanelId
3502
+ id: panelGroupDefinition.right.panelId
3470
3503
  }, onHandleDragging];
3471
3504
  };
3472
3505
  /* harmony default export */ const ResizablePanelsHook = (useResizablePanels);
@@ -717,8 +717,10 @@ function modeFactory({
717
717
  id: ohif.layout,
718
718
  props: {
719
719
  leftPanels: [ohif.thumbnailList],
720
+ leftPanelResizable: true,
720
721
  leftPanelClosed: true,
721
722
  rightPanels: [tmtv.tmtv, tmtv.petSUV],
723
+ rightPanelResizable: true,
722
724
  viewports: [{
723
725
  namespace: cs3d.viewport,
724
726
  displaySetsToDisplay: [ohif.sopClassHandler]