Compare commits

..
Author SHA1 Message Date
ohif-bot eaa423c64e chore(release): publish [skip ci]
- @ohif/extension-vtk@1.12.36
 - @ohif/core@2.16.30
 - @ohif/viewer@4.12.42
2022-10-25 14:09:04 +00:00
Gitanjali f7db74a843 fix: 2965 Correct Parsing Logic for Qualitative Instance Level SR (#2972)
* fix: 2965 Correct Parsing Logic for Qualitative Instance Level SR

* fix: 2965 Correct Parsing Logic for Qualitative Instance Level SR

* fix: 2965 Correct Parsing Logic for Qualitative Instance Level SR
2022-10-25 10:06:59 -04:00
ohif-bot 7aba01f534 chore(release): publish [skip ci]
- @ohif/extension-vtk@1.12.35
 - @ohif/viewer@4.12.41
2022-09-26 14:42:01 +00:00
GitanjaliChhetri c5ebeaa127 Re IDC #2847: Fix 2d MPR rendering issue for the sagittal view (#2960) 2022-09-26 08:39:55 -06:00
ohif-bot d7e1d2c975 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@2.12.15
 - @ohif/extension-vtk@1.12.34
 - @ohif/core@2.16.29
 - @ohif/viewer@4.12.40
2022-09-20 11:26:05 +00:00
Davide Punzo eb7eb56d7e Re IDC #2934: update cornerstoneWADOImageLoader to v 4.2.1 (#2944) 2022-09-20 13:24:17 +02:00
ohif-bot c5ee092bf2 chore(release): publish [skip ci]
- @ohif/extension-dicom-segmentation@0.7.15
 - @ohif/extension-vtk@1.12.33
 - @ohif/core@2.16.28
 - @ohif/viewer@4.12.39
2022-09-19 10:32:07 +00:00
Davide Punzo e2f4f95222 Re IDC #2935: fix parsing of Instance-level qualitative annotations (#2940) 2022-09-19 12:29:28 +02:00
ohif-bot 4546ede9bb chore(release): publish [skip ci]
- @ohif/extension-dicom-segmentation@0.7.14
 - @ohif/viewer@4.12.38
2022-09-12 12:24:25 +00:00
Davide Punzo e0fb439e98 Fix IDC Re #2918: Runtime tolerance for SEGs loading (#2924) 2022-09-12 14:22:32 +02:00
ohif-bot ebbc9e0d6d chore(release): publish [skip ci]
- @ohif/extension-vtk@1.12.32
 - @ohif/core@2.16.27
 - @ohif/viewer@4.12.37
2022-09-12 08:27:33 +00:00
Davide Punzo 47a6130fd5 Re IDC #2919: fix popup notifications behavior (#2923) 2022-09-12 10:25:19 +02:00
ohif-bot 80dfdcc37c chore(release): publish [skip ci]
- @ohif/viewer@4.12.36
2022-09-08 14:48:41 +00:00
Doug Horner d74ad370e0 fix: hotkey page up/down did not work (#2910) 2022-09-08 10:46:26 -04:00
ohif-bot ddfde9279e chore(release): publish [skip ci]
- @ohif/extension-vtk@1.12.31
 - @ohif/core@2.16.26
 - @ohif/viewer@4.12.35
2022-09-02 13:49:07 +00:00
Davide Punzo aaab6d2622 Re IDC #2849: raise error if dicom request is not conforming with the UID (DICOM UI VR) character repertoire. (#2908) 2022-09-02 15:47:28 +02:00
ohif-bot d2921083e7 chore(release): publish [skip ci]
- @ohif/extension-cornerstone@2.12.14
 - @ohif/extension-dicom-html@1.3.23
 - @ohif/extension-dicom-rt@0.7.13
 - @ohif/extension-dicom-segmentation@0.7.13
 - @ohif/extension-dicom-tag-browser@0.2.24
 - @ohif/extension-vtk@1.12.30
 - @ohif/core@2.16.25
 - @ohif/viewer@4.12.34
2022-09-01 18:14:46 +00:00
Davide Punzo a6338ea266 Re IDC #2869: update dcmjs for fixing eps in nearly equal condition (#2906) 2022-09-01 20:12:30 +02:00
33 changed files with 462 additions and 107 deletions

No files matched your search

+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.12.15](https://github.com/OHIF/Viewers/compare/@ohif/extension-cornerstone@2.12.14...@ohif/extension-cornerstone@2.12.15) (2022-09-20)
**Note:** Version bump only for package @ohif/extension-cornerstone
## [2.12.14](https://github.com/OHIF/Viewers/compare/@ohif/extension-cornerstone@2.12.13...@ohif/extension-cornerstone@2.12.14) (2022-09-01)
**Note:** Version bump only for package @ohif/extension-cornerstone
## [2.12.13](https://github.com/OHIF/Viewers/compare/@ohif/extension-cornerstone@2.12.12...@ohif/extension-cornerstone@2.12.13) (2022-06-30)
**Note:** Version bump only for package @ohif/extension-cornerstone
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone",
"version": "2.12.13",
"version": "2.12.15",
"description": "OHIF extension for Cornerstone",
"author": "OHIF",
"license": "MIT",
@@ -35,8 +35,8 @@
"cornerstone-core": "^2.6.1",
"cornerstone-math": "^0.1.9",
"cornerstone-tools": "^6.0.6",
"cornerstone-wado-image-loader": "^4.1.0",
"dcmjs": "0.19.9",
"cornerstone-wado-image-loader": "^4.2.1",
"dcmjs": "0.24.10",
"dicom-parser": "^1.8.11",
"hammerjs": "^2.0.8",
"prop-types": "^15.6.2",
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.3.23](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-html@1.3.22...@ohif/extension-dicom-html@1.3.23) (2022-09-01)
**Note:** Version bump only for package @ohif/extension-dicom-html
## [1.3.22](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-html@1.3.21...@ohif/extension-dicom-html@1.3.22) (2022-06-30)
**Note:** Version bump only for package @ohif/extension-dicom-html
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-html",
"version": "1.3.22",
"version": "1.3.23",
"description": "OHIF extension for rendering structured reports to HTML",
"author": "OHIF",
"license": "MIT",
@@ -29,7 +29,7 @@
},
"peerDependencies": {
"@ohif/core": "^0.50.0",
"dcmjs": "0.19.9",
"dcmjs": "0.24.10",
"prop-types": "^15.6.2",
"react": "^16.8.6",
"react-dom": "^16.8.6"
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.7.13](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-rt@0.7.12...@ohif/extension-dicom-rt@0.7.13) (2022-09-01)
**Note:** Version bump only for package @ohif/extension-dicom-rt
## [0.7.12](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-rt@0.7.11...@ohif/extension-dicom-rt@0.7.12) (2022-08-31)
**Note:** Version bump only for package @ohif/extension-dicom-rt
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-rt",
"version": "0.7.12",
"version": "0.7.13",
"description": "OHIF extension for rendering DICOM RTSTRUCTs on top of cornerstone images.",
"author": "OHIF",
"license": "MIT",
@@ -31,7 +31,7 @@
"@ohif/core": "^0.50.0",
"cornerstone-core": "^2.6.1",
"cornerstone-tools": "^6.0.6",
"dcmjs": "0.19.9",
"dcmjs": "0.24.10",
"gl-matrix": "^3.3.0",
"prop-types": "^15.6.2",
"react": "^16.8.6",
@@ -3,6 +3,30 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.7.15](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-segmentation@0.7.14...@ohif/extension-dicom-segmentation@0.7.15) (2022-09-19)
**Note:** Version bump only for package @ohif/extension-dicom-segmentation
## [0.7.14](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-segmentation@0.7.13...@ohif/extension-dicom-segmentation@0.7.14) (2022-09-12)
**Note:** Version bump only for package @ohif/extension-dicom-segmentation
## [0.7.13](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-segmentation@0.7.12...@ohif/extension-dicom-segmentation@0.7.13) (2022-09-01)
**Note:** Version bump only for package @ohif/extension-dicom-segmentation
## [0.7.12](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-segmentation@0.7.11...@ohif/extension-dicom-segmentation@0.7.12) (2022-08-31)
**Note:** Version bump only for package @ohif/extension-dicom-segmentation
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-segmentation",
"version": "0.7.12",
"version": "0.7.15",
"description": "OHIF extension for viewing segmentations in the 2D MPR view",
"author": "OHIF",
"license": "MIT",
@@ -31,7 +31,7 @@
"@ohif/core": "^0.50.0",
"cornerstone-core": "^2.6.1",
"cornerstone-tools": "^6.0.6",
"dcmjs": "0.19.9",
"dcmjs": "0.24.10",
"prop-types": "^15.6.2",
"react": "^16.8.6",
"react-dom": "^16.8.6"
@@ -36,6 +36,7 @@ const { studyMetadataManager } = utils;
* @param {Function} props.onConfigurationChange - Configuration change handler
* @param {Function} props.activeContexts - List of active application contexts
* @param {Function} props.contexts - List of available application contexts
* @param {Function} props.servicesManager - Services manager
* @returns component
*/
const SegmentationPanel = ({
@@ -50,6 +51,7 @@ const SegmentationPanel = ({
onSelectedSegmentationChange,
activeContexts = [],
contexts = {},
servicesManager,
}) => {
const isVTK = () => activeContexts.includes(contexts.VTK);
const isCornerstone = () => activeContexts.includes(contexts.CORNERSTONE);
@@ -59,6 +61,9 @@ const SegmentationPanel = ({
* store with context to make these kind of things less blurry.
*/
const { configuration } = cornerstoneTools.getModule('segmentation');
if (configuration.segsTolerance === undefined) {
configuration.segsTolerance = 1e-2;
}
const DEFAULT_BRUSH_RADIUS = configuration.radius || 10;
/*
@@ -87,6 +92,25 @@ const SegmentationPanel = ({
return studyMetadata.getFirstImageId(displaySetInstanceUID);
};
const getAllSegDisplaySets = () => {
const { StudyInstanceUID } = getActiveViewport();
const studyMetadata = studyMetadataManager.get(StudyInstanceUID);
return studyMetadata.getDerivedDatasets({
Modality: 'SEG',
});
};
const updateSegDisplaySetsTolerance = tolerance => {
const segDisplaySets = getAllSegDisplaySets();
segDisplaySets.forEach(segDisplaySet => {
// update tol value
segDisplaySet.tolerance = tolerance;
// reset load flags for allowing retry for seg parsing.
segDisplaySet.isLoaded = false;
segDisplaySet.loadError = false;
});
};
const getActiveLabelMaps3D = () => {
const { labelmaps3D, activeLabelmapIndex } = getBrushStackState();
return labelmaps3D[activeLabelmapIndex];
@@ -598,7 +622,9 @@ const SegmentationPanel = ({
configuration.outlineWidth = newConfiguration.outlineWidth;
configuration.fillAlphaInactive = newConfiguration.fillAlphaInactive;
configuration.outlineAlphaInactive = newConfiguration.outlineAlphaInactive;
configuration.segsTolerance = newConfiguration.segsTolerance;
onConfigurationChange(newConfiguration);
updateSegDisplaySetsTolerance(configuration.segsTolerance);
refreshViewports();
};
@@ -647,6 +673,7 @@ const SegmentationPanel = ({
configuration={configuration}
onBack={() => setState(state => ({ ...state, showSettings: false }))}
onChange={updateConfiguration}
servicesManager={servicesManager}
/>
);
} else {
@@ -4,7 +4,7 @@ import { Range } from '@ohif/ui';
import './SegmentationSettings.css';
const SegmentationSettings = ({ configuration, onBack, onChange, disabledFields = [] }) => {
const SegmentationSettings = ({ configuration, onBack, onChange, servicesManager, disabledFields = [] }) => {
const [state, setState] = useState({
renderFill: configuration.renderFill,
renderOutline: configuration.renderOutline,
@@ -13,7 +13,8 @@ const SegmentationSettings = ({ configuration, onBack, onChange, disabledFields
outlineAlpha: configuration.outlineAlpha,
outlineWidth: configuration.outlineWidth,
fillAlphaInactive: configuration.fillAlphaInactive,
outlineAlphaInactive: configuration.outlineAlphaInactive
outlineAlphaInactive: configuration.outlineAlphaInactive,
segsTolerance: configuration.segsTolerance,
});
useEffect(() => {
@@ -133,6 +134,40 @@ const SegmentationSettings = ({ configuration, onBack, onChange, disabledFields
)}
</div>
)}
<div className="settings-group" style={{ marginBottom: 15 }}>
<label style={{ margin: '0 15px' }}>
Tolerance:
<input
style={{ margin: '0 15px' }}
label="Tolerance"
onKeyPress={event => {
const validate = string => {
let rgx = /[^-.e0-9]+/g;
return string.match(rgx);
};
if (validate(event.key)) {
event.preventDefault();
}
}}
onChange={event => {
save('segsTolerance', event.target.value);
const { UINotificationService, LoggerService } = servicesManager.services;
const error = new Error('Segmentation loader tolerance changed. This operation can potentially generate errors in the Segmentation parsing.');
LoggerService.error({ error, message: error.message });
UINotificationService.show({
title: 'Segmentation panel',
message: error.message,
type: 'warning',
autoClose: true,
});
}
}
value={state.segsTolerance}
/>
</label>
</div>
</div>
);
};
@@ -169,11 +204,12 @@ SegmentationSettings.propTypes = {
renderFill: PropTypes.bool.isRequired,
renderOutline: PropTypes.bool.isRequired,
shouldRenderInactiveLabelmaps: PropTypes.bool.isRequired,
fillAlpha: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, /* TODO: why fillAlpha is string? */
outlineAlpha: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, /* TODO: why fillAlpha is string? */
fillAlpha: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
outlineAlpha: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
outlineWidth: PropTypes.number.isRequired,
fillAlphaInactive: PropTypes.number.isRequired,
outlineAlphaInactive: PropTypes.number.isRequired,
fillAlphaInactive: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
outlineAlphaInactive: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
segsTolerance: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
}).isRequired,
onBack: PropTypes.func.isRequired,
onChange: PropTypes.func.isRequired,
@@ -62,6 +62,7 @@ export default function getSopClassHandlerModule({ servicesManager }) {
SeriesNumber,
SeriesDescription,
metadata,
tolerance: 1e-2,
};
segDisplaySet.getSourceDisplaySet = function(
@@ -93,7 +94,7 @@ export default function getSopClassHandlerModule({ servicesManager }) {
referencedDisplaySet.SeriesInstanceUID
);
const results = await _parseSeg(segArrayBuffer, imageIds);
const results = await _parseSeg(segArrayBuffer, imageIds, segDisplaySet.tolerance);
if (results === undefined) {
return;
}
@@ -149,10 +150,13 @@ export default function getSopClassHandlerModule({ servicesManager }) {
};
}
function _parseSeg(arrayBuffer, imageIds) {
const skipOverlapping = false;
const tolerance = 1e-2;
const cornerstoneToolsVersion = 4;
function _parseSeg(
arrayBuffer,
imageIds,
tolerance = 1e-2,
skipOverlapping = false,
cornerstoneToolsVersion = 4
) {
return dcmjs.adapters.Cornerstone.Segmentation.generateToolState(
imageIds,
arrayBuffer,
+1 -1
View File
@@ -32,7 +32,6 @@ export default {
const ExtendedSegmentationPanel = props => {
const { activeContexts } = api.hooks.useAppContext();
const onDisplaySetLoadFailureHandler = error => {
LoggerService.error({ error, message: error.message });
UINotificationService.show({
@@ -78,6 +77,7 @@ export default {
onConfigurationChange={onConfigurationChangeHandler}
onSelectedSegmentationChange={onSelectedSegmentationChangeHandler}
onDisplaySetLoadFailure={onDisplaySetLoadFailureHandler}
servicesManager={servicesManager}
/>
);
};
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.2.24](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-tag-browser@0.2.23...@ohif/extension-dicom-tag-browser@0.2.24) (2022-09-01)
**Note:** Version bump only for package @ohif/extension-dicom-tag-browser
## [0.2.23](https://github.com/OHIF/Viewers/compare/@ohif/extension-dicom-tag-browser@0.2.22...@ohif/extension-dicom-tag-browser@0.2.23) (2022-04-06)
**Note:** Version bump only for package @ohif/extension-dicom-tag-browser
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-tag-browser",
"version": "0.2.23",
"version": "0.2.24",
"description": "OHIF extension for checking DICOM headers.",
"author": "OHIF",
"license": "MIT",
@@ -28,7 +28,7 @@
},
"peerDependencies": {
"@ohif/core": "^2.6.0",
"dcmjs": "0.19.9",
"dcmjs": "0.24.10",
"react": "^16.8.6"
},
"dependencies": {
+56
View File
@@ -3,6 +3,62 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.12.36](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.35...@ohif/extension-vtk@1.12.36) (2022-10-25)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.35](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.34...@ohif/extension-vtk@1.12.35) (2022-09-26)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.34](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.33...@ohif/extension-vtk@1.12.34) (2022-09-20)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.33](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.32...@ohif/extension-vtk@1.12.33) (2022-09-19)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.32](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.31...@ohif/extension-vtk@1.12.32) (2022-09-12)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.31](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.30...@ohif/extension-vtk@1.12.31) (2022-09-02)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.30](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.29...@ohif/extension-vtk@1.12.30) (2022-09-01)
**Note:** Version bump only for package @ohif/extension-vtk
## [1.12.29](https://github.com/OHIF/Viewers/compare/@ohif/extension-vtk@1.12.28...@ohif/extension-vtk@1.12.29) (2022-08-31)
**Note:** Version bump only for package @ohif/extension-vtk
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-vtk",
"version": "1.12.29",
"version": "1.12.36",
"description": "OHIF extension for VTK.js",
"author": "OHIF",
"license": "MIT",
@@ -34,8 +34,8 @@
"@ohif/ui": "^0.50.0",
"cornerstone-core": "^2.6.1",
"cornerstone-tools": "^6.0.6",
"cornerstone-wado-image-loader": "^4.1.0",
"dcmjs": "0.19.9",
"cornerstone-wado-image-loader": "^4.2.1",
"dcmjs": "0.24.10",
"dicom-parser": "^1.8.11",
"i18next": "^17.0.3",
"i18next-browser-languagedetector": "^3.0.1",
@@ -50,13 +50,13 @@
"dependencies": {
"@babel/runtime": "^7.5.5",
"lodash.throttle": "^4.1.1",
"react-vtkjs-viewport": "^0.14.4"
"react-vtkjs-viewport": "^0.14.5"
},
"devDependencies": {
"@ohif/core": "^2.16.24",
"@ohif/core": "^2.16.30",
"@ohif/ui": "^1.10.10",
"cornerstone-tools": "^6.0.6",
"cornerstone-wado-image-loader": "^4.1.0",
"cornerstone-wado-image-loader": "^4.2.1",
"dicom-parser": "^1.8.11",
"gh-pages": "^2.0.1",
"i18next": "^17.0.3",
+51
View File
@@ -3,6 +3,57 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.16.30](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.29...@ohif/core@2.16.30) (2022-10-25)
### Bug Fixes
* 2965 Correct Parsing Logic for Qualitative Instance Level SR ([#2972](https://github.com/OHIF/Viewers/issues/2972)) ([f7db74a](https://github.com/OHIF/Viewers/commit/f7db74a84376598065b6fa2c00cd5735415ff651))
## [2.16.29](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.28...@ohif/core@2.16.29) (2022-09-20)
**Note:** Version bump only for package @ohif/core
## [2.16.28](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.27...@ohif/core@2.16.28) (2022-09-19)
**Note:** Version bump only for package @ohif/core
## [2.16.27](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.26...@ohif/core@2.16.27) (2022-09-12)
**Note:** Version bump only for package @ohif/core
## [2.16.26](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.25...@ohif/core@2.16.26) (2022-09-02)
**Note:** Version bump only for package @ohif/core
## [2.16.25](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.24...@ohif/core@2.16.25) (2022-09-01)
**Note:** Version bump only for package @ohif/core
## [2.16.24](https://github.com/OHIF/Viewers/compare/@ohif/core@2.16.23...@ohif/core@2.16.24) (2022-08-31)
**Note:** Version bump only for package @ohif/core
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/core",
"version": "2.16.24",
"version": "2.16.30",
"description": "Generic business logic for web-based medical imaging applications",
"author": "OHIF Core Team",
"license": "MIT",
@@ -33,13 +33,13 @@
"peerDependencies": {
"cornerstone-core": "^2.6.1",
"cornerstone-tools": "^6.0.6",
"cornerstone-wado-image-loader": "^4.1.0",
"cornerstone-wado-image-loader": "^4.2.1",
"dicom-parser": "^1.8.11"
},
"dependencies": {
"@babel/runtime": "^7.5.5",
"ajv": "^6.10.0",
"dcmjs": "0.19.9",
"dcmjs": "0.24.10",
"dicomweb-client": "^0.8.3",
"immer": "9.0.12",
"isomorphic-base64": "^1.0.2",
@@ -12,8 +12,7 @@ const parseSCOORD3D = ({ servicesManager, displaySets }) => {
ds =>
ds.Modality !== 'SR' &&
ds.Modality !== 'SEG' &&
ds.Modality !== 'RTSTRUCT' &&
ds.Modality !== 'RTDOSE'
ds.Modality !== 'RTSTRUCT'
);
imageDisplaySets.forEach(imageDisplaySet => {
@@ -10,7 +10,7 @@ const getReferencedImagesList = ImagingMeasurementReportContentSequence => {
CodeNameCodeSequenceValues.ImageLibrary
);
if (!ImageLibrary.ContentSequence) {
if (!ImageLibrary || !ImageLibrary.ContentSequence) {
return referencedImages;
}
@@ -22,6 +22,10 @@ const getReferencedImagesList = ImagingMeasurementReportContentSequence => {
CodeNameCodeSequenceValues.ImageLibraryGroup
);
if (!ImageLibraryGroup || !ImageLibraryGroup.ContentSequence) {
return referencedImages;
}
getSequenceAsArray(ImageLibraryGroup.ContentSequence).forEach(item => {
const { ReferencedSOPSequence } = item;
if (ReferencedSOPSequence) {
@@ -21,16 +21,32 @@ const parseDicomStructuredReport = (
displaySets,
external
) => {
if (external && external.servicesManager) {
parseSCOORD3D({ servicesManager: external.servicesManager, displaySets });
}
// Get the dicom data as an Object
const dicomData = dcmjs.data.DicomMessage.readFile(part10SRArrayBuffer);
const dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset(
dicomData.dict
);
const {
LoggerService,
UINotificationService,
} = external.servicesManager.services;
if (external && external.servicesManager) {
try {
parseSCOORD3D({ servicesManager: external.servicesManager, displaySets });
} catch (error) {
const seriesDescription = dataset.SeriesDescription || '';
LoggerService.error({ error, message: error.message });
UINotificationService.show({
title: `Failed to parse ${seriesDescription} SR display set`,
message: error.message,
type: 'error',
autoClose: false,
});
return;
}
}
const { MeasurementReport } = dcmjs.adapters.Cornerstone;
let storedMeasurementByToolType;
@@ -38,11 +54,12 @@ const parseDicomStructuredReport = (
storedMeasurementByToolType = MeasurementReport.generateToolState(dataset);
} catch (error) {
const seriesDescription = dataset.SeriesDescription || '';
LogManager.publish(LogManager.EVENTS.OnLog, {
LoggerService.error({ error, message: error.message });
UINotificationService.show({
title: `Failed to parse ${seriesDescription} measurement report`,
type: 'warning',
message: error.message || '',
notify: true,
message: error.message,
type: 'error',
autoClose: false,
});
return;
}
+2 -1
View File
@@ -67,12 +67,13 @@ export class HotkeysManager {
UINotificationService,
LoggerService,
} = this._servicesManager.services;
const message = 'Erro while setting hotkeys';
const message = 'Error while setting hotkeys';
LoggerService.error({ error, message });
UINotificationService.show({
title: 'Hotkeys Manager',
message,
type: 'error',
autoClose: false,
});
}
}
@@ -275,6 +275,8 @@ class StudyMetadata extends Metadata {
const otherDisplaySets = allDisplaySets.filter(
ds =>
ds &&
derivatedDisplaySet &&
ds.displaySetInstanceUID !== derivatedDisplaySet.displaySetInstanceUID
);
@@ -19,17 +19,4 @@ describe('retrieveStudyMetadata.js', () => {
expect(callWithNoStudyInstanceUID).toThrow(Error);
});
it('caches and returns the same promise for identical studyInstanceUIDs', () => {
const firstPromise = retrieveStudyMetadata(
fakeDicomWebServer,
'fake-study-instance-uid'
);
const secondPromise = retrieveStudyMetadata(
fakeDicomWebServer,
'fake-study-instance-uid'
);
expect(firstPromise).toBe(secondPromise);
});
});
@@ -102,6 +102,35 @@ async function makeSOPInstance(server, study, instance) {
SOPInstanceUID,
} = naturalizedInstance;
const validate = string => {
let rgx = /[^.0-9]+/g;
return string.match(rgx);
};
if (StudyInstanceUID === undefined || validate(StudyInstanceUID)) {
const error =
'makeSOPInstance: StudyInstanceUID is not conforming with the UID (DICOM UI VR) character repertoire, skipping SOPInstance.';
console.error(error);
return;
}
if (SeriesInstanceUID === undefined || validate(SeriesInstanceUID)) {
const error =
'makeSOPInstance: SeriesInstanceUID is not conforming with the UID (DICOM UI VR) character repertoire, skipping SOPInstance.';
console.error(error);
return;
}
if (SOPInstanceUID === undefined || validate(SOPInstanceUID)) {
const error =
'makeSOPInstance: SOPInstanceUID is not conforming with the UID (DICOM UI VR) character repertoire, skipping SOPInstance.';
console.error(error);
return;
}
let series = study.seriesMap[SeriesInstanceUID];
if (!series) {
@@ -124,7 +124,7 @@ async function loadAndCacheDerivedDisplaySets(
title: 'DICOM Segmentation Loader',
message: error.message,
type: 'error',
autoClose: true,
autoClose: false,
});
};
+75
View File
@@ -3,6 +3,81 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [4.12.42](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.41...@ohif/viewer@4.12.42) (2022-10-25)
**Note:** Version bump only for package @ohif/viewer
## [4.12.41](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.40...@ohif/viewer@4.12.41) (2022-09-26)
**Note:** Version bump only for package @ohif/viewer
## [4.12.40](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.39...@ohif/viewer@4.12.40) (2022-09-20)
**Note:** Version bump only for package @ohif/viewer
## [4.12.39](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.38...@ohif/viewer@4.12.39) (2022-09-19)
**Note:** Version bump only for package @ohif/viewer
## [4.12.38](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.37...@ohif/viewer@4.12.38) (2022-09-12)
**Note:** Version bump only for package @ohif/viewer
## [4.12.37](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.36...@ohif/viewer@4.12.37) (2022-09-12)
**Note:** Version bump only for package @ohif/viewer
## [4.12.36](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.35...@ohif/viewer@4.12.36) (2022-09-08)
### Bug Fixes
* hotkey page up/down did not work ([#2910](https://github.com/OHIF/Viewers/issues/2910)) ([d74ad37](https://github.com/OHIF/Viewers/commit/d74ad370e091c8af2d93ec35f688c4ef902bab2b))
## [4.12.35](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.34...@ohif/viewer@4.12.35) (2022-09-02)
**Note:** Version bump only for package @ohif/viewer
## [4.12.34](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.33...@ohif/viewer@4.12.34) (2022-09-01)
**Note:** Version bump only for package @ohif/viewer
## [4.12.33](https://github.com/OHIF/Viewers/compare/@ohif/viewer@4.12.32...@ohif/viewer@4.12.33) (2022-08-31)
**Note:** Version bump only for package @ohif/viewer
+9 -9
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/viewer",
"version": "4.12.33",
"version": "4.12.42",
"description": "OHIF Viewer",
"author": "OHIF Contributors",
"license": "MIT",
@@ -47,16 +47,16 @@
},
"dependencies": {
"@babel/runtime": "^7.5.5",
"@ohif/core": "^2.16.24",
"@ohif/extension-cornerstone": "^2.12.13",
"@ohif/core": "^2.16.30",
"@ohif/extension-cornerstone": "^2.12.15",
"@ohif/extension-debugging": "^0.3.3",
"@ohif/extension-dicom-html": "^1.3.22",
"@ohif/extension-dicom-html": "^1.3.23",
"@ohif/extension-dicom-microscopy": "^0.52.0",
"@ohif/extension-dicom-pdf": "^1.1.2",
"@ohif/extension-dicom-rt": "^0.7.12",
"@ohif/extension-dicom-segmentation": "^0.7.12",
"@ohif/extension-dicom-rt": "^0.7.13",
"@ohif/extension-dicom-segmentation": "^0.7.15",
"@ohif/extension-lesion-tracker": "^0.2.2",
"@ohif/extension-vtk": "^1.12.29",
"@ohif/extension-vtk": "^1.12.36",
"@ohif/i18n": "^0.53.0",
"@ohif/ui": "^1.10.10",
"@tanem/react-nprogress": "^1.1.25",
@@ -65,8 +65,8 @@
"cornerstone-core": "^2.6.1",
"cornerstone-math": "^0.1.9",
"cornerstone-tools": "^6.0.6",
"cornerstone-wado-image-loader": "^4.1.0",
"dcmjs": "0.19.9",
"cornerstone-wado-image-loader": "^4.2.1",
"dcmjs": "0.24.10",
"dicom-parser": "^1.8.11",
"dicomweb-client": "^0.8.3",
"hammerjs": "^2.0.8",
@@ -1,4 +1,4 @@
import { redux } from '@ohif/core';
import { redux, utils } from '@ohif/core';
import store from './../../store';
const commandsModule = ({ commandsManager }) => {
@@ -25,7 +25,7 @@ const mapDispatchToProps = (dispatch, ownProps) => {
title: 'DICOM Segmentation Loader',
message: error.message,
type: 'error',
autoClose: true,
autoClose: false,
});
};
@@ -473,7 +473,7 @@ const _checkForDerivedDisplaySets = async function(displaySet, study) {
let derivedDisplaySetsNumber = 0;
if (
displaySet.Modality &&
!['SEG', 'SR', 'RTSTRUCT', 'RTDOSE'].includes(displaySet.Modality)
!['SEG', 'SR', 'RTSTRUCT'].includes(displaySet.Modality)
) {
const studyMetadata = studyMetadataManager.get(study.StudyInstanceUID);
@@ -612,7 +612,6 @@ const _isDisplaySetActive = function(
if (
displaySet.Modality !== 'SEG' &&
displaySet.Modality !== 'RTSTRUCT' &&
displaySet.Modality !== 'RTDOSE' &&
displaySet.Modality !== 'SR'
) {
active = activeDisplaySetInstanceUID === displaySetInstanceUID;
@@ -150,7 +150,7 @@ class ViewerMain extends Component {
title: 'DICOM Segmentation Loader',
message: error.message,
type: 'error',
autoClose: true,
autoClose: false,
});
};
+39 -35
View File
@@ -721,14 +721,6 @@
"@babel/helper-regex" "^7.4.4"
regexpu-core "^4.6.0"
"@babel/polyfill@^7.8.3":
version "7.8.7"
resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.7.tgz#151ec24c7135481336168c3bd8b8bf0cf91c032f"
integrity sha512-LeSfP9bNZH2UOZgcGcZ0PIHUt1ZuHub1L3CVmEyqLxCeDLm4C5Gi8jRH8ZX2PNpDhQCo0z6y/+DIs2JlliXW8w==
dependencies:
core-js "^2.6.5"
regenerator-runtime "^0.13.4"
"@babel/preset-env@^7.5.0", "@babel/preset-env@^7.5.5":
version "7.6.3"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.3.tgz#9e1bf05a2e2d687036d24c40e4639dc46cef2271"
@@ -796,7 +788,15 @@
"@babel/plugin-transform-react-jsx-self" "^7.0.0"
"@babel/plugin-transform-react-jsx-source" "^7.0.0"
"@babel/runtime@7.1.2", "@babel/runtime@7.5.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.16.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.6":
"@babel/runtime-corejs2@^7.17.8":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.18.9.tgz#d88c327736ecc4b9db13ddef5a33a004b9aeac74"
integrity sha512-l057ZarpDX2QnXM89ViR2BgRFgTy2l5UFGDt0SbInhim1N/ljBgPeTJV0kRG1/Bo7CkHfYfrNNwTeQ2CPph9xQ==
dependencies:
core-js "^2.6.12"
regenerator-runtime "^0.13.4"
"@babel/runtime@7.1.2", "@babel/runtime@7.5.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.16.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.6":
version "7.5.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132"
integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==
@@ -4242,13 +4242,13 @@ capture-exit@^2.0.0:
rsvp "^4.8.4"
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==
version "1.0.19"
resolved "https://registry.yarnpkg.com/cardboard-vr-display/-/cardboard-vr-display-1.0.19.tgz#81dcde1804b329b8228b757ac00e1fd2afa9d748"
integrity sha512-+MjcnWKAkb95p68elqZLDPzoiF/dGncQilLGvPBM5ZorABp/ao3lCs7nnRcYBckmuNkg1V/5rdGDKoUaCVsHzQ==
dependencies:
gl-preserve-state "^1.0.0"
nosleep.js "^0.7.0"
webvr-polyfill-dpdb "^1.0.11"
webvr-polyfill-dpdb "^1.0.17"
cardinal@^2.1.1:
version "2.1.1"
@@ -5079,11 +5079,16 @@ core-js-compat@^3.1.1:
browserslist "^4.7.2"
semver "^6.3.0"
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7, core-js@^2.6.5:
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7:
version "2.6.10"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==
core-js@^2.6.12:
version "2.6.12"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.2.1:
version "3.3.4"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.3.4.tgz#6b0a23392958317bfb46e40b090529a923add669"
@@ -5112,10 +5117,10 @@ cornerstone-tools@^6.0.6:
"@babel/runtime" "7.1.2"
cornerstone-math "0.1.9"
cornerstone-wado-image-loader@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.1.0.tgz#a85c206eb23e188181ed3f1dcf3ec715e65efcb4"
integrity sha512-QRoMqBE5xEc1Jttg3eH6RB4jFY2aIEjd9rcbvJszefl0isow+JwcLv2kh1xkSvqGfHGozcz+F4mrORyTNNLuFQ==
cornerstone-wado-image-loader@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.2.1.tgz#ee37797fe8970dcb7e438a6d87b710e817066100"
integrity sha512-nRu+6GfHFERpZLytH/SCfymODCz1SC1NKRv/xn02pr3PEkzU6fvKI76sSxSFOozxDsYljupTRNi/qGMprfdBHA==
dependencies:
"@cornerstonejs/codec-charls" "^0.1.1"
"@cornerstonejs/codec-libjpeg-turbo-8bit" "^0.0.7"
@@ -5632,13 +5637,12 @@ dateformat@^3.0.0:
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
dcmjs@0.19.9:
version "0.19.9"
resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.19.9.tgz#be500101b1f75a28ea9eb7ef845a8ed197355e76"
integrity sha512-V+0tND+SPX5e7WFeLzeoooaTsZbiKmEP2i3AyERsojaXXfaDV5E+pta5IqId4Ok1yfRT5qfTFwLGstGT6nLplA==
dcmjs@0.24.10:
version "0.24.10"
resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.24.10.tgz#048a12a1905175763274545c17bb38b506cdfd00"
integrity sha512-kugEdBqwwTx7lqUxm4jdklkMJiQ8pZ0aqMw9WkszkDU5lDWHyq2kbRccACtcwqygC7j1d36w8uG/vNLMejeMBg==
dependencies:
"@babel/polyfill" "^7.8.3"
"@babel/runtime" "^7.8.4"
"@babel/runtime-corejs2" "^7.17.8"
gl-matrix "^3.1.0"
lodash.clonedeep "^4.5.0"
loglevelnext "^3.0.1"
@@ -11204,7 +11208,7 @@ normalize-url@^3.0.0, normalize-url@^3.3.0:
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=
integrity sha512-Z4B1HgvzR+en62ghwZf6BwAR6x4/pjezsiMcbF9KMLh7xoscpoYhaSXfY3lLkqC68AtW+/qLJ1lzvBIj0FGaTA==
npm-bundled@^1.0.1:
version "1.0.6"
@@ -13515,10 +13519,10 @@ react-transition-group@^4.1.1:
loose-envify "^1.4.0"
prop-types "^15.6.2"
react-vtkjs-viewport@^0.14.4:
version "0.14.4"
resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.14.4.tgz#8cc5a49738fff3fee75ead61c98307bc24710151"
integrity sha512-WKU87iqH6AQ1R8zp1hUXU4hsGwfbkkoUhzSCjbBGZ9Di0ELYNx/xY9DtdmgsKOU5Y5Arp5+VQW/ziFsq2KTcTA==
react-vtkjs-viewport@^0.14.5:
version "0.14.5"
resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.14.5.tgz#95cda594370e557d43aa966392ed92926e6c53c1"
integrity sha512-DE+Ytub6veya3DTvItJdZhkTR8MppoLkrq57qhN9vd2meykeS1fZp9cDyWmq92dJ7IHSuS5FPof8ucsae9ci5w==
dependencies:
date-fns "^2.2.1"
gl-matrix "^3.1.0"
@@ -14495,7 +14499,7 @@ scriptjs@^2.5.9:
seedrandom@2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc"
integrity sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=
integrity sha512-2CkZ9Wn2dS4mMUWQaXLsOAfGD+irMlLEeSP3cMxpGbgyOOzJGFa+MWCOMTOCMyZinHRPxyOj/S/C57li/1to6Q==
seedrandom@^3.0.5:
version "3.0.5"
@@ -14711,7 +14715,7 @@ shebang-regex@^3.0.0:
shelljs@0.7.8:
version "0.7.8"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM=
integrity sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA==
dependencies:
glob "^7.0.0"
interpret "^1.0.0"
@@ -16658,10 +16662,10 @@ 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-dpdb@^1.0.17:
version "1.0.18"
resolved "https://registry.yarnpkg.com/webvr-polyfill-dpdb/-/webvr-polyfill-dpdb-1.0.18.tgz#258484ce06b057bf18898acc911bd173847bce11"
integrity sha512-O0S1ZGEWyPvyZEkS2VbyV7mtir/NM9MNK3EuhbHPoJ8EHTky2pTXehjIl+IiDPr+Lldgx129QGt3NGly7rwRPw==
webvr-polyfill@0.10.8:
version "0.10.8"