import React from 'react'; import * as cornerstone from '@cornerstonejs/core'; import * as cornerstoneTools from '@cornerstonejs/tools'; import { Enums as cs3DEnums, CONSTANTS, imageLoadPoolManager, imageRetrievalPoolManager, } from '@cornerstonejs/core'; import { Enums as cs3DToolsEnums } from '@cornerstonejs/tools'; import init from './init.js'; import commandsModule from './commandsModule'; import ToolGroupService from './services/ToolGroupService'; import SyncGroupService from './services/SyncGroupService'; import { toolNames } from './initCornerstoneTools'; import { getEnabledElement } from './state'; import CornerstoneViewportService from './services/ViewportService/CornerstoneViewportService'; import dicomLoaderService from './utils/dicomLoaderService'; import { registerColormap } from './utils/colormap/transferFunctionHelpers'; import { id } from './id'; const Component = React.lazy(() => { return import( /* webpackPrefetch: true */ './Viewport/OHIFCornerstoneViewport' ); }); const OHIFCornerstoneViewport = props => { return ( Loading...}> ); }; /** * */ const cornerstoneExtension = { /** * Only required property. Should be a unique value across all extensions. */ id, onModeExit: () => { // Empty out the image load and retrieval pools to prevent memory leaks // on the mode exits Object.values(cs3DEnums.RequestType).forEach(type => { imageLoadPoolManager.clearRequestStack(type); imageRetrievalPoolManager.clearRequestStack(type); }); }, /** * * * @param {object} [configuration={}] * @param {object|array} [configuration.csToolsConfig] - Passed directly to `initCornerstoneTools` */ async preRegistration({ servicesManager, commandsManager, configuration = {}, appConfig, }) { servicesManager.registerService( CornerstoneViewportService(servicesManager) ); servicesManager.registerService(ToolGroupService(servicesManager)); servicesManager.registerService(SyncGroupService(servicesManager)); await init({ servicesManager, commandsManager, configuration, appConfig }); }, getViewportModule({ servicesManager, commandsManager }) { const ExtendedOHIFCornerstoneViewport = props => { // const onNewImageHandler = jumpData => { // commandsManager.runCommand('jumpToImage', jumpData); // }; const { ToolBarService } = servicesManager.services; return ( ); }; return [ { name: 'cornerstone', component: ExtendedOHIFCornerstoneViewport, }, ]; }, getCommandsModule({ servicesManager, commandsManager, extensionManager }) { return commandsModule({ servicesManager, commandsManager, extensionManager, }); }, getUtilityModule({ servicesManager }) { return [ { name: 'common', exports: { getCornerstoneLibraries: () => { return { cornerstone, cornerstoneTools }; }, getEnabledElement, dicomLoaderService, registerColormap, }, }, { name: 'core', exports: { Enums: cs3DEnums, CONSTANTS, }, }, { name: 'tools', exports: { toolNames, Enums: cs3DToolsEnums, }, }, ]; }, }; export default cornerstoneExtension;