@ohif/app 3.8.0-beta.65 → 3.8.0-beta.66

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 (31) hide show
  1. package/dist/{191.bundle.4850ab82949bb6f0eb73.js → 191.bundle.509480b6972209d2567c.js} +29 -8
  2. package/dist/{41.bundle.58b85dd990fb6fac615e.js → 41.bundle.b7bf03502ac3e2ddca35.js} +2 -7
  3. package/dist/{448.bundle.d195aba3aef25ec286d1.js → 448.bundle.0061f5280490e1a1aa88.js} +2 -10
  4. package/dist/{701.bundle.bc40f1a7d5d6b1a4dd38.js → 701.bundle.285943aebfc0efe2b4f1.js} +14 -14
  5. package/dist/{90.bundle.abde898ebd3c74f521f9.js → 90.bundle.49b20161b4f864100085.js} +30 -27
  6. package/dist/{987.bundle.91d4867efedd5b4d84cb.js → 987.bundle.6bdfb3cd8762b8889632.js} +27 -7
  7. package/dist/{app.bundle.0c24b249dc8b631916ef.js → app.bundle.81c01fc2e11fa9b6ccb8.js} +17 -11
  8. package/dist/app.bundle.css +1 -1
  9. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  10. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  11. package/dist/index.html +1 -1
  12. package/dist/{polySeg.bundle.c1cec6312eb6c6dc3701.js → polySeg.bundle.a97fc68de7599f9a9fdc.js} +1 -1
  13. package/dist/sw.js +1 -1
  14. package/package.json +18 -18
  15. /package/dist/{155.bundle.a57744809d0f46030ee0.js → 155.bundle.e9fdaa40010cc784f389.js} +0 -0
  16. /package/dist/{164.bundle.ff12d6019a627cda2a6c.js → 164.bundle.3f877a2272b773332317.js} +0 -0
  17. /package/dist/{188.bundle.c448aed48915741e9f97.js → 188.bundle.67df9790c453b185fe1d.js} +0 -0
  18. /package/dist/{270.bundle.16ac8114c5c4ce006f4a.js → 270.bundle.d7d6957c20f95c675b32.js} +0 -0
  19. /package/dist/{339.bundle.57dac3644803cefe3e3d.js → 339.bundle.526cede81f0a9bb248e6.js} +0 -0
  20. /package/dist/{342.bundle.a039c24e9f661f3b884d.js → 342.bundle.17ec05907f93624fd494.js} +0 -0
  21. /package/dist/{504.bundle.aa165082e2acc5ccf080.js → 504.bundle.6d203e80d4bd8a823059.js} +0 -0
  22. /package/dist/{559.bundle.05bd51e94422a2cab116.js → 559.bundle.bb2c52834fb372399002.js} +0 -0
  23. /package/dist/{594.bundle.14b122ab995e4b13e652.js → 594.bundle.483843d38640164a9aca.js} +0 -0
  24. /package/dist/{638.bundle.a63003e18bed65f227bb.js → 638.bundle.4d7da6fe507df0000718.js} +0 -0
  25. /package/dist/{699.bundle.efc67171e6d212f25a24.js → 699.bundle.62990e46c235ab4785db.js} +0 -0
  26. /package/dist/{724.bundle.3945f8d2e9c8b0b23628.js → 724.bundle.83a4176860f750353c0b.js} +0 -0
  27. /package/dist/{862.bundle.d787dac01f4567560a42.js → 862.bundle.999931264956ced59b33.js} +0 -0
  28. /package/dist/{889.bundle.ffc727aa6d1a74f2138d.js → 889.bundle.edf546d8738c22b94be5.js} +0 -0
  29. /package/dist/{905.bundle.6b5b42b2403e4676bb3a.js → 905.bundle.88010c612e910657883d.js} +0 -0
  30. /package/dist/{907.bundle.fbd5768fa5b53f9d3f86.js → 907.bundle.1206d58ae62d26beaf30.js} +0 -0
  31. /package/dist/{961.bundle.8bb5a713fc5a3817c6a6.js → 961.bundle.b4d84dd80e4e1113de27.js} +0 -0
