Allow OHIFCornerstoneExtension to have children passed into it upon declaration

This commit is contained in:
Erik Ziegler 2019-02-07 17:56:23 +01:00
parent 3d1eff07ad
commit 35fd77573b
6 changed files with 46 additions and 12 deletions

View File

@ -21,3 +21,5 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
.idea
yalc.lock

View File

@ -26,7 +26,7 @@
"react-dom": "^15.0.0 || ^16.0.0",
"react-redux": "^6.0.0",
"redux": "^4.0.1",
"ohif-core": "^0.2.6"
"ohif-core": "^0.2.7"
},
"devDependencies": {
"@babel/core": "^7.2.2",

View File

@ -1,6 +1,29 @@
import React, { Component } from 'react';
import OHIFCornerstoneViewport from './OHIFCornerstoneViewport.js';
/**
* Pass in 'children' to a React component. The purpose of this is to
* allow end users of this extension to pass in components which will
* be rendered on top of the base components.
*
* @param WrappedComponent
* @param children
* @return {function(*): *}
*/
function withChildren(WrappedComponent, children) {
return function(props) {
return <WrappedComponent children={children} { ...props } />;
};
}
// Note: If you are authoring extensions which use stateful libraries (e.g. cornerstone-core, react-redux) as peerDependencies and are also duplicated at the application level, try using 'yalc' to link it to the application, rather than yarn link. This can help fix 'module not found' issues.
// https://github.com/whitecolor/yalc
export default class OHIFCornerstoneExtension {
constructor(children) {
this.children = children;
}
/**
* Extension ID is a unique id, might be used for namespacing extension specific redux actions/reducers (?)
*/
@ -9,6 +32,10 @@ export default class OHIFCornerstoneExtension {
}
getViewportModule() {
if (this.children && this.children.viewport) {
return withChildren(OHIFCornerstoneViewport, this.children.viewport);
}
return OHIFCornerstoneViewport;
}

View File

@ -41,7 +41,8 @@ class OHIFCornerstoneViewport extends Component {
static propTypes = {
studies: PropTypes.object,
displaySet: PropTypes.object,
viewportIndex: PropTypes.number
viewportIndex: PropTypes.number,
children: PropTypes.node
};
static id = 'OHIFCornerstoneViewport';
@ -160,6 +161,7 @@ class OHIFCornerstoneViewport extends Component {
viewportIndex={this.props.viewportIndex}
/>
)}
{this.props.children}
</>
);
}

View File

@ -4563,22 +4563,24 @@ react-cornerstone-viewport@^0.1.9:
stylus "^0.54.5"
react-dom@^16.6.3:
version "16.6.3"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.3.tgz#8fa7ba6883c85211b8da2d0efeffc9d3825cccc0"
version "16.8.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.1.tgz#ec860f98853d09d39bafd3a6f1e12389d283dbb4"
integrity sha512-N74IZUrPt6UiDjXaO7UbDDFXeUXnVhZzeRLy/6iqqN1ipfjrhR60Bp5NuBK+rv3GMdqdIuwIl22u1SYwf330bg==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.11.2"
scheduler "^0.13.1"
react@^16.6.3:
version "16.6.3"
resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c"
version "16.8.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.8.1.tgz#ae11831f6cb2a05d58603a976afc8a558e852c4a"
integrity sha512-wLw5CFGPdo7p/AgteFz7GblI2JPOos0+biSoxf1FPsGxWQZdN/pj6oToJs1crn61DL3Ln7mN86uZ4j74p31ELQ==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.11.2"
scheduler "^0.13.1"
read-pkg-up@^2.0.0:
version "2.0.0"
@ -4990,9 +4992,10 @@ sax@~1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
scheduler@^0.11.2:
version "0.11.3"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b"
scheduler@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.1.tgz#1a217df1bfaabaf4f1b92a9127d5d732d85a9591"
integrity sha512-VJKOkiKIN2/6NOoexuypwSrybx13MY7NSy9RNt8wPvZDMRT1CW6qlpF5jXRToXNHz3uWzbm2elNpZfXfGPqP9A==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"

View File

@ -1 +1 @@
export default '5bb64fd9254dbd2dd152424fcf584d3a34b05c8a';
export default '3d1eff07addbc53ced948c42cac8bd351ff083df';