merging master into study-list-filter

This commit is contained in:
maltempi 2019-02-15 09:18:55 -02:00
commit 993b50e3bc
60 changed files with 13381 additions and 1952 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "ohif-cornerstone-extension", "name": "ohif-cornerstone-extension",
"version": "0.0.5", "version": "0.0.16",
"description": "OHIF extension for Cornerstone", "description": "OHIF extension for Cornerstone",
"author": "OHIF", "author": "OHIF",
"license": "MIT", "license": "MIT",
@ -14,19 +14,25 @@
}, },
"scripts": { "scripts": {
"build": "rollup -c", "build": "rollup -c",
"prepublishOnly": "npm run build",
"start": "rollup -c -w", "start": "rollup -c -w",
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}" "lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
}, },
"peerDependencies": { "peerDependencies": {
"cornerstone-core": "^2.2.8", "cornerstone-core": "^2.2.8",
"cornerstone-math": "^0.1.8",
"cornerstone-tools": "^3.1.0",
"cornerstone-wado-image-loader": "^2.2.3", "cornerstone-wado-image-loader": "^2.2.3",
"dcmjs": "^0.3.2", "dcmjs": "^0.3.3",
"dicom-parser": "^1.8.3", "dicom-parser": "^1.8.3",
"hammerjs": "^2.0.8",
"ohif-core": "^0.3.0",
"prop-types": "^15.6.2",
"react": "^15.0.0 || ^16.0.0", "react": "^15.0.0 || ^16.0.0",
"react-dom": "^15.0.0 || ^16.0.0", "react-dom": "^15.0.0 || ^16.0.0",
"react-redux": "^6.0.0", "react-redux": "^6.0.0",
"redux": "^4.0.1", "react-resize-detector": "^3.4.0",
"ohif-core": "^0.2.7" "redux": "^4.0.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.2.2", "@babel/core": "^7.2.2",
@ -83,10 +89,7 @@
"dependencies": { "dependencies": {
"@babel/runtime": "^7.2.0", "@babel/runtime": "^7.2.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"cornerstone-tools": "3.0.1", "lodash.throttle": "^4.1.1",
"cornerstone-math": "^0.1.8", "react-cornerstone-viewport": "^0.1.14"
"dcmjs": "^0.3.2",
"hammerjs": "^2.0.8",
"react-cornerstone-viewport": "^0.1.9"
} }
} }

View File

