{"version":3,"file":"370.bundle.69e83692dbf254eaf1e4.js","mappings":"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","sources":["webpack:///../../../modes/longitudinal/src/toolbarButtons.ts","webpack:///../../../modes/longitudinal/src/id.js","webpack:///../../../modes/longitudinal/src/initToolGroups.js","webpack:///../../../modes/longitudinal/src/index.js"],"sourcesContent":["// TODO: torn, can either bake this here; or have to create a whole new button type\n// Only ways that you can pass in a custom React component for render :l\nimport {\n // ExpandableToolbarButton,\n // ListMenu,\n WindowLevelMenuItem,\n} from '@ohif/ui';\nimport { defaults, ToolbarService } from '@ohif/core';\nimport type { Button, RunCommand } from '@ohif/core/types';\nimport { EVENTS } from '@cornerstonejs/core';\n\nconst { windowLevelPresets } = defaults;\n\nconst _createActionButton = ToolbarService._createButton.bind(null, 'action');\nconst _createToggleButton = ToolbarService._createButton.bind(null, 'toggle');\nconst _createToolButton = ToolbarService._createButton.bind(null, 'tool');\n\n/**\n *\n * @param {*} preset - preset number (from above import)\n * @param {*} title\n * @param {*} subtitle\n */\nfunction _createWwwcPreset(preset, title, subtitle) {\n return {\n id: preset.toString(),\n title,\n subtitle,\n type: 'action',\n commands: [\n {\n commandName: 'setWindowLevel',\n commandOptions: {\n ...windowLevelPresets[preset],\n },\n context: 'CORNERSTONE',\n },\n ],\n };\n}\n\nconst toolGroupIds = ['default', 'mpr', 'SRToolGroup'];\n\n/**\n * Creates an array of 'setToolActive' commands for the given toolName - one for\n * each toolGroupId specified in toolGroupIds.\n * @param {string} toolName\n * @returns {Array} an array of 'setToolActive' commands\n */\nfunction _createSetToolActiveCommands(toolName) {\n const temp = toolGroupIds.map(toolGroupId => ({\n commandName: 'setToolActive',\n commandOptions: {\n toolGroupId,\n toolName,\n },\n context: 'CORNERSTONE',\n }));\n return temp;\n}\n\nconst ReferenceLinesCommands: RunCommand = [\n {\n commandName: 'setSourceViewportForReferenceLinesTool',\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'ReferenceLines',\n },\n context: 'CORNERSTONE',\n },\n];\n\nconst toolbarButtons: Button[] = [\n // Measurement\n {\n id: 'MeasurementTools',\n type: 'ohif.splitButton',\n props: {\n groupId: 'MeasurementTools',\n isRadio: true, // ?\n // Switch?\n primary: _createToolButton(\n 'Length',\n 'tool-length',\n 'Length',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Length',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRLength',\n toolGroupId: 'SRToolGroup',\n },\n // we can use the setToolActive command for this from Cornerstone commandsModule\n context: 'CORNERSTONE',\n },\n ],\n 'Length'\n ),\n secondary: {\n icon: 'chevron-down',\n label: '',\n isActive: true,\n tooltip: 'More Measure Tools',\n },\n items: [\n _createToolButton(\n 'Length',\n 'tool-length',\n 'Length',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Length',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRLength',\n toolGroupId: 'SRToolGroup',\n },\n // we can use the setToolActive command for this from Cornerstone commandsModule\n context: 'CORNERSTONE',\n },\n ],\n 'Length Tool'\n ),\n _createToolButton(\n 'Bidirectional',\n 'tool-bidirectional',\n 'Bidirectional',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Bidirectional',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRBidirectional',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Bidirectional Tool'\n ),\n _createToolButton(\n 'ArrowAnnotate',\n 'tool-annotate',\n 'Annotation',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'ArrowAnnotate',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRArrowAnnotate',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Arrow Annotate'\n ),\n _createToolButton(\n 'EllipticalROI',\n 'tool-elipse',\n 'Ellipse',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'EllipticalROI',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SREllipticalROI',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Ellipse Tool'\n ),\n _createToolButton(\n 'CircleROI',\n 'tool-circle',\n 'Circle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'CircleROI',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRCircleROI',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Circle Tool'\n ),\n ],\n },\n },\n // Zoom..\n {\n id: 'Zoom',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-zoom',\n label: 'Zoom',\n commands: _createSetToolActiveCommands('Zoom'),\n },\n },\n // Window Level + Presets...\n {\n id: 'WindowLevel',\n type: 'ohif.splitButton',\n props: {\n groupId: 'WindowLevel',\n primary: _createToolButton(\n 'WindowLevel',\n 'tool-window-level',\n 'Window Level',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Window Level'\n ),\n secondary: {\n icon: 'chevron-down',\n label: 'W/L Manual',\n isActive: true,\n tooltip: 'W/L Presets',\n },\n isAction: true, // ?\n renderer: WindowLevelMenuItem,\n items: [\n _createWwwcPreset(1, 'Soft tissue', '400 / 40'),\n _createWwwcPreset(2, 'Lung', '1500 / -600'),\n _createWwwcPreset(3, 'Liver', '150 / 90'),\n _createWwwcPreset(4, 'Bone', '2500 / 480'),\n _createWwwcPreset(5, 'Brain', '80 / 40'),\n ],\n },\n },\n // Pan...\n {\n id: 'Pan',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-move',\n label: 'Pan',\n commands: _createSetToolActiveCommands('Pan'),\n },\n },\n {\n id: 'Capture',\n type: 'ohif.action',\n props: {\n icon: 'tool-capture',\n label: 'Capture',\n type: 'action',\n commands: [\n {\n commandName: 'showDownloadViewportModal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n {\n id: 'Layout',\n type: 'ohif.layoutSelector',\n props: {\n rows: 3,\n columns: 3,\n },\n },\n {\n id: 'MPR',\n type: 'ohif.action',\n props: {\n type: 'toggle',\n icon: 'icon-mpr',\n label: 'MPR',\n commands: [\n {\n commandName: 'toggleHangingProtocol',\n commandOptions: {\n protocolId: 'mpr',\n },\n context: 'DEFAULT',\n },\n ],\n },\n },\n {\n id: 'Crosshairs',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-crosshair',\n label: 'Crosshairs',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Crosshairs',\n toolGroupId: 'mpr',\n },\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n // More...\n {\n id: 'MoreTools',\n type: 'ohif.splitButton',\n props: {\n isRadio: true, // ?\n groupId: 'MoreTools',\n primary: _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n secondary: {\n icon: 'chevron-down',\n label: '',\n isActive: true,\n tooltip: 'More Tools',\n },\n items: [\n _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n _createActionButton(\n 'rotate-right',\n 'tool-rotate-right',\n 'Rotate Right',\n [\n {\n commandName: 'rotateViewportCW',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Rotate +90'\n ),\n _createActionButton(\n 'flip-horizontal',\n 'tool-flip-horizontal',\n 'Flip Horizontally',\n [\n {\n commandName: 'flipViewportHorizontal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Flip Horizontal'\n ),\n _createToggleButton(\n 'StackImageSync',\n 'link',\n 'Stack Image Sync',\n [\n {\n commandName: 'toggleStackImageSync',\n },\n ],\n 'Enable position synchronization on stack viewports',\n {\n listeners: {\n [EVENTS.STACK_VIEWPORT_NEW_STACK]: {\n commandName: 'toggleStackImageSync',\n commandOptions: { toggledState: true },\n },\n },\n }\n ),\n _createToggleButton(\n 'ReferenceLines',\n 'tool-referenceLines', // change this with the new icon\n 'Reference Lines',\n ReferenceLinesCommands,\n 'Show Reference Lines',\n {\n listeners: {\n [EVENTS.STACK_VIEWPORT_NEW_STACK]: ReferenceLinesCommands,\n [EVENTS.ACTIVE_VIEWPORT_ID_CHANGED]: ReferenceLinesCommands,\n },\n }\n ),\n _createToggleButton(\n 'ImageOverlayViewer',\n 'toggle-dicom-overlay',\n 'Image Overlay',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'ImageOverlayViewer',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Image Overlay',\n { isActive: true }\n ),\n _createToolButton(\n 'StackScroll',\n 'tool-stack-scroll',\n 'Stack Scroll',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'StackScroll',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Stack Scroll'\n ),\n _createActionButton(\n 'invert',\n 'tool-invert',\n 'Invert',\n [\n {\n commandName: 'invertViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Invert Colors'\n ),\n _createToolButton(\n 'Probe',\n 'tool-probe',\n 'Probe',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'DragProbe',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Probe'\n ),\n _createToggleButton(\n 'cine',\n 'tool-cine',\n 'Cine',\n [\n {\n commandName: 'toggleCine',\n context: 'CORNERSTONE',\n },\n ],\n 'Cine'\n ),\n _createToolButton(\n 'Angle',\n 'tool-angle',\n 'Angle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Angle',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Angle'\n ),\n _createToolButton(\n 'Cobb Angle',\n 'tool-cobb-angle',\n 'Cobb Angle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'CobbAngle',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Cobb Angle'\n ),\n // Next two tools can be added once icons are added\n // _createToolButton(\n // 'Cobb Angle',\n // 'tool-cobb-angle',\n // 'Cobb Angle',\n // [\n // {\n // commandName: 'setToolActive',\n // commandOptions: {\n // toolName: 'CobbAngle',\n // },\n // context: 'CORNERSTONE',\n // },\n // ],\n // 'Cobb Angle'\n // ),\n // _createToolButton(\n // 'Planar Freehand ROI',\n // 'tool-freehand',\n // 'PlanarFreehandROI',\n // [\n // {\n // commandName: 'setToolActive',\n // commandOptions: {\n // toolName: 'PlanarFreehandROI',\n // },\n // context: 'CORNERSTONE',\n // },\n // ],\n // 'Planar Freehand ROI'\n // ),\n _createToolButton(\n 'Magnify',\n 'tool-magnify',\n 'Magnify',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Magnify',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Magnify'\n ),\n _createToolButton(\n 'Rectangle',\n 'tool-rectangle',\n 'Rectangle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'RectangleROI',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Rectangle'\n ),\n _createToolButton(\n 'CalibrationLine',\n 'tool-calibration',\n 'Calibration',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'CalibrationLine',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Calibration Line'\n ),\n _createActionButton(\n 'TagBrowser',\n 'list-bullets',\n 'Dicom Tag Browser',\n [\n {\n commandName: 'openDICOMTagViewer',\n commandOptions: {},\n context: 'DEFAULT',\n },\n ],\n 'Dicom Tag Browser'\n ),\n ],\n },\n },\n];\n\nexport default toolbarButtons;\n","import packageJson from '../package.json';\n\nconst id = packageJson.name;\n\nexport { id };\n","function initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, toolGroupId) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames, Enums } = utilityModule.exports;\n\n const tools = {\n active: [\n {\n toolName: toolNames.WindowLevel,\n bindings: [{ mouseButton: Enums.MouseBindings.Primary }],\n },\n {\n toolName: toolNames.Pan,\n bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [{ mouseButton: Enums.MouseBindings.Secondary }],\n },\n { toolName: toolNames.StackScrollMouseWheel, bindings: [] },\n ],\n passive: [\n { toolName: toolNames.Length },\n {\n toolName: toolNames.ArrowAnnotate,\n configuration: {\n getTextCallback: (callback, eventDetails) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n eventDetails,\n }),\n\n changeTextCallback: (data, eventDetails, callback) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n data,\n eventDetails,\n }),\n },\n },\n { toolName: toolNames.Bidirectional },\n { toolName: toolNames.DragProbe },\n { toolName: toolNames.EllipticalROI },\n { toolName: toolNames.CircleROI },\n { toolName: toolNames.RectangleROI },\n { toolName: toolNames.StackScroll },\n { toolName: toolNames.Angle },\n { toolName: toolNames.CobbAngle },\n { toolName: toolNames.PlanarFreehandROI },\n { toolName: toolNames.Magnify },\n { toolName: toolNames.SegmentationDisplay },\n { toolName: toolNames.CalibrationLine },\n ],\n // enabled\n enabled: [{ toolName: toolNames.ImageOverlayViewer }],\n // disabled\n disabled: [{ toolName: toolNames.ReferenceLines }],\n };\n\n toolGroupService.createToolGroupAndAddTools(toolGroupId, tools);\n}\n\nfunction initSRToolGroup(extensionManager, toolGroupService, commandsManager) {\n const SRUtilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone-dicom-sr.utilityModule.tools'\n );\n\n if (!SRUtilityModule) {\n return;\n }\n\n const CS3DUtilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames: SRToolNames } = SRUtilityModule.exports;\n const { toolNames, Enums } = CS3DUtilityModule.exports;\n const tools = {\n active: [\n {\n toolName: toolNames.WindowLevel,\n bindings: [\n {\n mouseButton: Enums.MouseBindings.Primary,\n },\n ],\n },\n {\n toolName: toolNames.Pan,\n bindings: [\n {\n mouseButton: Enums.MouseBindings.Auxiliary,\n },\n ],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [\n {\n mouseButton: Enums.MouseBindings.Secondary,\n },\n ],\n },\n {\n toolName: toolNames.StackScrollMouseWheel,\n bindings: [],\n },\n ],\n passive: [\n { toolName: SRToolNames.SRLength },\n { toolName: SRToolNames.SRArrowAnnotate },\n { toolName: SRToolNames.SRBidirectional },\n { toolName: SRToolNames.SREllipticalROI },\n { toolName: SRToolNames.SRCircleROI },\n ],\n enabled: [\n {\n toolName: SRToolNames.DICOMSRDisplay,\n bindings: [],\n },\n ],\n // disabled\n };\n\n const toolGroupId = 'SRToolGroup';\n toolGroupService.createToolGroupAndAddTools(toolGroupId, tools);\n}\n\nfunction initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames, Enums } = utilityModule.exports;\n\n const tools = {\n active: [\n {\n toolName: toolNames.WindowLevel,\n bindings: [{ mouseButton: Enums.MouseBindings.Primary }],\n },\n {\n toolName: toolNames.Pan,\n bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [{ mouseButton: Enums.MouseBindings.Secondary }],\n },\n { toolName: toolNames.StackScrollMouseWheel, bindings: [] },\n ],\n passive: [\n { toolName: toolNames.Length },\n {\n toolName: toolNames.ArrowAnnotate,\n configuration: {\n getTextCallback: (callback, eventDetails) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n eventDetails,\n }),\n\n changeTextCallback: (data, eventDetails, callback) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n data,\n eventDetails,\n }),\n },\n },\n { toolName: toolNames.Bidirectional },\n { toolName: toolNames.DragProbe },\n { toolName: toolNames.EllipticalROI },\n { toolName: toolNames.CircleROI },\n { toolName: toolNames.RectangleROI },\n { toolName: toolNames.StackScroll },\n { toolName: toolNames.Angle },\n { toolName: toolNames.CobbAngle },\n { toolName: toolNames.PlanarFreehandROI },\n { toolName: toolNames.SegmentationDisplay },\n ],\n disabled: [\n {\n toolName: toolNames.Crosshairs,\n configuration: {\n viewportIndicators: false,\n autoPan: {\n enabled: false,\n panSize: 10,\n },\n },\n },\n { toolName: toolNames.ReferenceLines },\n ],\n\n // enabled\n // disabled\n };\n\n toolGroupService.createToolGroupAndAddTools('mpr', tools);\n}\nfunction initVolume3DToolGroup(extensionManager, toolGroupService) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames, Enums } = utilityModule.exports;\n\n const tools = {\n active: [\n {\n toolName: toolNames.TrackballRotateTool,\n bindings: [{ mouseButton: Enums.MouseBindings.Primary }],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [{ mouseButton: Enums.MouseBindings.Secondary }],\n },\n {\n toolName: toolNames.Pan,\n bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }],\n },\n ],\n };\n\n toolGroupService.createToolGroupAndAddTools('volume3d', tools);\n}\n\nfunction initToolGroups(extensionManager, toolGroupService, commandsManager) {\n initDefaultToolGroup(extensionManager, toolGroupService, commandsManager, 'default');\n initSRToolGroup(extensionManager, toolGroupService, commandsManager);\n initMPRToolGroup(extensionManager, toolGroupService, commandsManager);\n initVolume3DToolGroup(extensionManager, toolGroupService);\n}\n\nexport default initToolGroups;\n","import { hotkeys } from '@ohif/core';\nimport toolbarButtons from './toolbarButtons';\nimport { id } from './id';\nimport initToolGroups from './initToolGroups';\n\n// Allow this mode by excluding non-imaging modalities such as SR, SEG\n// Also, SM is not a simple imaging modalities, so exclude it.\nconst NON_IMAGE_MODALITIES = ['SM', 'ECG', 'SR', 'SEG', 'RTSTRUCT'];\n\nconst ohif = {\n layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',\n sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',\n thumbnailList: '@ohif/extension-default.panelModule.seriesList',\n};\n\nconst tracked = {\n measurements: '@ohif/extension-measurement-tracking.panelModule.trackedMeasurements',\n thumbnailList: '@ohif/extension-measurement-tracking.panelModule.seriesList',\n viewport: '@ohif/extension-measurement-tracking.viewportModule.cornerstone-tracked',\n};\n\nconst dicomsr = {\n sopClassHandler: '@ohif/extension-cornerstone-dicom-sr.sopClassHandlerModule.dicom-sr',\n viewport: '@ohif/extension-cornerstone-dicom-sr.viewportModule.dicom-sr',\n};\n\nconst dicomvideo = {\n sopClassHandler: '@ohif/extension-dicom-video.sopClassHandlerModule.dicom-video',\n viewport: '@ohif/extension-dicom-video.viewportModule.dicom-video',\n};\n\nconst dicompdf = {\n sopClassHandler: '@ohif/extension-dicom-pdf.sopClassHandlerModule.dicom-pdf',\n viewport: '@ohif/extension-dicom-pdf.viewportModule.dicom-pdf',\n};\n\nconst dicomSeg = {\n sopClassHandler: '@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg',\n viewport: '@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg',\n panel: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation',\n};\n\nconst dicomRT = {\n viewport: '@ohif/extension-cornerstone-dicom-rt.viewportModule.dicom-rt',\n sopClassHandler: '@ohif/extension-cornerstone-dicom-rt.sopClassHandlerModule.dicom-rt',\n};\n\nconst extensionDependencies = {\n // Can derive the versions at least process.env.from npm_package_version\n '@ohif/extension-default': '^3.0.0',\n '@ohif/extension-cornerstone': '^3.0.0',\n '@ohif/extension-measurement-tracking': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-sr': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-seg': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-rt': '^3.0.0',\n '@ohif/extension-dicom-pdf': '^3.0.1',\n '@ohif/extension-dicom-video': '^3.0.1',\n};\n\nfunction modeFactory({ modeConfiguration }) {\n let _activatePanelTriggersSubscriptions = [];\n return {\n // TODO: We're using this as a route segment\n // We should not be.\n id,\n routeName: 'viewer',\n displayName: 'Basic Viewer',\n /**\n * Lifecycle hooks\n */\n onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => {\n const {\n measurementService,\n toolbarService,\n toolGroupService,\n panelService,\n customizationService,\n } = servicesManager.services;\n\n measurementService.clearMeasurements();\n\n // Init Default and SR ToolGroups\n initToolGroups(extensionManager, toolGroupService, commandsManager);\n\n let unsubscribe;\n\n const activateTool = () => {\n toolbarService.recordInteraction({\n groupId: 'WindowLevel',\n interactionType: 'tool',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n });\n\n // We don't need to reset the active tool whenever a viewport is getting\n // added to the toolGroup.\n unsubscribe();\n };\n\n // Since we only have one viewport for the basic cs3d mode and it has\n // only one hanging protocol, we can just use the first viewport\n ({ unsubscribe } = toolGroupService.subscribe(\n toolGroupService.EVENTS.VIEWPORT_ADDED,\n activateTool\n ));\n\n toolbarService.init(extensionManager);\n toolbarService.addButtons(toolbarButtons);\n toolbarService.createButtonSection('primary', [\n 'MeasurementTools',\n 'Zoom',\n 'WindowLevel',\n 'Pan',\n 'Capture',\n 'Layout',\n 'MPR',\n 'Crosshairs',\n 'MoreTools',\n ]);\n\n customizationService.addModeCustomizations([\n {\n id: 'segmentation.disableEditing',\n value: true,\n },\n ]);\n\n // // ActivatePanel event trigger for when a segmentation or measurement is added.\n // // Do not force activation so as to respect the state the user may have left the UI in.\n // _activatePanelTriggersSubscriptions = [\n // ...panelService.addActivatePanelTriggers(dicomSeg.panel, [\n // {\n // sourcePubSubService: segmentationService,\n // sourceEvents: [\n // segmentationService.EVENTS.SEGMENTATION_PIXEL_DATA_CREATED,\n // ],\n // },\n // ]),\n // ...panelService.addActivatePanelTriggers(tracked.measurements, [\n // {\n // sourcePubSubService: measurementService,\n // sourceEvents: [\n // measurementService.EVENTS.MEASUREMENT_ADDED,\n // measurementService.EVENTS.RAW_MEASUREMENT_ADDED,\n // ],\n // },\n // ]),\n // ];\n },\n onModeExit: ({ servicesManager }) => {\n const {\n toolGroupService,\n syncGroupService,\n toolbarService,\n segmentationService,\n cornerstoneViewportService,\n } = servicesManager.services;\n\n _activatePanelTriggersSubscriptions.forEach(sub => sub.unsubscribe());\n _activatePanelTriggersSubscriptions = [];\n\n toolGroupService.destroy();\n syncGroupService.destroy();\n segmentationService.destroy();\n cornerstoneViewportService.destroy();\n },\n validationTags: {\n study: [],\n series: [],\n },\n\n isValidMode: function ({ modalities }) {\n const modalities_list = modalities.split('\\\\');\n\n // Exclude non-image modalities\n return !!modalities_list.filter(modality => NON_IMAGE_MODALITIES.indexOf(modality) === -1)\n .length;\n },\n routes: [\n {\n path: 'longitudinal',\n /*init: ({ servicesManager, extensionManager }) => {\n //defaultViewerRouteInit\n },*/\n layoutTemplate: () => {\n return {\n id: ohif.layout,\n props: {\n leftPanels: [tracked.thumbnailList],\n rightPanels: [dicomSeg.panel, tracked.measurements],\n rightPanelDefaultClosed: true,\n viewports: [\n {\n namespace: tracked.viewport,\n displaySetsToDisplay: [ohif.sopClassHandler],\n },\n {\n namespace: dicomsr.viewport,\n displaySetsToDisplay: [dicomsr.sopClassHandler],\n },\n {\n namespace: dicomvideo.viewport,\n displaySetsToDisplay: [dicomvideo.sopClassHandler],\n },\n {\n namespace: dicompdf.viewport,\n displaySetsToDisplay: [dicompdf.sopClassHandler],\n },\n {\n namespace: dicomSeg.viewport,\n displaySetsToDisplay: [dicomSeg.sopClassHandler],\n },\n {\n namespace: dicomRT.viewport,\n displaySetsToDisplay: [dicomRT.sopClassHandler],\n },\n ],\n },\n };\n },\n },\n ],\n extensions: extensionDependencies,\n // Default protocol gets self-registered by default in the init\n hangingProtocol: 'default',\n // Order is important in sop class handlers when two handlers both use\n // the same sop class under different situations. In that case, the more\n // general handler needs to come last. For this case, the dicomvideo must\n // come first to remove video transfer syntax before ohif uses images\n sopClassHandlers: [\n dicomvideo.sopClassHandler,\n dicomSeg.sopClassHandler,\n ohif.sopClassHandler,\n dicompdf.sopClassHandler,\n dicomsr.sopClassHandler,\n dicomRT.sopClassHandler,\n ],\n hotkeys: [...hotkeys.defaults.hotkeyBindings],\n ...modeConfiguration,\n };\n}\n\nconst mode = {\n id,\n modeFactory,\n extensionDependencies,\n};\n\nexport default mode;\nexport { initToolGroups, toolbarButtons };\n"],"names":["windowLevelPresets","defaults","_createActionButton","ToolbarService","_createButton","bind","_createToggleButton","_createToolButton","_createWwwcPreset","preset","title","subtitle","id","toString","type","commands","commandName","commandOptions","context","toolGroupIds","_createSetToolActiveCommands","toolName","map","toolGroupId","ReferenceLinesCommands","props","groupId","isRadio","primary","secondary","icon","label","isActive","tooltip","items","isAction","renderer","WindowLevelMenuItem","rows","columns","protocolId","listeners","EVENTS","STACK_VIEWPORT_NEW_STACK","toggledState","ACTIVE_VIEWPORT_ID_CHANGED","packageJson","extensionManager","toolGroupService","commandsManager","utilityModule","getModuleEntry","toolNames","Enums","exports","tools","active","WindowLevel","bindings","mouseButton","MouseBindings","Primary","Pan","Auxiliary","Zoom","Secondary","StackScrollMouseWheel","passive","Length","ArrowAnnotate","configuration","getTextCallback","callback","eventDetails","runCommand","changeTextCallback","data","Bidirectional","DragProbe","EllipticalROI","CircleROI","RectangleROI","StackScroll","Angle","CobbAngle","PlanarFreehandROI","Magnify","SegmentationDisplay","CalibrationLine","enabled","ImageOverlayViewer","disabled","ReferenceLines","createToolGroupAndAddTools","initDefaultToolGroup","SRUtilityModule","CS3DUtilityModule","SRToolNames","SRLength","SRArrowAnnotate","SRBidirectional","SREllipticalROI","SRCircleROI","DICOMSRDisplay","initSRToolGroup","Crosshairs","viewportIndicators","autoPan","panSize","initMPRToolGroup","TrackballRotateTool","initVolume3DToolGroup","NON_IMAGE_MODALITIES","ohif","tracked","dicomsr","dicomvideo","dicompdf","dicomSeg","dicomRT","extensionDependencies","modeFactory","_ref","modeConfiguration","_activatePanelTriggersSubscriptions","routeName","displayName","onModeEnter","_ref2","servicesManager","measurementService","toolbarService","panelService","customizationService","services","unsubscribe","clearMeasurements","initToolGroups","subscribe","VIEWPORT_ADDED","activateTool","recordInteraction","interactionType","init","addButtons","toolbarButtons","createButtonSection","addModeCustomizations","value","onModeExit","_ref3","syncGroupService","segmentationService","cornerstoneViewportService","forEach","sub","destroy","validationTags","study","series","isValidMode","_ref4","modalities","split","filter","modality","indexOf","length","routes","path","layoutTemplate","leftPanels","rightPanels","rightPanelDefaultClosed","viewports","namespace","displaySetsToDisplay","extensions","hangingProtocol","sopClassHandlers","hotkeys","hotkeyBindings"],"sourceRoot":""}