@ohif/app 3.11.0-beta.16 → 3.11.0-beta.18

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 (24) hide show
  1. package/dist/{3984.bundle.8ae9bddf8fa462e17ce5.js → 3984.bundle.f71e61e01f90ceae343c.js} +3 -3
  2. package/dist/{7241.bundle.928234e10c557bc25bd6.js → 7241.bundle.af4b37ebda883020420b.js} +88 -41
  3. package/dist/{963.bundle.7cc918def10d308e4a28.js → 963.bundle.830a5c271fe1568e5310.js} +2 -2
  4. package/dist/{app.bundle.01365fa030b144c107ad.js → app.bundle.56f46ad8e70c5a2c69ed.js} +1690 -1538
  5. package/dist/index.html +1 -1
  6. package/dist/sw.js +1 -1
  7. package/package.json +18 -18
  8. /package/dist/{1459.bundle.827c9dba5cc9c30b93c8.js → 1459.bundle.4f9e0de541e00e449254.js} +0 -0
  9. /package/dist/{1807.bundle.804d73818f9dfb29f76b.js → 1807.bundle.92b919d402b43b724a86.js} +0 -0
  10. /package/dist/{1919.bundle.f550c71049e32ad189db.js → 1919.bundle.e735c79ba2d887797799.js} +0 -0
  11. /package/dist/{213.bundle.14f6ba7ef156a8fb2156.js → 213.bundle.25224d64579610ddb115.js} +0 -0
  12. /package/dist/{2424.bundle.d7d56105cdedda789ac0.js → 2424.bundle.befa6e6e34bcc26ec76b.js} +0 -0
  13. /package/dist/{2932.bundle.7b2e13d5a14a59f57cf2.js → 2932.bundle.2b17f59097c408c0ebd9.js} +0 -0
  14. /package/dist/{3658.bundle.7fac2e183f4a9a1eb69e.js → 3658.bundle.78e5659bddd253e74da0.js} +0 -0
  15. /package/dist/{4113.bundle.25c8990d3e0fcc3bf2a8.js → 4113.bundle.b5814e49c841926e9ff4.js} +0 -0
  16. /package/dist/{6027.bundle.f8cdeb07643890873b70.js → 6027.bundle.96b0976efa55246725f0.js} +0 -0
  17. /package/dist/{6201.bundle.ae0c4dcfe25eb82d0a47.js → 6201.bundle.bd707d0d1aad246b79db.js} +0 -0
  18. /package/dist/{7197.bundle.9b2336bed927efaaf12d.js → 7197.bundle.896eadd851a271593a85.js} +0 -0
  19. /package/dist/{7639.bundle.b0730163f27b89121a92.js → 7639.bundle.d2761fc27142f31ba8c5.js} +0 -0
  20. /package/dist/{810.bundle.691394d0ac721fa0e3e3.js → 810.bundle.8c22c18d2e1642c4b812.js} +0 -0
  21. /package/dist/{85.bundle.1d7aa7438d918bc519dc.js → 85.bundle.5728d01dd2433c103654.js} +0 -0
  22. /package/dist/{8558.bundle.ad7744e9caa59f17a900.js → 8558.bundle.3b1b4595869acfd6ee4e.js} +0 -0
  23. /package/dist/{8815.bundle.d802e695eb6251ae067f.js → 8815.bundle.5794ca5e135d9aabff4a.js} +0 -0
  24. /package/dist/{934.bundle.b848e991234fa16e2896.js → 934.bundle.e83601f58e8f6aedc68b.js} +0 -0
@@ -3887,7 +3887,7 @@ const collapsedInsideBorderSize = 4;
3887
3887
  const collapsedOutsideBorderSize = 4;
3888
3888
  const collapsedWidth = 25;
3889
3889
  const rightPanelInitialExpandedWidth = 280;