@ -12,11 +12,16 @@ const globals = {
'react': 'React', 'react': 'React',
'react-dom': 'ReactDOM', 'react-dom': 'ReactDOM',
'react-redux': 'ReactRedux', 'react-redux': 'ReactRedux',
'react-resize-detector': 'ReactResizeDetector',
'prop-types': 'PropTypes',
'cornerstone-core': 'cornerstone', 'cornerstone-core': 'cornerstone',
'cornerstone-wado-image-loader': 'cornerstoneWADOImageLoader', 'cornerstone-wado-image-loader': 'cornerstoneWADOImageLoader',
'cornerstone-math': 'cornerstoneMath',
'cornerstone-tools': 'cornerstoneTools',
'dcmjs': 'dcmjs', 'dcmjs': 'dcmjs',
'dicom-parser': 'dicomParser', 'dicom-parser': 'dicomParser',
'ohif-core': 'OHIF' 'ohif-core': 'OHIF',
'hammerjs': 'Hammer'
}; };
export default { export default {

View File

@ -1,23 +1,35 @@
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import CornerstoneViewport from 'react-cornerstone-viewport'; import CornerstoneViewport from 'react-cornerstone-viewport';
import OHIF from 'ohif-core' import OHIF from 'ohif-core';
import cornerstone from "cornerstone-core"; import cornerstone from 'cornerstone-core';
import cornerstoneTools from "cornerstone-tools"; import cornerstoneTools from 'cornerstone-tools';
import throttle from 'lodash.throttle';
const { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions; const {
setViewportActive,
setViewportSpecificData,
clearViewportSpecificData
} = OHIF.redux.actions;
const mapStateToProps = (state, ownProps) => { const mapStateToProps = (state, ownProps) => {
const activeButton = state.tools.buttons.find(tool => tool.active === true); const activeButton = state.tools.buttons.find(tool => tool.active === true);
let dataFromStore;
if (state.extensions && state.extensions.cornerstone) {
dataFromStore = state.extensions.cornerstone;
}
// If this is the active viewport, enable prefetching. // If this is the active viewport, enable prefetching.
const { viewportIndex } = ownProps; //.viewportData; const { viewportIndex } = ownProps; //.viewportData;
const isActive = viewportIndex === state.viewports.activeViewportIndex; const isActive = viewportIndex === state.viewports.activeViewportIndex;
const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {}; const viewportSpecificData =
state.viewports.viewportSpecificData[viewportIndex] || {};
return { return {
layout: state.viewports.layout, layout: state.viewports.layout,
isActive, isActive,
activeTool: activeButton && activeButton.command, activeTool: activeButton && activeButton.command,
...dataFromStore,
enableStackPrefetch: isActive, enableStackPrefetch: isActive,
//stack: viewportSpecificData.stack, //stack: viewportSpecificData.stack,
cineToolData: viewportSpecificData.cine, cineToolData: viewportSpecificData.cine,
@ -31,15 +43,32 @@ const mapDispatchToProps = (dispatch, ownProps) => {
return { return {
setViewportActive: () => { setViewportActive: () => {
dispatch(setViewportActive(viewportIndex)) dispatch(setViewportActive(viewportIndex));
}, },
setViewportSpecificData: (data) => { setViewportSpecificData: data => {
dispatch(setViewportSpecificData(viewportIndex, data)) dispatch(setViewportSpecificData(viewportIndex, data));
}, },
clearViewportSpecificData: () => { clearViewportSpecificData: () => {
dispatch(clearViewportSpecificData(viewportIndex)); dispatch(clearViewportSpecificData(viewportIndex));
},
onMeasurementsChanged: (event, action) => {
const {
onAdded,
onRemoved,
onModified
} = OHIF.measurements.MeasurementHandlers;
const actions = {
added: onAdded,
removed: onRemoved,
modified: throttle(event => {
return onModified(event);
}, 300)
};
return actions[action](event);
} }
}; };
}; };

View File

@ -9,12 +9,6 @@ import handleSegmentationStorage from './handleSegmentationStorage.js';
const { StackManager } = OHIF.utils; const { StackManager } = OHIF.utils;
// Create the synchronizer used to update reference lines
OHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer(
'cornerstonenewimage',
cornerstoneTools.updateImageSynchronizer
);
// Metadata configuration // Metadata configuration
const metadataProvider = new OHIF.cornerstone.MetadataProvider(); const metadataProvider = new OHIF.cornerstone.MetadataProvider();
@ -125,7 +119,7 @@ class OHIFCornerstoneViewport extends Component {
return viewportData; return viewportData;
}; };
componentDidMount() { setStateFromProps() {
const { studies, displaySet } = this.props.viewportData; const { studies, displaySet } = this.props.viewportData;
const { const {
studyInstanceUid, studyInstanceUid,
@ -153,15 +147,44 @@ class OHIFCornerstoneViewport extends Component {
}); });
} }
componentDidMount() {
this.setStateFromProps();
}
componentDidUpdate(prevProps) {
const { studies, displaySet } = this.props.viewportData;
const { displaySetInstanceUid } = displaySet;
const prevDisplaySet = prevProps.viewportData.displaySet;
if (
displaySet.displaySetInstanceUid !== prevDisplaySet.displaySetInstanceUid
) {
this.setStateFromProps();
}
}
render() { render() {
return (<> let childrenWithProps = null;
// TODO: Does it make more sense to use Context?
if (this.props.children && this.props.children.length) {
childrenWithProps = this.props.children.map((child, index) => {
return React.cloneElement(child, {
viewportIndex: this.props.viewportIndex,
key: index
});
});
}
return (
<>
{this.state.viewportData && ( {this.state.viewportData && (
<ConnectedCornerstoneViewport <ConnectedCornerstoneViewport
viewportData={this.state.viewportData} viewportData={this.state.viewportData}
viewportIndex={this.props.viewportIndex} viewportIndex={this.props.viewportIndex}
/> />
)} )}
{this.props.children} {childrenWithProps}
</> </>
); );
} }

View File

@ -2,7 +2,6 @@ import cornerstone from 'cornerstone-core';
import cornerstoneMath from 'cornerstone-math'; import cornerstoneMath from 'cornerstone-math';
import cornerstoneTools from 'cornerstone-tools'; import cornerstoneTools from 'cornerstone-tools';
import Hammer from 'hammerjs'; import Hammer from 'hammerjs';
import OHIF from 'ohif-core';
// For debugging // For debugging
window.cornerstoneTools = cornerstoneTools; window.cornerstoneTools = cornerstoneTools;
@ -12,8 +11,6 @@ cornerstoneTools.external.Hammer = Hammer;
cornerstoneTools.external.cornerstoneMath = cornerstoneMath; cornerstoneTools.external.cornerstoneMath = cornerstoneMath;
cornerstoneTools.init(); cornerstoneTools.init();
OHIF.external.cornerstoneTools = cornerstoneTools;
// Set the tool font and font size // Set the tool font and font size
// context.font = "[style] [variant] [weight] [size]/[line height] [font family]"; // context.font = "[style] [variant] [weight] [size]/[line height] [font family]";
const fontFamily = const fontFamily =

View File

@ -118,7 +118,6 @@ async function handleSegmentationStorage(
const referenceDisplaySet = displaySets[0]; const referenceDisplaySet = displaySets[0];
const imageIds = referenceDisplaySet.images.map(image => image.getImageId()); const imageIds = referenceDisplaySet.images.map(image => image.getImageId());
//debugger;
//const firstImagePlane = cornerstone.metadata.get('imagePlane', imageIds[0]); //const firstImagePlane = cornerstone.metadata.get('imagePlane', imageIds[0]);

View File

@ -511,7 +511,6 @@
"@babel/plugin-transform-runtime@^7.2.0": "@babel/plugin-transform-runtime@^7.2.0":
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea"
integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==
dependencies: dependencies:
"@babel/helper-module-imports" "^7.0.0" "@babel/helper-module-imports" "^7.0.0"
"@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0"
@ -558,14 +557,6 @@
"@babel/helper-regex" "^7.0.0" "@babel/helper-regex" "^7.0.0"
regexpu-core "^4.1.3" regexpu-core "^4.1.3"
"@babel/polyfill@^7.2.5":
version "7.2.5"
resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d"
integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==
dependencies:
core-js "^2.5.7"
regenerator-runtime "^0.12.0"
"@babel/preset-env@^7.2.3": "@babel/preset-env@^7.2.3":
version "7.2.3" version "7.2.3"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.3.tgz#948c8df4d4609c99c7e0130169f052ea6a7a8933" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.3.tgz#948c8df4d4609c99c7e0130169f052ea6a7a8933"
@ -622,26 +613,12 @@
"@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-self" "^7.0.0"
"@babel/plugin-transform-react-jsx-source" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0"
"@babel/runtime@7.1.2":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3"
integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==
dependencies:
regenerator-runtime "^0.12.0"
"@babel/runtime@^7.2.0": "@babel/runtime@^7.2.0":
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f"
dependencies: dependencies:
regenerator-runtime "^0.12.0" regenerator-runtime "^0.12.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==
dependencies:
regenerator-runtime "^0.12.0"
"@babel/template@^7.1.0", "@babel/template@^7.1.2": "@babel/template@^7.1.0", "@babel/template@^7.1.2":
version "7.1.2" version "7.1.2"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644"
@ -743,7 +720,6 @@
"@types/q@^1.5.1": "@types/q@^1.5.1":
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18"
integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==
abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1:
version "0.12.4" version "0.12.4"
@ -762,7 +738,6 @@ acorn@^6.0.2:
acorn@^6.0.5: acorn@^6.0.5:
version "6.0.7" version "6.0.7"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.7.tgz#490180ce18337270232d9488a44be83d9afb7fd3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.7.tgz#490180ce18337270232d9488a44be83d9afb7fd3"
integrity sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw==
ajv@^6.5.3, ajv@^6.6.1: ajv@^6.5.3, ajv@^6.6.1:
version "6.6.1" version "6.6.1"
@ -776,7 +751,6 @@ ajv@^6.5.3, ajv@^6.6.1:
alphanum-sort@^1.0.0: alphanum-sort@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
amdefine@>=0.0.4: amdefine@>=0.0.4:
version "1.0.1" version "1.0.1"
@ -909,7 +883,6 @@ autoprefixer@^9.0.0:
babel-eslint@^10.0.1: babel-eslint@^10.0.1:
version "10.0.1" version "10.0.1"
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed"
integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==
dependencies: dependencies:
"@babel/code-frame" "^7.0.0" "@babel/code-frame" "^7.0.0"
"@babel/parser" "^7.0.0" "@babel/parser" "^7.0.0"
@ -955,7 +928,6 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
boolbase@^1.0.0, boolbase@~1.0.0: boolbase@^1.0.0, boolbase@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
brace-expansion@^1.1.7: brace-expansion@^1.1.7:
version "1.1.11" version "1.1.11"
@ -1049,7 +1021,6 @@ browserify-sign@^4.0.0:
browserslist@^4.0.0: browserslist@^4.0.0:
version "4.4.1" version "4.4.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.1.tgz#42e828954b6b29a7a53e352277be429478a69062"
integrity sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==
dependencies: dependencies:
caniuse-lite "^1.0.30000929" caniuse-lite "^1.0.30000929"
electron-to-chromium "^1.3.103" electron-to-chromium "^1.3.103"
@ -1120,7 +1091,6 @@ callsites@^2.0.0:
callsites@^3.0.0: callsites@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3"
integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==
camelcase-keys@^4.0.0: camelcase-keys@^4.0.0:
version "4.2.0" version "4.2.0"
@ -1137,7 +1107,6 @@ camelcase@^4.1.0:
caniuse-api@^3.0.0: caniuse-api@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
dependencies: dependencies:
browserslist "^4.0.0" browserslist "^4.0.0"
caniuse-lite "^1.0.0" caniuse-lite "^1.0.0"
@ -1147,7 +1116,6 @@ caniuse-api@^3.0.0:
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000929: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000929:
version "1.0.30000935" version "1.0.30000935"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000935.tgz#d1b59df00b46f4921bb84a8a34c1d172b346df59" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000935.tgz#d1b59df00b46f4921bb84a8a34c1d172b346df59"
integrity sha512-1Y2uJ5y56qDt3jsDTdBHL1OqiImzjoQcBG6Yl3Qizq8mcc2SgCFpi+ZwLLqkztYnk9l87IYqRlNBnPSOTbFkXQ==
caniuse-lite@^1.0.30000912, caniuse-lite@^1.0.30000914: caniuse-lite@^1.0.30000912, caniuse-lite@^1.0.30000914:
version "1.0.30000918" version "1.0.30000918"
@ -1178,7 +1146,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1:
chalk@^2.4.2: chalk@^2.4.2:
version "2.4.2" version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies: dependencies:
ansi-styles "^3.2.1" ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5" escape-string-regexp "^1.0.5"
@ -1263,7 +1230,6 @@ clone@~0.1.9:
coa@~2.0.1: coa@~2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
dependencies: dependencies:
"@types/q" "^1.5.1" "@types/q" "^1.5.1"
chalk "^2.4.1" chalk "^2.4.1"
@ -1301,7 +1267,6 @@ color-name@^1.0.0:
color-string@^1.5.2: color-string@^1.5.2:
version "1.5.3" version "1.5.3"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
dependencies: dependencies:
color-name "^1.0.0" color-name "^1.0.0"
simple-swizzle "^0.2.2" simple-swizzle "^0.2.2"
@ -1309,7 +1274,6 @@ color-string@^1.5.2:
color@^3.0.0: color@^3.0.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==
dependencies: dependencies:
color-convert "^1.9.1" color-convert "^1.9.1"
color-string "^1.5.2" color-string "^1.5.2"
@ -1359,28 +1323,10 @@ copy-descriptor@^0.1.0:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
core-js@^2.5.7:
version "2.6.3"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49"
integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ==
core-util-is@~1.0.0: core-util-is@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
cornerstone-math@^0.1.7, cornerstone-math@^0.1.8:
version "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.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/cornerstone-tools/-/cornerstone-tools-3.0.1.tgz#b7e3ac36963ee2a6e49238d9889f05b7b6356ea2"
integrity sha512-IcolnxbvNr/Pl8TSFaWkwuT59/CGlWmcD9k1E/eM9sE1x2qiLkCKxYfx/hrSP2aH7cayCWiYlaEcrpAlaQBsWA==
dependencies:
"@babel/runtime" "7.1.2"
cornerstone-math "^0.1.7"
cosmiconfig@5.0.6: cosmiconfig@5.0.6:
version "5.0.6" version "5.0.6"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39"
@ -1392,7 +1338,6 @@ cosmiconfig@5.0.6:
cosmiconfig@^4.0.0: cosmiconfig@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==
dependencies: dependencies:
is-directory "^0.3.1" is-directory "^0.3.1"
js-yaml "^3.9.0" js-yaml "^3.9.0"
@ -1476,7 +1421,6 @@ css-color-names@0.0.4, css-color-names@^0.0.4:
css-declaration-sorter@^4.0.1: css-declaration-sorter@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
dependencies: dependencies:
postcss "^7.0.1" postcss "^7.0.1"
timsort "^0.3.0" timsort "^0.3.0"
@ -1499,12 +1443,10 @@ css-parse@1.7.x:
css-select-base-adapter@~0.1.0: css-select-base-adapter@~0.1.0:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
css-select@^2.0.0: css-select@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==
dependencies: dependencies:
boolbase "^1.0.0" boolbase "^1.0.0"
css-what "^2.1.2" css-what "^2.1.2"
@ -1522,7 +1464,6 @@ css-selector-tokenizer@^0.7.0:
css-tree@1.0.0-alpha.28: css-tree@1.0.0-alpha.28:
version "1.0.0-alpha.28" version "1.0.0-alpha.28"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==
dependencies: dependencies:
mdn-data "~1.1.0" mdn-data "~1.1.0"
source-map "^0.5.3" source-map "^0.5.3"
@ -1530,7 +1471,6 @@ css-tree@1.0.0-alpha.28:
css-tree@1.0.0-alpha.29: css-tree@1.0.0-alpha.29:
version "1.0.0-alpha.29" version "1.0.0-alpha.29"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
dependencies: dependencies:
mdn-data "~1.1.0" mdn-data "~1.1.0"
source-map "^0.5.3" source-map "^0.5.3"
@ -1538,17 +1478,14 @@ css-tree@1.0.0-alpha.29:
css-unit-converter@^1.1.1: css-unit-converter@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
css-url-regex@^1.1.0: css-url-regex@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
css-what@^2.1.2: css-what@^2.1.2:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d"
integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==
cssesc@^0.1.0: cssesc@^0.1.0:
version "0.1.0" version "0.1.0"
@ -1557,12 +1494,10 @@ cssesc@^0.1.0:
cssesc@^2.0.0: cssesc@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
cssnano-preset-default@^4.0.6: cssnano-preset-default@^4.0.6:
version "4.0.6" version "4.0.6"
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a"
integrity sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==
dependencies: dependencies:
css-declaration-sorter "^4.0.1" css-declaration-sorter "^4.0.1"
cssnano-util-raw-cache "^4.0.1" cssnano-util-raw-cache "^4.0.1"
@ -1598,29 +1533,24 @@ cssnano-preset-default@^4.0.6:
cssnano-util-get-arguments@^4.0.0: cssnano-util-get-arguments@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
cssnano-util-get-match@^4.0.0: cssnano-util-get-match@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
cssnano-util-raw-cache@^4.0.1: cssnano-util-raw-cache@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
cssnano-util-same-parent@^4.0.0: cssnano-util-same-parent@^4.0.0:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
cssnano@^4.1.8: cssnano@^4.1.8:
version "4.1.8" version "4.1.8"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.8.tgz#8014989679d5fd42491e4499a521dbfb85c95fd1" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.8.tgz#8014989679d5fd42491e4499a521dbfb85c95fd1"
integrity sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==
dependencies: dependencies:
cosmiconfig "^5.0.0" cosmiconfig "^5.0.0"
cssnano-preset-default "^4.0.6" cssnano-preset-default "^4.0.6"
@ -1630,7 +1560,6 @@ cssnano@^4.1.8:
csso@^3.5.0: csso@^3.5.0:
version "3.5.1" version "3.5.1"
resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
dependencies: dependencies:
css-tree "1.0.0-alpha.29" css-tree "1.0.0-alpha.29"
@ -1644,15 +1573,6 @@ date-fns@^1.27.2:
version "1.29.0" version "1.29.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
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" "^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: debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
@ -1743,6 +1663,11 @@ des.js@^1.0.0:
inherits "^2.0.1" inherits "^2.0.1"
minimalistic-assert "^1.0.0" minimalistic-assert "^1.0.0"
dicomweb-client@^0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/dicomweb-client/-/dicomweb-client-0.4.2.tgz#f1f5167d935810423ad2599e5160306bde2458ed"
integrity sha512-Raf2SVjWDrNaVIVt4CmfXWdKVacyEX5ux+pY2Qop0mhluG+OiCkbnESljz4PjglFRnprETEk6C0ELGDru0haew==
diffie-hellman@^5.0.0: diffie-hellman@^5.0.0:
version "5.0.3" version "5.0.3"
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
@ -1795,7 +1720,6 @@ domhandler@^2.3.0:
domutils@^1.5.1, domutils@^1.7.0: domutils@^1.5.1, domutils@^1.7.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
dependencies: dependencies:
dom-serializer "0" dom-serializer "0"
domelementtype "1" domelementtype "1"
@ -1809,7 +1733,6 @@ dot-prop@^4.1.1:
electron-to-chromium@^1.3.103: electron-to-chromium@^1.3.103:
version "1.3.113" version "1.3.113"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9"
integrity sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==
electron-to-chromium@^1.3.86: electron-to-chromium@^1.3.86:
version "1.3.88" version "1.3.88"
@ -1864,7 +1787,6 @@ error-ex@^1.2.0, error-ex@^1.3.1:
es-abstract@^1.12.0, es-abstract@^1.5.1: es-abstract@^1.12.0, es-abstract@^1.5.1:
version "1.13.0" version "1.13.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
dependencies: dependencies:
es-to-primitive "^1.2.0" es-to-primitive "^1.2.0"
function-bind "^1.1.1" function-bind "^1.1.1"
@ -1981,7 +1903,6 @@ eslint-visitor-keys@^1.0.0:
eslint@5.13.0: eslint@5.13.0:
version "5.13.0" version "5.13.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9"
integrity sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==
dependencies: dependencies:
"@babel/code-frame" "^7.0.0" "@babel/code-frame" "^7.0.0"
ajv "^6.5.3" ajv "^6.5.3"
@ -2023,7 +1944,6 @@ eslint@5.13.0:
espree@^5.0.0: espree@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c"
integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==
dependencies: dependencies:
acorn "^6.0.2" acorn "^6.0.2"
acorn-jsx "^5.0.0" acorn-jsx "^5.0.0"
@ -2472,11 +2392,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
version "4.1.15" version "4.1.15"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
hammerjs@^2.0.8:
version "2.0.8"
resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1"
integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=
has-ansi@^2.0.0: has-ansi@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@ -2545,7 +2460,6 @@ hash.js@^1.0.0, hash.js@^1.0.3:
hex-color-regex@^1.1.0: hex-color-regex@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
hmac-drbg@^1.0.0: hmac-drbg@^1.0.0:
version "1.0.1" version "1.0.1"
@ -2568,12 +2482,10 @@ hosted-git-info@^2.1.4:
hsl-regex@^1.0.0: hsl-regex@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
hsla-regex@^1.0.0: hsla-regex@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
html-comment-regex@^1.1.0: html-comment-regex@^1.1.0:
version "1.1.2" version "1.1.2"
@ -2658,7 +2570,6 @@ import-fresh@^2.0.0:
import-fresh@^3.0.0: import-fresh@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390"
integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==
dependencies: dependencies:
parent-module "^1.0.0" parent-module "^1.0.0"
resolve-from "^4.0.0" resolve-from "^4.0.0"
@ -2766,7 +2677,6 @@ is-arrayish@^0.2.1:
is-arrayish@^0.3.1: is-arrayish@^0.3.1:
version "0.3.2" version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
is-buffer@^1.1.4, is-buffer@^1.1.5: is-buffer@^1.1.4, is-buffer@^1.1.5:
version "1.1.6" version "1.1.6"
@ -2791,7 +2701,6 @@ is-ci@^2.0.0:
is-color-stop@^1.0.0: is-color-stop@^1.0.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
dependencies: dependencies:
css-color-names "^0.0.4" css-color-names "^0.0.4"
hex-color-regex "^1.1.0" hex-color-regex "^1.1.0"
@ -2985,7 +2894,6 @@ is-regexp@^1.0.0:
is-resolvable@^1.0.0: is-resolvable@^1.0.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
is-stream@^1.1.0: is-stream@^1.1.0:
version "1.1.0" version "1.1.0"
@ -2998,7 +2906,6 @@ is-supported-regexp-flag@^1.0.0:
is-svg@^3.0.0: is-svg@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
dependencies: dependencies:
html-comment-regex "^1.1.0" html-comment-regex "^1.1.0"
@ -3050,6 +2957,11 @@ isobject@^3.0.0, isobject@^3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
isomorphic-base64@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803"
integrity sha1-9Caq6CVpuopOxcpzrSGkSrHueAM=
jest-get-type@^22.1.0: jest-get-type@^22.1.0:
version "22.4.3" version "22.4.3"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
@ -3063,6 +2975,16 @@ jest-validate@^23.5.0:
leven "^2.1.0" leven "^2.1.0"
pretty-format "^23.6.0" pretty-format "^23.6.0"
jquery.hotkeys@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/jquery.hotkeys/-/jquery.hotkeys-0.1.0.tgz#a88f636494fe75de41e4b753a059e5a523b83273"
integrity sha1-qI9jZJT+dd5B5LdToFnlpSO4MnM=
jquery@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==
js-levenshtein@^1.1.3: js-levenshtein@^1.1.3:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e"
@ -3346,15 +3268,28 @@ lodash.camelcase@^4.3.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
lodash.debounce@^4.0.8: lodash.debounce@^4.0.8:
version "4.0.8" version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
lodash.memoize@^4.1.2: lodash.memoize@^4.1.2:
version "4.1.2" version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
lodash.merge@^4.6.1:
version "4.6.1"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
lodash.uniq@^4.5.0: lodash.uniq@^4.5.0:
version "4.5.0" version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@ -3383,11 +3318,6 @@ log-update@^2.3.0:
cli-cursor "^2.0.0" cli-cursor "^2.0.0"
wrap-ansi "^3.0.1" wrap-ansi "^3.0.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=
longest-streak@^2.0.1: longest-streak@^2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e"
@ -3472,7 +3402,6 @@ mdast-util-compact@^1.0.0:
mdn-data@~1.1.0: mdn-data@~1.1.0:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
meow@^5.0.0: meow@^5.0.0:
version "5.0.0" version "5.0.0"
@ -3596,7 +3525,6 @@ mkpath@^1.0.0:
moment@^2.23.0: moment@^2.23.0:
version "2.24.0" version "2.24.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
ms@2.0.0: ms@2.0.0:
version "2.0.0" version "2.0.0"
@ -3643,7 +3571,6 @@ node-releases@^1.0.5:
node-releases@^1.1.3: node-releases@^1.1.3:
version "1.1.7" version "1.1.7"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.7.tgz#b09a10394d0ed8f7778f72bb861dde68b146303b" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.7.tgz#b09a10394d0ed8f7778f72bb861dde68b146303b"
integrity sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA==
dependencies: dependencies:
semver "^5.3.0" semver "^5.3.0"
@ -3682,7 +3609,6 @@ normalize-url@^1.0.0:
normalize-url@^3.0.0: normalize-url@^3.0.0:
version "3.3.0" version "3.3.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
npm-path@^2.0.2: npm-path@^2.0.2:
version "2.0.4" version "2.0.4"
@ -3707,7 +3633,6 @@ npm-which@^3.0.1:
nth-check@^1.0.2: nth-check@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
dependencies: dependencies:
boolbase "~1.0.0" boolbase "~1.0.0"
@ -3756,7 +3681,6 @@ object-visit@^1.0.0:
object.getownpropertydescriptors@^2.0.3: object.getownpropertydescriptors@^2.0.3:
version "2.0.3" version "2.0.3"
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
dependencies: dependencies:
define-properties "^1.1.2" define-properties "^1.1.2"
es-abstract "^1.5.1" es-abstract "^1.5.1"
@ -3777,7 +3701,6 @@ object.pick@^1.3.0:
object.values@^1.0.4: object.values@^1.0.4:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
dependencies: dependencies:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.12.0" es-abstract "^1.12.0"
@ -3788,6 +3711,18 @@ octal@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b"
"ohif-core@file:.yalc/ohif-core":
version "0.2.9-ee88c076"
dependencies:
"@babel/runtime" "^7.2.0"
dicomweb-client "^0.4.2"
isomorphic-base64 "^1.0.2"
jquery "^3.3.1"
jquery.hotkeys "^0.1.0"
lodash.clonedeep "^4.5.0"
lodash.merge "^4.6.1"
validate.js "^0.12.0"
once@^1.3.0, once@^1.3.1, once@^1.4.0: once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@ -3866,7 +3801,6 @@ p-try@^2.0.0:
parent-module@^1.0.0: parent-module@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5"
integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==
dependencies: dependencies:
callsites "^3.0.0" callsites "^3.0.0"
@ -4020,7 +3954,6 @@ posix-character-classes@^0.1.0:
postcss-calc@^7.0.0: postcss-calc@^7.0.0:
version "7.0.1" version "7.0.1"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
dependencies: dependencies:
css-unit-converter "^1.1.1" css-unit-converter "^1.1.1"
postcss "^7.0.5" postcss "^7.0.5"
@ -4030,7 +3963,6 @@ postcss-calc@^7.0.0:
postcss-colormin@^4.0.2: postcss-colormin@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99"
integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==
dependencies: dependencies:
browserslist "^4.0.0" browserslist "^4.0.0"
color "^3.0.0" color "^3.0.0"
@ -4041,7 +3973,6 @@ postcss-colormin@^4.0.2:
postcss-convert-values@^4.0.1: postcss-convert-values@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-value-parser "^3.0.0" postcss-value-parser "^3.0.0"
@ -4049,28 +3980,24 @@ postcss-convert-values@^4.0.1:
postcss-discard-comments@^4.0.1: postcss-discard-comments@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d"
integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-discard-duplicates@^4.0.2: postcss-discard-duplicates@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-discard-empty@^4.0.1: postcss-discard-empty@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-discard-overridden@^4.0.1: postcss-discard-overridden@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
@ -4097,7 +4024,6 @@ postcss-less@^3.1.0:
postcss-load-config@^2.0.0: postcss-load-config@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==
dependencies: dependencies:
cosmiconfig "^4.0.0" cosmiconfig "^4.0.0"
import-cwd "^2.0.0" import-cwd "^2.0.0"
@ -4116,7 +4042,6 @@ postcss-media-query-parser@^0.2.3:
postcss-merge-longhand@^4.0.10: postcss-merge-longhand@^4.0.10:
version "4.0.10" version "4.0.10"
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz#c4d63ab57bdc054ab4067ab075d488c8c2978380" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz#c4d63ab57bdc054ab4067ab075d488c8c2978380"
integrity sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==
dependencies: dependencies:
css-color-names "0.0.4" css-color-names "0.0.4"
postcss "^7.0.0" postcss "^7.0.0"
@ -4126,7 +4051,6 @@ postcss-merge-longhand@^4.0.10:
postcss-merge-rules@^4.0.2: postcss-merge-rules@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74"
integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==
dependencies: dependencies:
browserslist "^4.0.0" browserslist "^4.0.0"
caniuse-api "^3.0.0" caniuse-api "^3.0.0"
@ -4138,7 +4062,6 @@ postcss-merge-rules@^4.0.2:
postcss-minify-font-values@^4.0.2: postcss-minify-font-values@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-value-parser "^3.0.0" postcss-value-parser "^3.0.0"
@ -4146,7 +4069,6 @@ postcss-minify-font-values@^4.0.2:
postcss-minify-gradients@^4.0.1: postcss-minify-gradients@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd"
integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==
dependencies: dependencies:
cssnano-util-get-arguments "^4.0.0" cssnano-util-get-arguments "^4.0.0"
is-color-stop "^1.0.0" is-color-stop "^1.0.0"
@ -4156,7 +4078,6 @@ postcss-minify-gradients@^4.0.1:
postcss-minify-params@^4.0.1: postcss-minify-params@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2"
integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==
dependencies: dependencies:
alphanum-sort "^1.0.0" alphanum-sort "^1.0.0"
browserslist "^4.0.0" browserslist "^4.0.0"
@ -4168,7 +4089,6 @@ postcss-minify-params@^4.0.1:
postcss-minify-selectors@^4.0.1: postcss-minify-selectors@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd"
integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==
dependencies: dependencies:
alphanum-sort "^1.0.0" alphanum-sort "^1.0.0"
has "^1.0.0" has "^1.0.0"
@ -4205,7 +4125,6 @@ postcss-modules-values@1.3.0:
postcss-modules@^1.4.1: postcss-modules@^1.4.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef" resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef"
integrity sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg==
dependencies: dependencies:
css-modules-loader-core "^1.1.0" css-modules-loader-core "^1.1.0"
generic-names "^1.0.3" generic-names "^1.0.3"
@ -4216,14 +4135,12 @@ postcss-modules@^1.4.1:
postcss-normalize-charset@^4.0.1: postcss-normalize-charset@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-normalize-display-values@^4.0.1: postcss-normalize-display-values@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c"
integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==
dependencies: dependencies:
cssnano-util-get-match "^4.0.0" cssnano-util-get-match "^4.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4232,7 +4149,6 @@ postcss-normalize-display-values@^4.0.1:
postcss-normalize-positions@^4.0.1: postcss-normalize-positions@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1"
integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==
dependencies: dependencies:
cssnano-util-get-arguments "^4.0.0" cssnano-util-get-arguments "^4.0.0"
has "^1.0.0" has "^1.0.0"
@ -4242,7 +4158,6 @@ postcss-normalize-positions@^4.0.1:
postcss-normalize-repeat-style@^4.0.1: postcss-normalize-repeat-style@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5"
integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==
dependencies: dependencies:
cssnano-util-get-arguments "^4.0.0" cssnano-util-get-arguments "^4.0.0"
cssnano-util-get-match "^4.0.0" cssnano-util-get-match "^4.0.0"
@ -4252,7 +4167,6 @@ postcss-normalize-repeat-style@^4.0.1:
postcss-normalize-string@^4.0.1: postcss-normalize-string@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3"
integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==
dependencies: dependencies:
has "^1.0.0" has "^1.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4261,7 +4175,6 @@ postcss-normalize-string@^4.0.1:
postcss-normalize-timing-functions@^4.0.1: postcss-normalize-timing-functions@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7"
integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==
dependencies: dependencies:
cssnano-util-get-match "^4.0.0" cssnano-util-get-match "^4.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4270,7 +4183,6 @@ postcss-normalize-timing-functions@^4.0.1:
postcss-normalize-unicode@^4.0.1: postcss-normalize-unicode@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
dependencies: dependencies:
browserslist "^4.0.0" browserslist "^4.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4279,7 +4191,6 @@ postcss-normalize-unicode@^4.0.1:
postcss-normalize-url@^4.0.1: postcss-normalize-url@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
dependencies: dependencies:
is-absolute-url "^2.0.0" is-absolute-url "^2.0.0"
normalize-url "^3.0.0" normalize-url "^3.0.0"
@ -4289,7 +4200,6 @@ postcss-normalize-url@^4.0.1:
postcss-normalize-whitespace@^4.0.1: postcss-normalize-whitespace@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e"
integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==
dependencies: dependencies:
postcss "^7.0.0" postcss "^7.0.0"
postcss-value-parser "^3.0.0" postcss-value-parser "^3.0.0"
@ -4297,7 +4207,6 @@ postcss-normalize-whitespace@^4.0.1:
postcss-ordered-values@^4.1.1: postcss-ordered-values@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2"
integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==
dependencies: dependencies:
cssnano-util-get-arguments "^4.0.0" cssnano-util-get-arguments "^4.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4306,7 +4215,6 @@ postcss-ordered-values@^4.1.1:
postcss-reduce-initial@^4.0.2: postcss-reduce-initial@^4.0.2:
version "4.0.2" version "4.0.2"
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15" resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15"
integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==
dependencies: dependencies:
browserslist "^4.0.0" browserslist "^4.0.0"
caniuse-api "^3.0.0" caniuse-api "^3.0.0"
@ -4316,7 +4224,6 @@ postcss-reduce-initial@^4.0.2:
postcss-reduce-transforms@^4.0.1: postcss-reduce-transforms@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561"
integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==
dependencies: dependencies:
cssnano-util-get-match "^4.0.0" cssnano-util-get-match "^4.0.0"
has "^1.0.0" has "^1.0.0"
@ -4358,7 +4265,6 @@ postcss-scss@^2.0.0:
postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0: postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
dependencies: dependencies:
dot-prop "^4.1.1" dot-prop "^4.1.1"
indexes-of "^1.0.1" indexes-of "^1.0.1"
@ -4367,7 +4273,6 @@ postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0:
postcss-selector-parser@^5.0.0-rc.4: postcss-selector-parser@^5.0.0-rc.4:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
dependencies: dependencies:
cssesc "^2.0.0" cssesc "^2.0.0"
indexes-of "^1.0.1" indexes-of "^1.0.1"
@ -4380,7 +4285,6 @@ postcss-styled@>=0.34.0, postcss-styled@^0.34.0:
postcss-svgo@^4.0.1: postcss-svgo@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d"
integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==
dependencies: dependencies:
is-svg "^3.0.0" is-svg "^3.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4394,7 +4298,6 @@ postcss-syntax@^0.34.0:
postcss-unique-selectors@^4.0.1: postcss-unique-selectors@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
dependencies: dependencies:
alphanum-sort "^1.0.0" alphanum-sort "^1.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -4431,7 +4334,6 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.3, postcss@^7.0.6:
postcss@^7.0.14, postcss@^7.0.5: postcss@^7.0.14, postcss@^7.0.5:
version "7.0.14" version "7.0.14"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==
dependencies: dependencies:
chalk "^2.4.2" chalk "^2.4.2"
source-map "^0.6.1" source-map "^0.6.1"
@ -4553,10 +4455,10 @@ randomfill@^1.0.3:
randombytes "^2.0.5" randombytes "^2.0.5"
safe-buffer "^5.1.0" safe-buffer "^5.1.0"
react-cornerstone-viewport@^0.1.9: react-cornerstone-viewport@^0.1.14:
version "0.1.9" version "0.1.14"
resolved "https://registry.yarnpkg.com/react-cornerstone-viewport/-/react-cornerstone-viewport-0.1.9.tgz#28cbf2ec3b13976f271e7cc30e6386c5d97e854c" resolved "https://registry.yarnpkg.com/react-cornerstone-viewport/-/react-cornerstone-viewport-0.1.14.tgz#297d004c3e746c476fc785336a928096f257e860"
integrity sha512-demadfvFX9uOp+lV0wV6Pom6g3Dagdt/97m3mTAN7o236mCDVBn1SBHBkVIjOeKkkPmXIV2q0dlHuINsnlK4TA== integrity sha512-PUnrDsQujOKEDuXVZFuxX3d8I4sEYtbNeTrGk5HPeFZXccIx+KSUf+qU06CsJnpMu4FqgaeHGtMVKm3hJJRmvg==
dependencies: dependencies:
lodash.debounce "^4.0.8" lodash.debounce "^4.0.8"
moment "^2.23.0" moment "^2.23.0"
@ -4565,7 +4467,6 @@ react-cornerstone-viewport@^0.1.9:
react-dom@^16.6.3: react-dom@^16.6.3:
version "16.8.1" version "16.8.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.1.tgz#ec860f98853d09d39bafd3a6f1e12389d283dbb4" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.1.tgz#ec860f98853d09d39bafd3a6f1e12389d283dbb4"
integrity sha512-N74IZUrPt6UiDjXaO7UbDDFXeUXnVhZzeRLy/6iqqN1ipfjrhR60Bp5NuBK+rv3GMdqdIuwIl22u1SYwf330bg==
dependencies: dependencies:
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.1" object-assign "^4.1.1"
@ -4575,7 +4476,6 @@ react-dom@^16.6.3:
react@^16.6.3: react@^16.6.3:
version "16.8.1" version "16.8.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.8.1.tgz#ae11831f6cb2a05d58603a976afc8a558e852c4a" resolved "https://registry.yarnpkg.com/react/-/react-16.8.1.tgz#ae11831f6cb2a05d58603a976afc8a558e852c4a"
integrity sha512-wLw5CFGPdo7p/AgteFz7GblI2JPOos0+biSoxf1FPsGxWQZdN/pj6oToJs1crn61DL3Ln7mN86uZ4j74p31ELQ==
dependencies: dependencies:
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.1" object-assign "^4.1.1"
@ -4807,7 +4707,6 @@ replace-ext@1.0.0:
require-from-string@^2.0.1: require-from-string@^2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
reserved-words@^0.1.2: reserved-words@^0.1.2:
version "0.1.2" version "0.1.2"
@ -4852,12 +4751,10 @@ ret@~0.1.10:
rgb-regex@^1.0.1: rgb-regex@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
rgba-regex@^1.0.0: rgba-regex@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
rimraf@^2.2.8, rimraf@^2.6.2, rimraf@~2.6.2: rimraf@^2.2.8, rimraf@^2.6.2, rimraf@~2.6.2:
version "2.6.2" version "2.6.2"
@ -4912,7 +4809,6 @@ rollup-plugin-peer-deps-external@^2.2.0:
rollup-plugin-postcss@^2.0.3: rollup-plugin-postcss@^2.0.3:
version "2.0.3" version "2.0.3"
resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.3.tgz#1fd5b7e1fc7545cb0084d9c99d11b259e41a05e6" resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.3.tgz#1fd5b7e1fc7545cb0084d9c99d11b259e41a05e6"
integrity sha512-d12oKl6za/GGXmlytzVPzzTdPCKgti/Kq2kNhtfm5vv9hkNbyrTvizMBm6zZ5rRWX/sIWl3znjIJ8xy6Hofoeg==
dependencies: dependencies:
chalk "^2.4.2" chalk "^2.4.2"
concat-with-sourcemaps "^1.0.5" concat-with-sourcemaps "^1.0.5"
@ -4947,7 +4843,6 @@ rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3:
rollup@^1.1.2: rollup@^1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.1.2.tgz#8d094b85683b810d0c05a16bd7618cf70d48eba7" resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.1.2.tgz#8d094b85683b810d0c05a16bd7618cf70d48eba7"
integrity sha512-OkdMxqMl8pWoQc5D8y1cIinYQPPLV8ZkfLgCzL6SytXeNA2P7UHynEQXI9tYxuAjAMsSyvRaWnyJDLHMxq0XAg==
dependencies: dependencies:
"@types/estree" "0.0.39" "@types/estree" "0.0.39"
"@types/node" "*" "@types/node" "*"
@ -4990,12 +4885,10 @@ sax@0.5.x:
sax@~1.2.4: sax@~1.2.4:
version "1.2.4" version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
scheduler@^0.13.1: scheduler@^0.13.1:
version "0.13.1" version "0.13.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.1.tgz#1a217df1bfaabaf4f1b92a9127d5d732d85a9591" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.1.tgz#1a217df1bfaabaf4f1b92a9127d5d732d85a9591"
integrity sha512-VJKOkiKIN2/6NOoexuypwSrybx13MY7NSy9RNt8wPvZDMRT1CW6qlpF5jXRToXNHz3uWzbm2elNpZfXfGPqP9A==
dependencies: dependencies:
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.1" object-assign "^4.1.1"
@ -5060,7 +4953,6 @@ simple-git@^1.85.0:
simple-swizzle@^0.2.2: simple-swizzle@^0.2.2:
version "0.2.2" version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
dependencies: dependencies:
is-arrayish "^0.3.1" is-arrayish "^0.3.1"
@ -5087,7 +4979,6 @@ slice-ansi@2.0.0:
slice-ansi@^2.0.0: slice-ansi@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
dependencies: dependencies:
ansi-styles "^3.2.0" ansi-styles "^3.2.0"
astral-regex "^1.0.0" astral-regex "^1.0.0"
@ -5197,7 +5088,6 @@ sprintf-js@~1.0.2:
stable@~0.1.6: stable@~0.1.6:
version "0.1.8" version "0.1.8"
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
staged-git-files@1.1.2: staged-git-files@1.1.2:
version "1.1.2" version "1.1.2"
@ -5333,7 +5223,6 @@ style-search@^0.1.0:
stylehacks@^4.0.0: stylehacks@^4.0.0:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2"
integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==
dependencies: dependencies:
browserslist "^4.0.0" browserslist "^4.0.0"
postcss "^7.0.0" postcss "^7.0.0"
@ -5432,7 +5321,6 @@ supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
supports-color@^6.1.0: supports-color@^6.1.0:
version "6.1.0" version "6.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
dependencies: dependencies:
has-flag "^3.0.0" has-flag "^3.0.0"
@ -5443,7 +5331,6 @@ svg-tags@^1.0.0:
svgo@^1.0.0: svgo@^1.0.0:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985"
integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==
dependencies: dependencies:
coa "~2.0.1" coa "~2.0.1"
colors "~1.1.2" colors "~1.1.2"
@ -5476,7 +5363,6 @@ table@^5.0.0:
table@^5.0.2: table@^5.0.2:
version "5.2.2" version "5.2.2"
resolved "https://registry.yarnpkg.com/table/-/table-5.2.2.tgz#61d474c9e4d8f4f7062c98c7504acb3c08aa738f" resolved "https://registry.yarnpkg.com/table/-/table-5.2.2.tgz#61d474c9e4d8f4f7062c98c7504acb3c08aa738f"
integrity sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==
dependencies: dependencies:
ajv "^6.6.1" ajv "^6.6.1"
lodash "^4.17.11" lodash "^4.17.11"
@ -5494,7 +5380,6 @@ through@^2.3.6:
timsort@^0.3.0: timsort@^0.3.0:
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
tmp@^0.0.33: tmp@^0.0.33:
version "0.0.33" version "0.0.33"
@ -5665,7 +5550,6 @@ universalify@^0.1.0:
unquote@~1.1.1: unquote@~1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
unset-value@^1.0.0: unset-value@^1.0.0:
version "1.0.0" version "1.0.0"
@ -5695,7 +5579,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
util.promisify@~1.0.0: util.promisify@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
dependencies: dependencies:
define-properties "^1.1.2" define-properties "^1.1.2"
object.getownpropertydescriptors "^2.0.3" object.getownpropertydescriptors "^2.0.3"
@ -5707,6 +5590,11 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0" spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0" spdx-expression-parse "^3.0.0"
validate.js@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.12.0.tgz#17f989e37c192ea2f826bbf19bf4e97e6e4be68f"
integrity sha512-/x2RJSvbqEyxKj0RPN4xaRquK+EggjeVXiDDEyrJzsJogjtiZ9ov7lj/svVb4DM5Q5braQF4cooAryQbUwOxlA==
vendors@^1.0.0: vendors@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"

View File

@ -0,0 +1,14 @@
{
"presets": [
["@babel/preset-env", {
"targets": {
"ie": "11"
}
}],
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-runtime"
]
}

View File

@ -0,0 +1,9 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

View File

@ -0,0 +1,16 @@
{
"extends": [
"react-app",
"eslint:recommended",
"plugin:react/recommended"
],
"parser": "babel-eslint",
"env": {
"jest": true
},
"settings": {
"react": {
"version": "detect",
},
},
}

View File

@ -0,0 +1,23 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
node_modules
# builds
build
dist
.rpt2_cache
# misc
.DS_Store
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.idea

View File

@ -0,0 +1,3 @@
{
"singleQuote": true
}

View File

@ -0,0 +1,4 @@
language: node_js
node_js:
- 9
- 8

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Open Health Imaging Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,86 @@
{
"name": "ohif-dicom-html-extension",
"version": "0.0.2",
"description": "OHIF extension for rendering structured reports to HTML",
"author": "OHIF",
"license": "MIT",
"repository": "OHIF/Viewers",
"main": "dist/index.umd.js",
"module": "dist/index.es.js",
"jsnext:main": "dist/index.es.js",
"engines": {
"node": ">=8",
"npm": ">=5"
},
"scripts": {
"build": "rollup -c",
"prepublishOnly": "npm run build",
"start": "rollup -c -w",
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
},
"peerDependencies": {
"dcmjs": "^0.3.3",
"ohif-core": "^0.2.6",
"prop-types": "^15.6.2",
"react": "^15.0.0 || ^16.0.0",
"react-dom": "^15.0.0 || ^16.0.0"
},
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/plugin-external-helpers": "^7.2.0",
"@babel/plugin-proposal-class-properties": "^7.2.3",
"@babel/plugin-transform-runtime": "^7.2.0",
"@babel/preset-env": "^7.2.3",
"@babel/preset-react": "^7.0.0",
"@svgr/rollup": "^4.1.0",
"babel-eslint": "^9.0.0",
"cross-env": "^5.2.0",
"eslint": "5.6.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-react": "^7.11.1",
"gh-pages": "^2.0.1",
"husky": "^1.3.1",
"lint-staged": "^8.1.0",
"lodash.clonedeep": "^4.5.0",
"prettier": "^1.15.3",
"react": "^16.6.3",
"react-dom": "^16.6.3",
"react-scripts": "^2.1.2",
"rollup": "^0.68.2",
"rollup-plugin-babel": "^4.2.0",
"rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-resolve": "^4.0.0",
"rollup-plugin-peer-deps-external": "^2.2.0",
"rollup-plugin-postcss": "^1.6.3",
"rollup-plugin-url": "^2.1.0",
"stylelint": "^9.9.0",
"stylelint-config-recommended": "^2.1.0",
"stylus": "^0.54.5"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,jsx,json,css}": [
"prettier --single-quote --write",
"git add"
]
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"files": [
"dist"
],
"dependencies": {
"@babel/runtime": "^7.2.0"
}
}

View File

@ -0,0 +1,55 @@
import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
import external from 'rollup-plugin-peer-deps-external'
import postcss from 'rollup-plugin-postcss'
import resolve from 'rollup-plugin-node-resolve'
import url from 'rollup-plugin-url'
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';
const globals = {
'react': 'React',
'react-dom': 'ReactDOM',
'prop-types': 'PropTypes',
'ohif-core': 'OHIF',
'dcmjs': 'dcmjs'
};
export default {
input: 'src/index.js',
output: [
{
file: pkg.main,
format: 'umd',
name: 'ohif-dicom-pdf-extension',
sourcemap: true,
globals
},
{
file: pkg.module,
format: 'es',
sourcemap: true,
globals
}
],
plugins: [
builtins(),
external(),
postcss({
modules: false
}),
url(),
svgr(),
babel({
exclude: 'node_modules/**',
plugins: [ '@babel/external-helpers' ],
externalHelpers: true,
runtimeHelpers: true
}),
resolve(),
commonjs()
],
external: Object.keys(pkg.peerDependencies || {}),
}

View File

@ -0,0 +1,11 @@
:root {
--text-color-primary: white;
}
.DicomHtmlViewport {
padding: 20px;
overflow-y: scroll;
width: 100%;
height: 100%;
color: var(--text-color-primary);
}

View File

@ -0,0 +1,242 @@
import React, { Component } from 'react';
import * as dcmjs from 'dcmjs';
import TypedArrayProp from './TypedArrayProp';
import './DicomHtmlViewport.css';
function getRelationshipString(data) {
switch (data.RelationshipType) {
case 'HAS CONCEPT MOD':
return 'Concept modifier: ';
case 'HAS OBS CONTEXT':
return 'Observation context: ';
default:
return '';
}
}
const getMeaningString = data => {
if (data.ConceptNameCodeSequence) {
const { CodeMeaning } = data.ConceptNameCodeSequence;
return `${CodeMeaning} = `;
}
return '';
};
function getValueString(data) {
switch (data.ValueType) {
case 'CODE':
const {
CodeMeaning,
CodeValue,
CodingSchemeDesignator
} = data.ConceptNameCodeSequence;
return `${CodeMeaning} (${CodeValue}, ${CodingSchemeDesignator})`;
case 'PNAME':
return data.PersonName;
case 'TEXT':
return data.TextValue;
case 'UIDREF':
return data.UID;
case 'NUM':
const { MeasuredValueSequence } = data;
const numValue = MeasuredValueSequence.NumericValue;
const codeValue =
MeasuredValueSequence.MeasurementUnitsCodeSequence.CodeValue;
return `${numValue} ${codeValue}`;
}
}
function constructPlainValue(data) {
const value = getValueString(data);
if (value) {
return getRelationshipString(data) + getMeaningString(data) + value;
}
}
function constructContentSequence(data, header) {
if (!data.ContentSequence) {
return;
}
const items = data.ContentSequence.map(item => parseContent(item)).filter(
item => item
);
if (!items.length) {
return;
}
const result = {
items
};
if (header) {
result.header = header;
}
return result;
}
function parseContent(data) {
if (data.ValueType) {
if (data.ValueType === 'CONTAINER') {
const header = data.ConceptNameCodeSequence.CodeMeaning;
return constructContentSequence(data, header);
}
return constructPlainValue(data);
}
if (data.ContentSequence) {
return constructContentSequence(data);
}
}
const { DicomMetaDictionary, DicomMessage } = dcmjs.data;
function getMainData(data) {
const root = [];
const patientValue = `${data.PatientName} (${data.PatientSex}, #${
data.PatientID
})`;
root.push(getMainDataItem('Patient', patientValue));
const studyValue = data.StudyDescription;
root.push(getMainDataItem('Study', studyValue));
const seriesValue = `${data.SeriesDescription} (#${data.SeriesNumber})`;
root.push(getMainDataItem('Series', seriesValue));
const manufacturerValue = `${data.Manufacturer} (${
data.ManufacturerModelName
}, #${data.DeviceSerialNumber})`;
root.push(getMainDataItem('Manufacturer', manufacturerValue));
const mainDataObjects = {
CompletionFlag: 'Completion flag',
VerificationFlag: 'Verification flag'
};
Object.keys(mainDataObjects).forEach(key => {
if (!data[key]) {
return;
}
const item = getMainDataItem(mainDataObjects[key], data[key]);
root.push(item);
});
// TODO: Format these dates
const contentDateTimeValue = `${data.ContentDate} ${data.ContentTime}`;
root.push(getMainDataItem('Content Date/Time', contentDateTimeValue));
root.push();
return <div>{root}</div>;
}
const getContentSequence = (data, level = 1) => {
let header;
if (data.ConceptNameCodeSequence) {
const {
CodeMeaning,
CodeValue,
CodingSchemeDesignator
} = data.ConceptNameCodeSequence;
header = `${CodeMeaning} (${CodeValue} - ${CodingSchemeDesignator})`;
}
const root = [];
if (header) {
const HeaderDynamicLevel = `h${level}`;
root.push(<HeaderDynamicLevel key={header}>{header}</HeaderDynamicLevel>);
}
Object.keys(data).forEach(key => {
const value = data[key];
let content;
if (value instanceof Object) {
content = getContentSequence(value, level + 1);
} else {
content = (
<div key={key}>
{key} - {data[key]}
</div>
);
}
root.push(content);
});
return <div>{root}</div>;
};
function getMainDataItem(key, value) {
return (
<div key={key}>
<b>{key}</b>: {value}
</div>
);
}
class DicomHtmlViewport extends Component {
state = {
content: null,
error: null
};
static propTypes = {
byteArray: TypedArrayProp.uint8
};
componentDidMount() {
const dataSet = this.setContentFromByteArray(this.props.byteArray);
}
setContentFromByteArray(byteArray) {
const arrayBuffer = byteArray.buffer;
const dicomData = DicomMessage.readFile(arrayBuffer);
const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);
dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);
const mainData = getMainData(dataset);
const contentSequence = getContentSequence(dataset);
const content = (
<>
{mainData}
{contentSequence}
</>
);
this.setState({
content
});
}
render() {
return (
<div className={'DicomHtmlViewport'}>
{this.state.content}
{this.state.error && <h2>{JSON.stringify(this.state.error)}</h2>}
</div>
);
}
}
export default DicomHtmlViewport;

View File

@ -0,0 +1,27 @@
import OHIFDicomHtmlViewport from './OHIFDicomHtmlViewport.js';
import OHIFDicomHtmlSopClassHandler from './OHIFDicomHtmlSopClassHandler.js';
export default class OHIFDicomHtmlExtension {
/**
* Extension ID is a unique id, might be used for namespacing extension specific redux actions/reducers (?)
*/
getExtensionId() {
return 'html';
}
getViewportModule() {
return OHIFDicomHtmlViewport;
}
getSopClassHandler() {
return OHIFDicomHtmlSopClassHandler;
}
getPanelModuleDefinition() {
return null;
}
getToolbarModuleDefinition() {
return null;
}
}

View File

@ -0,0 +1,41 @@
import OHIF from 'ohif-core';
const { plugins, utils } = OHIF;
const { PLUGIN_TYPES } = plugins;
// TODO: Should probably use dcmjs for this
const SOP_CLASS_UIDS = {
BASIC_TEXT_SR: '1.2.840.10008.5.1.4.1.1.88.11',
ENHANCED_SR: '1.2.840.10008.5.1.4.1.1.88.22',
COMPREHENSIVE_SR: '1.2.840.10008.5.1.4.1.1.88.33',
PROCEDURE_LOG_STORAGE: '1.2.840.10008.5.1.4.1.1.88.40',
MAMMOGRAPHY_CAD_SR: '1.2.840.10008.5.1.4.1.1.88.50',
CHEST_CAD_SR: '1.2.840.10008.5.1.4.1.1.88.65',
X_RAY_RADIATION_DOSE_SR: '1.2.840.10008.5.1.4.1.1.88.67'
};
const sopClassUids = Object.values(SOP_CLASS_UIDS);
// TODO: Handle the case where there is more than one SOP Class Handler for the
// same SOP Class
const OHIFDicomHtmlSopClassHandler = {
id: 'OHIFDicomHtmlSopClassHandler',
type: PLUGIN_TYPES.SOP_CLASS_HANDLER,
sopClassUids,
getDisplaySetFromSeries(series, study, dicomWebClient, authorizationHeaders) {
const instance = series.getFirstInstance();
return {
plugin: 'html',
displaySetInstanceUid: utils.guid(),
wadoRoot: study.getData().wadoRoot,
wadoUri: instance.getData().wadouri,
sopInstanceUid: instance.getSOPInstanceUID(),
seriesInstanceUid: series.getSeriesInstanceUID(),
studyInstanceUid: study.getStudyInstanceUID(),
authorizationHeaders
};
}
};
export default OHIFDicomHtmlSopClassHandler;

View File

@ -0,0 +1,84 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import DicomHtmlViewport from './DicomHtmlViewport';
class OHIFDicomHtmlViewport extends Component {
static propTypes = {
studies: PropTypes.object,
displaySet: PropTypes.object,
viewportIndex: PropTypes.number
};
state = {
byteArray: null,
error: null
};
componentDidMount() {
const { displaySet } = this.props.viewportData;
const {
studyInstanceUid,
seriesInstanceUid,
sopInstanceUid,
wadoRoot,
wadoUri,
authorizationHeaders
} = displaySet;
this.retrieveDicomData(
studyInstanceUid,
seriesInstanceUid,
sopInstanceUid,
wadoRoot,
wadoUri,
authorizationHeaders
).then(
byteArray => {
this.setState({
byteArray
});
},
error => {
this.setState({
error
});
throw new Error(error);
}
);
}
retrieveDicomData(
studyInstanceUid,
seriesInstanceUid,
sopInstanceUid,
wadoRoot,
wadoUri,
authorizationHeaders
) {
// TODO: Passing in a lot of data we aren't using
// 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: authorizationHeaders
})
.then(response => response.arrayBuffer())
.then(arraybuffer => {
return new Uint8Array(arraybuffer);
});
}
render() {
return (
<>
{this.state.byteArray && (
<DicomHtmlViewport byteArray={this.state.byteArray} />
)}
{this.state.error && <h2>{JSON.stringify(this.state.error)}</h2>}
</>
);
}
}
export default OHIFDicomHtmlViewport;