@@ -9784,6 +9784,26 @@ class TrackballRotateTool extends base/* BaseTool */.oS {
9784
9784
  },
9785
9785
  }) {
9786
9786
  super(toolProps, defaultToolProps);
9787
+ this.preMouseDownCallback = (evt) => {
9788
+ const eventDetail = evt.detail;
9789
+ const { element } = eventDetail;
9790
+ const enabledElement = (0,esm.getEnabledElement)(element);
9791
+ const { viewport } = enabledElement;
9792
+ const actorEntry = viewport.getDefaultActor();
9793
+ const actor = actorEntry.actor;
9794
+ const mapper = actor.getMapper();
9795
+ const originalSampleDistance = mapper.getSampleDistance();
9796
+ mapper.setSampleDistance(originalSampleDistance * 2);
9797
+ if (this.cleanUp !== null) {
9798
+ element.removeEventListener('mouseup', this.cleanUp);
9799
+ }
9800
+ this.cleanUp = () => {
9801
+ mapper.setSampleDistance(originalSampleDistance);
9802
+ viewport.render();
9803
+ };
9804
+ element.addEventListener('mouseup', this.cleanUp, { once: true });
9805
+ return true;
9806
+ };
9787
9807
  this.rotateCamera = (viewport, centerWorld, axis, angle) => {
9788
9808
  const vtkCamera = viewport.getVtkActiveCamera();
9789
9809
  const viewUp = vtkCamera.getViewUp();
@@ -24581,7 +24601,6 @@ function getToolStateByViewportId(viewportId) {
24581
24601
  const { ViewportStatus } = esm.Enums;
24582
24602
  const { triggerEvent } = esm.utilities;
24583
24603
  const debounced = true;
24584
- const loop = true;
24585
24604
  const dynamicVolumesPlayingMap = new Map();
24586
24605
  function playClip(element, playClipOptions) {
24587
24606
  let playClipTimeouts;
@@ -24642,7 +24661,7 @@ function playClip(element, playClipOptions) {
24642
24661
  const { numScrollSteps, currentStepIndex } = playClipContext;
24643
24662
  let newStepIndex = currentStepIndex + (playClipData.reverse ? -1 : 1);
24644
24663
  const newStepIndexOutOfRange = newStepIndex < 0 || newStepIndex >= numScrollSteps;
24645
- if (!loop && newStepIndexOutOfRange) {
24664
+ if (!playClipData.loop && newStepIndexOutOfRange) {
24646
24665
  _stopClip(element, {
24647
24666
  stopDynamicCine: !isDynamicCinePlaying,
24648
24667
  viewportId: viewport.id,
@@ -28270,6 +28289,7 @@ __webpack_require__.d(__webpack_exports__, {
28270
28289
  floodFill: () => (/* reexport */ floodFill/* default */.A),
28271
28290
  getBrushSizeForToolGroup: () => (/* reexport */ getBrushSizeForToolGroup),
28272
28291
  getBrushThresholdForToolGroup: () => (/* reexport */ getBrushThresholdForToolGroup),
28292
+ getBrushToolInstances: () => (/* reexport */ segmentation_utilities/* getBrushToolInstances */.n7),
28273
28293
  getDefaultRepresentationConfig: () => (/* reexport */ getDefaultRepresentationConfig),
28274
28294
  getHoveredContourSegmentationAnnotation: () => (/* reexport */ getHoveredContourSegmentationAnnotation),
28275
28295
  getSegmentAtLabelmapBorder: () => (/* reexport */ getSegmentAtLabelmapBorder),
@@ -28522,7 +28542,7 @@ function setBrushSizeForToolGroup(toolGroupId, brushSize, toolName) {
28522
28542
  if (toolGroup === undefined) {
28523
28543
  return;
28524
28544
  }
28525
- const brushBasedToolInstances = (0,segmentation_utilities/* default */.Ay)(toolGroupId, toolName);
28545
+ const brushBasedToolInstances = (0,segmentation_utilities/* getBrushToolInstances */.n7)(toolGroupId, toolName);
28526
28546
  brushBasedToolInstances.forEach((tool) => {
28527
28547
  tool.configuration.brushSize = brushSize;
28528
28548
  tool.invalidateBrushCursor();
@@ -28546,7 +28566,7 @@ function getBrushSizeForToolGroup(toolGroupId, toolName) {
28546
28566
  if (!Object.keys(toolInstances).length) {
28547
28567
  return;
28548
28568
  }
28549
- const brushBasedToolInstances = (0,segmentation_utilities/* default */.Ay)(toolGroupId, toolName);
28569
+ const brushBasedToolInstances = (0,segmentation_utilities/* getBrushToolInstances */.n7)(toolGroupId, toolName);
28550
28570
  const brushToolInstance = brushBasedToolInstances[0];
28551
28571
  if (!brushToolInstance) {
28552
28572
  return;
@@ -28564,7 +28584,7 @@ function setBrushThresholdForToolGroup(toolGroupId, threshold, otherArgs = { isD
28564
28584
  if (toolGroup === undefined) {
28565
28585
  return;
28566
28586
  }
28567
- const brushBasedToolInstances = (0,segmentation_utilities/* default */.Ay)(toolGroupId);
28587
+ const brushBasedToolInstances = (0,segmentation_utilities/* getBrushToolInstances */.n7)(toolGroupId);
28568
28588
  const configuration = {
28569
28589
  ...otherArgs,
28570
28590
  ...(threshold !== undefined && { threshold }),
@@ -28593,7 +28613,7 @@ function getBrushThresholdForToolGroup(toolGroupId) {
28593
28613
  if (!Object.keys(toolInstances).length) {
28594
28614
  return;
28595
28615
  }
28596
- const brushBasedToolInstances = (0,segmentation_utilities/* default */.Ay)(toolGroupId);
28616
+ const brushBasedToolInstances = (0,segmentation_utilities/* getBrushToolInstances */.n7)(toolGroupId);
28597
28617
  const brushToolInstance = brushBasedToolInstances[0];
28598
28618
  if (!brushToolInstance) {
28599
28619
  return;
@@ -28992,7 +29012,7 @@ function invalidateBrushCursor(toolGroupId) {
28992
29012
  if (toolGroup === undefined) {
28993
29013
  return;
28994
29014
  }
28995
- const brushBasedToolInstances = (0,segmentation_utilities/* default */.Ay)(toolGroupId);
29015
+ const brushBasedToolInstances = (0,segmentation_utilities/* getBrushToolInstances */.n7)(toolGroupId);
28996
29016
  brushBasedToolInstances.forEach((tool) => {
28997
29017
  tool.invalidateBrushCursor();
28998
29018
  });
@@ -29208,6 +29228,7 @@ function getHoveredContourSegmentationAnnotation(segmentationId) {
29208
29228
 
29209
29229
 
29210
29230
 
29231
+
29211
29232
 
29212
29233
 
29213
29234
  /***/ }),
@@ -29340,8 +29361,8 @@ function triggerSegmentationRender(toolGroupId) {
29340
29361
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
29341
29362
 
29342
29363
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
29343
- /* harmony export */ Ay: () => (/* binding */ getBrushToolInstances),
29344
29364
  /* harmony export */ Q5: () => (/* binding */ getVoxelOverlap),
29365
+ /* harmony export */ n7: () => (/* binding */ getBrushToolInstances),
29345
29366
  /* harmony export */ zf: () => (/* binding */ processVolumes)
29346
29367
  /* harmony export */ });
29347
29368
  /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50719);
@@ -424,9 +424,7 @@ const toolbarButtons = [{
424
424
  props: {
425
425
  icon: 'tool-capture',
426
426
  label: 'Capture',
427
- commands: [{
428
- commandName: 'showDownloadViewportModal'
429
- }],
427
+ commands: 'showDownloadViewportModal',
430
428
  evaluate: 'evaluate.action'
431
429
  }
432
430
  }, {
@@ -435,10 +433,7 @@ const toolbarButtons = [{
435
433
  props: {
436
434
  rows: 3,
437
435
  columns: 4,
438
- evaluate: 'evaluate.action',
439
- commands: [{
440
- commandName: 'setViewportGridLayout'
441
- }]
436
+ evaluate: 'evaluate.action'
442
437
  }
443
438
  }, {
444
439
  id: 'Crosshairs',
@@ -175,13 +175,7 @@ const toolbarButtons = [{
175
175
  type: 'tool',
176
176
  icon: 'tool-3d-rotate',
177
177
  label: '3D Rotate',
178
- commands: [{
179
- commandName: 'setToolActive',
180
- commandOptions: {
181
- toolName: 'TrackBallRotate'
182
- },
183
- context: 'CORNERSTONE'
184
- }]
178
+ commands: setToolActiveToolbar
185
179
  }
186
180
  }, {
187
181
  id: 'Capture',
@@ -189,9 +183,7 @@ const toolbarButtons = [{
189
183
  props: {
190
184
  icon: 'tool-capture',
191
185
  label: 'Capture',
192
- commands: [{
193
- commandName: 'showDownloadViewportModal'
194
- }],
186
+ commands: 'showDownloadViewportModal',
195
187
  evaluate: 'evaluate.action'
196
188
  }
197
189
  }, {
@@ -4614,7 +4614,7 @@ const CornerstoneViewportDownloadForm = ({
4614
4614
  console.warn('Unable to set properties', e);
4615
4615
  }
4616
4616
  });
4617
- } else if (downloadViewport instanceof esm.VolumeViewport) {
4617
+ } else if (downloadViewport instanceof esm.BaseVolumeViewport) {
4618
4618
  const actors = viewport.getActors();
4619
4619
  // downloadViewport.setActors(actors);
4620
4620
  actors.forEach(actor => {
@@ -5675,9 +5675,6 @@ function commandsModule({
5675
5675
  setViewportColormap: {
5676
5676
  commandFn: actions.setViewportColormap
5677
5677
  },
5678
- toggleImageSliceSync: {
5679
- commandFn: actions.toggleImageSliceSync
5680
- },
5681
5678
  setSourceViewportForReferenceLinesTool: {
5682
5679
  commandFn: actions.setSourceViewportForReferenceLinesTool
5683
5680
  },
@@ -9844,18 +9841,21 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
9844
9841
  });
9845
9842
  }
9846
9843
  this.viewportsDisplaySets.set(viewport.id, displaySetInstanceUIDs);
9847
- if (hangingProtocolService.getShouldPerformCustomImageLoad()) {
9848
- // delegate the volume loading to the hanging protocol service if it has a custom image load strategy
9849
- return hangingProtocolService.runImageLoadStrategy({
9850
- viewportId: viewport.id,
9851
- volumeInputArray
9844
+ const volumesNotLoaded = volumeToLoad.filter(volume => !volume.loadStatus.loaded);
9845
+ if (volumesNotLoaded.length) {
9846
+ if (hangingProtocolService.getShouldPerformCustomImageLoad()) {
9847
+ // delegate the volume loading to the hanging protocol service if it has a custom image load strategy
9848
+ return hangingProtocolService.runImageLoadStrategy({
9849
+ viewportId: viewport.id,
9850
+ volumeInputArray
9851
+ });
9852
+ }
9853
+ volumesNotLoaded.forEach(volume => {
9854
+ if (!volume.loadStatus.loading) {
9855
+ volume.load();
9856
+ }
9852
9857
  });
9853
9858
  }
9854
- volumeToLoad.forEach(volume => {
9855
- if (!volume.loadStatus.loaded && !volume.loadStatus.loading) {
9856
- volume.load();
9857
- }
9858
- });
9859
9859
 
9860
9860
  // This returns the async continuation only
9861
9861
  return this.setVolumesForViewport(viewport, volumeInputArray, presentations);
@@ -2604,8 +2604,8 @@ function ViewerHeader({
2604
2604
  hotkeyDefinitions,
2605
2605
  hotkeyDefaults
2606
2606
  } = hotkeysManager;
2607
- const versionNumber = "3.8.0-beta.65";
2608
- const commitHash = "617043fe0da5de91fbea4ac33a27f1df16ae1ca6";
2607
+ const versionNumber = "3.8.0-beta.66";
2608
+ const commitHash = "158a1816703e0ad66cae08cb9bd1ffb93bbd8d43";
2609
2609
  const menuOptions = [{
2610
2610
  title: t('Header:About'),
2611
2611
  icon: 'info',
@@ -4493,40 +4493,32 @@ const generateAdvancedPresets = hangingProtocolService => {
4493
4493
  }).filter(preset => preset !== null);
4494
4494
  };
4495
4495
  function ToolbarLayoutSelectorWithServices({
4496
+ commandsManager,
4496
4497
  servicesManager,
4497
4498
  ...props
4498
4499
  }) {
4499
- const {
4500
- toolbarService
4501
- } = servicesManager.services;
4502
4500
  const [isDisabled, setIsDisabled] = (0,react.useState)(false);
4503
4501
  const handleMouseEnter = () => {
4504
4502
  setIsDisabled(false);
4505
4503
  };
4506
4504
  const onSelection = (0,react.useCallback)(props => {
4507
- toolbarService.recordInteraction({
4508
- interactionType: 'action',
4509
- commands: [{
4510
- commandName: 'setViewportGridLayout',
4511
- commandOptions: {
4512
- ...props
4513
- }
4514
- }]
4505
+ commandsManager.run({
4506
+ commandName: 'setViewportGridLayout',
4507
+ commandOptions: {
4508
+ ...props
4509
+ }
4515
4510
  });
4516
4511
  setIsDisabled(true);
4517
- }, [toolbarService]);
4512
+ }, []);
4518
4513
  const onSelectionPreset = (0,react.useCallback)(props => {
4519
- toolbarService.recordInteraction({
4520
- interactionType: 'action',
4521
- commands: [{
4522
- commandName: 'setHangingProtocol',
4523
- commandOptions: {
4524
- ...props
4525
- }
4526
- }]
4514
+ commandsManager.run({
4515
+ commandName: 'setHangingProtocol',
4516
+ commandOptions: {
4517
+ ...props
4518
+ }
4527
4519
  });
4528
4520
  setIsDisabled(true);
4529
- }, [toolbarService]);
4521
+ }, []);
4530
4522
  return /*#__PURE__*/react.createElement("div", {
4531
4523
  onMouseEnter: handleMouseEnter
4532
4524
  }, /*#__PURE__*/react.createElement(LayoutSelector, ToolbarLayoutSelector_extends({}, props, {
@@ -4577,7 +4569,7 @@ function LayoutSelector({
4577
4569
  rounded: rest.rounded,
4578
4570
  disableToolTip: tooltipDisabled,
4579
4571
  dropdownContent: DropdownContent !== null && /*#__PURE__*/react.createElement("div", {
4580
- className: "flex"
4572
+ className: "flex "
4581
4573
  }, /*#__PURE__*/react.createElement("div", {
4582
4574
  className: "bg-secondary-dark flex flex-col gap-2.5 p-2"
4583
4575
  }, /*#__PURE__*/react.createElement("div", {
@@ -4586,7 +4578,7 @@ function LayoutSelector({
4586
4578
  className: "flex gap-4"
4587
4579
  }, commonPresets.map((preset, index) => /*#__PURE__*/react.createElement(ui_src/* LayoutPreset */.qu, {
4588
4580
  key: index,
4589
- classNames: "hover:bg-primary-dark group p-1",
4581
+ classNames: "hover:bg-primary-dark group p-1 cursor-pointer",
4590
4582
  icon: preset.icon,
4591
4583
  commandOptions: preset.commandOptions,
4592
4584
  onSelection: onSelection
@@ -4598,7 +4590,7 @@ function LayoutSelector({
4598
4590
  className: "flex flex-col gap-2.5"
4599
4591
  }, advancedPresets.map((preset, index) => /*#__PURE__*/react.createElement(ui_src/* LayoutPreset */.qu, {
4600
4592
  key: index + commonPresets.length,
4601
- classNames: "hover:bg-primary-dark group flex gap-2 p-1",
4593
+ classNames: "hover:bg-primary-dark group flex gap-2 p-1 cursor-pointer",
4602
4594
  icon: preset.icon,
4603
4595
  title: preset.title,
4604
4596
  commandOptions: preset.commandOptions,
@@ -4772,7 +4764,11 @@ function getToolbarModule({
4772
4764
  defaultComponent: Toolbar_ToolbarSplitButtonWithServices
4773
4765
  }, {
4774
4766
  name: 'ohif.layoutSelector',
4775
- defaultComponent: ToolbarLayoutSelector
4767
+ defaultComponent: props => ToolbarLayoutSelector({
4768
+ ...props,
4769
+ commandsManager,
4770
+ servicesManager
4771
+ })
4776
4772
  }, {
4777
4773
  name: 'ohif.buttonGroup',
4778
4774
  defaultComponent: Toolbar_ToolbarButtonGroupWithServices
@@ -5801,6 +5797,13 @@ const findViewportsByPosition_findOrCreateViewport = (hangingProtocolService, vi
5801
5797
  }
5802
5798
  };
5803
5799
  }
5800
+
5801
+ // and lastly if there is no default viewport, then we see if we can grab the
5802
+ // viewportsByPosition at the position index and use that
5803
+ // const candidate = Object.values(viewportsByPosition)[position];
5804
+
5805
+ // // if it has something to display, then we can use it
5806
+ // return candidate?.displaySetInstanceUIDs ? candidate : {};
5804
5807
  return {};
5805
5808
  };
5806
5809
 
@@ -45594,7 +45594,7 @@ class Viewport {
45594
45594
  getCurrentImageIdIndex() {
45595
45595
  throw new Error('Not implemented');
45596
45596
  }
45597
- getReferenceId(specifier) {
45597
+ getReferenceId(_specifier) {
45598
45598
  return null;
45599
45599
  }
45600
45600
  setPan(pan, storeAsInitialCamera = false) {
@@ -50913,7 +50913,7 @@ class StackViewport extends RenderingEngine_Viewport {
50913
50913
  const colonIndex = imageId.indexOf(':');
50914
50914
  imageURI = imageId.substring(colonIndex + 1);
50915
50915
  }
50916
- return referencedImageId.endsWith(imageURI);
50916
+ return referencedImageId?.endsWith(imageURI);
50917
50917
  }
50918
50918
  getViewReference(viewRefSpecifier = {}) {
50919
50919
  const { sliceIndex: sliceIndex = this.currentImageIdIndex } = viewRefSpecifier;
@@ -70283,6 +70283,26 @@ class TrackballRotateTool extends base/* BaseTool */.oS {
70283
70283
  },
70284
70284
  }) {
70285
70285
  super(toolProps, defaultToolProps);
70286
+ this.preMouseDownCallback = (evt) => {
70287
+ const eventDetail = evt.detail;
70288
+ const { element } = eventDetail;
70289
+ const enabledElement = (0,esm.getEnabledElement)(element);
70290
+ const { viewport } = enabledElement;
70291
+ const actorEntry = viewport.getDefaultActor();
70292
+ const actor = actorEntry.actor;
70293
+ const mapper = actor.getMapper();
70294
+ const originalSampleDistance = mapper.getSampleDistance();
70295
+ mapper.setSampleDistance(originalSampleDistance * 2);
70296
+ if (this.cleanUp !== null) {
70297
+ element.removeEventListener('mouseup', this.cleanUp);
70298
+ }
70299
+ this.cleanUp = () => {
70300
+ mapper.setSampleDistance(originalSampleDistance);
70301
+ viewport.render();
70302
+ };
70303
+ element.addEventListener('mouseup', this.cleanUp, { once: true });
70304
+ return true;
70305
+ };
70286
70306
  this.rotateCamera = (viewport, centerWorld, axis, angle) => {
70287
70307
  const vtkCamera = viewport.getVtkActiveCamera();
70288
70308
  const viewUp = vtkCamera.getViewUp();
@@ -84987,7 +85007,6 @@ function state_getToolStateByViewportId(viewportId) {
84987
85007
  const { ViewportStatus } = esm.Enums;
84988
85008
  const { triggerEvent } = esm.utilities;
84989
85009
  const debounced = true;
84990
- const loop = true;
84991
85010
  const dynamicVolumesPlayingMap = new Map();
84992
85011
  function playClip(element, playClipOptions) {
84993
85012
  let playClipTimeouts;
@@ -85048,7 +85067,7 @@ function playClip(element, playClipOptions) {
85048
85067
  const { numScrollSteps, currentStepIndex } = playClipContext;
85049
85068
  let newStepIndex = currentStepIndex + (playClipData.reverse ? -1 : 1);
85050
85069
  const newStepIndexOutOfRange = newStepIndex < 0 || newStepIndex >= numScrollSteps;
85051
- if (!loop && newStepIndexOutOfRange) {
85070
+ if (!playClipData.loop && newStepIndexOutOfRange) {
85052
85071
  _stopClip(element, {
85053
85072
  stopDynamicCine: !isDynamicCinePlaying,
85054
85073
  viewportId: viewport.id,
@@ -88674,7 +88693,7 @@ __webpack_require__.d(__webpack_exports__, {
88674
88693
  triggerSegmentationRender: () => (/* reexport */ triggerSegmentationRender/* triggerSegmentationRender */.h6)
88675
88694
  });
88676
88695
 
88677
- // UNUSED EXPORTS: contourAndFindLargestBidirectional, createBidirectionalToolData, createLabelmapVolumeForViewport, createMergedLabelmapForIndex, floodFill, getBrushSizeForToolGroup, getBrushThresholdForToolGroup, getDefaultRepresentationConfig, isValidRepresentationConfig, rectangleROIThresholdVolumeByRange, segmentContourAction, setBrushSizeForToolGroup, setBrushThresholdForToolGroup, thresholdSegmentationByRange, thresholdVolumeByRange
88696
+ // UNUSED EXPORTS: contourAndFindLargestBidirectional, createBidirectionalToolData, createLabelmapVolumeForViewport, createMergedLabelmapForIndex, floodFill, getBrushSizeForToolGroup, getBrushThresholdForToolGroup, getBrushToolInstances, getDefaultRepresentationConfig, isValidRepresentationConfig, rectangleROIThresholdVolumeByRange, segmentContourAction, setBrushSizeForToolGroup, setBrushThresholdForToolGroup, thresholdSegmentationByRange, thresholdVolumeByRange
88678
88697
 
88679
88698
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/tools/dist/esm/utilities/index.js + 25 modules
88680
88699
  var utilities = __webpack_require__(21013);
@@ -89382,7 +89401,7 @@ function invalidateBrushCursor(toolGroupId) {
89382
89401
  if (toolGroup === undefined) {
89383
89402
  return;
89384
89403
  }
89385
- const brushBasedToolInstances = (0,segmentation_utilities/* default */.Ay)(toolGroupId);
89404
+ const brushBasedToolInstances = (0,segmentation_utilities/* getBrushToolInstances */.n7)(toolGroupId);
89386
89405
  brushBasedToolInstances.forEach((tool) => {
89387
89406
  tool.invalidateBrushCursor();
89388
89407
  });
@@ -89598,6 +89617,7 @@ function getHoveredContourSegmentationAnnotation(segmentationId) {
89598
89617
 
89599
89618
 
89600
89619
 
89620
+
89601
89621
 
89602
89622
 
89603
89623
  /***/ }),
@@ -89732,7 +89752,7 @@ function triggerSegmentationRender(toolGroupId) {
89732
89752
 
89733
89753
  "use strict";
89734
89754
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
89735
- /* harmony export */ Ay: () => (/* binding */ getBrushToolInstances)
89755
+ /* harmony export */ n7: () => (/* binding */ getBrushToolInstances)
89736
89756
  /* harmony export */ });
89737
89757
  /* unused harmony exports getVoxelOverlap, processVolumes */
89738
89758
  /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50719);