3890
- const leftPanelInitialExpandedWidth = 292;
3890
+ const leftPanelInitialExpandedWidth = 282;
3891
3891
  const panelGroupDefinition = {
3892
3892
  groupId: 'viewerLayoutResizablePanelGroup',
3893
3893
  shared: {
@@ -10270,8 +10270,8 @@ function AboutModalDefault() {
10270
10270
  name
10271
10271
  } = (0,browser_detect_es5/* default */.A)();
10272
10272
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
10273
- const versionNumber = "3.11.0-beta.16";
10274
- const commitHash = "0f394962904808a140221dbae063ca5dcf0df36b";
10273
+ const versionNumber = "3.11.0-beta.18";
10274
+ const commitHash = "0bb9b17636223daa5a749c628f7ba2b00538a0fc";
10275
10275
  const [main, beta] = versionNumber.split('-');
10276
10276
  return /*#__PURE__*/react.createElement(ui_next_src/* AboutModal */.VTU, {
10277
10277
  className: "w-[400px]"
@@ -1610,6 +1610,8 @@ ImageOverlayViewerTool.addOverlayPlaneModule = tools_OverlayPlaneModuleProvider.
1610
1610
 
1611
1611
  function initCornerstoneTools(configuration = {}) {
1612
1612
  dist_esm.CrosshairsTool.isAnnotation = false;
1613
+ ai_dist_esm/* LabelmapSlicePropagationTool */.Bj.isAnnotation = false;
1614
+ ai_dist_esm/* MarkerLabelmapTool */.pY.isAnnotation = false;
1613
1615
  dist_esm.ReferenceLinesTool.isAnnotation = false;
1614
1616
  dist_esm.AdvancedMagnifyTool.isAnnotation = false;
1615
1617
  dist_esm.PlanarFreehandContourSegmentationTool.isAnnotation = false;
@@ -6647,10 +6649,16 @@ async function init({
6647
6649
  esm.eventTarget.addEventListenerDebounced(esm.EVENTS.ERROR_EVENT, ({
6648
6650
  detail
6649
6651
  }) => {
6652
+ // Create a stable ID for deduplication based on error type and message
6653
+ const errorId = `cornerstone-error-${detail.type}-${detail.message.substring(0, 50)}`;
6650
6654
  uiNotificationService.show({
6651
6655
  title: detail.type,
6652
6656
  message: detail.message,
6653
- type: 'error'
6657
+ type: 'error',
6658
+ id: errorId,
6659
+ allowDuplicates: false,
6660
+ // Prevent duplicate error notifications
6661
+ deduplicationInterval: 30000 // 30 seconds deduplication window
6654
6662
  });
6655
6663
  }, 100);
6656
6664
 
@@ -6662,37 +6670,80 @@ async function init({
6662
6670
  };
6663
6671
  }
6664
6672
  function initializeWebWorkerProgressHandler(uiNotificationService) {
6665
- const activeToasts = new Map();
6666
-
6667
- // eventTarget.addEventListener(EVENTS.WEB_WORKER_PROGRESS, ({ detail }) => {
6668
- // const { progress, type, id } = detail;
6669
-
6670
- // const cacheKey = `${type}-${id}`;
6671
- // if (progress === 0 && !activeToasts.has(cacheKey)) {
6672
- // const progressPromise = new Promise((resolve, reject) => {
6673
- // activeToasts.set(cacheKey, { resolve, reject });
6674
- // });
6675
-
6676
- // uiNotificationService.show({
6677
- // id: cacheKey,
6678
- // title: `${type}`,
6679
- // message: `${type}: ${progress}%`,
6680
- // autoClose: false,
6681
- // promise: progressPromise,
6682
- // promiseMessages: {
6683
- // loading: `Computing...`,
6684
- // success: `Completed successfully`,
6685
- // error: 'Web Worker failed',
6686
- // },
6687
- // });
6688
- // } else {
6689
- // if (progress === 100) {
6690
- // const { resolve } = activeToasts.get(cacheKey);
6691
- // resolve({ progress, type });
6692
- // activeToasts.delete(cacheKey);
6693
- // }
6694
- // }
6695
- // });
6673
+ // Use a single map to track all active worker tasks
6674
+ const activeWorkerTasks = new Map();
6675
+
6676
+ // Create a normalized task key that doesn't include the random ID
6677
+ // This helps us identify and deduplicate the same type of task
6678
+ const getNormalizedTaskKey = type => {
6679
+ return `worker-task-${type.toLowerCase().replace(/\s+/g, '-')}`;
6680
+ };
6681
+ esm.eventTarget.addEventListener(esm.EVENTS.WEB_WORKER_PROGRESS, ({
6682
+ detail
6683
+ }) => {
6684
+ const {
6685
+ progress,
6686
+ type,
6687
+ id
6688
+ } = detail;
6689
+
6690
+ // Skip notifications for compute statistics
6691
+ if (type === dist_esm.Enums.WorkerTypes.COMPUTE_STATISTICS) {
6692
+ return;
6693
+ }
6694
+ const normalizedKey = getNormalizedTaskKey(type);
6695
+ if (progress === 0) {
6696
+ // Check if we're already tracking a task of this type
6697
+ if (!activeWorkerTasks.has(normalizedKey)) {
6698
+ const progressPromise = new Promise((resolve, reject) => {
6699
+ activeWorkerTasks.set(normalizedKey, {
6700
+ resolve,
6701
+ reject,
6702
+ originalId: id,
6703
+ type
6704
+ });
6705
+ });
6706
+ uiNotificationService.show({
6707
+ id: normalizedKey,
6708
+ // Use the normalized key as ID for better deduplication
6709
+ title: `${type}`,
6710
+ message: `Computing...`,
6711
+ autoClose: false,
6712
+ allowDuplicates: false,
6713
+ deduplicationInterval: 60000,
6714
+ // 60 seconds - prevent frequent notifications of same type
6715
+ promise: progressPromise,
6716
+ promiseMessages: {
6717
+ loading: `Computing...`,
6718
+ success: `Completed successfully`,
6719
+ error: 'Web Worker failed'
6720
+ }
6721
+ });
6722
+ } else {
6723
+ // Already tracking this type of task, just let it continue
6724
+ console.debug(`Already tracking a "${type}" task, skipping duplicate notification`);
6725
+ }
6726
+ }
6727
+ // Task completed
6728
+ else if (progress === 100) {
6729
+ // Check if we have this task type in our tracking map
6730
+ const taskData = activeWorkerTasks.get(normalizedKey);
6731
+ if (taskData) {
6732
+ // Resolve the promise to update the notification
6733
+ const {
6734
+ resolve
6735
+ } = taskData;
6736
+ resolve({
6737
+ progress,
6738
+ type
6739
+ });
6740
+
6741
+ // Remove from tracking
6742
+ activeWorkerTasks.delete(normalizedKey);
6743
+ console.debug(`Worker task "${type}" completed successfully`);
6744
+ }
6745
+ }
6746
+ });
6696
6747
  }
6697
6748
 
6698
6749
  /**
@@ -8627,15 +8678,11 @@ const CornerstoneViewportDownloadForm = ({
8627
8678
  } = downloadViewport;
8628
8679
  const toolGroup = dist_esm.ToolGroupManager.getToolGroupForViewport(activeViewportId, renderingEngineId);
8629
8680
  toolGroup.addViewport(downloadViewportId, renderingEngineId);
8630
- Object.keys(toolGroup.getToolInstances()).forEach(toolName => {
8631
- if (show && toolName !== 'Crosshairs') {
8632
- try {
8633
- toolGroup.setToolEnabled(toolName);
8634
- } catch (error) {
8635
- console.debug('Error enabling tool:', error);
8636
- }
8637
- } else {
8638
- toolGroup.setToolDisabled(toolName);
8681
+ const toolInstances = toolGroup.getToolInstances();
8682
+ const toolInstancesArray = Object.values(toolInstances);
8683
+ toolInstancesArray.forEach(toolInstance => {
8684
+ if (toolInstance.constructor.isAnnotation !== false) {
8685
+ toolGroup.setToolEnabled(toolInstance.toolName);
8639
8686
  }
8640
8687
  });
8641
8688
  };
@@ -453,8 +453,8 @@ const toolbarButtons = [
453
453
  tooltip: 'Show Reference Lines',
454
454
  commands: 'toggleEnabledDisabledToolbar',
455
455
  listeners: {
456
- [core_src/* ViewportGridService */.sI.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED]: callbacks('ReferenceLinesTool'),
457
- [core_src/* ViewportGridService */.sI.EVENTS.VIEWPORTS_READY]: callbacks('ReferenceLinesTool')
456
+ [core_src/* ViewportGridService */.sI.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED]: callbacks('ReferenceLines'),
457
+ [core_src/* ViewportGridService */.sI.EVENTS.VIEWPORTS_READY]: callbacks('ReferenceLines')
458
458
  },
459
459
  evaluate: ['evaluate.cornerstoneTool.toggle', {
460
460
  name: 'evaluate.viewport.supported',