diff --git a/package.json b/package.json index 8d5fab59f..97c33f853 100644 --- a/package.json +++ b/package.json @@ -66,9 +66,9 @@ }, "dependencies": { "@babel/runtime": "^7.4.5", - "@ohif/extension-cornerstone": "0.0.36", + "@ohif/extension-cornerstone": "file:.yalc/@ohif/extension-cornerstone", "@ohif/extension-dicom-microscopy": "0.0.6", - "@ohif/extension-vtk": "0.0.5", + "@ohif/extension-vtk": "file:.yalc/@ohif/extension-vtk", "@ohif/i18n": "0.0.4", "classnames": "^2.2.6", "cornerstone-core": "^2.2.8", @@ -83,7 +83,7 @@ "i18next-browser-languagedetector": "^3.0.1", "lodash.isequal": "4.5.0", "moment": "^2.24.0", - "ohif-core": "0.5.9", + "ohif-core": "file:.yalc/ohif-core", "ohif-dicom-html-extension": "^0.0.2", "ohif-dicom-pdf-extension": "^0.0.6", "oidc-client": "1.7.x", @@ -93,11 +93,12 @@ "react-resize-detector": "^4.2.0", "react-router": "^5.0.1", "react-router-dom": "^5.0.1", - "react-viewerbase": "0.9.0", + "react-viewerbase": "file:.yalc/react-viewerbase", "redux": "^4.0.1", "redux-logger": "^3.0.6", "redux-oidc": "3.1.x", - "redux-thunk": "^2.3.0" + "redux-thunk": "^2.3.0", + "reselect": "^4.0.0" }, "devDependencies": { "@babel/core": "^7.4.5", diff --git a/src/App.js b/src/App.js index 710bb9a22..b269ca01e 100644 --- a/src/App.js +++ b/src/App.js @@ -49,17 +49,6 @@ appCommands.init(commandsManager); if (window.config.hotkeys) { hotkeysManager.setHotkeys(window.config.hotkeys, true); } - -// Force active contexts for now. These should be set in Viewer/ActiveViewer -store.dispatch({ - type: 'ADD_ACTIVE_CONTEXT', - item: 'VIEWER', -}); -store.dispatch({ - type: 'ADD_ACTIVE_CONTEXT', - item: 'ACTIVE_VIEWPORT::CORNERSTONE', -}); - // ~~~~ END APP SETUP setupTools(store); diff --git a/src/connectedComponents/ConnectedToolbarRow.js b/src/connectedComponents/ConnectedToolbarRow.js index 05a74a798..66233bbc9 100644 --- a/src/connectedComponents/ConnectedToolbarRow.js +++ b/src/connectedComponents/ConnectedToolbarRow.js @@ -5,22 +5,11 @@ import { import ToolbarRow from './ToolbarRow'; import { connect } from 'react-redux'; - -const defaultPlugin = 'cornerstone'; +import { getActiveContexts } from './../store/layout/selectors.js'; const mapStateToProps = state => { - const { layout, viewportSpecificData, activeViewportIndex } = state.viewports; - const pluginInLayout = - layout.viewports[activeViewportIndex] && - layout.viewports[activeViewportIndex].plugin; - const pluginInViewportData = - viewportSpecificData[activeViewportIndex] && - viewportSpecificData[activeViewportIndex].plugin; - const pluginInActiveViewport = - pluginInLayout || pluginInViewportData || defaultPlugin; - return { - pluginId: pluginInActiveViewport, + activeContexts: getActiveContexts(state), leftSidebarOpen: state.ui.leftSidebarOpen, rightSidebarOpen: state.ui.rightSidebarOpen, }; diff --git a/src/connectedComponents/ConnectedViewerMain.js b/src/connectedComponents/ConnectedViewerMain.js index 53a6dc8cf..d0ee196e0 100644 --- a/src/connectedComponents/ConnectedViewerMain.js +++ b/src/connectedComponents/ConnectedViewerMain.js @@ -5,7 +5,6 @@ import { connect } from 'react-redux'; const { setViewportSpecificData, clearViewportSpecificData, - // setActiveViewportSpecificData, } = OHIF.redux.actions; const mapStateToProps = state => { @@ -27,9 +26,6 @@ const mapDispatchToProps = dispatch => { clearViewportSpecificData: () => { dispatch(clearViewportSpecificData()); }, - // setActiveViewportSpecificData: viewport => { - // dispatch(setActiveViewportSpecificData(viewport)); - // }, }; }; diff --git a/src/connectedComponents/ToolbarRow.js b/src/connectedComponents/ToolbarRow.js index 05b09669b..36c0ba77d 100644 --- a/src/connectedComponents/ToolbarRow.js +++ b/src/connectedComponents/ToolbarRow.js @@ -15,7 +15,7 @@ class ToolbarRow extends Component { rightSidebarOpen: PropTypes.bool.isRequired, setLeftSidebarOpen: PropTypes.func, setRightSidebarOpen: PropTypes.func, - pluginId: PropTypes.string, + activeContexts: PropTypes.arrayOf(PropTypes.string).isRequired, }; static defaultProps = { @@ -26,20 +26,13 @@ class ToolbarRow extends Component { constructor(props) { super(props); - const toolbarModules = extensionManager.modules[MODULE_TYPES.TOOLBAR]; - const toolbarButtonDefinitions = toolbarModules[0].module.definitions; - + const toolbarButtonDefinitions = _getVisibleToolbarButtons.call(this); // TODO: - // ToolbarSection for Each ToolbarButton - // Render buttons - // On click, depending on Type, pass props to registered command in commands manager? // If it's a tool that can be active... Mark it as active? // - Tools that are on/off? // - Tools that can be bound to multiple buttons? // Normal ToolbarButtons... - // Maybe filtered by the active context(s)? - // Buttons can handle their own clicks. No reason for the container to do it? // Just how high do we need to hoist this state? // Why ToolbarRow instead of just Toolbar? Do we have any others? this.state = { @@ -48,6 +41,17 @@ class ToolbarRow extends Component { }; } + componentDidUpdate(prevProps) { + const activeContextsChanged = + prevProps.activeContexts !== this.props.activeContexts; + + if (activeContextsChanged) { + this.setState({ + toolbarButtons: _getVisibleToolbarButtons.call(this), + }); + } + } + onLeftSidebarValueChanged = value => { this.props.setLeftSidebarOpen(!!value); }; @@ -146,4 +150,26 @@ function _getButtonComponents(toolbarButtons, activeButtons) { }); } +function _getVisibleToolbarButtons() { + const toolbarModules = extensionManager.modules[MODULE_TYPES.TOOLBAR]; + const toolbarButtonDefinitions = []; + + toolbarModules.forEach(extension => { + const { definitions, defaultContext } = extension.module; + definitions.forEach(definition => { + const context = definition.context || defaultContext; + + console.log(context); + if (this.props.activeContexts.includes(context)) { + console.log('includes: ', definition.commandName); + toolbarButtonDefinitions.push(definition); + } + }); + + console.log(extension); + }); + + return toolbarButtonDefinitions; +} + export default ToolbarRow; diff --git a/src/store/layout/actions.js b/src/store/layout/actions.js index 319628c08..2b08800b1 100644 --- a/src/store/layout/actions.js +++ b/src/store/layout/actions.js @@ -1,18 +1,3 @@ -export const addActiveContext = state => ({ - type: 'ADD_ACTIVE_CONTEXT', - state, -}); - -export const removeActiveContext = state => ({ - type: 'REMOVE_ACTIVE_CONTEXT', - state, -}); - -export const clearActiveContexts = state => ({ - type: 'CLEAR_ACTIVE_CONTEXTS', - state, -}); - export const setLeftSidebarOpen = state => ({ type: 'SET_LEFT_SIDEBAR_OPEN', state, @@ -24,10 +9,6 @@ export const setRightSidebarOpen = state => ({ }); const actions = { - addActiveContext, - removeActiveContext, - clearActiveContexts, - // setLeftSidebarOpen, setRightSidebarOpen, }; diff --git a/src/store/layout/reducers.js b/src/store/layout/reducers.js index 6659d72a7..b292074ef 100644 --- a/src/store/layout/reducers.js +++ b/src/store/layout/reducers.js @@ -3,27 +3,10 @@ const defaultState = { rightSidebarOpen: false, labelling: {}, contextMenu: {}, - activeContexts: [], }; const ui = (state = defaultState, action) => { switch (action.type) { - // ~ ACTIVE CONTEXTS - // https://redux.js.org/recipes/structuring-reducers/immutable-update-patterns#inserting-and-removing-items-in-arrays - case 'ADD_ACTIVE_CONTEXT': { - const shallowCopy = Object.assign({}, state); - shallowCopy.activeContexts = [...shallowCopy.activeContexts, action.item]; - return shallowCopy; - } - case 'REMOVE_ACTIVE_CONTEXT': { - const shallowCopy = Object.assign({}, state); - shallowCopy.activeContexts = shallowCopy.activeContexts.filter( - item => item !== action.item - ); - return shallowCopy; - } - case 'CLEAR_ACTIVE_CONTEXTS': - return Object.assign({}, state, { activeContexts: [] }); // ~ SIDEBAR case 'SET_LEFT_SIDEBAR_OPEN': return Object.assign({}, state, { leftSidebarOpen: action.state }); diff --git a/src/store/layout/selectors.js b/src/store/layout/selectors.js new file mode 100644 index 000000000..50a8ddb2e --- /dev/null +++ b/src/store/layout/selectors.js @@ -0,0 +1,28 @@ +import { createSelector } from 'reselect'; + +const getActiveViewportIndex = state => state.viewports.activeViewportIndex; +const getLayoutViewports = state => state.viewports.layout.viewports; +const getViewportSpecificData = state => state.viewports.viewportSpecificData; + +/** + * Think of this as a computed getter for our store. It lets us watch parts of + * our redux state, and only update/recalculate when those values change. + */ +export const getActiveContexts = createSelector( + [getActiveViewportIndex, getLayoutViewports, getViewportSpecificData], + (activeViewportIndex, layoutViewports, viewportSpecificData) => { + const activeContexts = ['VIEWER']; + const activeLayoutViewport = layoutViewports[activeViewportIndex] || {}; + const activeViewportSpecificData = + viewportSpecificData[activeViewportIndex] || {}; + const activeViewportPluginName = + activeLayoutViewport.plugin || activeViewportSpecificData.plugin; + + if (activeViewportPluginName) { + const activeViewportExtension = `ACTIVE_VIEWPORT::${activeViewportPluginName.toUpperCase()}`; + activeContexts.push(activeViewportExtension); + } + + return activeContexts; + } +); diff --git a/yarn.lock b/yarn.lock index 1d2c703aa..fd586542c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1435,10 +1435,8 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" -"@ohif/extension-cornerstone@0.0.36": - version "0.0.36" - resolved "https://registry.yarnpkg.com/@ohif/extension-cornerstone/-/extension-cornerstone-0.0.36.tgz#a09a01d152bb9f850698b537b02355456425f8d1" - integrity sha512-FrR9L74vqjNsW2wOSHeDXQo/twJAf/kM0awCn2/zGXN4tNxEaZRq56gfij86CH0OBGl1Wdzb8Zl6xe0JCtsNrA== +"@ohif/extension-cornerstone@file:.yalc/@ohif/extension-cornerstone": + version "0.0.36-830baf18" dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" @@ -1454,14 +1452,13 @@ classnames "^2.2.6" dicom-microscopy-viewer "^0.4.3" -"@ohif/extension-vtk@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@ohif/extension-vtk/-/extension-vtk-0.0.5.tgz#91e096cf57516a4f1808708de8d0406f7b9f547a" - integrity sha512-klUbYuM8SH138exWCNcv6CSiN5NVZCg0qMEJfdMFsXdb6knqVoaUiVGPxmgxVKIhX6+/VIrILheEDArtcfGvJw== +"@ohif/extension-vtk@file:.yalc/@ohif/extension-vtk": + version "0.0.6-d0ba76ff" dependencies: "@babel/runtime" "^7.4.5" "@ohif/i18n" "0.0.4" - react-vtkjs-viewport "0.0.8" + react-vtkjs-viewport "0.0.9" + vtk.js "^8.9.1" "@ohif/i18n@0.0.4", "@ohif/i18n@^0.0.4": version "0.0.4" @@ -2724,6 +2721,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-js@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw== + base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" @@ -2804,6 +2806,11 @@ bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== +blueimp-md5@2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.10.0.tgz#02f0843921f90dca14f5b8920a38593201d6964d" + integrity sha512-EkNUOi7tpV68TqjpiUz9D9NcT8um2+qtgntmMbi5UKssVX2m/2PLqotcric0RE63pB3HPN/fjf3cKHN2ufGSUQ== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -3245,6 +3252,15 @@ capture-stack-trace@^1.0.0: resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== +cardboard-vr-display@^1.0.15: + version "1.0.16" + resolved "https://registry.yarnpkg.com/cardboard-vr-display/-/cardboard-vr-display-1.0.16.tgz#f91e2798e8fb70a348599638c6742c72dfeadabc" + integrity sha512-GFBWPMH/ixy4Ji014BAO1ryddGHphtJlA8gUR6UdKsOpPjUQukCKpgsx2XIJ5oBlqXnDQOcLVRqBWyuvTI32jQ== + dependencies: + gl-preserve-state "^1.0.0" + nosleep.js "^0.7.0" + webvr-polyfill-dpdb "^1.0.11" + cardinal@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" @@ -3638,6 +3654,11 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.6.tgz#3cd3d8adc725ab473843db338bcdfd4a7bb087bf" integrity sha512-f20oA7jsrrmERTS70r3tmRSxR8IJV2MTN7qe6hzgX+3ARfXrdMJFvGWvWQK0xpcBurg9j9eO2MiqzZ8Y+/UPCA== +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -3934,6 +3955,11 @@ core-js@^2.4.0, core-js@^2.6.5: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4473,6 +4499,11 @@ dedent@0.7.0, dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-diff@^0.3.5: + version "0.3.8" + resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84" + integrity sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ= + deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -5020,6 +5051,11 @@ es6-promise@^4.0.3: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" @@ -6132,6 +6168,16 @@ git-log-parser@^1.2.0: through2 "~2.0.0" traverse "~0.6.6" +gl-matrix@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.0.0.tgz#888301ac7650e148c3865370e13ec66d08a8381f" + integrity sha512-PD4mVH/C/Zs64kOozeFnKY8ybhgwxXXQYGWdB4h68krAHknWJgk9uKOn6z8YElh5//vs++90pb6csrTIDWnexA== + +gl-preserve-state@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gl-preserve-state/-/gl-preserve-state-1.0.0.tgz#4ef710d62873f1470ed015c6546c37dacddd4198" + integrity sha512-zQZ25l3haD4hvgJZ6C9+s0ebdkW9y+7U2qxvGu1uWOJh8a4RU+jURIKEQhf8elIlFpMH6CrAY2tH0mYrRjet3Q== + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -6826,6 +6872,11 @@ ignore@^5.0.6, ignore@^5.1.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + immer@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" @@ -8243,6 +8294,17 @@ jsx-ast-utils@^2.1.0: dependencies: array-includes "^3.0.3" +jszip@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.4.tgz#fc323fe41bb1730348d20dd022aa4d8b57cbbcf9" + integrity sha512-z6w8iYIxZ/fcgul0j/OerkYnkomH8BZigvzbxVmr2h5HkZUrPtk2kjYtLkqR9wwQxEP6ecKNoKLsbhd18jfnGA== + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + killable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -8483,6 +8545,13 @@ libnpx@^10.2.0: y18n "^4.0.0" yargs "^11.0.0" +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + lint-staged@^8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.2.1.tgz#752fcf222d9d28f323a3b80f1e668f3654ff221f" @@ -9758,6 +9827,11 @@ normalize-url@^4.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== +nosleep.js@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/nosleep.js/-/nosleep.js-0.7.0.tgz#cfd919c25523ca0d0f4a69fb3305c083adaee289" + integrity sha1-z9kZwlUjyg0PSmn7MwXAg62u4ok= + npm-audit-report@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018" @@ -10193,10 +10267,8 @@ octokit-pagination-methods@^1.1.0: resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== -ohif-core@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/ohif-core/-/ohif-core-0.5.9.tgz#337835c82571bdc4935210273a6018c3af872adf" - integrity sha512-TvA/THiTpBnerRbv4FJlfwSMSyb4Tkn40ud14FP6JxLUQgCtLsTsaFhXIFBwZvBR/qVJwIlDluMxj/vqobCwkQ== +"ohif-core@file:.yalc/ohif-core": + version "0.4.0-6d8c6d8a" dependencies: "@babel/runtime" "^7.2.0" ajv "^6.10.0" @@ -10508,7 +10580,12 @@ pacote@^8.1.6: unique-filename "^1.1.0" which "^1.3.0" -pako@~1.0.5: +pako@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== + +pako@~1.0.2, pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== @@ -11681,6 +11758,11 @@ process-es6@^0.11.2: resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" integrity sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g= +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -12325,10 +12407,8 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-viewerbase@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.9.0.tgz#947ab61bf32e1d58836a637403d128247e175d2e" - integrity sha512-VeOGzno5fg9A0Ttx+O3CQ8KXPr1XbdEOVbA+JiLwcuycX3CmDsqLzODsjeXb8npfXDbQA+n/ZPCyxsB7JDEBlA== +"react-viewerbase@file:.yalc/react-viewerbase": + version "0.2.17-075df77f" dependencies: "@babel/runtime" "7.2.0" "@ohif/i18n" "^0.0.4" @@ -12345,10 +12425,10 @@ react-viewerbase@0.9.0: react-i18next "^10.11.0" react-with-direction "1.3.0" -react-vtkjs-viewport@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.0.8.tgz#194bd96c3f66f7f5fe4c757e0621fb5b0b43907e" - integrity sha512-L7RMr0z+C7CixW6+Wal3AAJiO1je5GlVLEKOpzMtayB5gECcrOD5AC+1/s5C/1okNVJG9BW4W9UZBoHRM6dRpw== +react-vtkjs-viewport@0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.0.9.tgz#da79aa66f52dcd731bcc5abd2587cbb120a25331" + integrity sha512-VwRCY2DPxWMhix4v3PAtdENp3U1p+Z9nKf1Ch5+KWRKF6fWeA+B2glYKMYNpPnP4bULzVz9iwV+Zeojt3gEibA== dependencies: moment "^2.24.0" @@ -12548,6 +12628,18 @@ readable-stream@~1.0.26, readable-stream@~1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" @@ -12615,6 +12707,13 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" +redux-logger@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf" + integrity sha1-91VZZvMJjzyIYExEnPC69XeCdL8= + dependencies: + deep-diff "^0.3.5" + redux-oidc@3.1.x: version "3.1.2" resolved "https://registry.yarnpkg.com/redux-oidc/-/redux-oidc-3.1.2.tgz#31a771b0e05a65879626262e1e63ba70a0936ffd" @@ -12622,6 +12721,11 @@ redux-oidc@3.1.x: optionalDependencies: immutable ">=3.6.0" +redux-thunk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== + redux@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" @@ -12933,6 +13037,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== + reserved-words@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" @@ -13276,6 +13385,11 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +seedrandom@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" + integrity sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw= + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -13520,6 +13634,15 @@ shelljs@0.7.6: interpret "^1.0.0" rechoir "^0.6.2" +shelljs@0.7.8: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -15105,6 +15228,23 @@ void-elements@^2.0.1: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= +vtk.js@^8.9.1: + version "8.9.1" + resolved "https://registry.yarnpkg.com/vtk.js/-/vtk.js-8.9.1.tgz#db49e869fbf61e4d6ca71a8a61f9092bc5fa39f7" + integrity sha512-sxQ/kFXQTVp2bzRhnSwOXlODWL0vlBkZ3X+SKW+G3ZmGDmncFGkjS5yXhTJFLBp2LVvYnqQiA8z4AeE6XrhkSg== + dependencies: + base64-js "1.2.1" + blueimp-md5 "2.10.0" + commander "2.11.0" + gl-matrix "3.0.0" + jszip "3.1.4" + pako "1.0.6" + seedrandom "2.4.3" + shelljs "0.7.8" + webvr-polyfill "0.10.8" + webworker-promise "0.4.2" + xmlbuilder "9.0.7" + w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" @@ -15282,6 +15422,23 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== +webvr-polyfill-dpdb@^1.0.11: + version "1.0.16" + resolved "https://registry.yarnpkg.com/webvr-polyfill-dpdb/-/webvr-polyfill-dpdb-1.0.16.tgz#7f2cf88460c002a5f10ff69b2bf3a5663e0ad9dd" + integrity sha512-FCciTtPhwkYYHGL0K67G8k7ZnNVqnEx3u4NVHLJ0+Ya6f2VTZUl/GJpaEo1Id2pBP/2l0RYZ3IGZE4Pe8fRalg== + +webvr-polyfill@0.10.8: + version "0.10.8" + resolved "https://registry.yarnpkg.com/webvr-polyfill/-/webvr-polyfill-0.10.8.tgz#64f8896a4d07375347217284a66b943c93da3dc9" + integrity sha512-Oa89Hb0+NRRgQXxnMxnPgT/1UYItPJfpnwmn7RFmPtGpxcWBXpwXZ0zR0RkfoB77ahlJZ+No+5QejLfOA4CJ8Q== + dependencies: + cardboard-vr-display "^1.0.15" + +webworker-promise@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/webworker-promise/-/webworker-promise-0.4.2.tgz#aeb92684a3a5a05e95ddaeccf8482254c6cf5dc0" + integrity sha512-/se9zS6MpRhyodk+C7YcBZq5mY1apJvKys6Tb6t2NDDeRMGgRuuyYjox38PssylFyPodjPEab/S0WuA20CFu7g== + whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -15594,6 +15751,11 @@ xml@^1.0.1: resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= +xmlbuilder@9.0.7: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + xmlchars@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf"