diff --git a/.gitmodules b/.gitmodules
index 51d996a28..b1267d406 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -6,10 +6,4 @@
url = git@github.com:OHIF/react-viewerbase.git
[submodule "Packages-react/react-cornerstone-viewport"]
path = Packages-react/react-cornerstone-viewport
- url = git@github.com:cornerstonejs/react-cornerstone-viewport.git
-[submodule "Packages-react/plugins/VTKPlugin"]
- path = Packages-react/plugins/VTKPlugin
- url = git@github.com:OHIF/VTKPlugin.git
-[submodule "Packages-react/plugins/OpenLayersPlugin"]
- path = Packages-react/plugins/OpenLayersPlugin
- url = git@github.com:OHIF/OpenLayersPlugin.git
+ url = git@github.com:cornerstonejs/react-cornerstone-viewport.git
\ No newline at end of file
diff --git a/Packages-react/extensions/OHIFDicomPDFExtension/src/DicomPDFViewport.js b/Packages-react/extensions/OHIFDicomPDFExtension/src/DicomPDFViewport.js
index 873ba6c4c..ce618fcf6 100644
--- a/Packages-react/extensions/OHIFDicomPDFExtension/src/DicomPDFViewport.js
+++ b/Packages-react/extensions/OHIFDicomPDFExtension/src/DicomPDFViewport.js
@@ -1,4 +1,4 @@
-import React, { Component } from "react";
+import React, { Component } from 'react';
import dicomParser from 'dicom-parser';
import TypedArrayProp from './TypedArrayProp';
@@ -14,11 +14,10 @@ class DicomPDFViewport extends Component {
};
static propTypes = {
- byteArray: TypedArrayProp.uint8,
+ byteArray: TypedArrayProp.uint8
};
- renderPDF = (dataSet) => {
- debugger;
+ renderPDF = dataSet => {
const sopClassUid = dataSet.string('x00080016');
if (sopClassUid !== SOP_CLASS_UIDS.ENCAPSULATED_PDF) {
@@ -29,15 +28,15 @@ class DicomPDFViewport extends Component {
const offset = fileTag.dataOffset;
const remainder = offset + fileTag.length;
const pdfByteArray = dataSet.byteArray.slice(offset, remainder);
- const PDF = new Blob([pdfByteArray], {type: 'application/pdf'});
+ const PDF = new Blob([pdfByteArray], { type: 'application/pdf' });
const fileURL = URL.createObjectURL(PDF);
this.setState({
fileURL
});
- }
+ };
- parseByteArray = (byteArray) => {
+ parseByteArray = byteArray => {
const options = {
untilTag: ''
};
@@ -46,14 +45,14 @@ class DicomPDFViewport extends Component {
try {
dataSet = dicomParser.parseDicom(byteArray, options);
- } catch(error) {
+ } catch (error) {
this.setState({
error
});
}
- return dataSet
- }
+ return dataSet;
+ };
componentDidMount() {
const dataSet = this.parseByteArray(this.props.byteArray);
@@ -63,18 +62,22 @@ class DicomPDFViewport extends Component {
render() {
return (
-
- {this.state.fileURL &&
-
- }
- {this.state.error &&
-
{JSON.stringify(this.state.error)}
- }
+
+ {this.state.fileURL && (
+
+ )}
+ {this.state.error &&
{JSON.stringify(this.state.error)}
}
);
}
}
-
export default DicomPDFViewport;
diff --git a/Packages-react/extensions/OHIFDicomPDFExtension/src/OHIFDicomPDFViewport.js b/Packages-react/extensions/OHIFDicomPDFExtension/src/OHIFDicomPDFViewport.js
index 9742478e5..604220c4c 100644
--- a/Packages-react/extensions/OHIFDicomPDFExtension/src/OHIFDicomPDFViewport.js
+++ b/Packages-react/extensions/OHIFDicomPDFExtension/src/OHIFDicomPDFViewport.js
@@ -1,5 +1,5 @@
-import React, { Component } from "react";
-import PropTypes from "prop-types";
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import OHIF from 'ohif-core';
import OHIFComponentPlugin from './OHIFComponentPlugin.js';
import DicomPDFViewport from './DicomPDFViewport';
@@ -10,13 +10,13 @@ class OHIFDicomPDFViewport extends Component {
static propTypes = {
studies: PropTypes.object,
displaySet: PropTypes.object,
- viewportIndex: PropTypes.number,
+ viewportIndex: PropTypes.number
};
state = {
byteArray: null,
error: null
- }
+ };
static id = 'DicomPDFViewportPDF';
@@ -41,8 +41,9 @@ class OHIFDicomPDFViewport extends Component {
error
});
- throw new Error(error);
- });
+ throw new Error(error);
+ }
+ );
}
retrieveDicomData(studyInstanceUid, seriesInstanceUid, sopInstanceUid, wadoRoot, wadoUri, authorizationHeaders) {
@@ -63,10 +64,10 @@ class OHIFDicomPDFViewport extends Component {
return (
- {this.state.byteArray && }
- {this.state.error &&
- {JSON.stringify(this.state.error)}
- }
+ {this.state.byteArray && (
+
+ )}
+ {this.state.error && {JSON.stringify(this.state.error)}
}
);
}
diff --git a/Packages-react/ohif-core b/Packages-react/ohif-core
index ede7e30e0..8850a092a 160000
--- a/Packages-react/ohif-core
+++ b/Packages-react/ohif-core
@@ -1 +1 @@
-Subproject commit ede7e30e012174a0307f10e00b70e22bdfbe1b46
+Subproject commit 8850a092a0b860bc9d423fcc49512567251fc47b
diff --git a/Packages-react/ohif-viewer/.gitignore b/Packages-react/ohif-viewer/.gitignore
index 8709dc08f..3240168a9 100644
--- a/Packages-react/ohif-viewer/.gitignore
+++ b/Packages-react/ohif-viewer/.gitignore
@@ -3,3 +3,5 @@ dist
node_modules
yarn.lock
yarn-error.log
+src/sha.js
+src/version.js
\ No newline at end of file
diff --git a/Packages-react/ohif-viewer/package.json b/Packages-react/ohif-viewer/package.json
index 88442d611..122ec5faf 100644
--- a/Packages-react/ohif-viewer/package.json
+++ b/Packages-react/ohif-viewer/package.json
@@ -97,9 +97,9 @@
"classnames": "^2.2.6",
"cornerstone-core": "^2.2.8",
"cornerstone-math": "^0.1.8",
- "cornerstone-tools": "3.0.0-b.1512",
+ "cornerstone-tools": "3.0.0-b.1679",
"cornerstone-wado-image-loader": "^2.2.3",
- "dcmjs": "^0.3.0",
+ "dcmjs": "^0.3.2",
"dicom-parser": "^1.8.3",
"dicomweb-client": "^0.4.1",
"hammerjs": "^2.0.8",
@@ -110,13 +110,13 @@
"oidc-client": "^1.6.1",
"prop-types": "^15.6.2",
"react-bootstrap-modal": "^4.2.0",
- "react-cornerstone-viewport": "^0.1.8",
+ "react-cornerstone-viewport": "^0.1.9",
"react-dnd": "^7.0.2",
"react-dnd-html5-backend": "^7.0.2",
"react-redux": "^6.0.0",
"react-router": "^4.3.1",
"react-router-dom": "^4.3.1",
- "react-viewerbase": "^0.2.1",
+ "react-viewerbase": "^0.2.4",
"redux": "^4.0.1",
"redux-oidc": "^3.1.0"
}
diff --git a/Packages-react/ohif-viewer/src/App.js b/Packages-react/ohif-viewer/src/App.js
index 7cbad4ff9..5a9d86565 100644
--- a/Packages-react/ohif-viewer/src/App.js
+++ b/Packages-react/ohif-viewer/src/App.js
@@ -95,6 +95,13 @@ const defaultButtons = [
svgUrl: `${Icons}#icon-tools-measure-target`,
active: false
},
+ {
+ command: 'Brush',
+ type: 'tool',
+ text: 'Brush',
+ iconClasses: 'fa fa-circle',
+ active: false
+ },
{
command: 'reset',
type: 'command',
diff --git a/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js b/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js
index 4329b4535..487eea72b 100644
--- a/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js
+++ b/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js
@@ -1,29 +1,48 @@
-import React, { Component } from "react";
-import PropTypes from "prop-types";
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import OHIF from 'ohif-core';
import ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';
import OHIFComponentPlugin from '../OHIFComponentPlugin.js';
-import cornerstoneTools from "cornerstone-tools";
-import cornerstone from "cornerstone-core";
+import cornerstoneTools from 'cornerstone-tools';
+import cornerstone from 'cornerstone-core';
import './config';
+import handleSegmentationStorage from './handleSegmentationStorage.js';
const { StackManager } = OHIF.utils;
// Create the synchronizer used to update reference lines
-OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);
+OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer(
+ 'cornerstonenewimage',
+ cornerstoneTools.updateImageSynchronizer
+);
// Metadata configuration
const metadataProvider = new OHIF.cornerstone.MetadataProvider();
-cornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));
+cornerstone.metaData.addProvider(
+ metadataProvider.provider.bind(metadataProvider)
+);
StackManager.setMetadataProvider(metadataProvider);
+const SOP_CLASSES = {
+ SEGMENTATION_STORAGE: '1.2.840.10008.5.1.4.1.1.66.4'
+};
+
+const specialCaseHandlers = {};
+specialCaseHandlers[
+ SOP_CLASSES.SEGMENTATION_STORAGE
+] = handleSegmentationStorage;
+
class OHIFCornerstoneViewportPlugin extends Component {
+ state = {
+ viewportData: null
+ };
+
static propTypes = {
studies: PropTypes.object,
displaySet: PropTypes.object,
- viewportIndex: PropTypes.number,
+ viewportIndex: PropTypes.number
};
static id = 'CornerstoneViewportPlugin';
@@ -39,9 +58,11 @@ class OHIFCornerstoneViewportPlugin extends Component {
static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {
// Create shortcut to displaySet
- const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);
+ const study = studies.find(
+ study => study.studyInstanceUid === studyInstanceUid
+ );
- const displaySet = study.displaySets.find((set) => {
+ const displaySet = study.displaySets.find(set => {
return set.displaySetInstanceUid === displaySetInstanceUid;
});
@@ -49,37 +70,104 @@ class OHIFCornerstoneViewportPlugin extends Component {
return StackManager.findOrCreateStack(study, displaySet);
}
- static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {
- const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);
+ static getPluginViewportData = (
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+ ) => {
+ const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+ );
// Clone the stack here so we don't mutate it later
const stack = Object.assign({}, currentStack);
stack.currentImageIdIndex = 0;
return stack;
+ };
+
+ getViewportData = async (
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid,
+ sopClassUid
+ ) => {
+ let viewportData;
+
+ switch (sopClassUid) {
+ case SOP_CLASSES.SEGMENTATION_STORAGE:
+ const specialCaseHandler =
+ specialCaseHandlers[SOP_CLASSES.SEGMENTATION_STORAGE];
+
+ viewportData = await specialCaseHandler(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+ );
+ break;
+ default:
+ const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+ );
+ viewportData = {
+ studyInstanceUid,
+ displaySetInstanceUid,
+ stack
+ };
+
+ break;
+ }
+
+ return viewportData;
+ };
+
+ componentDidMount() {
+ const { studies, displaySet } = this.props.viewportData;
+ const {
+ studyInstanceUid,
+ displaySetInstanceUid,
+ sopClassUids
+ } = displaySet;
+
+ if (sopClassUids.length > 1) {
+ console.warn(
+ 'More than one SOPClassUid in the same series is not yet supported.'
+ );
+ }
+
+ const sopClassUid = sopClassUids[0];
+
+ this.getViewportData(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid,
+ sopClassUid
+ ).then(viewportData => {
+ this.setState({
+ viewportData
+ });
+ });
}
render() {
- const { viewportIndex } = this.props;
- const { studies, displaySet } = this.props.viewportData;
- const { studyInstanceUid, displaySetInstanceUid } = displaySet;
- const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);
- const viewportData = {
- studyInstanceUid,
- displaySetInstanceUid,
- stack
- };
-
const { id, init, destroy } = OHIFCornerstoneViewportPlugin;
const pluginProps = { id, init, destroy };
return (
-
+ {this.state.viewportData && (
+
+ )}
);
}
}
-
export default OHIFCornerstoneViewportPlugin;
diff --git a/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/handleSegmentationStorage.js b/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/handleSegmentationStorage.js
new file mode 100644
index 000000000..5a764645d
--- /dev/null
+++ b/Packages-react/ohif-viewer/src/connectedComponents/OHIFCornerstoneViewportPlugin/handleSegmentationStorage.js
@@ -0,0 +1,151 @@
+import OHIF from 'ohif-core';
+import cornerstoneTools from 'cornerstone-tools';
+import * as dcmjs from 'dcmjs';
+
+const { StackManager } = OHIF.utils;
+
+function getDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {
+ const study = studies.find(
+ study => study.studyInstanceUid === studyInstanceUid
+ );
+
+ const displaySet = study.displaySets.find(set => {
+ return set.displaySetInstanceUid === displaySetInstanceUid;
+ });
+
+ return displaySet;
+}
+
+function getDisplaySetsBySeries(studies, studyInstanceUid, seriesInstanceUid) {
+ const study = studies.find(
+ study => study.studyInstanceUid === studyInstanceUid
+ );
+
+ return study.displaySets.filter(set => {
+ return set.seriesInstanceUid === seriesInstanceUid;
+ });
+}
+
+function getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {
+ const study = studies.find(
+ study => study.studyInstanceUid === studyInstanceUid
+ );
+
+ // Create shortcut to displaySet
+ const displaySet = getDisplaySet(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+ );
+
+ // Get stack from Stack Manager
+ const stack = StackManager.findOrCreateStack(study, displaySet);
+
+ // Clone the stack here so we don't mutate it later
+ const stackClone = Object.assign({}, stack);
+ stackClone.currentImageIdIndex = 0;
+
+ return stackClone;
+}
+
+function parseSeg(arrayBuffer, imageIds) {
+ return dcmjs.adapters.Cornerstone.Segmentation.readToolState(
+ imageIds,
+ arrayBuffer
+ );
+}
+
+function addSegMetadataToCornerstoneToolState(
+ segMetadata,
+ toolState,
+ displaySetInstanceUid
+) {
+ cornerstoneTools.globalImageIdSpecificToolStateManager.restoreToolState(
+ toolState
+ );
+
+ const brushModule = cornerstoneTools.store.modules.brush;
+
+ for (let i = 0; i < segMetadata.length; i++) {
+ brushModule.setters.metadata(displaySetInstanceUid, i, segMetadata[i]);
+ }
+}
+
+function retrieveDicomData(wadoUri) {
+ // TODO: Authorization header depends on the server. If we ever have multiple servers
+ // we will need to figure out how / when to pass this information in.
+ return fetch(wadoUri, {
+ headers: OHIF.DICOMWeb.getAuthorizationHeader()
+ }).then(response => response.arrayBuffer());
+}
+
+async function handleSegmentationStorage(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+) {
+ const study = studies.find(
+ study => study.studyInstanceUid === studyInstanceUid
+ );
+ const displaySet = getDisplaySet(
+ studies,
+ studyInstanceUid,
+ displaySetInstanceUid
+ );
+ const segWadoUri = displaySet.images[0].getData().wadouri;
+ const arrayBuffer = await retrieveDicomData(segWadoUri);
+ const dicomData = dcmjs.data.DicomMessage.readFile(arrayBuffer);
+ const dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset(
+ dicomData.dict
+ );
+
+ dataset._meta = dcmjs.data.DicomMetaDictionary.namifyDataset(dicomData.meta);
+
+ const seriesInstanceUid = dataset.ReferencedSeriesSequence.SeriesInstanceUID;
+ const displaySets = getDisplaySetsBySeries(
+ studies,
+ studyInstanceUid,
+ seriesInstanceUid
+ );
+
+ if (displaySets.length > 1) {
+ console.warn(
+ 'More than one display set with the same seriesInstanceUid. This is not supported yet...'
+ );
+ }
+
+ const referenceDisplaySet = displaySets[0];
+ const imageIds = referenceDisplaySet.images
+ .reverse()
+ .map(image => image.getImageId());
+ const results = parseSeg(arrayBuffer, imageIds);
+
+ if (!results) {
+ throw new Error('Fractional segmentations are not supported');
+ }
+
+ const { segMetadata, toolState } = results;
+
+ segMetadata.seriesInstanceUid = seriesInstanceUid;
+
+ addSegMetadataToCornerstoneToolState(
+ segMetadata,
+ toolState,
+ displaySetInstanceUid
+ );
+
+ const cachedStack = StackManager.findOrCreateStack(
+ study,
+ referenceDisplaySet
+ );
+ const stack = Object.assign({}, cachedStack);
+ stack.currentImageIdIndex = 0;
+
+ return {
+ studyInstanceUid,
+ displaySetInstanceUid,
+ stack
+ };
+}
+
+export default handleSegmentationStorage;
diff --git a/Packages-react/ohif-viewer/src/index.js b/Packages-react/ohif-viewer/src/index.js
index e086cdd31..5be920c4d 100644
--- a/Packages-react/ohif-viewer/src/index.js
+++ b/Packages-react/ohif-viewer/src/index.js
@@ -108,6 +108,24 @@ props.oidc = [
]
}; */
+/*props.servers = {
+ "dicomWeb": [
+ {
+ "name": "DCM4CHEE",
+ "wadoUriRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
+ "qidoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
+ "wadoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
+ "qidoSupportsIncludeField": true,
+ "imageRendering": "wadors",
+ "thumbnailRendering": "wadors",
+ "requestOptions": {
+ "requestFromBrowser": true,
+ "auth": "admin:admin"
+ }
+ }
+ ]
+};*/
+
/*
UI settings
Plugins
diff --git a/Packages-react/ohif-viewer/src/sha.js b/Packages-react/ohif-viewer/src/sha.js
index c537737ef..33e0198f2 100644
--- a/Packages-react/ohif-viewer/src/sha.js
+++ b/Packages-react/ohif-viewer/src/sha.js
@@ -1 +1 @@
-export default '298749821742198987421'
+export default 'f06e629c2f2256576e7de5bda48124b3a808ab9b';
diff --git a/Packages-react/ohif-viewer/yarn.lock b/Packages-react/ohif-viewer/yarn.lock
index 7e3eb6bd1..3af11f3c8 100644
--- a/Packages-react/ohif-viewer/yarn.lock
+++ b/Packages-react/ohif-viewer/yarn.lock
@@ -892,7 +892,7 @@
dependencies:
regenerator-runtime "^0.12.0"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1":
version "7.3.1"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a"
integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==
@@ -1856,7 +1856,7 @@ babel-plugin-transform-react-remove-prop-types@0.4.20:
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.20.tgz#688bdea1e27ea0023775dea817fa2d3f8df8802b"
integrity sha512-bWQ8e7LsgdFpyHU/RabjDAjVhL7KLAJXEt0nb0LANFje8YAGA8RlZv88a72aCswOxELWULkYuJqfFoKgs58Tng==
-babel-polyfill@>=6.9.1, babel-polyfill@^6.26.0:
+babel-polyfill@>=6.9.1:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=
@@ -2969,10 +2969,10 @@ cornerstone-math@^0.1.6, cornerstone-math@^0.1.7, cornerstone-math@^0.1.8:
resolved "https://registry.yarnpkg.com/cornerstone-math/-/cornerstone-math-0.1.8.tgz#68ab1f9e4fdcd7c5cb23a0d2eb4263f9f894f1c5"
integrity sha512-x7NEQHBtVG7j1yeyj/aRoKTpXv1Vh2/H9zNLMyqYJDtJkNng8C4Q8M3CgZ1qer0Yr7eVq2x+Ynmj6kfOm5jXKw==
-cornerstone-tools@3.0.0-b.1512:
- version "3.0.0-b.1512"
- resolved "https://registry.yarnpkg.com/cornerstone-tools/-/cornerstone-tools-3.0.0-b.1512.tgz#64e60709b7b638c08d201313a5748aa6f5145337"
- integrity sha512-+lpoPJnTTkGq61XZzrNfAVhYJprBYqFZc++D0TgVUUOfAlXn5I016+cabfRQ/K65ecTfd8RitFK/LrIBUE7D2Q==
+cornerstone-tools@3.0.0-b.1679:
+ version "3.0.0-b.1679"
+ resolved "https://registry.yarnpkg.com/cornerstone-tools/-/cornerstone-tools-3.0.0-b.1679.tgz#e97c4ddc5b229faeb625682412a7cfd77b9fc70c"
+ integrity sha512-t69w5lgS/eZQXdyEfLixWuGZbpspNmyhvu8af9cYQDQ445tchvBtSSD6h1u+5m1gXZvV4LxwBqD8rwZTpMzH9Q==
dependencies:
"@babel/runtime" "7.1.2"
cornerstone-math "^0.1.7"
@@ -3404,13 +3404,14 @@ date-now@^0.1.4:
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-dcmjs@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.3.0.tgz#d065a65b3df14d6028542760de6143f0acdc2ed0"
- integrity sha512-k6La/q+ROPjoAPQCWIWd49XUGUzolLG6qJhEMdSAhYEa4WP6CLyjIgL1Ul2NqM7Vxyd74ydHi537AWxOtdSxmA==
+dcmjs@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.3.2.tgz#18bdcccd0083e01269c588fbbb019e44897b952e"
+ integrity sha512-6tA4A+22c6AK+5wqtU3cS1lNtEPEvndgeRdZfbuMJNC+OiPQFhPmK8+TrNF13ca9QWHUCyRT9mAfAMuio6GnEg==
dependencies:
- babel-polyfill "^6.26.0"
- babel-runtime "^6.26.0"
+ "@babel/polyfill" "^7.2.5"
+ "@babel/runtime" "^7.3.1"
+ loglevel "^1.6.1"
debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0:
version "4.1.1"
@@ -7362,7 +7363,7 @@ log-update@^2.3.0:
cli-cursor "^2.0.0"
wrap-ansi "^3.0.1"
-loglevel@^1.4.1:
+loglevel@^1.4.1, loglevel@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=
@@ -10066,7 +10067,7 @@ react-bootstrap-modal@^4.2.0:
react-overlays "^0.8.0"
react-transition-group "^2.0.0"
-react-cornerstone-viewport@^0.1.8:
+react-cornerstone-viewport@^0.1.9:
version "0.1.9"
resolved "https://registry.yarnpkg.com/react-cornerstone-viewport/-/react-cornerstone-viewport-0.1.9.tgz#28cbf2ec3b13976f271e7cc30e6386c5d97e854c"
integrity sha512-demadfvFX9uOp+lV0wV6Pom6g3Dagdt/97m3mTAN7o236mCDVBn1SBHBkVIjOeKkkPmXIV2q0dlHuINsnlK4TA==
@@ -10264,7 +10265,7 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
-react-viewerbase@^0.2.1:
+react-viewerbase@^0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.2.4.tgz#c247cb39cfbf0db803475a8f35f7463a5a61e397"
integrity sha512-U50z7lCbgL4tAt/ZbkzAGAi5Q/RcPoT12XuRWy+jlq6oH+GtoQtLU7pA4DQkFAk73ebBYH6yL+2r296i8zDGTg==
diff --git a/Packages-react/plugins/OpenLayersPlugin b/Packages-react/plugins/OpenLayersPlugin
deleted file mode 160000
index 2405290b1..000000000
--- a/Packages-react/plugins/OpenLayersPlugin
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2405290b1e5e80d13bae5358625463605eb83930
diff --git a/Packages-react/plugins/VTKPlugin b/Packages-react/plugins/VTKPlugin
deleted file mode 160000
index dd8b3a7ed..000000000
--- a/Packages-react/plugins/VTKPlugin
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit dd8b3a7edddc5bc97af49bd4ceeb89c5f7d56dfb
diff --git a/Packages-react/react-cornerstone-viewport b/Packages-react/react-cornerstone-viewport
index 1a66caa34..59d177cb0 160000
--- a/Packages-react/react-cornerstone-viewport
+++ b/Packages-react/react-cornerstone-viewport
@@ -1 +1 @@
-Subproject commit 1a66caa34d5a841ef414437a53093f7d22be840c
+Subproject commit 59d177cb0e705441f58ce57d37a8122011522868