diff --git a/package.json b/package.json index 781a85c41..d4456bcfc 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,6 @@ "path": "./node_modules/cz-conventional-changelog" } }, - "peerDependencies": { - "react": "^16.8.6", - "react-dom": "^16.8.6" - }, "dependencies": { "@babel/runtime": "^7.4.5", "@ohif/extension-cornerstone": "0.0.43", @@ -101,6 +97,8 @@ "ohif-core": "0.10.6", "oidc-client": "1.8.x", "prop-types": "^15.7.2", + "react": "^16.8.6", + "react-dom": "^16.8.6", "react-dropzone": "^10.1.5", "react-i18next": "^10.11.0", "react-redux": "^7.1.0", @@ -146,8 +144,6 @@ "lodash": "4.17.11", "lodash.clonedeep": "4.5.0", "prettier": "1.18.x", - "react": "^16.7.0", - "react-dom": "^16.7.0", "react-scripts": "^3.0.1", "rollup": "^1.15.5", "rollup-plugin-babel": "^4.3.2", @@ -157,6 +153,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-peer-deps-external": "^2.2.0", "rollup-plugin-postcss": "^2.0.3", + "rollup-plugin-replace": "^2.2.0", "rollup-plugin-serve": "^1.0.1", "rollup-plugin-url": "^2.2.2", "semantic-release": "15.13.x", diff --git a/rollup.config.js b/rollup.config.js index 29140ed19..0549ca4ce 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -9,13 +9,9 @@ import svgr from '@svgr/rollup' import pkg from './package.json' // Deal with https://github.com/rollup/rollup-plugin-commonjs/issues/297 import builtins from 'rollup-plugin-node-builtins' +import replace from 'rollup-plugin-replace'; import serve from 'rollup-plugin-serve' -const globals = { - react: 'React', - 'react-dom': 'ReactDOM', -} - const startServer = process.env.START_SERVER === 'true'; export default { @@ -28,18 +24,19 @@ export default { exports: 'named', name: 'OHIFStandaloneViewer', esModule: false, - globals, }, { file: pkg.module, format: 'es', exports: 'named', sourcemap: true, - globals, }, ], plugins: [ external(), + replace({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), postcss({ modules: false, }), @@ -54,6 +51,32 @@ export default { commonjs({ include: 'node_modules/**', namedExports: { + 'node_modules/react/index.js': [ + 'createContext', + 'createElement', + 'createRef', + 'cloneElement', + 'Children', + 'Fragment', + 'forwardRef', + 'useCallback', + 'isValidElement', + 'memo', + 'useContext', + 'useState', + 'useEffect', + 'useLayoutEffect', + 'Component', + 'PureComponent', + 'useRef', + 'useReducer', + 'useMemo', + ], + 'node_modules/react-dom/index.js': [ + 'unstable_batchedUpdates', + 'findDOMNode', + 'render', + ], 'node_modules/react-is/index.js': [ 'isValidElementType', 'isContextConsumer', @@ -74,7 +97,7 @@ export default { 'cornerstoneTools', ], 'node_modules/dcmjs/build/dcmjs.js': ['data', 'adapters'], - 'node_modules/prop-types/index.js': ['bool', 'number', 'string', 'shape', 'func', 'any', 'node'] + 'node_modules/prop-types/index.js': ['oneOfType', 'element', 'bool', 'number', 'string', 'shape', 'func', 'any', 'node'] }, }), builtins(), diff --git a/src/config.js b/src/config.js index fcfa138ea..1ff41dfac 100644 --- a/src/config.js +++ b/src/config.js @@ -4,9 +4,15 @@ import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import dicomParser from 'dicom-parser'; import version from './version.js'; +let homepage; +const { process } = window; +if (process && process.env && process.env.PUBLIC_URL) { + homepage = process.env.PUBLIC_URL; +} + window.info = { version, - homepage: `${process.env.PUBLIC_URL}`, + homepage, }; // For debugging diff --git a/src/index_publish.js b/src/index_publish.js index e59750957..4ee4bf2f4 100644 --- a/src/index_publish.js +++ b/src/index_publish.js @@ -2,5 +2,19 @@ * Entry point index.js for rollup packaging */ +import React from 'react'; +import ReactDOM from 'react-dom'; + import App from './App.js'; -export { App }; + +function installViewer(props, containerId = "root", callback) { + const container = document.getElementById(containerId); + + if (!container) { + throw new Error("No root element found to install viewer. Please add a