Better entrypoint for extensions

This commit is contained in:
dannyrb 2019-07-09 12:56:08 -04:00
parent 2429294dda
commit c05058a0f5
3 changed files with 32 additions and 18 deletions

View File

@ -1,5 +1,5 @@
{
"packages": ["packages/*"],
"packages": ["extensions/*", "platform/*"],
"npmClient": "yarn",
"useWorkspaces": true,
"version": "independent"

View File

@ -1,5 +1,5 @@
import './config';
// Imported flat feature since is not transpiled for old browser versions
// Polyfills
import 'core-js/features/array/flat';
import 'core-js/stable';
import 'regenerator-runtime/runtime';
@ -23,7 +23,6 @@ import initCornerstoneTools from './initCornerstoneTools.js';
import { GenericViewerCommands, MeasurementsPanel } from './appExtensions';
import OHIFCornerstoneExtension from '@ohif/extension-cornerstone';
import OHIFStandaloneViewer from './OHIFStandaloneViewer';
// ~~ EXTENSIONS
import { OidcProvider } from 'redux-oidc';
import PropTypes from 'prop-types';
import { Provider } from 'react-redux';
@ -131,6 +130,9 @@ class App extends Component {
}
}
/**
* @param
*/
function _initExtensions(extensions) {
const defaultExtensions = [
GenericViewerCommands,
@ -140,13 +142,6 @@ function _initExtensions(extensions) {
const mergedExtensions = defaultExtensions.concat(extensions);
extensionManager.registerExtensions(mergedExtensions);
// [
// OHIFVTKExtension,
// OHIFDicomPDFExtension,
// OHIFDicomHtmlExtension,
// OHIFDicomMicroscopyExtension,
// ]
// Must run after extension commands are registered
if (window.config.hotkeys) {
hotkeysManager.setHotkeys(window.config.hotkeys, true);
@ -160,6 +155,4 @@ function _initServers(servers) {
}
export default App;
// Make our managers accessible
export { commandsManager, extensionManager, hotkeysManager };

View File

@ -1,26 +1,47 @@
/**
* Entry point for development and production PWA builds.
* Packaged (NPM) builds go through `index_publish.js`
* Packaged (NPM) builds go through `index-umd.js`
*/
import App from './App.js';
import React from 'react';
import ReactDOM from 'react-dom';
// EXTENSIONS
/**
* EXTENSIONS
* =================
*
* Importing and modifying the extensions our app uses HERE allows us to leverage
* tree shaking and a few other niceties. However, by including them here they become
* "baked in" to the published application.
*
* Depending on your use case/needs, you may want to consider not adding any extensions
* by default HERE, and instead provide them via the configuration specified at
* `window.config.extensions`, or by using the exported `App` component, and passing
* in your extensions as props.
*/
import OHIFVTKExtension from '@ohif/extension-vtk';
import OHIFDicomHtmlExtension from '@ohif/extension-dicom-html';
import OHIFDicomMicroscopyExtension from '@ohif/extension-dicom-microscopy';
import OHIFDicomPDFExtension from '@ohif/extension-dicom-pdf';
// Default Settings
window.config = window.config || {};
window.config.extensions = [OHIFVTKExtension];
let config = {};
const appDefaults = {
routerBasename: '/',
relativeWebWorkerScriptsPath: '',
};
const appProps = Object.assign({}, appDefaults, window.config);
if (window) {
config = window.config || {};
config.extensions = [
OHIFVTKExtension,
OHIFDicomHtmlExtension,
OHIFDicomMicroscopyExtension,
OHIFDicomPDFExtension,
];
}
const appProps = Object.assign({}, appDefaults, config);
// Create App
const app = React.createElement(App, appProps, null);