diff --git a/extensions/lesion-tracker/.webpack/webpack.dev.js b/extensions/lesion-tracker/.webpack/webpack.dev.js new file mode 100644 index 000000000..1ae308448 --- /dev/null +++ b/extensions/lesion-tracker/.webpack/webpack.dev.js @@ -0,0 +1,8 @@ +const path = require('path'); +const webpackCommon = require('./../../../.webpack/webpack.commonjs.js'); +const SRC_DIR = path.join(__dirname, '../src'); +const DIST_DIR = path.join(__dirname, '../dist'); + +module.exports = (env, argv) => { + return webpackCommon(env, argv, { SRC_DIR, DIST_DIR }); +}; diff --git a/extensions/lesion-tracker/.webpack/webpack.prod.js b/extensions/lesion-tracker/.webpack/webpack.prod.js new file mode 100644 index 000000000..55f80827c --- /dev/null +++ b/extensions/lesion-tracker/.webpack/webpack.prod.js @@ -0,0 +1,38 @@ +const merge = require('webpack-merge'); +const path = require('path'); +const webpackCommon = require('./../../../.webpack/webpack.commonjs.js'); +const pkg = require('./../package.json'); + +const ROOT_DIR = path.join(__dirname, './..'); +const SRC_DIR = path.join(__dirname, '../src'); +const DIST_DIR = path.join(__dirname, '../dist'); + +module.exports = (env, argv) => { + const commonConfig = webpackCommon(env, argv, { SRC_DIR, DIST_DIR }); + + return merge(commonConfig, { + devtool: 'source-map', + stats: { + colors: true, + hash: true, + timings: true, + assets: true, + chunks: false, + chunkModules: false, + modules: false, + children: false, + warnings: true, + }, + optimization: { + minimize: true, + sideEffects: true, + }, + output: { + path: ROOT_DIR, + library: 'OHIFExtLesionTracker', + libraryTarget: 'umd', + libraryExport: 'default', + filename: pkg.main, + }, + }); +}; diff --git a/extensions/lesion-tracker/LICENSE b/extensions/lesion-tracker/LICENSE new file mode 100644 index 000000000..19e20dd35 --- /dev/null +++ b/extensions/lesion-tracker/LICENSE @@ -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. diff --git a/extensions/lesion-tracker/README.md b/extensions/lesion-tracker/README.md new file mode 100644 index 000000000..6c9c9bbfe --- /dev/null +++ b/extensions/lesion-tracker/README.md @@ -0,0 +1,38 @@ +# @ohif/extension-lesion-tracker + +This project is an OHIF extension that can be used with the Core OHIF Platform, +either at runtime, or as an ES6 dependency, to create a medical image viewing +application similar to that of the [legacy Lesion +Tracker][legacy-lesion-tracker] viewer. + +## About + +... + +## Scope + +... + +### Configuration + +... + +### Extensions + +... + +## Build & Deploy + +... + +## Funding/Support + +... + + + + +[legacy-lesion-tracker]: http://lesiontracker.ohif.org/studylist + diff --git a/extensions/lesion-tracker/package.json b/extensions/lesion-tracker/package.json new file mode 100644 index 000000000..ba4c5c4d9 --- /dev/null +++ b/extensions/lesion-tracker/package.json @@ -0,0 +1,40 @@ +{ + "name": "@ohif/extension-lesion-tracker", + "version": "0.0.1", + "description": "OHIF extension for Lesion Tracker", + "author": "OHIF", + "license": "MIT", + "repository": "OHIF/Viewers", + "main": "dist/index.umd.js", + "module": "src/index.js", + "publishConfig": { + "access": "public" + }, + "engines": { + "node": ">=10", + "npm": ">=6", + "yarn": ">=1.16.0" + }, + "files": [ + "dist", + "README.md" + ], + "scripts": { + "dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --debug --output-pathinfo", + "dev:lesion-tracker": "yarn run dev", + "build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js", + "build:package": "yarn run build", + "prepublishOnly": "yarn run build", + "start": "yarn run dev" + }, + "peerDependencies": { + "@ohif/core": "^0.50.0", + "prop-types": "^15.6.2", + "react": "^16.8.6", + "react-dom": "^16.8.6" + }, + "dependencies": { + "@babel/runtime": "^7.5.5", + "classnames": "^2.2.6" + } +} diff --git a/extensions/lesion-tracker/src/index.js b/extensions/lesion-tracker/src/index.js new file mode 100644 index 000000000..870175591 --- /dev/null +++ b/extensions/lesion-tracker/src/index.js @@ -0,0 +1,101 @@ +// SEE: Async imports (code-splitting) +// import asyncComponent from './asyncComponent.js'; +// import OHIFDicomPDFSopClassHandler from './OHIFDicomPDFSopClassHandler.js'; + +// const ConnectedOHIFDicomPDFViewer = asyncComponent(() => +// import( +// /* webpackChunkName: "ConnectedOHIFDicomPDFViewer" */ './ConnectedOHIFDicomPDFViewer' +// ) +// ); + +export default { + /** + * Only required property. Should be a unique value across all extensions. + */ + id: 'lesion-tracker', + + /** + * @param {object} params + * @param {ServicesManager} params.servicesManager + * @param {CommandsManager} params.commandsManager + */ + getPanelModule({ servicesManager, commandsManager }) { + return undefined; + // { + // TODO: + // - Right, alternative StudyBrowser + // - Left, alternative Measurements Table + // menuOptions: [ + // { + // // A suggested icon + // // Available icons determined by consuming app + // icon: 'list', + // // A suggested label + // label: 'Magic', + // // 'right' or 'left' + // from: 'right', + // // The target component to toggle open/close + // target: 'target-component-id', + // // Overrides `defaultContext`, if specified + // context: ['ACTIVE_VIEWPORT:MAGIC'], + // }, + // ], + // components: [ + // { + // id: 'target-component-id', + // component: MyComponent, + // }, + // ], + // defaultContext: ['ROUTE:VIEWER'], + // }; + }, + + /** + * @param {object} params + * @param {ServicesManager} params.servicesManager + * @param {CommandsManager} params.commandsManager + * @returns Object + */ + getToolbarModule({ servicesManager, commandsManager }) { + // TODO: Zoom, Levels, Pan, More (see lesiontracker.ohif.org) + // These may be driven through configuration of `cornerstone` extension instead of defined here + return { + definitions: [ + { + id: 'say-hell-world', + label: '🎉 HELLO WORLD 🎉', + icon: 'exclamation-triangle', + type: 'command', + commandName: 'sayHelloWorld', + }, + ], + defaultContext: 'VIEWER', + }; + }, + + /** + * @param {object} params + * @param {ServicesManager} params.servicesManager + * @param {CommandsManager} params.commandsManager + * @returns Object + */ + getCommandsModule({ servicesManager }) { + const { UINotificationService } = servicesManager.services; + return { + definitions: { + sayHelloWorld: { + commandFn: function() { + console.log(UINotificationService); + UINotificationService.show({ + title: 'What does a nosey pepper do?', + message: 'Gets jalapeno business!', + }); + }, + storeContexts: [], + options: {}, + }, + }, + defaultContext: ['VIEWER'], + }; + }, +}; diff --git a/package.json b/package.json index 5dc578979..acf11d949 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,13 @@ "scripts": { "cm": "npx git-cz", "build": "lerna run build:viewer --stream", + "build:lt": "lerna run build:viewer:lesion-tracker --stream", "build:ci": "lerna run build:viewer:ci --stream", "build:demo": "lerna run build:viewer:demo --stream", "build:package": "lerna run build:viewer:package --stream", "build:package-all": "lerna run build:package --parallel --stream", "dev": "lerna run dev:viewer --stream", + "dev:lt": "lerna run dev:viewer:lesion-tracker --stream", "dev:project": ".scripts/dev.sh", "dev:orthanc": "lerna run dev:orthanc --stream", "orthanc:up": "docker-compose -f .docker/Nginx-Orthanc/docker-compose.yml up", diff --git a/platform/viewer/.webpack/webpack.pwa.js b/platform/viewer/.webpack/webpack.pwa.js index 93077cfc4..5b5d36a25 100644 --- a/platform/viewer/.webpack/webpack.pwa.js +++ b/platform/viewer/.webpack/webpack.pwa.js @@ -26,6 +26,7 @@ const PUBLIC_URL = process.env.PUBLIC_URL || '/'; const APP_CONFIG = process.env.APP_CONFIG || 'config/default.js'; const PROXY_TARGET = process.env.PROXY_TARGET; const PROXY_DOMAIN = process.env.PROXY_DOMAIN; +const ENTRY_TARGET = process.env.ENTRY_TARGET || `${SRC_DIR}/index.js`; module.exports = (env, argv) => { const baseConfig = webpackBase(env, argv, { SRC_DIR, DIST_DIR }); @@ -33,6 +34,9 @@ module.exports = (env, argv) => { const hasProxy = PROXY_TARGET && PROXY_DOMAIN; const mergedConfig = merge(baseConfig, { + entry: { + app: ENTRY_TARGET, + }, output: { path: DIST_DIR, filename: isProdBuild ? '[name].bundle.[chunkhash].js' : '[name].js', diff --git a/platform/viewer/package.json b/platform/viewer/package.json index c7d4e6f5e..34a532f68 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -19,12 +19,14 @@ "scripts": { "build:package": "cross-env NODE_ENV=production node --max_old_space_size=4096 ./../../node_modules/webpack/bin/webpack.js --config .webpack/webpack.commonjs.js --progress", "build:viewer": "cross-env NODE_ENV=production node --max_old_space_size=4096 ./../../node_modules/webpack/bin/webpack.js --config .webpack/webpack.pwa.js --progress", + "build:viewer:lesion-tracker": "cross-env ENTRY_TARGET=index-lesion-tracker.js NODE_ENV=production node --max_old_space_size=4096 ./../../node_modules/webpack/bin/webpack.js --config .webpack/webpack.pwa.js --progress", "build:viewer:ci": "cross-env NODE_ENV=production PUBLIC_URL=/pwa/ APP_CONFIG=config/netlify.js QUICK_BUILD=true node --max_old_space_size=4096 ./../../node_modules/webpack/bin/webpack.js --config .webpack/webpack.pwa.js", "build:viewer:demo": "cross-env NODE_ENV=production APP_CONFIG=config/demo.js HTML_TEMPLATE=rollbar.html QUICK_BUILD=true node --max_old_space_size=4096 ./../../node_modules/webpack/bin/webpack.js --progress --config .webpack/webpack.pwa.js", "build:viewer:package": "yarn run build:package", "dev": "cross-env NODE_ENV=development webpack-dev-server --config .webpack/webpack.pwa.js --watch", "dev:orthanc": "cross-env NODE_ENV=development PROXY_TARGET=/dicom-web PROXY_DOMAIN=http://localhost:8042 APP_CONFIG=config/docker_nginx-orthanc.js webpack-dev-server --config .webpack/webpack.pwa.js --watch", "dev:viewer": "yarn run dev", + "dev:viewer:lesion-tracker": "cross-env ENTRY_TARGET=index-lesion-tracker.js NODE_ENV=development webpack-dev-server --config .webpack/webpack.pwa.js --watch", "start": "yarn run dev", "test:e2e": "cypress open", "test:e2e:ci": "percy exec -- cypress run --config video=false --record --browser chrome --spec 'cypress/integration/visual-regression/**/*'", @@ -50,6 +52,7 @@ "@ohif/extension-dicom-html": "^1.1.0", "@ohif/extension-dicom-microscopy": "^0.50.6", "@ohif/extension-dicom-pdf": "^1.0.1", + "@ohif/extension-lesion-tracker": "^0.0.1", "@ohif/extension-vtk": "^1.2.14", "@ohif/i18n": "^0.52.5", "@ohif/ui": "^1.1.9", diff --git a/platform/viewer/src/index-lesion-tracker.js b/platform/viewer/src/index-lesion-tracker.js new file mode 100644 index 000000000..b2adbc38d --- /dev/null +++ b/platform/viewer/src/index-lesion-tracker.js @@ -0,0 +1,46 @@ +/** + * Entry point for development and production PWA builds. + * Packaged (NPM) builds go through `index-umd.js` + */ + +import 'regenerator-runtime/runtime'; + +import App from './App.js'; +import React from 'react'; +import ReactDOM from 'react-dom'; + +/** + * EXTENSIONS + * ================= + * + * Importing and modifying the extensions our app uses HERE allows us to leverage + * tree shaking and a few other niceties. However, by including them here they become + * "baked in" to the published application. + * + * Depending on your use case/needs, you may want to consider not adding any extensions + * by default HERE, and instead provide them via the extensions configuration key or + * by using the exported `App` component, and passing in your extensions as props using + * the defaultExtensions property. + */ +import OHIFLesionTrackerExtension from '@ohif/extension-lesion-tracker'; +import OHIFDicomPDFExtension from '@ohif/extension-dicom-pdf'; + +/* + * Default Settings + */ +let config = {}; + +if (window) { + config = window.config || {}; +} + +const appProps = { + config, + defaultExtensions: [OHIFLesionTrackerExtension, OHIFDicomPDFExtension], +}; + +/** Create App */ +const app = React.createElement(App, appProps, null); + +/** Render */ +ReactDOM.render(app, document.getElementById('root')); diff --git a/yarn.lock b/yarn.lock index f5c75992a..a4dbafd60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1100,34 +1100,13 @@ pirates "^4.0.0" source-map-support "^0.5.9" -"@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.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" - integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5": +"@babel/runtime@7.1.2", "@babel/runtime@7.5.5", "@babel/runtime@7.6.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.3": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.6.0", "@babel/runtime@^7.6.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" - integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== - dependencies: - regenerator-runtime "^0.13.2" - "@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" @@ -1283,54 +1262,6 @@ unique-filename "^1.1.1" which "^1.3.1" -"@ffmpeg-installer/darwin-x64@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/darwin-x64/-/darwin-x64-4.1.0.tgz#48e1706c690e628148482bfb64acb67472089aaa" - integrity sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw== - -"@ffmpeg-installer/ffmpeg@1.0.20": - version "1.0.20" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.0.20.tgz#d3c9c2bbcd76149468fb0886c2b3fe9e4795490b" - integrity sha512-wbgd//6OdwbFXYgV68ZyKrIcozEQpUKlvV66XHaqO2h3sFbX0jYLzx62Q0v8UcFWN21LoxT98NU2P+K0OWsKNA== - optionalDependencies: - "@ffmpeg-installer/darwin-x64" "4.1.0" - "@ffmpeg-installer/linux-arm" "4.1.3" - "@ffmpeg-installer/linux-arm64" "4.1.4" - "@ffmpeg-installer/linux-ia32" "4.1.0" - "@ffmpeg-installer/linux-x64" "4.1.0" - "@ffmpeg-installer/win32-ia32" "4.1.0" - "@ffmpeg-installer/win32-x64" "4.1.0" - -"@ffmpeg-installer/linux-arm64@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-arm64/-/linux-arm64-4.1.4.tgz#7219f3f901bb67f7926cb060b56b6974a6cad29f" - integrity sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg== - -"@ffmpeg-installer/linux-arm@4.1.3": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-arm/-/linux-arm-4.1.3.tgz#c554f105ed5f10475ec25d7bec94926ce18db4c1" - integrity sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg== - -"@ffmpeg-installer/linux-ia32@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-ia32/-/linux-ia32-4.1.0.tgz#adad70b0d0d9d8d813983d6e683c5a338a75e442" - integrity sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ== - -"@ffmpeg-installer/linux-x64@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/linux-x64/-/linux-x64-4.1.0.tgz#b4a5d89c4e12e6d9306dbcdc573df716ec1c4323" - integrity sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A== - -"@ffmpeg-installer/win32-ia32@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/win32-ia32/-/win32-ia32-4.1.0.tgz#6eac4fb691b64c02e7a116c1e2d167f3e9b40638" - integrity sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw== - -"@ffmpeg-installer/win32-x64@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@ffmpeg-installer/win32-x64/-/win32-x64-4.1.0.tgz#17e8699b5798d4c60e36e2d6326a8ebe5e95a2c5" - integrity sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg== - "@hapi/address@2.x.x": version "2.1.2" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222" @@ -11845,11 +11776,6 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.11: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - lodash@4.17.15, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" @@ -15681,10 +15607,10 @@ react-transition-group@^4.1.1: loose-envify "^1.4.0" prop-types "^15.6.2" -react-vtkjs-viewport@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.8.2.tgz#cdccf156cb089d32b935ebc3dc5f31213ba17bef" - integrity sha512-2OPbU5y4ay+E6qfZw4sW19uqfBnNw9kAF1PaZ/Sk5XMEEKnebplEof9ZZtE6nhPImFqMCfu4TXzYVHIAPmwFYA== +react-vtkjs-viewport@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.8.4.tgz#6bd9837d7762b845e77f053fb8fbf4469428d594" + integrity sha512-b90ENJzmStiahxVox+7mMwZij3NVUu//jE07PV2Qtp6E7q/eLXn6ZUwcEt9w5YHN36xLZVcx9b53ztLcXVgh/Q== dependencies: date-fns "^2.2.1" gl-matrix "^3.1.0" @@ -16059,11 +15985,6 @@ regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== - regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"