@ohif/app 3.9.0-beta.109 → 3.9.0-beta.110

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 (36) hide show
  1. package/dist/{1185.bundle.93140205788de7b3eaad.js → 1185.bundle.bd20dd033687e5122b08.js} +71 -27
  2. package/dist/{1266.bundle.3875be12c4eab784552f.js → 1266.bundle.c5df8ee5daff1150b16f.js} +11 -21
  3. package/dist/{1374.bundle.bc6b8636a31f5c20328f.js → 1374.bundle.d66644a5cd706ea668a3.js} +4 -1
  4. package/dist/{1436.bundle.ffe514361e39273cb437.js → 1436.bundle.c12ed4e5e35979b77ec9.js} +3 -1
  5. package/dist/{149.bundle.54475bb9f72311be64bf.js → 149.bundle.8fa9d2ef7a3f5d9e8775.js} +3 -0
  6. package/dist/{1927.bundle.7655ff4783bfaa28049f.js → 1927.bundle.49539e3ab5b0aad1399c.js} +1 -31
  7. package/dist/{4571.bundle.9ad4f229948c2a2da2ec.js → 4571.bundle.3b1691730b3c57bf4d35.js} +5 -7
  8. package/dist/{4834.bundle.a9da6ed1ac7f813b4581.js → 4834.bundle.a1957855be846e3bf60a.js} +1 -1
  9. package/dist/{5717.bundle.15335c2857a756212d16.js → 5717.bundle.231762aad110306ec2e4.js} +3 -1
  10. package/dist/732.bundle.532947c280e1a8f6e020.js +1174 -0
  11. package/dist/{7955.bundle.adf334c3019de60c68c3.js → 7955.bundle.3916d5515b6271f6021c.js} +4 -1
  12. package/dist/{8008.bundle.48b6c198f120343360fe.js → 8008.bundle.a46e40612fbe8813bc65.js} +5 -2
  13. package/dist/{8259.bundle.cbf470afd145a22e894f.js → 8259.bundle.8cab7aaeda1aa94e9b0b.js} +4 -1
  14. package/dist/{8295.bundle.b7a42ba3566da7d117be.js → 8295.bundle.832bc290de31b7b23913.js} +8 -0
  15. package/dist/{8523.bundle.5d315f8096e3704ba241.js → 8523.bundle.648334132159465cdc41.js} +11 -9
  16. package/dist/{9212.bundle.8e3424c56953b6781772.js → 9212.bundle.a71c03df2e651f70b7f0.js} +19 -9
  17. package/dist/{9862.bundle.f6ba4e418cd94a350890.js → 9862.bundle.6da94e0219246ab52a04.js} +3 -0
  18. package/dist/{app.bundle.60a22178670dec94d2b5.js → app.bundle.616868274ef8d7f48993.js} +38 -10599
  19. package/dist/index.html +1 -1
  20. package/dist/{polySeg.bundle.cf443bab5e1888443354.js → polySeg.bundle.b79ae514989e86301c71.js} +1 -1
  21. package/dist/{suv-peak-worker.bundle.ad1de658c7260083e81d.js → suv-peak-worker.bundle.cb4fc86bb89d9e5c5bfa.js} +1 -1
  22. package/dist/sw.js +1 -1
  23. package/package.json +19 -19
  24. package/dist/9952.bundle.6f1a92b82c42c60f57eb.js +0 -1210
  25. /package/dist/{213.bundle.5b769ddafb3578bad02e.js → 213.bundle.397201f3cdc4e4b374f4.js} +0 -0
  26. /package/dist/{2424.bundle.b7d42f910f527f9e5770.js → 2424.bundle.fac1c8a11ff68a141d53.js} +0 -0
  27. /package/dist/{2825.bundle.72d57fe7d4777c25e97b.js → 2825.bundle.b9de312c87eab93da319.js} +0 -0
  28. /package/dist/{3198.bundle.3fb2e322c740be3aa034.js → 3198.bundle.4ed02e3de6cdc6a92aae.js} +0 -0
  29. /package/dist/{5139.bundle.6158b86c36920b8c1a6d.js → 5139.bundle.ca60ba8c198fccf47f7b.js} +0 -0
  30. /package/dist/{5247.bundle.ad5af4b29de99546cba3.js → 5247.bundle.6f2393e27b92e5225008.js} +0 -0
  31. /package/dist/{5687.bundle.37757fc5365a93aabe13.js → 5687.bundle.b662ba555943459ab799.js} +0 -0
  32. /package/dist/{717.bundle.4100104f3013393f8f1d.js → 717.bundle.f5a1e9071b27ec515cd6.js} +0 -0
  33. /package/dist/{7197.bundle.3d7de800dc3380e12578.js → 7197.bundle.e4ab876e1cb1242234ca.js} +0 -0
  34. /package/dist/{8329.bundle.8be70021a7e2d1ca9d68.js → 8329.bundle.3de30547a4546696a63f.js} +0 -0
  35. /package/dist/{8558.bundle.bb7967ec436462e0549b.js → 8558.bundle.b0205d63fbfb97c7e8da.js} +0 -0
  36. /package/dist/{9551.bundle.623f1f90eec247beac85.js → 9551.bundle.b87cd5c8302068301772.js} +0 -0