View File

@ -0,0 +1,205 @@
// https://github.com/facebook/prop-types/issues/69
export const TypedArrayProp = {
any: (props, propName, componentName) => {
let obj = props[propName];
if (
!(
obj instanceof Float64Array ||
obj instanceof Float32Array ||
obj instanceof Int32Array ||
obj instanceof Int16Array ||
obj instanceof Int8Array ||
obj instanceof Uint32Array ||
obj instanceof Uint16Array ||
obj instanceof Uint8Array ||
obj instanceof Uint8ClampedArray
)
) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a typed array.'
);
}
},
float64: (props, propName, componentName) => {
if (!(props[propName] instanceof Float64Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Float64Array.'
);
}
},
float32: (props, propName, componentName) => {
if (!(props[propName] instanceof Float32Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Float32Array.'
);
}
},
float: (props, propName, componentName) => {
if (
!(
props[propName] instanceof Float64Array ||
props[propName] instanceof Float32Array
)
) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Float32Array or Float64Array.'
);
}
},
int32: (props, propName, componentName) => {
if (!(props[propName] instanceof Int32Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected an Int32Array.'
);
}
},
int16: (props, propName, componentName) => {
if (!(props[propName] instanceof Int16Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected an In16Array.'
);
}
},
int8: (props, propName, componentName) => {
if (!(props[propName] instanceof Int8Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected an Int8Array.'
);
}
},
int: (props, propName, componentName) => {
if (
!(
props[propName] instanceof Int32Array ||
props[propName] instanceof Int16Array ||
props[propName] instanceof Int8Array
)
) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected an Int32Array, In16Array, or Int8Array.'
);
}
},
uint32: (props, propName, componentName) => {
if (!(props[propName] instanceof Uint32Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Uint32Array.'
);
}
},
uint16: (props, propName, componentName) => {
if (!(props[propName] instanceof Uint16Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Uint16Array.'
);
}
},
uint8: (props, propName, componentName) => {
if (!(props[propName] instanceof Uint8Array)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Uint8Array.'
);
}
},
uint8clamped: (props, propName, componentName) => {
if (!(props[propName] instanceof Uint8ClampedArray)) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Uint8ClampedArray.'
);
}
},
uint: (props, propName, componentName) => {
if (
!(
props[propName] instanceof Uint32Array ||
props[propName] instanceof Uint16Array ||
props[propName] instanceof Uint8Array ||
props[propName] instanceof Uint8ClampedArray
)
) {
return new Error(
'Invalid prop `' +
propName +
'` supplied to' +
' `' +
componentName +
'`. Expected a Uint32Array, Uint16Array, Uint8Array, or Uint8ClampedArray.'
);
}
}
};
export { TypedArrayProp as default };

