@ohif/app 3.13.0-beta.116 → 3.13.0-beta.117

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 (47) hide show
  1. package/dist/{1206.bundle.47f070e2254d128c.js → 1206.bundle.e04ca1efe6f987ba.js} +1 -1
  2. package/dist/1483.bundle.ab1e3a882b58eb79.js +470 -0
  3. package/dist/{1602.bundle.097ec19e8e61516f.js → 1602.bundle.ea4c1b43123dd2b3.js} +2 -2
  4. package/dist/{7701.bundle.945445d6681ddd20.js → 2343.bundle.48839e1b3fa4505e.js} +990 -7
  5. package/dist/{3500.bundle.1e063b7b4910d6cf.js → 3500.bundle.da69a02594beccc8.js} +1 -1
  6. package/dist/{3760.bundle.6c7eeb4b7f1583ca.js → 3760.bundle.e406b1c3fadf2a3b.js} +2 -2
  7. package/dist/{5448.bundle.1e50777e4c4e122a.js → 5448.bundle.5686ebb99c379f64.js} +1 -1
  8. package/dist/{5696.bundle.9f0366ad867385bc.js → 5696.bundle.4e44ce1f590134eb.js} +7 -4
  9. package/dist/{5910.bundle.5561806884c95754.js → 5910.bundle.0f19608f3e76859b.js} +2 -2
  10. package/dist/{419.bundle.9d0e6a72e1e3a17b.js → 6749.bundle.8c3dd9258f09df24.js} +288 -62
  11. package/dist/{7248.bundle.f761b21f343d4b9f.js → 7248.bundle.11ec7ee7e10b0a34.js} +2 -2
  12. package/dist/{7295.bundle.4d4b6de4d2bb8856.js → 7499.bundle.0f065214db09a60b.js} +502 -5
  13. package/dist/{781.bundle.efb0a6981676cebb.js → 781.bundle.3c1a02ca26d4565a.js} +2 -2
  14. package/dist/{8423.bundle.5d1b3092bc9562c9.js → 8423.bundle.f8e7d0f1eba7e178.js} +2 -2
  15. package/dist/8492.bundle.de58afbc98ce7972.js +504 -0
  16. package/dist/8595.css +2 -0
  17. package/dist/{899.bundle.e786f8dfb66d74ca.js → 899.bundle.50c16f860acbc848.js} +2 -2
  18. package/dist/{9068.bundle.cd36fcb4e15a153e.js → 9068.bundle.95f1e638ef694ea9.js} +2 -2
  19. package/dist/{9402.bundle.6549cc304496cd5c.js → 9402.bundle.6a8a324e963b4099.js} +2 -2
  20. package/dist/{9415.bundle.2a970c71de4014bf.js → 9415.bundle.20fee612b3b3dbfd.js} +2 -2
  21. package/dist/{9437.bundle.0fff227a859992ea.js → 9437.bundle.f3f5aff637471ac4.js} +107 -123
  22. package/dist/app-config.js +1 -1
  23. package/dist/{app.bundle.55057e411d635dc3.js → app.bundle.a73ad7e598640adf.js} +203 -36
  24. package/dist/customizations/index.html +400 -0
  25. package/dist/customizations/segmentation/segmentationAnnotationTools.jsonc +48 -0
  26. package/dist/customizations/segmentation/segmentationEditing.jsonc +59 -0
  27. package/dist/customizations/{ctPresets.jsonc → tools/ctPresets.jsonc} +1 -1
  28. package/dist/customizations/{measurementLabels.jsonc → tools/measurementLabels.jsonc} +1 -1
  29. package/dist/customizations/{smoothRotate.jsonc → tools/smoothRotate.jsonc} +1 -1
  30. package/dist/customizations/veterinary/veterinary.jsonc +5 -0
  31. package/dist/customizations/{veterinaryOverlay.jsonc → veterinary/veterinaryOverlay.jsonc} +3 -3
  32. package/dist/customizations/{patientBirthDate.jsonc → worklist/patientBirthDate.jsonc} +2 -2
  33. package/dist/index.html +1 -1
  34. package/dist/sw.js +1 -1
  35. package/package.json +5 -5
  36. package/dist/4834.bundle.a91450199d0f45e4.js +0 -900
  37. package/dist/6001.bundle.0789789db5410764.js +0 -1529
  38. package/dist/customizations/veterinary.jsonc +0 -5
  39. /package/dist/{100.bundle.ac04a425c0851574.js → 100.bundle.ec5ee3b5f479a217.js} +0 -0
  40. /package/dist/{1180.bundle.c19c443fe8d26719.js → 1180.bundle.9bed26c1a1e75389.js} +0 -0
  41. /package/dist/{2779.bundle.dca036a18399be96.js → 2779.bundle.2a225a69fb65c30d.js} +0 -0
  42. /package/dist/{4556.bundle.b705ab15473128c7.js → 4556.bundle.735ccc9efdad0052.js} +0 -0
  43. /package/dist/{4683.bundle.5d12928efa9f70f4.js → 4683.bundle.e5d3182f0f4347af.js} +0 -0
  44. /package/dist/{7295.css → 8492.css} +0 -0
  45. /package/dist/{8832.bundle.ede981706cac8e15.js → 8832.bundle.1cb57aab32daeab8.js} +0 -0
  46. /package/dist/{9116.bundle.225e003c28c550c1.js → 9116.bundle.fffb2ff349a3c452.js} +0 -0
  47. /package/dist/{9290.bundle.a18c40b82772a3c6.js → 9290.bundle.82cf4e74ab3fa20a.js} +0 -0
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+ (globalThis["rspackChunk"] = globalThis["rspackChunk"] || []).push([[8492], {
3
+ 69387(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
4
+
5
+ // EXPORTS
6
+ __webpack_require__.d(__webpack_exports__, {
7
+ "default": () => (/* binding */ modes_tmtv_src)
8
+ });
9
+
10
+ // UNUSED EXPORTS: cs3d, customizations, extensionDependencies, initToolGroups, modeInstance, ohif, onModeEnter, tmtv, tmtvLayout, tmtvRoute
11
+
12
+ // EXTERNAL MODULE: ../../core/src/index.ts + 75 modules
13
+ var src = __webpack_require__(50679);
14
+ // EXTERNAL MODULE: ../../../modes/basic/src/index.tsx + 4 modules
15
+ var basic_src = __webpack_require__(69932);
16
+ // EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js + 22 modules
17
+ var i18next = __webpack_require__(26104);
18
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/package.json
19
+ var package_namespaceObject = JSON.parse('{"UU":"@ohif/mode-tmtv"}')
20
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/src/id.js
21
+
22
+ const id = package_namespaceObject.UU;
23
+
24
+ // EXTERNAL MODULE: ../../../extensions/tmtv/src/index.tsx + 27 modules
25
+ var tmtv_src = __webpack_require__(87110);
26
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/src/constants.ts
27
+ const MIN_SEGMENTATION_DRAWING_RADIUS = 0.5;
28
+ const MAX_SEGMENTATION_DRAWING_RADIUS = 99.5;
29
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/src/initToolGroups.js
30
+
31
+
32
+
33
+ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
34
+ const tools = {
35
+ active: [{
36
+ toolName: toolNames.WindowLevel,
37
+ bindings: [{
38
+ mouseButton: Enums.MouseBindings.Primary
39
+ }]
40
+ }, {
41
+ toolName: toolNames.Pan,
42
+ bindings: [{
43
+ mouseButton: Enums.MouseBindings.Auxiliary
44
+ }]
45
+ }, {
46
+ toolName: toolNames.Zoom,
47
+ bindings: [{
48
+ mouseButton: Enums.MouseBindings.Secondary
49
+ }, {
50
+ numTouchPoints: 2
51
+ }]
52
+ }, {
53
+ toolName: toolNames.StackScroll,
54
+ bindings: [{
55
+ mouseButton: Enums.MouseBindings.Wheel
56
+ }, {
57
+ numTouchPoints: 3
58
+ }]
59
+ }],
60
+ passive: [{
61
+ toolName: toolNames.Length
62
+ }, {
63
+ toolName: toolNames.SegmentBidirectional
64
+ }, {
65
+ toolName: toolNames.ArrowAnnotate,
66
+ configuration: {
67
+ getTextCallback: (callback, eventDetails) => {
68
+ commandsManager.runCommand('arrowTextCallback', {
69
+ callback,
70
+ eventDetails
71
+ });
72
+ },
73
+ changeTextCallback: (data, eventDetails, callback) => {
74
+ commandsManager.runCommand('arrowTextCallback', {
75
+ callback,
76
+ data,
77
+ eventDetails
78
+ });
79
+ }
80
+ }
81
+ }, {
82
+ toolName: toolNames.Bidirectional
83
+ }, {
84
+ toolName: toolNames.DragProbe
85
+ }, {
86
+ toolName: toolNames.Probe
87
+ }, {
88
+ toolName: toolNames.EllipticalROI
89
+ }, {
90
+ toolName: toolNames.RectangleROI
91
+ }, {
92
+ toolName: toolNames.StackScroll
93
+ }, {
94
+ toolName: toolNames.Angle
95
+ }, {
96
+ toolName: toolNames.CobbAngle
97
+ }, {
98
+ toolName: toolNames.Magnify
99
+ }, {
100
+ toolName: 'CircularBrush',
101
+ parentTool: 'Brush',
102
+ configuration: {
103
+ activeStrategy: 'FILL_INSIDE_CIRCLE',
104
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
105
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
106
+ }
107
+ }, {
108
+ toolName: 'CircularEraser',
109
+ parentTool: 'Brush',
110
+ configuration: {
111
+ activeStrategy: 'ERASE_INSIDE_CIRCLE',
112
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
113
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
114
+ }
115
+ }, {
116
+ toolName: 'SphereBrush',
117
+ parentTool: 'Brush',
118
+ configuration: {
119
+ activeStrategy: 'FILL_INSIDE_SPHERE',
120
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
121
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
122
+ }
123
+ }, {
124
+ toolName: 'SphereEraser',
125
+ parentTool: 'Brush',
126
+ configuration: {
127
+ activeStrategy: 'ERASE_INSIDE_SPHERE',
128
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
129
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
130
+ }
131
+ }, {
132
+ toolName: 'ThresholdCircularBrush',
133
+ parentTool: 'Brush',
134
+ configuration: {
135
+ activeStrategy: 'THRESHOLD_INSIDE_CIRCLE',
136
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
137
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
138
+ }
139
+ }, {
140
+ toolName: 'ThresholdSphereBrush',
141
+ parentTool: 'Brush',
142
+ configuration: {
143
+ activeStrategy: 'THRESHOLD_INSIDE_SPHERE',
144
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
145
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
146
+ }
147
+ }, {
148
+ toolName: 'ThresholdCircularBrushDynamic',
149
+ parentTool: 'Brush',
150
+ configuration: {
151
+ activeStrategy: 'THRESHOLD_INSIDE_CIRCLE',
152
+ // preview: {
153
+ // enabled: true,
154
+ // },
155
+ threshold: {
156
+ isDynamic: true,
157
+ dynamicRadius: 3
158
+ },
159
+ minRadius: (/* inlined export .MIN_SEGMENTATION_DRAWING_RADIUS */0.5),
160
+ maxRadius: (/* inlined export .MAX_SEGMENTATION_DRAWING_RADIUS */99.5)
161
+ }
162
+ }],
163
+ enabled: [],
164
+ disabled: [{
165
+ toolName: toolNames.Crosshairs,
166
+ bindings: [{
167
+ mouseButton: Enums.MouseBindings.Primary,
168
+ modifierKey: Enums.KeyboardBindings.Shift
169
+ }],
170
+ configuration: {
171
+ disableOnPassive: true,
172
+ autoPan: {
173
+ enabled: false,
174
+ panSize: 10
175
+ }
176
+ }
177
+ }]
178
+ };
179
+ toolGroupService.createToolGroupAndAddTools(tmtv_src/* .toolGroupIds.CT */.i.CT, tools);
180
+ toolGroupService.createToolGroupAndAddTools(tmtv_src/* .toolGroupIds.PT */.i.PT, {
181
+ active: tools.active,
182
+ passive: [...tools.passive, {
183
+ toolName: 'RectangleROIStartEndThreshold'
184
+ }],
185
+ enabled: tools.enabled,
186
+ disabled: tools.disabled
187
+ });
188
+ toolGroupService.createToolGroupAndAddTools(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, tools);
189
+ toolGroupService.createToolGroupAndAddTools(tmtv_src/* .toolGroupIds["default"] */.i["default"], tools);
190
+ const mipTools = {
191
+ active: [{
192
+ toolName: toolNames.VolumeRotate,
193
+ bindings: [{
194
+ mouseButton: Enums.MouseBindings.Wheel
195
+ }],
196
+ configuration: {
197
+ rotateIncrementDegrees: 5
198
+ }
199
+ }, {
200
+ toolName: toolNames.MipJumpToClick,
201
+ configuration: {
202
+ toolGroupId: tmtv_src/* .toolGroupIds.PT */.i.PT
203
+ },
204
+ bindings: [{
205
+ mouseButton: Enums.MouseBindings.Primary
206
+ }]
207
+ }],
208
+ enabled: [{
209
+ toolName: toolNames.OrientationMarker,
210
+ configuration: {
211
+ orientationWidget: {
212
+ viewportCorner: 'BOTTOM_LEFT'
213
+ }
214
+ }
215
+ }]
216
+ };
217
+ toolGroupService.createToolGroupAndAddTools(tmtv_src/* .toolGroupIds.MIP */.i.MIP, mipTools);
218
+ }
219
+
220
+ /**
221
+ * Mode tool group setup, sharing the options-object signature used by all
222
+ * modes so implementations are interchangeable via the `initToolGroups` mode
223
+ * instance property.
224
+ */
225
+ function initToolGroups({
226
+ extensionManager,
227
+ toolGroupService,
228
+ commandsManager
229
+ }) {
230
+ const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.tools');
231
+ const {
232
+ toolNames,
233
+ Enums
234
+ } = utilityModule.exports;
235
+ _initToolGroups(toolNames, Enums, toolGroupService, commandsManager);
236
+ }
237
+ /* export default */ const src_initToolGroups = (initToolGroups);
238
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/src/utils/setCrosshairsConfiguration.js
239
+
240
+ function setCrosshairsConfiguration(matches, toolNames, toolGroupService, displaySetService) {
241
+ const matchDetails = matches.get('ctDisplaySet');
242
+ if (!matchDetails) {
243
+ return;
244
+ }
245
+ const {
246
+ SeriesInstanceUID
247
+ } = matchDetails;
248
+ const displaySets = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
249
+ const toolConfig = toolGroupService.getToolConfiguration(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, toolNames.Crosshairs);
250
+ const crosshairsConfig = {
251
+ ...toolConfig,
252
+ filterActorUIDsToSetSlabThickness: [displaySets[0].displaySetInstanceUID]
253
+ };
254
+ toolGroupService.setToolConfiguration(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, toolNames.Crosshairs, crosshairsConfig);
255
+ }
256
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/src/utils/setFusionActiveVolume.js
257
+
258
+ function setFusionActiveVolume(matches, toolNames, toolGroupService, displaySetService) {
259
+ const matchDetails = matches.get('ptDisplaySet');
260
+ const matchDetails2 = matches.get('ctDisplaySet');
261
+ if (!matchDetails) {
262
+ return;
263
+ }
264
+ const {
265
+ SeriesInstanceUID
266
+ } = matchDetails;
267
+ const displaySets = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID);
268
+ if (!displaySets || displaySets.length === 0) {
269
+ return;
270
+ }
271
+ const wlToolConfig = toolGroupService.getToolConfiguration(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, toolNames.WindowLevel);
272
+ const ellipticalToolConfig = toolGroupService.getToolConfiguration(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, toolNames.EllipticalROI);
273
+
274
+ // Todo: this should not take into account the loader id
275
+ const volumeId = `cornerstoneStreamingImageVolume:${displaySets[0].displaySetInstanceUID}`;
276
+ const {
277
+ SeriesInstanceUID: SeriesInstanceUID2
278
+ } = matchDetails2;
279
+ const ctDisplaySets = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID2);
280
+ const ctVolumeId = `cornerstoneStreamingImageVolume:${ctDisplaySets[0].displaySetInstanceUID}`;
281
+ const windowLevelConfig = {
282
+ ...wlToolConfig,
283
+ volumeId: ctVolumeId
284
+ };
285
+ const ellipticalROIConfig = {
286
+ ...ellipticalToolConfig,
287
+ volumeId
288
+ };
289
+ toolGroupService.setToolConfiguration(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, toolNames.WindowLevel, windowLevelConfig);
290
+ toolGroupService.setToolConfiguration(tmtv_src/* .toolGroupIds.Fusion */.i.Fusion, toolNames.EllipticalROI, ellipticalROIConfig);
291
+ }
292
+ ;// CONCATENATED MODULE: ../../../modes/tmtv/src/index.ts
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+ const {
301
+ MetadataProvider
302
+ } = src/* .classes */.Ly;
303
+ const ohif = {
304
+ layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',
305
+ sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',
306
+ thumbnailList: '@ohif/extension-default.panelModule.seriesList'
307
+ };
308
+ const cs3d = {
309
+ viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone',
310
+ segPanel: '@ohif/extension-cornerstone.panelModule.panelSegmentationNoHeader',
311
+ measurements: '@ohif/extension-cornerstone.panelModule.measurements'
312
+ };
313
+ const tmtv = {
314
+ hangingProtocol: '@ohif/extension-tmtv.hangingProtocolModule.ptCT',
315
+ petSUV: '@ohif/extension-tmtv.panelModule.petSUV',
316
+ tmtv: '@ohif/extension-tmtv.panelModule.tmtv'
317
+ };
318
+ const extensionDependencies = {
319
+ // Can derive the versions at least process.env.from npm_package_version
320
+ '@ohif/extension-default': '^3.0.0',
321
+ '@ohif/extension-cornerstone': '^3.0.0',
322
+ '@ohif/extension-cornerstone-dicom-seg': '^3.0.0',
323
+ '@ohif/extension-tmtv': '^3.0.0'
324
+ };
325
+
326
+ /**
327
+ * Extends the basic mode enter (tool groups, toolbar, tool group additions)
328
+ * with the TMTV specifics: the fusion viewport crosshairs/active-volume
329
+ * configuration and the PT VOI hanging protocol attribute.
330
+ */
331
+ function onModeEnter(ctx) {
332
+ basic_src/* .onModeEnter.call */.jQ.call(this, ctx);
333
+ const {
334
+ servicesManager,
335
+ extensionManager,
336
+ commandsManager
337
+ } = ctx;
338
+ const {
339
+ toolGroupService,
340
+ customizationService,
341
+ hangingProtocolService,
342
+ displaySetService
343
+ } = servicesManager.services;
344
+ const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.tools');
345
+ const {
346
+ toolNames
347
+ } = utilityModule.exports;
348
+ const {
349
+ unsubscribe
350
+ } = toolGroupService.subscribe(toolGroupService.EVENTS.VIEWPORT_ADDED, () => {
351
+ // For fusion toolGroup we need to add the volumeIds for the crosshairs
352
+ // since in the fusion viewport we don't want both PT and CT to render MIP
353
+ // when slabThickness is modified
354
+ const {
355
+ displaySetMatchDetails
356
+ } = hangingProtocolService.getMatchDetails();
357
+ setCrosshairsConfiguration(displaySetMatchDetails, toolNames, toolGroupService, displaySetService);
358
+ setFusionActiveVolume(displaySetMatchDetails, toolNames, toolGroupService, displaySetService);
359
+ });
360
+ this._unsubscriptions.push(unsubscribe);
361
+
362
+ // Function-valued customization; kept out of the registered
363
+ // `tmtvModeCustomizations` block because it needs the mode's
364
+ // commandsManager. Written at mode scope, so a global-scope customization
365
+ // still overrides it by scope precedence.
366
+ customizationService.setCustomizations({
367
+ 'panelSegmentation.onSegmentationAdd': {
368
+ $set: () => {
369
+ commandsManager.run('createNewLabelmapFromPT');
370
+ }
371
+ }
372
+ });
373
+
374
+ // For the hanging protocol we need to decide on the window level
375
+ // based on whether the SUV is corrected or not, hence we can't hard
376
+ // code the window level in the hanging protocol but we add a custom
377
+ // attribute to the hanging protocol that will be used to get the
378
+ // window level based on the metadata
379
+ hangingProtocolService.addCustomAttribute('getPTVOIRange', 'get PT VOI based on corrected or not', props => {
380
+ const ptDisplaySet = props.find(imageSet => imageSet.Modality === 'PT');
381
+ if (!ptDisplaySet) {
382
+ return;
383
+ }
384
+ const {
385
+ imageId
386
+ } = ptDisplaySet.images[0];
387
+ const imageIdScalingFactor = MetadataProvider.get('scalingModule', imageId);
388
+ const isSUVAvailable = imageIdScalingFactor && imageIdScalingFactor.suvbw;
389
+ if (isSUVAvailable) {
390
+ return {
391
+ windowWidth: 5,
392
+ windowCenter: 2.5
393
+ };
394
+ }
395
+ return;
396
+ });
397
+ }
398
+ const tmtvLayout = {
399
+ id: ohif.layout,
400
+ props: {
401
+ // Literal panel lists; the mode route seeds them into the standard
402
+ // `leftPanels` / `rightPanels` customizations so `mode` phase
403
+ // blocks and global customizations can modify them.
404
+ leftPanels: [ohif.thumbnailList],
405
+ leftPanelResizable: true,
406
+ leftPanelClosed: true,
407
+ rightPanels: [tmtv.tmtv, tmtv.petSUV],
408
+ rightPanelResizable: true,
409
+ viewports: [{
410
+ namespace: cs3d.viewport,
411
+ displaySetsToDisplay: [ohif.sopClassHandler]
412
+ }]
413
+ }
414
+ };
415
+ const tmtvRoute = {
416
+ path: 'tmtv',
417
+ layoutTemplate: basic_src/* .layoutTemplate */.ZM,
418
+ layoutInstance: tmtvLayout
419
+ };
420
+ const modeInstance = {
421
+ // TODO: We're using this as a route segment
422
+ // We should not be.
423
+ id: id,
424
+ routeName: 'tmtv',
425
+ displayName: i18next/* ["default"].t */.A.t('Modes:Total Metabolic Tumor Volume'),
426
+ // Toolbar/tool-group composition: which capability packs this mode uses.
427
+ // The mode route seeds these onto the Mode customization scope on enter, so
428
+ // `?customization=` modules extend them through the `mode` phase. The tmtv
429
+ // extension supplies the TMTV-specific button/section packs.
430
+ toolbarButtons: [{
431
+ $reference: 'tmtv.toolbarButtons'
432
+ }],
433
+ toolbarSections: [{
434
+ $reference: 'tmtv.toolbarSections'
435
+ }],
436
+ toolGroupAdditions: {
437
+ [tmtv_src/* .toolGroupIds.CT */.i.CT]: [],
438
+ [tmtv_src/* .toolGroupIds.PT */.i.PT]: [],
439
+ [tmtv_src/* .toolGroupIds.Fusion */.i.Fusion]: [],
440
+ [tmtv_src/* .toolGroupIds.MIP */.i.MIP]: [],
441
+ [tmtv_src/* .toolGroupIds["default"] */.i["default"]]: []
442
+ },
443
+ // Tool group setup used by onModeEnter; extending modes can replace it.
444
+ initToolGroups: src_initToolGroups,
445
+ // The mode's own customizations, referenced by name: the block is registered
446
+ // at default scope when the mode loads (see `customizations` below), and the
447
+ // mode route applies it as the bottom layer of the mode scope on enter.
448
+ modeCustomizations: 'tmtvModeCustomizations',
449
+ activatePanelTriggers: [],
450
+ /**
451
+ * Lifecycle hooks
452
+ */
453
+ onModeEnter,
454
+ onModeExit: basic_src/* .onModeExit */.$2,
455
+ validationTags: {
456
+ study: [],
457
+ series: []
458
+ },
459
+ // Data-driven validity: requires both PT and CT, rejects SM, and excludes
460
+ // the demo studies that belong to the preclinical 4D mode. Until we have a
461
+ // better way to identify 4D studies we use the mrn/StudyInstanceUID.
462
+ isValidMode: basic_src/* .isValidMode */.ur,
463
+ modeModalities: [['PT', 'CT']],
464
+ excludedModalities: ['SM'],
465
+ excludedStudies: [{
466
+ mrn: 'M1'
467
+ }, {
468
+ studyInstanceUid: '1.3.6.1.4.1.12842.1.1.14.3.20220915.105557.468.2963630849'
469
+ }],
470
+ routes: [tmtvRoute],
471
+ extensions: extensionDependencies,
472
+ hangingProtocol: tmtv.hangingProtocol,
473
+ sopClassHandlers: [ohif.sopClassHandler]
474
+ };
475
+
476
+ /**
477
+ * Customizations the mode registers (Default scope) when it loads — before
478
+ * the bootstrap phase applies, so bootstrap / `?customization=` modules can
479
+ * modify them before anything reads them. Values are plain data.
480
+ */
481
+ const customizations = {
482
+ tmtvModeCustomizations: {
483
+ 'panelSegmentation.tableMode': 'expanded'
484
+ }
485
+ };
486
+
487
+ /**
488
+ * The mode uses the basic mode's `modeFactory`, which applies
489
+ * immutability-helper commands from `modeConfiguration` onto `modeInstance`,
490
+ * so a site can define a mode that extends this one.
491
+ */
492
+ const mode = {
493
+ id: id,
494
+ modeFactory: basic_src/* .modeFactory */.U1,
495
+ modeInstance,
496
+ extensionDependencies,
497
+ customizations
498
+ };
499
+ /* export default */ const modes_tmtv_src = (mode);
500
+
501
+
502
+ },
503
+
504
+ }]);
package/dist/8595.css ADDED
@@ -0,0 +1,2 @@
1
+ .dicom-tag-browser-table{margin-left:auto;margin-right:auto}.dicom-tag-browser-table-wrapper{overflow-x:scroll}.dicom-tag-browser-table tr{color:hsl(var(--foreground));padding-left:10px;padding-right:10px;white-space:nowrap}.stick{overflow:clip;position:sticky}.dicom-tag-browser-content{overflow:hidden}.dicom-tag-browser-instance-range .range{height:20px}.dicom-tag-browser-instance-range{padding:20px 0}.dicom-tag-browser-table td.dicom-tag-browser-table-center{text-align:center}.dicom-tag-browser-table th{padding-left:10px;padding-right:10px;text-align:center}.dicom-tag-browser-table th.dicom-tag-browser-table-left{text-align:left}
2
+ .chrome-picker{background:#0000!important;-webkit-box-shadow:none!important;box-shadow:none!important}
@@ -27,8 +27,8 @@ function createSEGToolGroupAndAddTools({
27
27
  return toolGroupService.createToolGroupAndAddTools(toolGroupId, updatedTools);
28
28
  }
29
29
  /* export default */ const initSEGToolGroup = (createSEGToolGroupAndAddTools);
30
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
31
- var cornerstone_src = __webpack_require__(28772);
30
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 200 modules
31
+ var cornerstone_src = __webpack_require__(86714);
32
32
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/promptHydrateSEG.ts
33
33
 
34
34
  function promptHydrateSEG({
@@ -20,8 +20,8 @@ var src = __webpack_require__(50679);
20
20
  var dicomSRModule = __webpack_require__(91473);
21
21
  // EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-sr/src/utils/createReferencedImageDisplaySet.ts
22
22
  var createReferencedImageDisplaySet = __webpack_require__(81444);
23
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
24
- var cornerstone_src = __webpack_require__(28772);
23
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 200 modules
24
+ var cornerstone_src = __webpack_require__(86714);
25
25
  // EXTERNAL MODULE: ../../ui-next/src/index.ts + 3682 modules
26
26
  var ui_next_src = __webpack_require__(39987);
27
27
  // EXTERNAL MODULE: ../../core/src/contextProviders/SystemProvider.tsx
@@ -11276,8 +11276,8 @@ function AboutModalDefault() {
11276
11276
  name
11277
11277
  } = (0,browser_detect_es5/* ["default"] */.A)();
11278
11278
  const browser = `${name[0].toUpperCase()}${name.substr(1)} ${version}`;
11279
- const versionNumber = "3.13.0-beta.116";
11280
- const commitHash = "6b6761088b2badd0b0817e13858e54b631021c2f";
11279
+ const versionNumber = "3.13.0-beta.117";
11280
+ const commitHash = "b266c0a86aee64d181a08c1ee65437650234b847";
11281
11281
  const [main, beta] = versionNumber.split('-');
11282
11282
  return /*#__PURE__*/react.createElement(ui_next_src/* .AboutModal */.VTU, {
11283
11283
  className: "w-[400px]"
@@ -25,8 +25,8 @@ var i18n_src = __webpack_require__(90119);
25
25
  var esm = __webpack_require__(88479);
26
26
  // EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/esm/index.js + 83 modules
27
27
  var dist_esm = __webpack_require__(86186);
28
- // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 198 modules
29
- var cornerstone_src = __webpack_require__(28772);
28
+ // EXTERNAL MODULE: ../../../extensions/cornerstone/src/index.tsx + 200 modules
29
+ var cornerstone_src = __webpack_require__(86714);
30
30
  ;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-pmap/src/getSopClassHandlerModule.ts
31
31
 
32
32