@@ -1977,10 +1977,10 @@ function Bidirectional_getDisplayText(mappedAnnotations, displaySet) {
1977
1977
  const getStatisticDisplayString = (numbers, unit, key) => {
1978
1978
  if (Array.isArray(numbers) && numbers.length > 0) {
1979
1979
  const results = numbers.map(number => src/* utils */.Wp.roundNumber(number, 2));
1980
- return `${key.charAt(0).toUpperCase() + key.slice(1)}: ${results.join(', ')} <small>${utils_getDisplayUnit(unit)}</small>`;
1980
+ return `${key.charAt(0).toUpperCase() + key.slice(1)}: ${results.join(', ')} ${utils_getDisplayUnit(unit)}`;
1981
1981
  }
1982
1982
  const result = src/* utils */.Wp.roundNumber(numbers, 2);
1983
- return `${key.charAt(0).toUpperCase() + key.slice(1)}: ${result} <small>${utils_getDisplayUnit(unit)}</small>`;
1983
+ return `${key.charAt(0).toUpperCase() + key.slice(1)}: ${result} ${utils_getDisplayUnit(unit)}`;
1984
1984
  };
1985
1985
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.ts
1986
1986
 
@@ -6703,14 +6703,14 @@ function commandsModule({
6703
6703
  type
6704
6704
  }) => {
6705
6705
  const {
6706
- setSegmentationPresentation
6706
+ addSegmentationPresentationItem
6707
6707
  } = useSegmentationPresentationStore/* useSegmentationPresentationStore */.v.getState();
6708
6708
  const referencedDisplaySetInstanceUID = displaySet.referencedDisplaySetInstanceUID;
6709
- setSegmentationPresentation(referencedDisplaySetInstanceUID, [{
6709
+ addSegmentationPresentationItem(referencedDisplaySetInstanceUID, {
6710
6710
  segmentationId: displaySet.displaySetInstanceUID,
6711
6711
  hydrated: true,
6712
6712
  type
6713
- }]);
6713
+ });
6714
6714
  },
6715
6715
  updateStoredPositionPresentation: ({
6716
6716
  viewportId,
@@ -7728,7 +7728,6 @@ function commandsModule({
7728
7728
  * @param props.value - The style value
7729
7729
  */
7730
7730
  setSegmentationStyleCommand: ({
7731
- segmentationId,
7732
7731
  type,
7733
7732
  key,
7734
7733
  value
@@ -7901,11 +7900,15 @@ function commandsModule({
7901
7900
  const {
7902
7901
  label
7903
7902
  } = segment;
7904
- (0,default_src.callInputDialog)(uiDialogService, label, (label, actionId) => {
7903
+ const callback = (label, actionId) => {
7905
7904
  if (label === '') {
7906
7905
  return;
7907
7906
  }
7908
7907
  segmentationService.setSegmentLabel(segmentationId, segmentIndex, label);
7908
+ };
7909
+ (0,default_src.callInputDialog)(uiDialogService, label, callback, false, {
7910
+ dialogTitle: 'Edit Segment Label',
7911
+ inputLabel: 'Enter new label'
7909
7912
  });
7910
7913
  },
7911
7914
  editSegmentationLabel: ({
@@ -7922,7 +7925,7 @@ function commandsModule({
7922
7925
  const {
7923
7926
  label
7924
7927
  } = segmentation;
7925
- (0,default_src.callInputDialog)(uiDialogService, label, (label, actionId) => {
7928
+ const callback = (label, actionId) => {
7926
7929
  if (label === '') {
7927
7930
  return;
7928
7931
  }
@@ -7930,6 +7933,10 @@ function commandsModule({
7930
7933
  segmentationId,
7931
7934
  label
7932
7935
  });
7936
+ };
7937
+ (0,default_src.callInputDialog)(uiDialogService, label, callback, false, {
7938
+ dialogTitle: 'Edit Segmentation Label',
7939
+ inputLabel: 'Enter new label'
7933
7940
  });
7934
7941
  },
7935
7942
  editSegmentColor: ({
@@ -11435,8 +11442,13 @@ class SegmentationService extends src/* PubSubService */.Rc {
11435
11442
  };
11436
11443
  this._segmentationIdToColorLUTIndexMap = new Map();
11437
11444
  this.servicesManager = servicesManager;
11445
+ }
11446
+ onModeEnter() {
11438
11447
  this._initSegmentationService();
11439
11448
  }
11449
+ onModeExit() {
11450
+ this.destroy();
11451
+ }
11440
11452
 
11441
11453
  /**
11442
11454
  * Retrieves a segmentation by its ID.
@@ -12381,7 +12393,7 @@ class SegmentationService extends src/* PubSubService */.Rc {
12381
12393
  const imageIds = (0,stateManagement_segmentation.getLabelmapImageIds)(segmentation.segmentationId);
12382
12394
  const frameOfReferenceUID = viewport.getFrameOfReferenceUID();
12383
12395
  const segImage = esm.cache.getImage(imageIds[0]);
12384
- if (segImage?.FrameOfReferenceUID === frameOfReferenceUID) {
12396
+ if (segImage?.FrameOfReferenceUID && frameOfReferenceUID && segImage.FrameOfReferenceUID === frameOfReferenceUID) {
12385
12397
  const isConverted = await this.convertStackToVolumeViewport(viewport);
12386
12398
  (0,triggerSegmentationEvents.triggerSegmentationRepresentationModified)(viewportId, segmentationId, esm_enums.SegmentationRepresentations.Labelmap);
12387
12399
  return isConverted;
@@ -13878,6 +13890,9 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
13878
13890
  }
13879
13891
  });
13880
13892
  }
13893
+ if (!volumesNotLoaded.length) {
13894
+ return;
13895
+ }
13881
13896
 
13882
13897
  // This returns the async continuation only
13883
13898
  return this.setVolumesForViewport(viewport, volumeInputArray, presentations);
@@ -14182,12 +14197,12 @@ class CornerstoneViewportService extends src/* PubSubService */.Rc {
14182
14197
  const {
14183
14198
  segmentationService
14184
14199
  } = this.servicesManager.services;
14185
- segmentationPresentation.forEach(presentation => {
14200
+ segmentationPresentation.forEach(presentationItem => {
14186
14201
  const {
14187
14202
  segmentationId,
14188
14203
  type,
14189
14204
  hydrated
14190
- } = presentation;
14205
+ } = presentationItem;
14191
14206
  if (hydrated) {
14192
14207
  segmentationService.addSegmentationRepresentation(viewport.id, {
14193
14208
  segmentationId,
@@ -15151,8 +15166,6 @@ var ui_next_src = __webpack_require__(98441);
15151
15166
  function PanelSegmentation({
15152
15167
  servicesManager,
15153
15168
  commandsManager,
15154
- extensionManager,
15155
- configuration,
15156
15169
  children
15157
15170
  }) {
15158
15171
  const {
@@ -15267,31 +15280,41 @@ function PanelSegmentation({
15267
15280
  segmentationId
15268
15281
  });
15269
15282
  },
15270
- setFillAlpha: (type, value) => {
15283
+ setFillAlpha: ({
15284
+ type
15285
+ }, value) => {
15271
15286
  commandsManager.run('setFillAlpha', {
15272
15287
  type,
15273
15288
  value
15274
15289
  });
15275
15290
  },
15276
- setOutlineWidth: (type, value) => {
15291
+ setOutlineWidth: ({
15292
+ type
15293
+ }, value) => {
15277
15294
  commandsManager.run('setOutlineWidth', {
15278
15295
  type,
15279
15296
  value
15280
15297
  });
15281
15298
  },
15282
- setRenderFill: (type, value) => {
15299
+ setRenderFill: ({
15300
+ type
15301
+ }, value) => {
15283
15302
  commandsManager.run('setRenderFill', {
15284
15303
  type,
15285
15304
  value
15286
15305
  });
15287
15306
  },
15288
- setRenderOutline: (type, value) => {
15307
+ setRenderOutline: ({
15308
+ type
15309
+ }, value) => {
15289
15310
  commandsManager.run('setRenderOutline', {
15290
15311
  type,
15291
15312
  value
15292
15313
  });
15293
15314
  },
15294
- setFillAlphaInactive: (type, value) => {
15315
+ setFillAlphaInactive: ({
15316
+ type
15317
+ }, value) => {
15295
15318
  commandsManager.run('setFillAlphaInactive', {
15296
15319
  type,
15297
15320
  value
@@ -15337,6 +15360,12 @@ function PanelSegmentation({
15337
15360
  const {
15338
15361
  Labelmap
15339
15362
  } = representationData;
15363
+ if (!Labelmap) {
15364
+ return {
15365
+ segmentationId,
15366
+ isExportable: true
15367
+ };
15368
+ }
15340
15369
  const referencedImageIds = Labelmap.referencedImageIds;
15341
15370
  const firstImageId = referencedImageIds[0];
15342
15371
  const instance = esm.metaData.get('instance', firstImageId);
@@ -17310,23 +17339,38 @@ const createSegmentationPresentationStore = set => ({
17310
17339
  segmentationPresentationStore: {}
17311
17340
  }, false, 'clearSegmentationPresentationStore'),
17312
17341
  /**
17313
- * Adds a new segmentation presentation to the store.
17342
+ * Adds a new segmentation presentation item to the store.
17343
+ *
17344
+ * segmentationPresentationItem: {
17345
+ * segmentationId: string;
17346
+ * type: SegmentationRepresentations;
17347
+ * hydrated: boolean | null;
17348
+ * config?: unknown;
17349
+ * }
17314
17350
  */
17315
- addSegmentationPresentation: (presentationId, segmentationPresentation, {
17316
- servicesManager
17317
- }) => set(state => ({
17351
+ addSegmentationPresentationItem: (presentationId, segmentationPresentationItem) => set(state => ({
17318
17352
  segmentationPresentationStore: {
17319
17353
  ...state.segmentationPresentationStore,
17320
- [presentationId]: segmentationPresentation
17354
+ [presentationId]: [...(state.segmentationPresentationStore[presentationId] || []), segmentationPresentationItem]
17321
17355
  }
17322
- }), false, 'addSegmentationPresentation'),
17356
+ }), false, 'addSegmentationPresentationItem'),
17323
17357
  /**
17324
- * Sets the segmentation presentation for a given presentation ID.
17358
+ * Sets the segmentation presentation for a given presentation ID. A segmentation
17359
+ * presentation is an array of SegmentationPresentationItem.
17360
+ *
17361
+ * segmentationPresentationItem: {
17362
+ * segmentationId: string;
17363
+ * type: SegmentationRepresentations;
17364
+ * hydrated: boolean | null;
17365
+ * config?: unknown;
17366
+ * }
17367
+ *
17368
+ * segmentationPresentation: SegmentationPresentationItem[]
17325
17369
  */
17326
- setSegmentationPresentation: (presentationId, value) => set(state => ({
17370
+ setSegmentationPresentation: (presentationId, values) => set(state => ({
17327
17371
  segmentationPresentationStore: {
17328
17372
  ...state.segmentationPresentationStore,
17329
- [presentationId]: value
17373
+ [presentationId]: values
17330
17374
  }
17331
17375
  }), false, 'setSegmentationPresentation'),
17332
17376
  /**
@@ -508,7 +508,7 @@ const toolbarButtons = [{
508
508
  commands: 'showDownloadViewportModal',
509
509
  evaluate: ['evaluate.action', {
510
510
  name: 'evaluate.viewport.supported',
511
- unsupportedViewportTypes: ['video']
511
+ unsupportedViewportTypes: ['video', 'wholeSlide']
512
512
  }]
513
513
  }
514
514
  }, {
@@ -866,7 +866,9 @@ function modeFactory({
866
866
  measurementService,
867
867
  toolbarService,
868
868
  toolGroupService,
869
- customizationService
869
+ customizationService,
870
+ panelService,
871
+ segmentationService
870
872
  } = servicesManager.services;
871
873
  measurementService.clearMeasurements();
872
874
  performCustomizations(customizationService);
@@ -878,25 +880,13 @@ function modeFactory({
878
880
 
879
881
  // // ActivatePanel event trigger for when a segmentation or measurement is added.
880
882
  // // Do not force activation so as to respect the state the user may have left the UI in.
881
- // _activatePanelTriggersSubscriptions = [
882
- // ...panelService.addActivatePanelTriggers(dicomSeg.panel, [
883
- // {
884
- // sourcePubSubService: segmentationService,
885
- // sourceEvents: [
886
- // segmentationService.EVENTS.SEGMENTATION_PIXEL_DATA_CREATED,
887
- // ],
888
- // },
889
- // ]),
890
- // ...panelService.addActivatePanelTriggers(tracked.measurements, [
891
- // {
892
- // sourcePubSubService: measurementService,
893
- // sourceEvents: [
894
- // measurementService.EVENTS.MEASUREMENT_ADDED,
895
- // measurementService.EVENTS.RAW_MEASUREMENT_ADDED,
896
- // ],
897
- // },
898
- // ]),
899
- // ];
883
+ _activatePanelTriggersSubscriptions = [...panelService.addActivatePanelTriggers(cornerstone.segmentation, [{
884
+ sourcePubSubService: segmentationService,
885
+ sourceEvents: [segmentationService.EVENTS.SEGMENTATION_ADDED]
886
+ }]), ...panelService.addActivatePanelTriggers(tracked.measurements, [{
887
+ sourcePubSubService: measurementService,
888
+ sourceEvents: [measurementService.EVENTS.MEASUREMENT_ADDED, measurementService.EVENTS.RAW_MEASUREMENT_ADDED]
889
+ }])];
900
890
  },
901
891
  onModeExit: ({
902
892
  servicesManager
@@ -135,7 +135,10 @@ const toolbarButtons = [{
135
135
  commandName: 'showDownloadViewportModal',
136
136
  context: 'CORNERSTONE'
137
137
  }],
138
- evaluate: 'evaluate.action'
138
+ evaluate: ['evaluate.action', {
139
+ name: 'evaluate.viewport.supported',
140
+ unsupportedViewportTypes: ['video', 'wholeSlide']
141
+ }]
139
142
  }
140
143
  }, {
141
144
  id: 'Layout',
@@ -3224,10 +3224,12 @@ function _imageChangeEventListener(evt) {
3224
3224
  };
3225
3225
  const { origin: currentOrigin } = viewport.getImageDataMetadata(currentImage);
3226
3226
  const originToUse = currentOrigin;
3227
+ const constructor = derivedImage.voxelManager.getConstructor();
3228
+ const newPixelData = derivedImage.voxelManager.getScalarData();
3227
3229
  const scalarArray = DataArray/* default.newInstance */.Ay.newInstance({
3228
3230
  name: 'Pixels',
3229
3231
  numberOfComponents: 1,
3230
- values: [...derivedImage.voxelManager.getScalarData()],
3232
+ values: new constructor(newPixelData),
3231
3233
  });
3232
3234
  const imageData = ImageData/* default.newInstance */.Ay.newInstance();
3233
3235
  imageData.setDimensions(dimensions[0], dimensions[1], 1);
@@ -8115,6 +8115,9 @@ function _stopClipWithData(playClipData) {
8115
8115
  }
8116
8116
  function _getVolumeFromViewport(viewport) {
8117
8117
  const volumeIds = viewport.getAllVolumeIds();
8118
+ if (!volumeIds?.length) {
8119
+ return undefined;
8120
+ }
8118
8121
  const dynamicVolumeId = volumeIds.find((volumeId) => dist_esm.cache.getVolume(volumeId)?.isDynamicVolume());
8119
8122
  const volumeId = dynamicVolumeId ?? volumeIds[0];
8120
8123
  return dist_esm.cache.getVolume(volumeId);
@@ -142,36 +142,6 @@
142
142
  /******/ };
143
143
  /******/ })();
144
144
  /******/
145
- /******/ /* webpack/runtime/create fake namespace object */
146
- /******/ (() => {
147
- /******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
148
- /******/ var leafPrototypes;
149
- /******/ // create a fake namespace object
150
- /******/ // mode & 1: value is a module id, require it
151
- /******/ // mode & 2: merge all properties of value into the ns
152
- /******/ // mode & 4: return value when already ns object
153
- /******/ // mode & 16: return value when it's Promise-like
154
- /******/ // mode & 8|1: behave like require
155
- /******/ __webpack_require__.t = function(value, mode) {
156
- /******/ if(mode & 1) value = this(value);
157
- /******/ if(mode & 8) return value;
158
- /******/ if(typeof value === 'object' && value) {
159
- /******/ if((mode & 4) && value.__esModule) return value;
160
- /******/ if((mode & 16) && typeof value.then === 'function') return value;
161
- /******/ }
162
- /******/ var ns = Object.create(null);
163
- /******/ __webpack_require__.r(ns);
164
- /******/ var def = {};
165
- /******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
166
- /******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
167
- /******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
168
- /******/ }
169
- /******/ def['default'] = () => (value);
170
- /******/ __webpack_require__.d(ns, def);
171
- /******/ return ns;
172
- /******/ };
173
- /******/ })();
174
- /******/
175
145
  /******/ /* webpack/runtime/define property getters */
176
146
  /******/ (() => {
177
147
  /******/ // define getter functions for harmony exports
@@ -202,7 +172,7 @@
202
172
  /******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
203
173
  /******/ __webpack_require__.u = (chunkId) => {
204
174
  /******/ // return url for filenames based on template
205
- /******/ return "" + chunkId + ".bundle." + {"4571":"9ad4f229948c2a2da2ec","8094":"411698eaf81975a7f12d","9952":"6f1a92b82c42c60f57eb"}[chunkId] + ".js";
175
+ /******/ return "" + chunkId + ".bundle." + {"732":"532947c280e1a8f6e020","4571":"3b1691730b3c57bf4d35","8094":"411698eaf81975a7f12d"}[chunkId] + ".js";
206
176
  /******/ };
207
177
  /******/ })();
208
178
  /******/
@@ -824,23 +824,21 @@ function decodeJPEGLossless_initialize(decodeConfig) {
824
824
  return Promise.resolve();
825
825
  }
826
826
  return new Promise((resolve, reject) => {
827
- __webpack_require__.e(/* import() */ 9952).then(__webpack_require__.t.bind(__webpack_require__, 69952, 23)).then((jpeg) => {
828
- decodeJPEGLossless_local.jpeg = jpeg;
827
+ __webpack_require__.e(/* import() */ 732).then(__webpack_require__.bind(__webpack_require__, 10732)).then(({ Decoder }) => {
828
+ const decoder = new Decoder();
829
+ decodeJPEGLossless_local.jpeg = decoder;
829
830
  resolve();
830
831
  }, reject);
831
832
  });
832
833
  }
833
834
  async function decodeJPEGLossless(imageFrame, pixelData) {
834
835
  await decodeJPEGLossless_initialize();
835
- if (typeof decodeJPEGLossless_local.jpeg === 'undefined' ||
836
- typeof decodeJPEGLossless_local.jpeg.lossless === 'undefined' ||
837
- typeof decodeJPEGLossless_local.jpeg.lossless.Decoder === 'undefined') {
836
+ if (typeof decodeJPEGLossless_local.jpeg === 'undefined') {
838
837
  throw new Error('No JPEG Lossless decoder loaded');
839
838
  }
840
839
  const byteOutput = imageFrame.bitsAllocated <= 8 ? 1 : 2;
841
840
  const buffer = pixelData.buffer;
842
- const decoder = new decodeJPEGLossless_local.jpeg.lossless.Decoder();
843
- const decompressedData = decoder.decode(buffer, pixelData.byteOffset, pixelData.length, byteOutput);
841
+ const decompressedData = decodeJPEGLossless_local.jpeg.decode(buffer, pixelData.byteOffset, pixelData.length, byteOutput);
844
842
  if (imageFrame.pixelRepresentation === 0) {
845
843
  if (imageFrame.bitsAllocated === 16) {
846
844
  imageFrame.pixelData = new Uint16Array(decompressedData.buffer);
@@ -288,7 +288,7 @@ function modeFactory({
288
288
  }
289
289
  }],
290
290
  extensions: extensionDependencies,
291
- hangingProtocol: ['default'],
291
+ hangingProtocol: 'default',
292
292
  sopClassHandlers: ['@ohif/extension-cornerstone.sopClassHandlerModule.DicomMicroscopySopClassHandler', '@ohif/extension-dicom-microscopy.sopClassHandlerModule.DicomMicroscopySRSopClassHandler', dicomvideo.sopClassHandler, dicompdf.sopClassHandler],
293
293
  hotkeys: [...src/* hotkeys */.ot.defaults.hotkeyBindings],
294
294
  ...modeConfiguration
@@ -8533,10 +8533,12 @@ function _imageChangeEventListener(evt) {
8533
8533
  };
8534
8534
  const { origin: currentOrigin } = viewport.getImageDataMetadata(currentImage);
8535
8535
  const originToUse = currentOrigin;
8536
+ const constructor = derivedImage.voxelManager.getConstructor();
8537
+ const newPixelData = derivedImage.voxelManager.getScalarData();
8536
8538
  const scalarArray = DataArray/* default.newInstance */.Ay.newInstance({
8537
8539
  name: 'Pixels',
8538
8540
  numberOfComponents: 1,
8539
- values: [...derivedImage.voxelManager.getScalarData()],
8541
+ values: new constructor(newPixelData),
8540
8542
  });
8541
8543
  const imageData = ImageData/* default.newInstance */.Ay.newInstance();
8542
8544
  imageData.setDimensions(dimensions[0], dimensions[1], 1);