View File

@ -0,0 +1,3 @@
import OHIFDicomHtmlExtension from './OHIFDicomHtmlExtension.js';
export default OHIFDicomHtmlExtension;

View File

@ -0,0 +1,4 @@
{
"version": "v1",
"packages": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -14,6 +14,7 @@
}, },
"scripts": { "scripts": {
"build": "rollup -c", "build": "rollup -c",
"prepublishOnly": "npm run build",
"start": "rollup -c -w", "start": "rollup -c -w",
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}" "lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
}, },

View File

@ -14,7 +14,7 @@
}, },
"scripts": { "scripts": {
"build": "rollup -c", "build": "rollup -c",
"prepublishOnly": "npm build", "prepublishOnly": "npm run build",
"start": "rollup -c -w", "start": "rollup -c -w",
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}" "lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}"
}, },

View File

@ -15,7 +15,6 @@ const OHIFDicomPDFSopClassHandler = {
SOP_CLASS_UIDS.ENCAPSULATED_PDF SOP_CLASS_UIDS.ENCAPSULATED_PDF
], ],
getDisplaySetFromSeries(series, study, dicomWebClient, authorizationHeaders) { getDisplaySetFromSeries(series, study, dicomWebClient, authorizationHeaders) {
debugger;
const instance = series.getFirstInstance(); const instance = series.getFirstInstance();
return { return {

@ -1 +1 @@
Subproject commit 847511a526739d20b9178878989ae8593800e031 Subproject commit 7e91734ef10616b93831cc5f166d5695cd92b0f0

View File

@ -20,8 +20,7 @@
<!-- WEB FONTS --> <!-- WEB FONTS -->
<link href="https://fonts.googleapis.com/css?family=Sanchez" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Sanchez" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
crossorigin="anonymous">
<title>OHIF Standalone Viewer</title> <title>OHIF Standalone Viewer</title>
<base href="http://localhost:5000/"> <base href="http://localhost:5000/">

View File

@ -1,6 +1,6 @@
{ {
"name": "ohif-viewer", "name": "ohif-viewer",
"version": "0.0.6", "version": "0.0.15",
"description": "OHIF Viewer", "description": "OHIF Viewer",
"author": "OHIF Contributors", "author": "OHIF Contributors",
"license": "MIT", "license": "MIT",
@ -16,6 +16,7 @@
}, },
"scripts": { "scripts": {
"build": "rollup -c", "build": "rollup -c",
"prepublishOnly": "npm run build",
"lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}", "lint": "eslint -c .eslintrc --fix src && prettier --single-quote --write src/**/*.{js,jsx,json,css}",
"prepare": "npm run build", "prepare": "npm run build",
"predeploy": "cd example && npm install && npm run build", "predeploy": "cd example && npm install && npm run build",
@ -45,7 +46,7 @@
"@svgr/rollup": "^4.1.0", "@svgr/rollup": "^4.1.0",
"babel-eslint": "^9.0.0", "babel-eslint": "^9.0.0",
"cross-env": "^5.2.0", "cross-env": "^5.2.0",
"eslint": "5.6.0", "eslint": "5.12.0",
"eslint-plugin-import": "^2.14.0", "eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0", "eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1", "eslint-plugin-promise": "^4.0.1",
@ -57,15 +58,15 @@
"prettier": "^1.15.3", "prettier": "^1.15.3",
"react": "^16.7.0", "react": "^16.7.0",
"react-dom": "^16.7.0", "react-dom": "^16.7.0",
"react-scripts": "^2.1.2", "react-scripts": "^2.1.5",
"rollup": "^0.68.2", "rollup": "^1.1.2",
"rollup-plugin-babel": "^4.2.0", "rollup-plugin-babel": "^4.2.0",
"rollup-plugin-commonjs": "^9.2.0", "rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-json": "^3.1.0", "rollup-plugin-json": "^3.1.0",
"rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-resolve": "^4.0.0", "rollup-plugin-node-resolve": "^4.0.0",
"rollup-plugin-peer-deps-external": "^2.2.0", "rollup-plugin-peer-deps-external": "^2.2.0",
"rollup-plugin-postcss": "^1.6.3", "rollup-plugin-postcss": "^2.0.3",
"rollup-plugin-url": "^2.1.0", "rollup-plugin-url": "^2.1.0",
"stylelint": "^9.9.0", "stylelint": "^9.9.0",
"stylelint-config-recommended": "^2.1.0", "stylelint-config-recommended": "^2.1.0",
@ -97,26 +98,29 @@
"classnames": "^2.2.6", "classnames": "^2.2.6",
"cornerstone-core": "^2.2.8", "cornerstone-core": "^2.2.8",
"cornerstone-math": "^0.1.8", "cornerstone-math": "^0.1.8",
"cornerstone-tools": "^3.1.0",
"cornerstone-wado-image-loader": "^2.2.3", "cornerstone-wado-image-loader": "^2.2.3",
"dcmjs": "^0.3.2", "dcmjs": "^0.3.3",
"dicom-parser": "^1.8.3", "dicom-parser": "^1.8.3",
"dicomweb-client": "^0.4.2", "dicomweb-client": "^0.4.2",
"hammerjs": "^2.0.8", "hammerjs": "^2.0.8",
"lodash.isequal": "^4.5.0", "lodash.isequal": "^4.5.0",
"ohif-core": "^0.2.7", "moment": "^2.24.0",
"ohif-cornerstone-extension": "^0.0.4", "ohif-core": "0.3.0",
"ohif-cornerstone-extension": "0.0.16",
"ohif-dicom-html-extension": "^0.0.2",
"ohif-dicom-microscopy-extension": "^0.0.5", "ohif-dicom-microscopy-extension": "^0.0.5",
"ohif-dicom-pdf-extension": "^0.0.5", "ohif-dicom-pdf-extension": "^0.0.5",
"oidc-client": "^1.6.1", "oidc-client": "^1.6.1",
"prop-types": "^15.6.2", "prop-types": "^15.6.2",
"react-bootstrap-modal": "^4.2.0", "react-bootstrap-modal": "^4.2.0",
"react-cornerstone-viewport": "^0.1.9",
"react-dnd": "^7.0.2", "react-dnd": "^7.0.2",
"react-dnd-html5-backend": "^7.0.2", "react-dnd-html5-backend": "^7.0.2",
"react-redux": "^6.0.0", "react-redux": "^6.0.0",
"react-resize-detector": "^3.4.0",
"react-router": "^4.3.1", "react-router": "^4.3.1",
"react-router-dom": "^4.3.1", "react-router-dom": "^4.3.1",
"react-viewerbase": "^0.2.4", "react-viewerbase": "^0.2.7",
"redux": "^4.0.1", "redux": "^4.0.1",
"redux-oidc": "^3.1.0" "redux-oidc": "^3.1.0"
} }

View File

@ -1,18 +0,0 @@
html,
body,
#root {
background-color: black;
height: 100%;
width: 100%;
margin: 0;
}
body {
box-sizing: border-box;
margin: 0;
padding: 0;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-family: Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light,
Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;
}

View File

@ -10,6 +10,7 @@ import OHIFStandaloneViewer from './OHIFStandaloneViewer';
import WhiteLabellingContext from './WhiteLabellingContext'; import WhiteLabellingContext from './WhiteLabellingContext';
import OHIFCornerstoneExtension from 'ohif-cornerstone-extension'; import OHIFCornerstoneExtension from 'ohif-cornerstone-extension';
import OHIFDicomPDFExtension from 'ohif-dicom-pdf-extension'; import OHIFDicomPDFExtension from 'ohif-dicom-pdf-extension';
import OHIFDicomHtmlExtension from 'ohif-dicom-html-extension';
import OHIFDicomMicroscopyExtension from 'ohif-dicom-microscopy-extension'; import OHIFDicomMicroscopyExtension from 'ohif-dicom-microscopy-extension';
import { import {
loadUser, loadUser,
@ -17,17 +18,17 @@ import {
createUserManager, createUserManager,
reducer as oidcReducer reducer as oidcReducer
} from 'redux-oidc'; } from 'redux-oidc';
import timepointManager from './redux/timepointManager';
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';
const { ExtensionManager } = OHIF.extensions; const { ExtensionManager } = OHIF.extensions;
//import Icons from "./images/icons.svg" const Icons = 'icons.svg';
const Icons = '/icons.svg';
const { reducers, localStorage } = OHIF.redux; const { reducers, localStorage } = OHIF.redux;
reducers.ui = ui; reducers.ui = ui;
reducers.oidc = oidcReducer; reducers.oidc = oidcReducer;
reducers.timepointManager = timepointManager;
const combined = combineReducers(reducers); const combined = combineReducers(reducers);
const store = createStore(combined, localStorage.loadState()); const store = createStore(combined, localStorage.loadState());
@ -102,6 +103,13 @@ const defaultButtons = [
iconClasses: 'fa fa-circle', iconClasses: 'fa fa-circle',
active: false active: false
}, },
{
command: 'FreehandMouse',
type: 'tool',
text: 'Freehand',
iconClasses: 'fa fa-star',
active: false
},
{ {
command: 'reset', command: 'reset',
type: 'command', type: 'command',
@ -115,10 +123,33 @@ const buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);
store.dispatch(buttonsAction); store.dispatch(buttonsAction);
const availableTools = [
{ name: 'Pan', mouseButtonMasks: [1, 4] },
{ name: 'Zoom', mouseButtonMasks: [1, 2] },
{ name: 'Wwwc', mouseButtonMasks: [1] },
{ name: 'Bidirectional', mouseButtonMasks: [1] },
{ name: 'Length', mouseButtonMasks: [1] },
{ name: 'Angle', mouseButtonMasks: [1] },
{ name: 'StackScroll', mouseButtonMasks: [1] },
{ name: 'Brush', mouseButtonMasks: [1] },
{ name: 'FreehandMouse', mouseButtonMasks: [1] },
{ name: 'PanMultiTouch' },
{ name: 'ZoomTouchPinch' },
{ name: 'StackScrollMouseWheel' },
{ name: 'StackScrollMultiTouch' }
];
const toolAction = OHIF.redux.actions.setExtensionData('cornerstone', {
availableTools
});
store.dispatch(toolAction);
/** TODO: extensions should be passed in as prop as soon as we have the extensions as separate packages and then registered by ExtensionsManager */ /** TODO: extensions should be passed in as prop as soon as we have the extensions as separate packages and then registered by ExtensionsManager */
let extensions = [ const extensions = [
new OHIFCornerstoneExtension(), new OHIFCornerstoneExtension(),
new OHIFDicomPDFExtension(), new OHIFDicomPDFExtension(),
new OHIFDicomHtmlExtension(),
new OHIFDicomMicroscopyExtension() new OHIFDicomMicroscopyExtension()
]; ];
ExtensionManager.registerExtensions(store, extensions); ExtensionManager.registerExtensions(store, extensions);

View File

@ -5,9 +5,6 @@ import { Dropdown } from 'react-viewerbase';
import './Header.css'; import './Header.css';
import OHIFLogo from '../OHIFLogo/OHIFLogo.js'; import OHIFLogo from '../OHIFLogo/OHIFLogo.js';
import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js'; import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js';
//import Icons from "../../images/icons.svg";
//const Icons = '/icons.svg';
class Header extends Component { class Header extends Component {
static propTypes = { static propTypes = {

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import './OHIFLogo.css'; import './OHIFLogo.css';
const Icons = '/icons.svg'; const Icons = 'icons.svg';
function OHIFLogo() { function OHIFLogo() {
return ( return (

View File

@ -1,7 +1,6 @@
import dicomParser from 'dicom-parser'; import dicomParser from 'dicom-parser';
import cornerstone from 'cornerstone-core'; import cornerstone from 'cornerstone-core';
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';
import cornerstoneMath from 'cornerstone-math';
import OHIF from 'ohif-core'; import OHIF from 'ohif-core';
import sha from './sha.js'; import sha from './sha.js';
import version from './version.js'; import version from './version.js';
@ -20,10 +19,6 @@ window.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;
cornerstoneWADOImageLoader.external.cornerstone = cornerstone; cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
cornerstoneWADOImageLoader.external.dicomParser = dicomParser; cornerstoneWADOImageLoader.external.dicomParser = dicomParser;
OHIF.external.cornerstone = cornerstone;
OHIF.external.cornerstoneMath = cornerstoneMath;
OHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;
OHIF.user.getAccessToken = () => { OHIF.user.getAccessToken = () => {
// TODO: Get the Redux store from somewhere else // TODO: Get the Redux store from somewhere else
const state = window.store.getState(); const state = window.store.getState();

View File

@ -0,0 +1,61 @@
import { connect } from 'react-redux';
import { MeasurementTable } from 'react-viewerbase';
import moment from 'moment';
function convertTimepointsToTableData(timepoints) {
if (!timepoints || !timepoints.length) {
return [];
}
return [
{
label: 'Study date:',
date: moment(timepoints[0].latestDate).format('DD-MMM-YY')
}
];
}
function convertMeasurementsToTableData(measurements) {
const tableData = [
{
groupName: 'Measurements',
measurements: [],
measurements1: measurements
}
];
if (measurements && measurements.allTools) {
measurements.allTools.forEach(measurement => {
const tableMeasurement = {
label: '...',
hasWarnings: false,
warningTitle: '',
isSplitLesion: false,
warningList: [],
data: [
{
displayText: '...'
}
]
};
tableData[0].measurements.push(tableMeasurement);
});
}
return tableData;
}
const mapStateToProps = state => {
const { timepoints, measurements } = state.timepointManager;
return {
timepoints: convertTimepointsToTableData(timepoints),
measurementCollection: convertMeasurementsToTableData(measurements)
};
};
const ConnectedMeasurementTable = connect(
mapStateToProps,
null
)(MeasurementTable);
export default ConnectedMeasurementTable;

View File

@ -0,0 +1,21 @@
import { connect } from 'react-redux';
import Viewer from './Viewer.js';
import actions from '../redux/actions.js';
const mapDispatchToProps = dispatch => {
return {
onTimepointsUpdated: timepoints => {
dispatch(actions.setTimepoints(timepoints));
},
onMeasurementsUpdated: measurements => {
dispatch(actions.setMeasurements(measurements));
}
};
};
const ConnectedViewer = connect(
null,
mapDispatchToProps
)(Viewer);
export default ConnectedViewer;

View File

@ -5,6 +5,7 @@
align-items: stretch; align-items: stretch;
height: calc(100% - var(--toolbar-height)); height: calc(100% - var(--toolbar-height));
width: 100%; width: 100%;
overflow: hidden;
} }
.sidebar-menu { .sidebar-menu {
@ -19,11 +20,11 @@
flex: 1; flex: 1;
margin-left: calc(var(--left-sidebar-menu-width) * -1); margin-left: calc(var(--left-sidebar-menu-width) * -1);
max-width: var(--left-sidebar-menu-width); max-width: var(--left-sidebar-menu-width);
order: 1 order: 1;
} }
.sidebar-left.sidebar-open { .sidebar-left.sidebar-open {
margin-left: 0 margin-left: 0;
} }
.main-content { .main-content {

View File

@ -2,13 +2,14 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ConnectedStudyBrowser from './ConnectedStudyBrowser.js'; import ConnectedStudyBrowser from './ConnectedStudyBrowser.js';
import ViewerMain from './ViewerMain.js'; import ViewerMain from './ViewerMain.js';
import ConnectedMeasurementTable from './ConnectedMeasurementTable';
import './FlexboxLayout.css'; import './FlexboxLayout.css';
class FlexboxLayout extends Component { class FlexboxLayout extends Component {
static propTypes = { static propTypes = {
studies: PropTypes.array.isRequired, studies: PropTypes.array.isRequired,
leftSidebarOpen: PropTypes.bool.isRequired, leftSidebarOpen: PropTypes.bool.isRequired,
rightSidebarOpen: PropTypes.bool.isRequired, rightSidebarOpen: PropTypes.bool.isRequired
}; };
state = { state = {
@ -30,12 +31,17 @@ class FlexboxLayout extends Component {
// - Add sorting of display sets // - Add sorting of display sets
// - Add useMiddleSeriesInstanceAsThumbnail // - Add useMiddleSeriesInstanceAsThumbnail
// - Add showStackLoadingProgressBar option // - Add showStackLoadingProgressBar option
return studies.map((study) => { return studies.map(study => {
const { studyInstanceUid } = study; const { studyInstanceUid } = study;
const thumbnails = study.displaySets.map((displaySet) => { const thumbnails = study.displaySets.map(displaySet => {
const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet; const {
displaySetInstanceUid,
seriesDescription,
seriesNumber,
instanceNumber,
numImageFrames
} = displaySet;
let imageId; let imageId;
@ -49,7 +55,7 @@ class FlexboxLayout extends Component {
seriesDescription, seriesDescription,
seriesNumber, seriesNumber,
instanceNumber, instanceNumber,
numImageFrames, numImageFrames
}; };
}); });
@ -58,10 +64,10 @@ class FlexboxLayout extends Component {
thumbnails thumbnails
}; };
}); });
} };
render() { render() {
let mainContentClassName = "main-content" let mainContentClassName = 'main-content';
if (this.props.leftSidebarOpen) { if (this.props.leftSidebarOpen) {
mainContentClassName += ' sidebar-left-open'; mainContentClassName += ' sidebar-left-open';
} }
@ -70,18 +76,30 @@ class FlexboxLayout extends Component {
mainContentClassName += ' sidebar-right-open'; mainContentClassName += ' sidebar-right-open';
} }
// TODO[react]: Add measurementLightTable // TODO[react]: Make ConnectedMeasurementTable extension with state.timepointManager
return ( return (
<div className="FlexboxLayout"> <div className="FlexboxLayout">
<div className={this.props.leftSidebarOpen ? "sidebar-menu sidebar-left sidebar-open" : "sidebar-menu sidebar-left"}> <div
className={
this.props.leftSidebarOpen
? 'sidebar-menu sidebar-left sidebar-open'
: 'sidebar-menu sidebar-left'
}
>
<ConnectedStudyBrowser studies={this.state.studiesForBrowser} /> <ConnectedStudyBrowser studies={this.state.studiesForBrowser} />
</div> </div>
<div className={mainContentClassName}> <div className={mainContentClassName}>
<ViewerMain studies={this.props.studies} /> <ViewerMain studies={this.props.studies} />
</div> </div>
{/* <div className={this.props.rightSidebarOpen ? "sidebar-menu sidebar-right sidebar-open" : "sidebar-menu sidebar-right"}> <div
{{> measurementLightTable (clone this)}} className={
</div> */} this.props.rightSidebarOpen
? 'sidebar-menu sidebar-right sidebar-open'
: 'sidebar-menu sidebar-right'
}
>
<ConnectedMeasurementTable />
</div>
</div> </div>
); );
} }

View File

@ -1,13 +1,12 @@
import React, { Component } from "react"; import React, { Component } from 'react';
import ConnectedToolbarSection from './ConnectedToolbarSection'; import ConnectedToolbarSection from './ConnectedToolbarSection';
import ConnectedLayoutButton from './ConnectedLayoutButton'; import ConnectedLayoutButton from './ConnectedLayoutButton';
import ConnectedCineDialog from './ConnectedCineDialog.js'; import ConnectedCineDialog from './ConnectedCineDialog.js';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { ToolbarButton, RoundedButtonGroup } from 'react-viewerbase'; import { ToolbarButton, RoundedButtonGroup } from 'react-viewerbase';
import './ToolbarRow.css'; import './ToolbarRow.css';
//import Icons from "../images/icons.svg"
const Icons = '/icons.svg'; const Icons = 'icons.svg';
class ToolbarRow extends Component { class ToolbarRow extends Component {
state = { state = {
@ -26,34 +25,61 @@ class ToolbarRow extends Component {
rightSidebarOpen: false rightSidebarOpen: false
}; };
onLeftSidebarValueChanged = (value) => { onLeftSidebarValueChanged = value => {
this.props.setLeftSidebarOpen(!!value); this.props.setLeftSidebarOpen(!!value);
} };
onRightSidebarValueChanged = value => {
this.props.setRightSidebarOpen(!!value);
};
onClickCineToolbarButton = () => { onClickCineToolbarButton = () => {
this.setState({ this.setState({
cineDialogOpen: !this.state.cineDialogOpen cineDialogOpen: !this.state.cineDialogOpen
}); });
} };
render() { render() {
const leftSidebarToggle = [{ const leftSidebarToggle = [
{
value: 'studies', value: 'studies',
svgLink: `${Icons}#icon-studies`, svgLink: `${Icons}#icon-studies`,
svgWidth: 15, svgWidth: 15,
svgHeight: 13, svgHeight: 13,
bottomLabel: 'Series', bottomLabel: 'Series'
}]; }
];
const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null; const rightSidebarToggle = [
{
value: 'measurements',
svgLink: `${Icons}#icon-measurements-lesions`,
svgWidth: 15,
svgHeight: 13,
bottomLabel: 'Measurements'
}
];
const leftSidebarValue = this.props.leftSidebarOpen
? leftSidebarToggle[0].value
: null;
const rightSidebarValue = this.props.rightSidebarOpen
? rightSidebarToggle[0].value
: null;
const cineDialogContainerStyle = { const cineDialogContainerStyle = {
display: this.state.cineDialogOpen ? 'inline-block' : 'none' display: this.state.cineDialogOpen ? 'inline-block' : 'none'
} };
return (<div className="ToolbarRow"> return (
<div className="ToolbarRow">
<div className="pull-left m-t-1 p-y-1" style={{ padding: '10px' }}> <div className="pull-left m-t-1 p-y-1" style={{ padding: '10px' }}>
<RoundedButtonGroup options={leftSidebarToggle} value={leftSidebarValue} onValueChanged={this.onLeftSidebarValueChanged}/> <RoundedButtonGroup
options={leftSidebarToggle}
value={leftSidebarValue}
onValueChanged={this.onLeftSidebarValueChanged}
/>
</div> </div>
<ConnectedToolbarSection /> <ConnectedToolbarSection />
<ConnectedLayoutButton /> <ConnectedLayoutButton />
@ -63,11 +89,15 @@ class ToolbarRow extends Component {
text={'CINE'} text={'CINE'}
iconClasses={'fa fa-youtube'} iconClasses={'fa fa-youtube'}
/> />
<div className='CineDialogContainer' style={cineDialogContainerStyle}> <div className="CineDialogContainer" style={cineDialogContainerStyle}>
<ConnectedCineDialog /> <ConnectedCineDialog />
</div> </div>
<div className="pull-right m-t-1 rm-x-1"> <div className="pull-right m-t-1 rm-x-1" style={{ marginLeft: 'auto' }}>
{/* > roundedButtonGroup rightSidebarToggleButtonData */} <RoundedButtonGroup
options={rightSidebarToggle}
value={rightSidebarValue}
onValueChanged={this.onRightSidebarValueChanged}
/>
</div> </div>
</div> </div>
); );

View File

@ -3,12 +3,13 @@ import PropTypes from 'prop-types';
//import OHIF from 'ohif-core'; //import OHIF from 'ohif-core';
//import { CineDialog } from 'react-viewerbase'; //import { CineDialog } from 'react-viewerbase';
import OHIF from 'ohif-core';
import moment from 'moment';
import WhiteLabellingContext from '../WhiteLabellingContext.js'; import WhiteLabellingContext from '../WhiteLabellingContext.js';
import ConnectedHeader from './ConnectedHeader.js'; import ConnectedHeader from './ConnectedHeader.js';
import ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js'; import ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';
import ConnectedToolbarRow from './ConnectedToolbarRow.js'; import ConnectedToolbarRow from './ConnectedToolbarRow.js';
import ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js'; import measurementTools from '../measurementTools';
import StudyPrefetcher from '../components/StudyPrefetcher.js';
import './Viewer.css'; import './Viewer.css';
/** /**
* Inits OHIF Hanging Protocol's onReady. * Inits OHIF Hanging Protocol's onReady.
@ -48,9 +49,132 @@ OHIF.viewer.functionList = {
class Viewer extends Component { class Viewer extends Component {
static propTypes = { static propTypes = {
studies: PropTypes.array studies: PropTypes.array,
studyInstanceUids: PropTypes.array,
onTimepointsUpdated: PropTypes.func,
onMeasurementsUpdated: PropTypes.func
}; };
constructor(props) {
super(props);
OHIF.measurements.MeasurementApi.setConfiguration({
measurementTools,
dataExchange: {
retrieve: this.retrieveMeasurements,
store: this.storeMeasurements
}
});
OHIF.measurements.TimepointApi.setConfiguration({
dataExchange: {
retrieve: this.retrieveTimepoints,
store: this.storeTimepoints,
remove: this.removeTimepoint,
update: this.updateTimepoint,
disassociate: this.disassociateStudy
}
});
}
retrieveMeasurements = (patientId, timepointIds) => {
OHIF.log.info('retrieveMeasurements');
// TODO: Retrieve the measurements from the latest available SR
return Promise.resolve();
};
storeMeasurements = (measurementData, timepointIds) => {
OHIF.log.info('storeMeasurements');
// TODO: Store the measurements into a new SR sent to the active server
return Promise.resolve();
};
retrieveTimepoints = filter => {
OHIF.log.info('retrieveTimepoints');
// Get the earliest and latest study date
let earliestDate = new Date().toISOString();
let latestDate = new Date().toISOString();
if (this.props.studies) {
latestDate = new Date('1000-01-01').toISOString();
this.props.studies.forEach(study => {
const studyDate = moment(study.studyDate, 'YYYYMMDD').toISOString();
if (studyDate < earliestDate) {
earliestDate = studyDate;
}
if (studyDate > latestDate) {
latestDate = studyDate;
}
});
}
// Return a generic timepoint
return Promise.resolve([
{
timepointType: 'baseline',
timepointId: 'TimepointId',
studyInstanceUids: this.props.studyInstanceUids,
patientId: filter.patientId,
earliestDate,
latestDate,
isLocked: false
}
]);
};
storeTimepoints = timepointData => {
OHIF.log.info('storeTimepoints');
return Promise.resolve();
};
updateTimepoint = (timepointData, query) => {
OHIF.log.info('updateTimepoint');
return Promise.resolve();
};
removeTimepoint = timepointId => {
OHIF.log.info('removeTimepoint');
return Promise.resolve();
};
disassociateStudy = (timepointIds, studyInstanceUid) => {
OHIF.log.info('disassociateStudy');
return Promise.resolve();
};
onTimepointsUpdated = timepoints => {
if (this.props.onTimepointsUpdated) {
this.props.onTimepointsUpdated(timepoints);
}
};
onMeasurementsUpdated = measurements => {
if (this.props.onMeasurementsUpdated) {
this.props.onMeasurementsUpdated(measurements);
}
};
componentDidMount() {
const { studies } = this.props;
const { TimepointApi, MeasurementApi } = OHIF.measurements;
const currentTimepointId = 'TimepointId';
const timepointApi = new TimepointApi(currentTimepointId, {
onTimepointsUpdated: this.onTimepointsUpdated
});
const measurementApi = new MeasurementApi(timepointApi, {
onMeasurementsUpdated: this.onMeasurementsUpdated
});
const patientId = studies[0] && studies[0].patientId;
timepointApi.retrieveTimepoints({ patientId });
// TODO: Retrieve measurements and sync them with tool data
measurementApi.retrieveMeasurements(patientId, [currentTimepointId]);
//measurementApi.syncMeasurementsAndToolData();
}
render() { render() {
return ( return (
<> <>

View File

@ -1,7 +1,7 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import OHIF from 'ohif-core'; import OHIF from 'ohif-core';
import Viewer from './Viewer.js'; import ConnectedViewer from './ConnectedViewer.js';
const { createDisplaySets } = OHIF.utils; const { createDisplaySets } = OHIF.utils;
@ -18,6 +18,8 @@ class ViewerRetrieveStudyData extends Component {
}; };
componentDidMount() { componentDidMount() {
// TODO: Avoid using timepoints here
//const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };
const { studyInstanceUids, seriesInstanceUids, server } = this.props; const { studyInstanceUids, seriesInstanceUids, server } = this.props;
const promise = OHIF.studies.retrieveStudiesMetadata( const promise = OHIF.studies.retrieveStudiesMetadata(
server, server,
@ -50,7 +52,12 @@ class ViewerRetrieveStudyData extends Component {
return <div>Loading...</div>; return <div>Loading...</div>;
} }
return <Viewer studies={this.state.studies} />; return (
<ConnectedViewer
studies={this.state.studies}
studyInstanceUids={this.props.studyInstanceUids}
/>
);
} }
} }

View File

@ -153,7 +153,7 @@ White labelling example
// Note that you can't write JSX here, so you can use the online JSX compiler: // Note that you can't write JSX here, so you can use the online JSX compiler:
// https://babeljs.io/repl/#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=GYVwdgxgLglg9mABACwKYBt1wBQEpEDeAUIogE6pQhlIA8AholPWQOaUC8ARAPoBG6emADWXchm5g4cAA6owqMoikVgiimTERBAZx0A5egFtU3NPQAmigLR8yQi2OSqzUKDIBcAei_2LMCHp0GCN6VhgwVgA6CDgjLgA-ElIU1LS02hDWRB0yCA4AcmQ3Tx8_AKCQsIjo2KMvAHcZa1iwKHkoLxAZLEsdLwAmAAYARgB2LxGRrwgyWTkLFrmZBetwMGNURYGomUiCxC8k9JOU2i96BIBuIgBfIiA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=react&prettier=false&targets=&version=6.26.0&envVersion= // https://babeljs.io/repl/#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=GYVwdgxgLglg9mABACwKYBt1wBQEpEDeAUIogE6pQhlIA8AholPWQOaUC8ARAPoBG6emADWXchm5g4cAA6owqMoikVgiimTERBAZx0A5egFtU3NPQAmigLR8yQi2OSqzUKDIBcAei_2LMCHp0GCN6VhgwVgA6CDgjLgA-ElIU1LS02hDWRB0yCA4AcmQ3Tx8_AKCQsIjo2KMvAHcZa1iwKHkoLxAZLEsdLwAmAAYARgB2LxGRrwgyWTkLFrmZBetwMGNURYGomUiCxC8k9JOU2i96BIBuIgBfIiA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=react&prettier=false&targets=&version=6.26.0&envVersion=
*/ */
function RadicalImagingLogo() { /*function RadicalImagingLogo() {
return React.createElement( return React.createElement(
'a', 'a',
{ {
@ -166,7 +166,7 @@ function RadicalImagingLogo() {
); );
} }
/*props.whiteLabelling = { props.whiteLabelling = {
logoComponent: RadicalImagingLogo() logoComponent: RadicalImagingLogo()
};*/ };*/

View File

@ -0,0 +1,15 @@
const displayFunction = data => {
return data.text || '';
};
export default {
id: 'ArrowAnnotate',
name: 'ArrowAnnotate',
toolGroup: 'allTools',
cornerstoneToolType: 'ArrowAnnotate',
options: {
measurementTable: {
displayFunction
}
}
};

View File

@ -0,0 +1,22 @@
const displayFunction = data => {
let meanValue = '';
if (data.meanStdDev && data.meanStdDev.mean) {
meanValue = data.meanStdDev.mean.toFixed(2) + ' HU';
}
return meanValue;
// let meanValue = data.meanStdDev && data.meanStdDev.mean || 0;
// return numberWithCommas(meanValue).toFixed(2) + ' HU';
//return data.meanStdDev.mean.toFixed(2);
};
export default {
id: 'EllipticalRoi',
name: 'Ellipse',
toolGroup: 'allTools',
cornerstoneToolType: 'EllipticalRoi',
options: {
measurementTable: {
displayFunction
}
}
};

View File

@ -0,0 +1,19 @@
const displayFunction = data => {
let lengthValue = '';
if (data.length) {
lengthValue = data.length.toFixed(2) + ' mm';
}
return lengthValue;
};
export default {
id: 'Length',
name: 'Length',
toolGroup: 'allTools',
cornerstoneToolType: 'Length',
options: {
measurementTable: {
displayFunction
}
}
};

View File

@ -0,0 +1,19 @@
const displayFunction = data => {
let text = '';
if (data.rAngle) {
text = data.rAngle.toFixed(2) + String.fromCharCode(parseInt('00B0', 16));
}
return text;
};
export default {
id: 'SimpleAngle',
name: 'SimpleAngle',
toolGroup: 'allTools',
cornerstoneToolType: 'SimpleAngle',
options: {
measurementTable: {
displayFunction
}
}
};

View File

@ -0,0 +1,21 @@
import Length from './Length';
import EllipticalRoi from './EllipticalRoi';
import RectangleRoi from './rectangleRoi';
import SimpleAngle from './SimpleAngle';
import ArrowAnnotate from './ArrowAnnotate';
const trackedTools = [
Length,
EllipticalRoi,
RectangleRoi,
SimpleAngle,
ArrowAnnotate
];
export default [
{
id: 'allTools',
name: 'Measurements',
childTools: trackedTools
}
];

View File

@ -0,0 +1,19 @@
const displayFunction = data => {
let meanValue = '';
if (data.meanStdDev && data.meanStdDev.mean) {
meanValue = data.meanStdDev.mean.toFixed(2) + ' HU';
}
return meanValue;
};
export default {
id: 'RectangleRoi',
name: 'Rectangle',
toolGroup: 'allTools',
cornerstoneToolType: 'RectangleRoi',
options: {
measurementTable: {
displayFunction
}
}
};

View File

@ -13,10 +13,22 @@ export const setUserPreferencesModalOpen = state => ({
state state
}); });
export const setTimepoints = state => ({
type: 'SET_TIMEPOINTS',
state
});
export const setMeasurements = state => ({
type: 'SET_MEASUREMENTS',
state
});
const actions = { const actions = {
setLeftSidebarOpen, setLeftSidebarOpen,
setRightSidebarOpen, setRightSidebarOpen,
setUserPreferencesModalOpen setUserPreferencesModalOpen,
setTimepoints,
setMeasurements
}; };
export default actions; export default actions;

View File

@ -0,0 +1,17 @@
const defaultState = {
timepoints: [],
measurements: []
};
const timepointManager = (state = defaultState, action) => {
switch (action.type) {
case 'SET_TIMEPOINTS':
return Object.assign({}, state, { timepoints: action.state });
case 'SET_MEASUREMENTS':
return Object.assign({}, state, { measurements: action.state });
default:
return state;
}
};
export default timepointManager;

View File

@ -1 +1 @@
export default 'a32a5f36125c1dbdd1d6ac8b534529e436f983bb'; export default '6b6237cdf6e54b87ccfb69efed769bc75e6fe232';

View File

@ -1 +1 @@
export default '0.0.6'; export default '0.0.15';

File diff suppressed because it is too large Load Diff

@ -1 +1 @@
Subproject commit 59d177cb0e705441f58ce57d37a8122011522868 Subproject commit 3f2d6cdf6409db98ff3777a0d186799b33cf608e

@ -1 +1 @@
Subproject commit 3e1c7a887fc7043c43af4d79ef0361d94c3b7e67 Subproject commit 68c50953e4b75f3a7c56ed36cf921078f238729d

View File

@ -1 +1 @@
/viewer/* /viewer/index.html 200 /demo/* /demo/index.html 200

View File

@ -1,4 +1,4 @@
##### Looking for your Deploy Preview? - <a onclick="function redirect() { window.location.href='/viewer/?url=https://s3.eu-central-1.amazonaws.com/ohif-viewer/sampleDICOM.json'; } redirect();">Deploy Preview for Viewer</a> ##### Looking for your Deploy Preview? - <a onclick="function redirect() { window.location.href='/demo/'; } redirect();">Deploy Preview for Viewer</a>
# Introduction # Introduction

View File

@ -12,7 +12,7 @@ cd ..
# Build and copy the StandaloneViewer into the static directory # Build and copy the StandaloneViewer into the static directory
echo $DEPLOY_PRIME_URL echo $DEPLOY_PRIME_URL
cd Packages-react/ohif-viewer cd Packages-react/ohif-viewer
export ROOT_URL=$DEPLOY_PRIME_URL/viewer export ROOT_URL=$DEPLOY_PRIME_URL/demo
cat package.json cat package.json
yarn install yarn install
@ -22,8 +22,8 @@ cd example
yarn install yarn install
yarn run prepare yarn run prepare
sed -i "s,http://localhost:5000,${ROOT_URL},g" index.html sed -i "s,http://localhost:5000,${ROOT_URL},g" index.html
sed -i 's,"routerBasename": "/","routerBasename": "/viewer",g' index.html sed -i 's,"routerBasename": "/","routerBasename": "/demo",g' index.html
rm -rf node_modules rm -rf node_modules
mkdir ../../../docs/_book/viewer/ mkdir ../../../docs/_book/demo/
cp -R * ../../../docs/_book/viewer/ cp -R * ../../../docs/_book/demo/
cp ../../../_redirects ../../../docs/_book/_redirects cp ../../../_redirects ../../../docs/_book/_redirects