fix: A couple of changes to enable cs3d integration build (#5944)
* fix: A couple of changes to enable cs3d integration build * Bun update * fix: Crosshairs tests due to order changes * Fix a race in DicomTagBrowser.spec.ts and update the comparison for the screenshot for seg hydration. * Fix sorting issues by using consistent sort * fix: Inconsistency in scoord loader. Will need an update to screenshot * Fix crosshairs stability issues and random order issues in Scoord * Update the comparison image * Update navigate image * fix: Axios issue * Update to current CS3D
This commit is contained in:
parent
66c8e0c195
commit
f6bbd5c779
2
.github/workflows/playwright.yml
vendored
2
.github/workflows/playwright.yml
vendored
@ -104,7 +104,7 @@ jobs:
|
|||||||
if: steps.cs3d-check.outputs.enabled == 'true' && steps.cs3d-ref.outputs.type == 'version'
|
if: steps.cs3d-check.outputs.enabled == 'true' && steps.cs3d-ref.outputs.type == 'version'
|
||||||
run: |
|
run: |
|
||||||
node .scripts/cs3d-set-version.mjs "${CS3D_VERSION}"
|
node .scripts/cs3d-set-version.mjs "${CS3D_VERSION}"
|
||||||
bun install
|
bun install --config=./bunfig.update-lockfile.toml
|
||||||
env:
|
env:
|
||||||
CS3D_VERSION: ${{ steps.cs3d-ref.outputs.version }}
|
CS3D_VERSION: ${{ steps.cs3d-ref.outputs.version }}
|
||||||
|
|
||||||
|
|||||||
55
.scripts/cs3d-check.mjs
Normal file
55
.scripts/cs3d-check.mjs
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
import path from 'node:path';
|
||||||
|
import { execSync } from 'node:child_process';
|
||||||
|
|
||||||
|
const workflowPath = path.resolve(
|
||||||
|
process.cwd(),
|
||||||
|
'libs',
|
||||||
|
'@cornerstonejs',
|
||||||
|
'.github',
|
||||||
|
'workflows',
|
||||||
|
'ohif-downstream.yml'
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!fs.existsSync(workflowPath)) {
|
||||||
|
console.error(`[cs3d:check] Workflow file not found: ${workflowPath}`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const workflowText = fs.readFileSync(workflowPath, 'utf8');
|
||||||
|
const ohifRefMatch = workflowText.match(/^\s*OHIF_REF:\s*["']?([^"'\r\n]+)["']?\s*$/m);
|
||||||
|
|
||||||
|
if (!ohifRefMatch) {
|
||||||
|
console.error('[cs3d:check] Could not find OHIF_REF in ohif-downstream workflow.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const expectedBranch = ohifRefMatch[1].trim();
|
||||||
|
let currentBranch = '';
|
||||||
|
|
||||||
|
try {
|
||||||
|
currentBranch = execSync('git rev-parse --abbrev-ref HEAD', {
|
||||||
|
cwd: process.cwd(),
|
||||||
|
encoding: 'utf8',
|
||||||
|
}).trim();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('[cs3d:check] Failed to determine current git branch.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentBranch !== expectedBranch) {
|
||||||
|
console.error(
|
||||||
|
`[cs3d:check] Branch mismatch: current='${currentBranch}', expected='${expectedBranch}' from ${path.relative(
|
||||||
|
process.cwd(),
|
||||||
|
workflowPath
|
||||||
|
)}`
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
`[cs3d:check] OK: current branch '${currentBranch}' matches OHIF_REF in ${path.relative(
|
||||||
|
process.cwd(),
|
||||||
|
workflowPath
|
||||||
|
)}`
|
||||||
|
);
|
||||||
@ -122,3 +122,9 @@ for (const pkgPath of pkgPaths) {
|
|||||||
console.log(
|
console.log(
|
||||||
`\nDone: ${totalChanges} version(s) updated to ${version} across ${pkgPaths.length} package files.`
|
`\nDone: ${totalChanges} version(s) updated to ${version} across ${pkgPaths.length} package files.`
|
||||||
);
|
);
|
||||||
|
console.log(
|
||||||
|
'This step changes package.json; the following install must not use a frozen Bun lockfile ' +
|
||||||
|
'(OHIF+CS3D combined “version” CI does: `bun install --config=./bunfig.update-lockfile.toml`). ' +
|
||||||
|
'Other installs stay frozen. Locally after this script, use that bun command and/or ' +
|
||||||
|
'`bun run install:update-lockfile` when you intend to commit lockfile updates.\n'
|
||||||
|
);
|
||||||
|
|||||||
387
bun.lock
387
bun.lock
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
|
"configVersion": 0,
|
||||||
"workspaces": {
|
"workspaces": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ohif-monorepo-root",
|
"name": "ohif-monorepo-root",
|
||||||
@ -50,7 +51,7 @@
|
|||||||
},
|
},
|
||||||
"addOns/externals/devDependencies": {
|
"addOns/externals/devDependencies": {
|
||||||
"name": "@externals/devDependencies",
|
"name": "@externals/devDependencies",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1",
|
||||||
@ -131,22 +132,22 @@
|
|||||||
},
|
},
|
||||||
"addOns/externals/dicom-microscopy-viewer": {
|
"addOns/externals/dicom-microscopy-viewer": {
|
||||||
"name": "@externals/dicom-microscopy-viewer",
|
"name": "@externals/dicom-microscopy-viewer",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dicom-microscopy-viewer": "0.48.17",
|
"dicom-microscopy-viewer": "0.48.17",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"extensions/cornerstone": {
|
"extensions/cornerstone": {
|
||||||
"name": "@ohif/extension-cornerstone",
|
"name": "@ohif/extension-cornerstone",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/ai": "4.20.0",
|
"@cornerstonejs/ai": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/labelmap-interpolation": "4.20.0",
|
"@cornerstonejs/labelmap-interpolation": "4.21.2",
|
||||||
"@cornerstonejs/polymorphic-segmentation": "4.20.0",
|
"@cornerstonejs/polymorphic-segmentation": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@icr/polyseg-wasm": "0.4.0",
|
"@icr/polyseg-wasm": "0.4.0",
|
||||||
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1",
|
||||||
@ -164,9 +165,9 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.20.0",
|
"@cornerstonejs/dicom-image-loader": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -178,18 +179,18 @@
|
|||||||
},
|
},
|
||||||
"extensions/cornerstone-dicom-pmap": {
|
"extensions/cornerstone-dicom-pmap": {
|
||||||
"name": "@ohif/extension-cornerstone-dicom-pmap",
|
"name": "@ohif/extension-cornerstone-dicom-pmap",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -200,15 +201,15 @@
|
|||||||
},
|
},
|
||||||
"extensions/cornerstone-dicom-rt": {
|
"extensions/cornerstone-dicom-rt": {
|
||||||
"name": "@ohif/extension-cornerstone-dicom-rt",
|
"name": "@ohif/extension-cornerstone-dicom-rt",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -219,18 +220,18 @@
|
|||||||
},
|
},
|
||||||
"extensions/cornerstone-dicom-seg": {
|
"extensions/cornerstone-dicom-seg": {
|
||||||
"name": "@ohif/extension-cornerstone-dicom-seg",
|
"name": "@ohif/extension-cornerstone-dicom-seg",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -241,19 +242,19 @@
|
|||||||
},
|
},
|
||||||
"extensions/cornerstone-dicom-sr": {
|
"extensions/cornerstone-dicom-sr": {
|
||||||
"name": "@ohif/extension-cornerstone-dicom-sr",
|
"name": "@ohif/extension-cornerstone-dicom-sr",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-measurement-tracking": "3.13.0-beta.49",
|
"@ohif/extension-measurement-tracking": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -263,19 +264,19 @@
|
|||||||
},
|
},
|
||||||
"extensions/cornerstone-dynamic-volume": {
|
"extensions/cornerstone-dynamic-volume": {
|
||||||
"name": "@ohif/extension-cornerstone-dynamic-volume",
|
"name": "@ohif/extension-cornerstone-dynamic-volume",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -285,7 +286,7 @@
|
|||||||
},
|
},
|
||||||
"extensions/default": {
|
"extensions/default": {
|
||||||
"name": "@ohif/extension-default",
|
"name": "@ohif/extension-default",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/calculate-suv": "1.1.0",
|
"@cornerstonejs/calculate-suv": "1.1.0",
|
||||||
@ -294,8 +295,8 @@
|
|||||||
"react-color": "2.19.3",
|
"react-color": "2.19.3",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicomweb-client": "0.10.4",
|
"dicomweb-client": "0.10.4",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
@ -309,7 +310,7 @@
|
|||||||
},
|
},
|
||||||
"extensions/dicom-microscopy": {
|
"extensions/dicom-microscopy": {
|
||||||
"name": "@ohif/extension-dicom-microscopy",
|
"name": "@ohif/extension-dicom-microscopy",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/codec-charls": "1.2.3",
|
"@cornerstonejs/codec-charls": "1.2.3",
|
||||||
@ -320,10 +321,10 @@
|
|||||||
"mathjs": "12.4.3",
|
"mathjs": "12.4.3",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -334,14 +335,14 @@
|
|||||||
},
|
},
|
||||||
"extensions/dicom-pdf": {
|
"extensions/dicom-pdf": {
|
||||||
"name": "@ohif/extension-dicom-pdf",
|
"name": "@ohif/extension-dicom-pdf",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -351,14 +352,14 @@
|
|||||||
},
|
},
|
||||||
"extensions/dicom-video": {
|
"extensions/dicom-video": {
|
||||||
"name": "@ohif/extension-dicom-video",
|
"name": "@ohif/extension-dicom-video",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -368,20 +369,20 @@
|
|||||||
},
|
},
|
||||||
"extensions/measurement-tracking": {
|
"extensions/measurement-tracking": {
|
||||||
"name": "@ohif/extension-measurement-tracking",
|
"name": "@ohif/extension-measurement-tracking",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"@xstate/react": "3.2.2",
|
"@xstate/react": "3.2.2",
|
||||||
"xstate": "4.38.3",
|
"xstate": "4.38.3",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"lodash.debounce": "4.0.8",
|
"lodash.debounce": "4.0.8",
|
||||||
@ -394,14 +395,14 @@
|
|||||||
},
|
},
|
||||||
"extensions/test-extension": {
|
"extensions/test-extension": {
|
||||||
"name": "@ohif/extension-test",
|
"name": "@ohif/extension-test",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -411,14 +412,14 @@
|
|||||||
},
|
},
|
||||||
"extensions/tmtv": {
|
"extensions/tmtv": {
|
||||||
"name": "@ohif/extension-tmtv",
|
"name": "@ohif/extension-tmtv",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.54",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.54",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -428,16 +429,16 @@
|
|||||||
},
|
},
|
||||||
"extensions/usAnnotation": {
|
"extensions/usAnnotation": {
|
||||||
"name": "@ohif/extension-ultrasound-pleura-bline",
|
"name": "@ohif/extension-ultrasound-pleura-bline",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"@ohif/ui-next": "3.13.0-beta.49",
|
"@ohif/ui-next": "3.13.0-beta.55",
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.28.0",
|
"@babel/core": "7.28.0",
|
||||||
@ -476,7 +477,7 @@
|
|||||||
},
|
},
|
||||||
"modes/basic": {
|
"modes/basic": {
|
||||||
"name": "@ohif/mode-basic",
|
"name": "@ohif/mode-basic",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
},
|
},
|
||||||
@ -485,19 +486,19 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.55",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/basic-dev-mode": {
|
"modes/basic-dev-mode": {
|
||||||
"name": "@ohif/mode-basic-dev-mode",
|
"name": "@ohif/mode-basic-dev-mode",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
@ -507,17 +508,17 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.55",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/basic-test-mode": {
|
"modes/basic-test-mode": {
|
||||||
"name": "@ohif/mode-test",
|
"name": "@ohif/mode-test",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
@ -527,19 +528,19 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.55",
|
||||||
"@ohif/extension-measurement-tracking": "3.13.0-beta.49",
|
"@ohif/extension-measurement-tracking": "3.13.0-beta.55",
|
||||||
"@ohif/extension-test": "3.13.0-beta.49",
|
"@ohif/extension-test": "3.13.0-beta.55",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/longitudinal": {
|
"modes/longitudinal": {
|
||||||
"name": "@ohif/mode-longitudinal",
|
"name": "@ohif/mode-longitudinal",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
@ -549,33 +550,33 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.55",
|
||||||
"@ohif/extension-measurement-tracking": "3.13.0-beta.49",
|
"@ohif/extension-measurement-tracking": "3.13.0-beta.55",
|
||||||
"@ohif/mode-basic": "3.13.0-beta.49",
|
"@ohif/mode-basic": "3.13.0-beta.55",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/microscopy": {
|
"modes/microscopy": {
|
||||||
"name": "@ohif/mode-microscopy",
|
"name": "@ohif/mode-microscopy",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-microscopy": "3.13.0-beta.49",
|
"@ohif/extension-dicom-microscopy": "3.13.0-beta.55",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/preclinical-4d": {
|
"modes/preclinical-4d": {
|
||||||
"name": "@ohif/mode-preclinical-4d",
|
"name": "@ohif/mode-preclinical-4d",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
},
|
},
|
||||||
@ -584,17 +585,17 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone-dynamic-volume": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dynamic-volume": "3.13.0-beta.54",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.54",
|
||||||
"@ohif/extension-tmtv": "3.13.0-beta.49",
|
"@ohif/extension-tmtv": "3.13.0-beta.54",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/segmentation": {
|
"modes/segmentation": {
|
||||||
"name": "@ohif/mode-segmentation",
|
"name": "@ohif/mode-segmentation",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
@ -623,20 +624,20 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.54",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.54",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.54",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.54",
|
||||||
"@ohif/mode-basic": "3.13.0-beta.49",
|
"@ohif/mode-basic": "3.13.0-beta.54",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/tmtv": {
|
"modes/tmtv": {
|
||||||
"name": "@ohif/mode-tmtv",
|
"name": "@ohif/mode-tmtv",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
@ -646,25 +647,25 @@
|
|||||||
"webpack-merge": "5.10.0",
|
"webpack-merge": "5.10.0",
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.54",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.54",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.54",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.54",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.54",
|
||||||
"@ohif/extension-measurement-tracking": "3.13.0-beta.49",
|
"@ohif/extension-measurement-tracking": "3.13.0-beta.54",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"modes/usAnnotation": {
|
"modes/usAnnotation": {
|
||||||
"name": "@ohif/mode-ultrasound-pleura-bline",
|
"name": "@ohif/mode-ultrasound-pleura-bline",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.49",
|
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.55",
|
||||||
"i18next": "17.3.1",
|
"i18next": "17.3.1",
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -693,34 +694,34 @@
|
|||||||
},
|
},
|
||||||
"platform/app": {
|
"platform/app": {
|
||||||
"name": "@ohif/app",
|
"name": "@ohif/app",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/codec-charls": "1.2.3",
|
"@cornerstonejs/codec-charls": "1.2.3",
|
||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.20.0",
|
"@cornerstonejs/dicom-image-loader": "4.21.2",
|
||||||
"@emotion/serialize": "1.3.3",
|
"@emotion/serialize": "1.3.3",
|
||||||
"@ohif/core": "3.13.0-beta.49",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-rt": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-seg": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.49",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.49",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-microscopy": "3.13.0-beta.49",
|
"@ohif/extension-dicom-microscopy": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-pdf": "3.13.0-beta.49",
|
"@ohif/extension-dicom-pdf": "3.13.0-beta.55",
|
||||||
"@ohif/extension-dicom-video": "3.13.0-beta.49",
|
"@ohif/extension-dicom-video": "3.13.0-beta.55",
|
||||||
"@ohif/extension-test": "3.13.0-beta.49",
|
"@ohif/extension-test": "3.13.0-beta.55",
|
||||||
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.49",
|
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.55",
|
||||||
"@ohif/i18n": "3.13.0-beta.49",
|
"@ohif/i18n": "3.13.0-beta.55",
|
||||||
"@ohif/mode-basic-dev-mode": "3.13.0-beta.49",
|
"@ohif/mode-basic-dev-mode": "3.13.0-beta.55",
|
||||||
"@ohif/mode-longitudinal": "3.13.0-beta.49",
|
"@ohif/mode-longitudinal": "3.13.0-beta.55",
|
||||||
"@ohif/mode-microscopy": "3.13.0-beta.49",
|
"@ohif/mode-microscopy": "3.13.0-beta.55",
|
||||||
"@ohif/mode-test": "3.13.0-beta.49",
|
"@ohif/mode-test": "3.13.0-beta.55",
|
||||||
"@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.49",
|
"@ohif/mode-ultrasound-pleura-bline": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"@ohif/ui-next": "3.13.0-beta.49",
|
"@ohif/ui-next": "3.13.0-beta.55",
|
||||||
"@svgr/webpack": "8.1.0",
|
"@svgr/webpack": "8.1.0",
|
||||||
"@types/react": "18.3.23",
|
"@types/react": "18.3.23",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
@ -772,7 +773,7 @@
|
|||||||
},
|
},
|
||||||
"platform/cli": {
|
"platform/cli": {
|
||||||
"name": "@ohif/cli",
|
"name": "@ohif/cli",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"bin": {
|
"bin": {
|
||||||
"ohif-cli": "src/index.js",
|
"ohif-cli": "src/index.js",
|
||||||
},
|
},
|
||||||
@ -796,7 +797,7 @@
|
|||||||
},
|
},
|
||||||
"platform/core": {
|
"platform/core": {
|
||||||
"name": "@ohif/core",
|
"name": "@ohif/core",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
@ -821,16 +822,16 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.20.0",
|
"@cornerstonejs/dicom-image-loader": "4.21.2",
|
||||||
"@ohif/ui": "3.13.0-beta.49",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"cornerstone-math": "0.1.9",
|
"cornerstone-math": "0.1.10",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"platform/i18n": {
|
"platform/i18n": {
|
||||||
"name": "@ohif/i18n",
|
"name": "@ohif/i18n",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next-locize-backend": "2.2.2",
|
"i18next-locize-backend": "2.2.2",
|
||||||
@ -855,7 +856,7 @@
|
|||||||
},
|
},
|
||||||
"platform/ui": {
|
"platform/ui": {
|
||||||
"name": "@ohif/ui",
|
"name": "@ohif/ui",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@testing-library/react": "13.4.0",
|
"@testing-library/react": "13.4.0",
|
||||||
"browser-detect": "0.2.28",
|
"browser-detect": "0.2.28",
|
||||||
@ -905,7 +906,7 @@
|
|||||||
},
|
},
|
||||||
"platform/ui-next": {
|
"platform/ui-next": {
|
||||||
"name": "@ohif/ui-next",
|
"name": "@ohif/ui-next",
|
||||||
"version": "3.13.0-beta.49",
|
"version": "3.13.0-beta.55",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@radix-ui/react-accordion": "1.2.11",
|
"@radix-ui/react-accordion": "1.2.11",
|
||||||
"@radix-ui/react-checkbox": "1.3.2",
|
"@radix-ui/react-checkbox": "1.3.2",
|
||||||
@ -951,7 +952,7 @@
|
|||||||
"overrides": {
|
"overrides": {
|
||||||
"@babel/runtime-corejs2": "7.26.10",
|
"@babel/runtime-corejs2": "7.26.10",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"axios": "1.13.5",
|
"axios": "1.15.0",
|
||||||
"body-parser": "1.20.3",
|
"body-parser": "1.20.3",
|
||||||
"commander": "8.3.0",
|
"commander": "8.3.0",
|
||||||
"core-js": "3.45.1",
|
"core-js": "3.45.1",
|
||||||
@ -1241,9 +1242,9 @@
|
|||||||
|
|
||||||
"@bcoe/v8-coverage": ["@bcoe/v8-coverage@0.2.3", "", {}, "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="],
|
"@bcoe/v8-coverage": ["@bcoe/v8-coverage@0.2.3", "", {}, "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="],
|
||||||
|
|
||||||
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.20.0", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.20.0", "@cornerstonejs/tools": "4.20.0" } }, "sha512-OxplEaHadms6mZ5fX8o9zkMVw7rSjxP6+KRovBAqLXlXsM9hj7MgencWG2JX6SR2bUXvHVusiV9cdECcDMNvsg=="],
|
"@cornerstonejs/adapters": ["@cornerstonejs/adapters@4.21.2", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "gl-matrix": "3.4.3", "ndarray": "1.0.19" }, "peerDependencies": { "@cornerstonejs/core": "4.21.2", "@cornerstonejs/tools": "4.21.2" } }, "sha512-BTmj7jZDJky6XOsoueNq+qMavFLMvj46fftD08YovKWUDfoq7osOVpL9PBcnWODx05obsyagkDRyrkqTGd14wg=="],
|
||||||
|
|
||||||
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.20.0", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "gl-matrix": "3.4.3", "lodash.clonedeep": "4.5.0", "ndarray": "1.0.19", "onnxruntime-common": "1.17.1", "onnxruntime-web": "1.17.1" }, "peerDependencies": { "@cornerstonejs/core": "4.20.0", "@cornerstonejs/tools": "4.20.0" } }, "sha512-65wl8mXy/N6DUjLlNZvKLgWTGWVu4kWDupxNU5p7Pd3ZxU6RnbG6d3pcM30D/bcQEuUWLEQBDodtBeJEsxJxoA=="],
|
"@cornerstonejs/ai": ["@cornerstonejs/ai@4.21.2", "", { "dependencies": { "@babel/runtime-corejs2": "7.26.10", "buffer": "6.0.3", "dcmjs": "0.49.4", "gl-matrix": "3.4.3", "lodash.clonedeep": "4.5.0", "ndarray": "1.0.19", "onnxruntime-common": "1.17.1", "onnxruntime-web": "1.17.1" }, "peerDependencies": { "@cornerstonejs/core": "4.21.2", "@cornerstonejs/tools": "4.21.2" } }, "sha512-I7YIOvcVnkDkkxH/88xJ0Yuemd0Qm6O9TO2nyprzwui/ZLMPD0bTcWPXks+ktxIAtz9rTRyNNodLvbF6aKk3DA=="],
|
||||||
|
|
||||||
"@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="],
|
"@cornerstonejs/calculate-suv": ["@cornerstonejs/calculate-suv@1.1.0", "", {}, "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="],
|
||||||
|
|
||||||
@ -1255,15 +1256,15 @@
|
|||||||
|
|
||||||
"@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="],
|
"@cornerstonejs/codec-openjph": ["@cornerstonejs/codec-openjph@2.4.7", "", {}, "sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w=="],
|
||||||
|
|
||||||
"@cornerstonejs/core": ["@cornerstonejs/core@4.20.0", "", { "dependencies": { "@kitware/vtk.js": "34.15.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-rcrctEIcyyAwQ6zcVt1wbYoTPyH6YNLNBOBB/aLeJZfLqGAfca+Cgf5K+KSGFJX1gZOdQZmYGmAF9P58B9PNVw=="],
|
"@cornerstonejs/core": ["@cornerstonejs/core@4.21.2", "", { "dependencies": { "@kitware/vtk.js": "34.15.1", "comlink": "4.4.2", "gl-matrix": "3.4.3", "loglevel": "1.9.2" } }, "sha512-XnhMGan9Ebnu2f3W9Q2iK6ShHGCLa1UYEPRYHzILgtnTbo5qHsZPay+IO/mjGQYH3VlTUgZDqzMRNBHXmvoiLg=="],
|
||||||
|
|
||||||
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.20.0", "", { "dependencies": { "@cornerstonejs/codec-charls": "1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2", "@cornerstonejs/codec-openjpeg": "1.3.0", "@cornerstonejs/codec-openjph": "2.4.7", "comlink": "4.4.2", "dicom-parser": "1.8.21", "jpeg-lossless-decoder-js": "2.1.2", "pako": "2.1.0", "uuid": "9.0.1" }, "peerDependencies": { "@cornerstonejs/core": "4.20.0" } }, "sha512-A7N2ekKEMEEKbw0QecbmgtL89LMpLZDkyzt2a97cZM9qyUdhdETyzL8m6guVtP10Ga5l9Aq9mFt2ifGtwTw0wA=="],
|
"@cornerstonejs/dicom-image-loader": ["@cornerstonejs/dicom-image-loader@4.21.2", "", { "dependencies": { "@cornerstonejs/codec-charls": "1.2.3", "@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2", "@cornerstonejs/codec-openjpeg": "1.3.0", "@cornerstonejs/codec-openjph": "2.4.7", "comlink": "4.4.2", "dicom-parser": "1.8.21", "jpeg-lossless-decoder-js": "2.1.2", "pako": "2.1.0", "uuid": "9.0.1" }, "peerDependencies": { "@cornerstonejs/core": "4.21.2" } }, "sha512-g/2qTHA1P7VLmZ7OEHkH0S4jYIJsqb8128KMmpYuea2i3WpT+gOLf82eNYFBlnOCmwRitzs1YLHZM1/nDz4K/g=="],
|
||||||
|
|
||||||
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.20.0", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.20.0", "@cornerstonejs/tools": "4.20.0", "@kitware/vtk.js": "34.15.1" } }, "sha512-VDUkvRZPCk98NkBFH0qFNEfjQoyYp2Th2+0KAJtDPeA0aqSPhugh14uJQ5uKEkDzZFUG/TUpeaHi1kldx6C5Gw=="],
|
"@cornerstonejs/labelmap-interpolation": ["@cornerstonejs/labelmap-interpolation@4.21.2", "", { "dependencies": { "@itk-wasm/morphological-contour-interpolation": "1.1.0", "itk-wasm": "1.0.0-b.165" }, "peerDependencies": { "@cornerstonejs/core": "4.21.2", "@cornerstonejs/tools": "4.21.2", "@kitware/vtk.js": "34.15.1" } }, "sha512-giW2IVPqZj3Bn4o9KIL8QaHWGPHoFD8R9aOvqlBQgSyUJF6XFIpfQDixb9txZhmkK0xlMrn/rbnEcoeFLoM1Pw=="],
|
||||||
|
|
||||||
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.20.0", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.20.0", "@cornerstonejs/tools": "4.20.0", "@kitware/vtk.js": "34.15.1" } }, "sha512-tsMqAd/GrBeEFB2WU2K+YsGXeaP/1yD635yO1udpG2dloRaJrvFiK1dFMFCBLK3Xd768ZS1nq/MZEel00+vYxA=="],
|
"@cornerstonejs/polymorphic-segmentation": ["@cornerstonejs/polymorphic-segmentation@4.21.2", "", { "dependencies": { "@icr/polyseg-wasm": "0.4.0" }, "peerDependencies": { "@cornerstonejs/core": "4.21.2", "@cornerstonejs/tools": "4.21.2", "@kitware/vtk.js": "34.15.1" } }, "sha512-nY1sGmmVjKT0M7Z/rwskZmn+g90W9PACAKascjYF/LXrOyJozN4zVZn7HzkzYbH3+vcCGvwShEdLvDsDxaomsw=="],
|
||||||
|
|
||||||
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.20.0", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.20.0", "@kitware/vtk.js": "34.15.1", "@types/d3-array": "3.2.1", "@types/d3-interpolate": "3.0.4", "d3-array": "3.2.4", "d3-interpolate": "3.0.1", "gl-matrix": "3.4.3" } }, "sha512-kphlW17eohBRk8MXEgdufM2t8MC5JqdlWUCfXu5rfg0KS1ut6iSWGAxFS+12noPR5qDzfVEYnD+4NkL37jg8pw=="],
|
"@cornerstonejs/tools": ["@cornerstonejs/tools@4.21.2", "", { "dependencies": { "@types/offscreencanvas": "2019.7.3", "comlink": "4.4.2", "lodash.get": "4.4.2" }, "peerDependencies": { "@cornerstonejs/core": "4.21.2", "@kitware/vtk.js": "34.15.1", "@types/d3-array": "3.2.1", "@types/d3-interpolate": "3.0.4", "d3-array": "3.2.4", "d3-interpolate": "3.0.1", "gl-matrix": "3.4.3" } }, "sha512-dBOFIzFLVnCEEBOaXvA+cUNP+bzkdFwLDjEX3/0dP/4hjoFkZeq+AINAJn6oG5UKycqQOLhQ5gn3z4ugYK4ujQ=="],
|
||||||
|
|
||||||
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
|
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
|
||||||
|
|
||||||
@ -2323,7 +2324,7 @@
|
|||||||
|
|
||||||
"axe-core": ["axe-core@4.10.3", "", {}, "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg=="],
|
"axe-core": ["axe-core@4.10.3", "", {}, "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg=="],
|
||||||
|
|
||||||
"axios": ["axios@1.13.5", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q=="],
|
"axios": ["axios@1.15.0", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } }, "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q=="],
|
||||||
|
|
||||||
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
|
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
|
||||||
|
|
||||||
@ -5521,7 +5522,7 @@
|
|||||||
|
|
||||||
"asn1.js/bn.js": ["bn.js@4.12.2", "", {}, "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="],
|
"asn1.js/bn.js": ["bn.js@4.12.2", "", {}, "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw=="],
|
||||||
|
|
||||||
"axios/proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
|
"axios/proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="],
|
||||||
|
|
||||||
"babel-jest/babel-plugin-istanbul": ["babel-plugin-istanbul@6.1.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA=="],
|
"babel-jest/babel-plugin-istanbul": ["babel-plugin-istanbul@6.1.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA=="],
|
||||||
|
|
||||||
|
|||||||
@ -46,8 +46,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@kitware/vtk.js": "34.15.1"
|
"@kitware/vtk.js": "34.15.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,8 +46,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@kitware/vtk.js": "34.15.1"
|
"@kitware/vtk.js": "34.15.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,9 +46,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"classnames": "2.5.1"
|
"classnames": "2.5.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -200,8 +200,13 @@ async function _load(
|
|||||||
srDisplaySet.isRehydratable = isRehydratable(srDisplaySet, mappings);
|
srDisplaySet.isRehydratable = isRehydratable(srDisplaySet, mappings);
|
||||||
srDisplaySet.isLoaded = true;
|
srDisplaySet.isLoaded = true;
|
||||||
|
|
||||||
/** Check currently added displaySets and add measurements if the sources exist */
|
/** Check currently added displaySets and add measurements if the sources exist.
|
||||||
displaySetService.activeDisplaySets.forEach(activeDisplaySet => {
|
* Walk the SR's study first in default series order (not load order) so SCOORD3D
|
||||||
|
* FrameOfReference matching picks a stable series when several share FOR. */
|
||||||
|
const displaySetsForSRPass = utils.sortDisplaySetsCopy(displaySetService.activeDisplaySets, {
|
||||||
|
studyInstanceUIDFirst: srDisplaySet.StudyInstanceUID,
|
||||||
|
});
|
||||||
|
displaySetsForSRPass.forEach(activeDisplaySet => {
|
||||||
_checkIfCanAddMeasurementsToDisplaySet(
|
_checkIfCanAddMeasurementsToDisplaySet(
|
||||||
srDisplaySet,
|
srDisplaySet,
|
||||||
activeDisplaySet,
|
activeDisplaySet,
|
||||||
|
|||||||
@ -42,8 +42,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"classnames": "2.5.1"
|
"classnames": "2.5.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,7 +40,7 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.20.0",
|
"@cornerstonejs/dicom-image-loader": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.55",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/ui": "3.13.0-beta.55",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
@ -53,12 +53,12 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.20.0",
|
"@cornerstonejs/adapters": "4.21.2",
|
||||||
"@cornerstonejs/ai": "4.20.0",
|
"@cornerstonejs/ai": "4.21.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/labelmap-interpolation": "4.20.0",
|
"@cornerstonejs/labelmap-interpolation": "4.21.2",
|
||||||
"@cornerstonejs/polymorphic-segmentation": "4.20.0",
|
"@cornerstonejs/polymorphic-segmentation": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@icr/polyseg-wasm": "0.4.0",
|
"@icr/polyseg-wasm": "0.4.0",
|
||||||
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1",
|
||||||
|
|||||||
@ -1,7 +1,14 @@
|
|||||||
import { utils } from '@ohif/core';
|
import { utils } from '@ohif/core';
|
||||||
|
|
||||||
const { sortingCriteria } = utils;
|
const { sortingCriteria } = utils;
|
||||||
|
const { seriesSortCriteria } = sortingCriteria;
|
||||||
|
|
||||||
|
/** Stable series order for e2e (Playwright sets TEST_ENV=true via cross-env). */
|
||||||
|
const sortingCriteriaFn =
|
||||||
|
process.env.TEST_ENV === 'true'
|
||||||
|
? seriesSortCriteria.compareSeriesUID
|
||||||
|
: seriesSortCriteria.seriesInfoSortingCriteria;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
sortingCriteria: sortingCriteria.seriesSortCriteria.seriesInfoSortingCriteria,
|
sortingCriteria: sortingCriteriaFn,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -32,8 +32,8 @@
|
|||||||
"start": "yarn run dev"
|
"start": "yarn run dev"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.55",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.55",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
|
|||||||
@ -42,8 +42,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.55",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
"@ohif/extension-default": "3.13.0-beta.55",
|
"@ohif/extension-default": "3.13.0-beta.55",
|
||||||
|
|||||||
@ -34,8 +34,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/tools": "4.20.0",
|
"@cornerstonejs/tools": "4.21.2",
|
||||||
"@ohif/core": "3.13.0-beta.55",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
"@ohif/extension-cornerstone-dicom-sr": "3.13.0-beta.55",
|
||||||
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.55",
|
"@ohif/extension-ultrasound-pleura-bline": "3.13.0-beta.55",
|
||||||
|
|||||||
@ -78,7 +78,10 @@
|
|||||||
"lerna:customVersion": "node version.mjs",
|
"lerna:customVersion": "node version.mjs",
|
||||||
"link-list": "npm ls --depth=0 --link=true",
|
"link-list": "npm ls --depth=0 --link=true",
|
||||||
"cs3d:checkout": "cd libs/@cornerstonejs && git fetch && git checkout",
|
"cs3d:checkout": "cd libs/@cornerstonejs && git fetch && git checkout",
|
||||||
"cs3d:build": "cd libs/@cornerstonejs && yarn install && yarn run build:esm",
|
"cs3d:check": "node .scripts/cs3d-check.mjs",
|
||||||
|
"cs3d:build": "cd libs/@cornerstonejs && yarn run build:esm",
|
||||||
|
"cs3d:watch": "cd libs/@cornerstonejs && yarn run build:esm:watch",
|
||||||
|
"cs3d:install": "cd libs/@cornerstonejs && yarn install",
|
||||||
"cs3d:link": "node libs/@cornerstonejs/scripts/link-ohif-cornerstone-node-modules.mjs .",
|
"cs3d:link": "node libs/@cornerstonejs/scripts/link-ohif-cornerstone-node-modules.mjs .",
|
||||||
"cs3d:unlink": "node libs/@cornerstonejs/scripts/unlink-ohif-cornerstone-node-modules.mjs ."
|
"cs3d:unlink": "node libs/@cornerstonejs/scripts/unlink-ohif-cornerstone-node-modules.mjs ."
|
||||||
},
|
},
|
||||||
@ -150,7 +153,7 @@
|
|||||||
"package-json": "8.1.1",
|
"package-json": "8.1.1",
|
||||||
"rollup": "2.80.0",
|
"rollup": "2.80.0",
|
||||||
"body-parser": "1.20.3",
|
"body-parser": "1.20.3",
|
||||||
"axios": "1.13.5",
|
"axios": "1.15.0",
|
||||||
"core-js": "3.45.1",
|
"core-js": "3.45.1",
|
||||||
"@babel/runtime-corejs2": "7.26.10",
|
"@babel/runtime-corejs2": "7.26.10",
|
||||||
"tapable": "2.2.2",
|
"tapable": "2.2.2",
|
||||||
|
|||||||
@ -54,7 +54,7 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.20.0",
|
"@cornerstonejs/dicom-image-loader": "4.21.2",
|
||||||
"@emotion/serialize": "1.3.3",
|
"@emotion/serialize": "1.3.3",
|
||||||
"@ohif/core": "3.13.0-beta.55",
|
"@ohif/core": "3.13.0-beta.55",
|
||||||
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
"@ohif/extension-cornerstone": "3.13.0-beta.55",
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { DicomMetadataStore, log, utils, Enums } from '@ohif/core';
|
|||||||
import getStudies from './studiesList';
|
import getStudies from './studiesList';
|
||||||
import isSeriesFilterUsed from '../../utils/isSeriesFilterUsed';
|
import isSeriesFilterUsed from '../../utils/isSeriesFilterUsed';
|
||||||
|
|
||||||
const { seriesSortCriteria, getSplitParam } = utils;
|
const { getSplitParam } = utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the route.
|
* Initialize the route.
|
||||||
@ -34,7 +34,10 @@ export async function defaultRouteInit(
|
|||||||
const displaySets = displaySetService.getActiveDisplaySets();
|
const displaySets = displaySetService.getActiveDisplaySets();
|
||||||
// The display sets are not necessarily in load order, even though the
|
// The display sets are not necessarily in load order, even though the
|
||||||
// series got started in load order, so re-sort them before hanging
|
// series got started in load order, so re-sort them before hanging
|
||||||
const sortCriteria = seriesSortCriteria.default;
|
const sortCriteria = customizationService.getCustomization('sortingCriteria') as (
|
||||||
|
a,
|
||||||
|
b
|
||||||
|
) => number;
|
||||||
|
|
||||||
if (!displaySets || !displaySets.length) {
|
if (!displaySets || !displaySets.length) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -37,10 +37,10 @@
|
|||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
"@cornerstonejs/codec-libjpeg-turbo-8bit": "1.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/core": "4.20.0",
|
"@cornerstonejs/core": "4.21.2",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.20.0",
|
"@cornerstonejs/dicom-image-loader": "4.21.2",
|
||||||
"@ohif/ui": "3.13.0-beta.55",
|
"@ohif/ui": "3.13.0-beta.55",
|
||||||
"cornerstone-math": "0.1.9",
|
"cornerstone-math": "0.1.10",
|
||||||
"dicom-parser": "1.8.21"
|
"dicom-parser": "1.8.21"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@ -145,5 +145,6 @@ export {
|
|||||||
export { OHIF };
|
export { OHIF };
|
||||||
|
|
||||||
export type { Types };
|
export type { Types };
|
||||||
|
export type { SortDisplaySetsCopyOptions } from './utils/sortStudy';
|
||||||
|
|
||||||
export default OHIF;
|
export default OHIF;
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
import { useSystem } from '../contextProviders/SystemProvider';
|
import { useSystem } from '../contextProviders/SystemProvider';
|
||||||
import i18n from 'i18next';
|
import i18n from 'i18next';
|
||||||
import { seriesSortCriteria } from './sortStudy';
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tab properties that drive which tab group is used for thumbnail display.
|
* Tab properties that drive which tab group is used for thumbnail display.
|
||||||
@ -41,7 +39,6 @@ export function createStudyBrowserTabs(
|
|||||||
const { servicesManager } = useSystem();
|
const { servicesManager } = useSystem();
|
||||||
const { displaySetService, customizationService } = servicesManager.services;
|
const { displaySetService, customizationService } = servicesManager.services;
|
||||||
|
|
||||||
const shouldSortBySeriesUID = process.env.TEST_ENV === 'true';
|
|
||||||
const primaryStudies = [];
|
const primaryStudies = [];
|
||||||
const allStudies = [];
|
const allStudies = [];
|
||||||
|
|
||||||
@ -50,10 +47,10 @@ export function createStudyBrowserTabs(
|
|||||||
ds => ds.StudyInstanceUID === study.studyInstanceUid
|
ds => ds.StudyInstanceUID === study.studyInstanceUid
|
||||||
);
|
);
|
||||||
|
|
||||||
// sort them by seriesInstanceUID
|
const sortCriteria = customizationService.getCustomization('sortingCriteria') as (
|
||||||
const sortCriteria = shouldSortBySeriesUID
|
a,
|
||||||
? seriesSortCriteria.compareSeriesUID
|
b
|
||||||
: (customizationService.getCustomization('sortingCriteria') as (a, b) => number);
|
) => number;
|
||||||
const sortedDisplaySets = displaySetsForStudy.sort((a, b) => {
|
const sortedDisplaySets = displaySetsForStudy.sort((a, b) => {
|
||||||
const displaySetA = displaySetService.getDisplaySetByUID(a.displaySetInstanceUID);
|
const displaySetA = displaySetService.getDisplaySetByUID(a.displaySetInstanceUID);
|
||||||
const displaySetB = displaySetService.getDisplaySetByUID(b.displaySetInstanceUID);
|
const displaySetB = displaySetService.getDisplaySetByUID(b.displaySetInstanceUID);
|
||||||
|
|||||||
@ -34,6 +34,7 @@ import {
|
|||||||
sortStudy,
|
sortStudy,
|
||||||
sortStudySeries,
|
sortStudySeries,
|
||||||
sortStudyInstances,
|
sortStudyInstances,
|
||||||
|
sortDisplaySetsCopy,
|
||||||
sortingCriteria,
|
sortingCriteria,
|
||||||
seriesSortCriteria,
|
seriesSortCriteria,
|
||||||
instancesSortCriteria,
|
instancesSortCriteria,
|
||||||
@ -63,6 +64,7 @@ const utils = {
|
|||||||
sortStudy,
|
sortStudy,
|
||||||
sortStudySeries,
|
sortStudySeries,
|
||||||
sortStudyInstances,
|
sortStudyInstances,
|
||||||
|
sortDisplaySetsCopy,
|
||||||
sortingCriteria,
|
sortingCriteria,
|
||||||
seriesSortCriteria,
|
seriesSortCriteria,
|
||||||
instancesSortCriteria,
|
instancesSortCriteria,
|
||||||
|
|||||||
@ -132,6 +132,48 @@ export const sortingCriteria = {
|
|||||||
instancesSortCriteria,
|
instancesSortCriteria,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type SortDisplaySetsCopyOptions = {
|
||||||
|
/**
|
||||||
|
* Display sets for this study are sorted by series criteria and listed first;
|
||||||
|
* all other display sets follow in their original relative order.
|
||||||
|
*/
|
||||||
|
studyInstanceUIDFirst?: string;
|
||||||
|
/** Defaults to {@link seriesSortCriteria.default} (not app customization). */
|
||||||
|
seriesSortingCriteria?: (a, b) => number;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new array of display sets sorted by default series order
|
||||||
|
* ({@link seriesSortCriteria.default} / {@link seriesInfoSortingCriteria}), not
|
||||||
|
* the app customization. Does not mutate the input.
|
||||||
|
*
|
||||||
|
* With `studyInstanceUIDFirst`, only that study's display sets are sorted; they
|
||||||
|
* are placed before the rest, which keeps source order (e.g. load order).
|
||||||
|
*/
|
||||||
|
export function sortDisplaySetsCopy(
|
||||||
|
displaySets,
|
||||||
|
options?: SortDisplaySetsCopyOptions | null
|
||||||
|
) {
|
||||||
|
const seriesSortingCriteria =
|
||||||
|
options?.seriesSortingCriteria ?? seriesSortCriteria.default;
|
||||||
|
const studyFirst = options?.studyInstanceUIDFirst;
|
||||||
|
|
||||||
|
if (!studyFirst) {
|
||||||
|
return [...displaySets].sort(seriesSortingCriteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
const sameStudy = [];
|
||||||
|
const otherStudy = [];
|
||||||
|
for (const ds of displaySets) {
|
||||||
|
if (ds.StudyInstanceUID === studyFirst) {
|
||||||
|
sameStudy.push(ds);
|
||||||
|
} else {
|
||||||
|
otherStudy.push(ds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [...[...sameStudy].sort(seriesSortingCriteria), ...otherStudy];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sorts given series or display sets
|
* Sorts given series or display sets
|
||||||
* The default criteria is based on series number in ascending order.
|
* The default criteria is based on series number in ascending order.
|
||||||
|
|||||||
@ -1,15 +1,108 @@
|
|||||||
import {
|
import {
|
||||||
checkForScreenshot,
|
|
||||||
initializeMousePositionTracker,
|
initializeMousePositionTracker,
|
||||||
screenShotPaths,
|
expect,
|
||||||
test,
|
test,
|
||||||
visitStudy,
|
visitStudy,
|
||||||
} from './utils/index.js';
|
} from './utils/index.js';
|
||||||
|
|
||||||
test.beforeEach(async ({ page }) => {
|
/** Slower than default actionTimeout (10s); MPR crosshair SVG can lag on busy CI workers. */
|
||||||
|
const CROSSHAIRS_DOM_TIMEOUT_MS = 30_000;
|
||||||
|
|
||||||
|
async function getLayerSignature(page, layerId: string) {
|
||||||
|
const layer = page.locator(`#${layerId}`);
|
||||||
|
const lineCount = await layer.locator('line').count();
|
||||||
|
const circleCount = await layer.locator('circle').count();
|
||||||
|
const rectCount = await layer.locator('rect').count();
|
||||||
|
const signatureParts: string[] = [];
|
||||||
|
const t = { timeout: CROSSHAIRS_DOM_TIMEOUT_MS };
|
||||||
|
|
||||||
|
for (let i = 0; i < lineCount; i++) {
|
||||||
|
const line = layer.locator('line').nth(i);
|
||||||
|
await line.waitFor({ state: 'attached', ...t });
|
||||||
|
const [x1, y1, x2, y2] = await Promise.all([
|
||||||
|
line.getAttribute('x1', t),
|
||||||
|
line.getAttribute('y1', t),
|
||||||
|
line.getAttribute('x2', t),
|
||||||
|
line.getAttribute('y2', t),
|
||||||
|
]);
|
||||||
|
signatureParts.push(`line:${x1}|${y1}|${x2}|${y2}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < circleCount; i++) {
|
||||||
|
const circle = layer.locator('circle').nth(i);
|
||||||
|
await circle.waitFor({ state: 'attached', ...t });
|
||||||
|
const [cx, cy, r] = await Promise.all([
|
||||||
|
circle.getAttribute('cx', t),
|
||||||
|
circle.getAttribute('cy', t),
|
||||||
|
circle.getAttribute('r', t),
|
||||||
|
]);
|
||||||
|
signatureParts.push(`circle:${cx}|${cy}|${r}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < rectCount; i++) {
|
||||||
|
const rect = layer.locator('rect').nth(i);
|
||||||
|
await rect.waitFor({ state: 'attached', ...t });
|
||||||
|
const [x, y, width, height] = await Promise.all([
|
||||||
|
rect.getAttribute('x', t),
|
||||||
|
rect.getAttribute('y', t),
|
||||||
|
rect.getAttribute('width', t),
|
||||||
|
rect.getAttribute('height', t),
|
||||||
|
]);
|
||||||
|
signatureParts.push(`rect:${x}|${y}|${width}|${height}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return signatureParts.join(';');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getCrosshairsSignature(page) {
|
||||||
|
// Read layers sequentially so we are not racing three heavy SVG trees on one page (flaky on CI).
|
||||||
|
const axial = await getLayerSignature(page, 'svg-layer-mpr-axial');
|
||||||
|
const sagittal = await getLayerSignature(page, 'svg-layer-mpr-sagittal');
|
||||||
|
const coronal = await getLayerSignature(page, 'svg-layer-mpr-coronal');
|
||||||
|
return `${axial}||${sagittal}||${coronal}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function areLayerLinesAxisAligned(page, layerId: string) {
|
||||||
|
const lines = page.locator(`#${layerId}`).locator('line');
|
||||||
|
const lineCount = await lines.count();
|
||||||
|
if (lineCount < 4) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const t = { timeout: CROSSHAIRS_DOM_TIMEOUT_MS };
|
||||||
|
for (let i = 0; i < 4; i++) {
|
||||||
|
const line = lines.nth(i);
|
||||||
|
const [x1, y1, x2, y2] = await Promise.all([
|
||||||
|
line.getAttribute('x1', t),
|
||||||
|
line.getAttribute('y1', t),
|
||||||
|
line.getAttribute('x2', t),
|
||||||
|
line.getAttribute('y2', t),
|
||||||
|
]);
|
||||||
|
const isVertical = x1 === x2;
|
||||||
|
const isHorizontal = y1 === y2;
|
||||||
|
if (!isVertical && !isHorizontal) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function expectCrosshairsReady(page) {
|
||||||
|
for (const layerId of ['svg-layer-mpr-axial', 'svg-layer-mpr-sagittal', 'svg-layer-mpr-coronal']) {
|
||||||
|
const locator = page.locator(`#${layerId}`);
|
||||||
|
await locator.waitFor({ state: 'visible' });
|
||||||
|
await expect(locator.locator('line')).toHaveCount(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test.beforeEach(async ({ page, leftPanelPageObject }) => {
|
||||||
const studyInstanceUID = '1.3.6.1.4.1.14519.5.2.1.1706.8374.643249677828306008300337414785';
|
const studyInstanceUID = '1.3.6.1.4.1.14519.5.2.1.1706.8374.643249677828306008300337414785';
|
||||||
const mode = 'viewer';
|
const mode = 'viewer';
|
||||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||||
|
// Force a deterministic base series so thumbnail ordering changes do not
|
||||||
|
// alter which stack drives MPR/crosshairs behavior.
|
||||||
|
await leftPanelPageObject.loadSeriesByDescription('PRE LIVER');
|
||||||
await initializeMousePositionTracker(page);
|
await initializeMousePositionTracker(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -17,8 +110,7 @@ test.describe('Crosshairs Test', async () => {
|
|||||||
test('should render the crosshairs correctly.', async ({ page, mainToolbarPageObject }) => {
|
test('should render the crosshairs correctly.', async ({ page, mainToolbarPageObject }) => {
|
||||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||||
await mainToolbarPageObject.crosshairs.click();
|
await mainToolbarPageObject.crosshairs.click();
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
await checkForScreenshot(page, page, screenShotPaths.crosshairs.crosshairsRendered);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should allow the user to rotate the crosshairs', async ({
|
test('should allow the user to rotate the crosshairs', async ({
|
||||||
@ -28,12 +120,14 @@ test.describe('Crosshairs Test', async () => {
|
|||||||
}) => {
|
}) => {
|
||||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||||
await mainToolbarPageObject.crosshairs.click();
|
await mainToolbarPageObject.crosshairs.click();
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
|
const beforeRotate = await getCrosshairsSignature(page);
|
||||||
|
|
||||||
await viewportPageObject.crosshairs.axial.rotate();
|
await viewportPageObject.crosshairs.axial.rotate();
|
||||||
await viewportPageObject.crosshairs.sagittal.rotate();
|
await viewportPageObject.crosshairs.sagittal.rotate();
|
||||||
await viewportPageObject.crosshairs.coronal.rotate();
|
await viewportPageObject.crosshairs.coronal.rotate();
|
||||||
|
const afterRotate = await getCrosshairsSignature(page);
|
||||||
await checkForScreenshot(page, page, screenShotPaths.crosshairs.crosshairsRotated);
|
expect(afterRotate).not.toEqual(beforeRotate);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should allow the user to adjust the slab thickness', async ({
|
test('should allow the user to adjust the slab thickness', async ({
|
||||||
@ -43,12 +137,14 @@ test.describe('Crosshairs Test', async () => {
|
|||||||
}) => {
|
}) => {
|
||||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||||
await mainToolbarPageObject.crosshairs.click();
|
await mainToolbarPageObject.crosshairs.click();
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
|
const beforeIncrease = await getLayerSignature(page, 'svg-layer-mpr-axial');
|
||||||
|
|
||||||
await viewportPageObject.crosshairs.axial.increase();
|
await viewportPageObject.crosshairs.axial.increase();
|
||||||
await viewportPageObject.crosshairs.sagittal.increase();
|
await viewportPageObject.crosshairs.sagittal.increase();
|
||||||
await viewportPageObject.crosshairs.coronal.increase();
|
await viewportPageObject.crosshairs.coronal.increase();
|
||||||
|
const afterIncrease = await getLayerSignature(page, 'svg-layer-mpr-axial');
|
||||||
await checkForScreenshot(page, page, screenShotPaths.crosshairs.crosshairsSlabThickness);
|
expect(afterIncrease).not.toEqual(beforeIncrease);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should reset the crosshairs to the initial position when reset is clicked', async ({
|
test('should reset the crosshairs to the initial position when reset is clicked', async ({
|
||||||
@ -58,14 +154,20 @@ test.describe('Crosshairs Test', async () => {
|
|||||||
}) => {
|
}) => {
|
||||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||||
await mainToolbarPageObject.crosshairs.click();
|
await mainToolbarPageObject.crosshairs.click();
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
|
const initialPosition = await getCrosshairsSignature(page);
|
||||||
|
|
||||||
await viewportPageObject.crosshairs.axial.rotate();
|
await viewportPageObject.crosshairs.axial.rotate();
|
||||||
await viewportPageObject.crosshairs.sagittal.rotate();
|
await viewportPageObject.crosshairs.sagittal.rotate();
|
||||||
await viewportPageObject.crosshairs.coronal.rotate();
|
await viewportPageObject.crosshairs.coronal.rotate();
|
||||||
|
const rotatedPosition = await getCrosshairsSignature(page);
|
||||||
|
expect(rotatedPosition).not.toEqual(initialPosition);
|
||||||
|
|
||||||
await mainToolbarPageObject.moreTools.reset.click();
|
await mainToolbarPageObject.moreTools.reset.click();
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
await checkForScreenshot(page, page, screenShotPaths.crosshairs.crosshairsResetToolbar);
|
expect(await areLayerLinesAxisAligned(page, 'svg-layer-mpr-axial')).toBeTruthy();
|
||||||
|
expect(await areLayerLinesAxisAligned(page, 'svg-layer-mpr-sagittal')).toBeTruthy();
|
||||||
|
expect(await areLayerLinesAxisAligned(page, 'svg-layer-mpr-coronal')).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should reset the crosshairs when a new displayset is loaded', async ({
|
test('should reset the crosshairs when a new displayset is loaded', async ({
|
||||||
@ -76,13 +178,19 @@ test.describe('Crosshairs Test', async () => {
|
|||||||
}) => {
|
}) => {
|
||||||
await mainToolbarPageObject.layoutSelection.MPR.click();
|
await mainToolbarPageObject.layoutSelection.MPR.click();
|
||||||
await mainToolbarPageObject.crosshairs.click();
|
await mainToolbarPageObject.crosshairs.click();
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
|
const initialPosition = await getCrosshairsSignature(page);
|
||||||
|
|
||||||
await viewportPageObject.crosshairs.axial.rotate();
|
await viewportPageObject.crosshairs.axial.rotate();
|
||||||
await viewportPageObject.crosshairs.sagittal.rotate();
|
await viewportPageObject.crosshairs.sagittal.rotate();
|
||||||
await viewportPageObject.crosshairs.coronal.rotate();
|
await viewportPageObject.crosshairs.coronal.rotate();
|
||||||
|
const rotatedPosition = await getCrosshairsSignature(page);
|
||||||
|
expect(rotatedPosition).not.toEqual(initialPosition);
|
||||||
|
|
||||||
await leftPanelPageObject.loadSeriesByDescription('Recon 3: LIVER 3 PHASE (AP)');
|
await leftPanelPageObject.loadSeriesByDescription('Recon 3: LIVER 3 PHASE (AP)');
|
||||||
|
await expectCrosshairsReady(page);
|
||||||
await checkForScreenshot(page, page, screenShotPaths.crosshairs.crosshairsNewDisplayset);
|
expect(await areLayerLinesAxisAligned(page, 'svg-layer-mpr-axial')).toBeTruthy();
|
||||||
|
expect(await areLayerLinesAxisAligned(page, 'svg-layer-mpr-sagittal')).toBeTruthy();
|
||||||
|
expect(await areLayerLinesAxisAligned(page, 'svg-layer-mpr-coronal')).toBeTruthy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,11 +1,29 @@
|
|||||||
import { checkForScreenshot, screenShotPaths, test, visitStudy, expect } from './utils';
|
import { checkForScreenshot, screenShotPaths, test, visitStudy, expect } from './utils';
|
||||||
import { assertBoundingBoxIsContainedWithin } from './utils/assertions';
|
import { assertBoundingBoxIsContainedWithin } from './utils/assertions';
|
||||||
|
|
||||||
|
async function expectSelectedSeriesExistsInOptions(seriesSelect) {
|
||||||
|
const selectedSeriesLabel = (await seriesSelect.value.innerText()).trim();
|
||||||
|
await seriesSelect.click();
|
||||||
|
const optionCount = await seriesSelect.options.count();
|
||||||
|
let hasMatchingOption = false;
|
||||||
|
|
||||||
|
for (let index = 0; index < optionCount; index++) {
|
||||||
|
const optionText = (await seriesSelect.options.nth(index).innerText()).split('\n')[0].trim();
|
||||||
|
if (optionText === selectedSeriesLabel) {
|
||||||
|
hasMatchingOption = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await expect(hasMatchingOption).toBeTruthy();
|
||||||
|
}
|
||||||
|
|
||||||
test('should display the dicom tag browser', async ({ page, mainToolbarPageObject }) => {
|
test('should display the dicom tag browser', async ({ page, mainToolbarPageObject }) => {
|
||||||
const studyInstanceUID = '1.3.6.1.4.1.25403.345050719074.3824.20170125095438.5';
|
const studyInstanceUID = '1.3.6.1.4.1.25403.345050719074.3824.20170125095438.5';
|
||||||
const mode = 'viewer';
|
const mode = 'viewer';
|
||||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||||
|
|
||||||
|
await mainToolbarPageObject.waitForVolumeLoad();
|
||||||
await mainToolbarPageObject.moreTools.tagBrowser.click();
|
await mainToolbarPageObject.moreTools.tagBrowser.click();
|
||||||
await checkForScreenshot(
|
await checkForScreenshot(
|
||||||
page,
|
page,
|
||||||
@ -22,6 +40,7 @@ test('should render the scroll bar with the correct look-and-feel', async ({
|
|||||||
const mode = 'viewer';
|
const mode = 'viewer';
|
||||||
await visitStudy(page, studyInstanceUID, mode, 2000);
|
await visitStudy(page, studyInstanceUID, mode, 2000);
|
||||||
|
|
||||||
|
await mainToolbarPageObject.waitForVolumeLoad();
|
||||||
await mainToolbarPageObject.moreTools.tagBrowser.click();
|
await mainToolbarPageObject.moreTools.tagBrowser.click();
|
||||||
await checkForScreenshot({
|
await checkForScreenshot({
|
||||||
page,
|
page,
|
||||||
@ -75,6 +94,7 @@ test('should open DICOM Tag Browser from empty viewport and show default series'
|
|||||||
// Switch to 3x3 layout
|
// Switch to 3x3 layout
|
||||||
await mainToolbarPageObject.layoutSelection.click();
|
await mainToolbarPageObject.layoutSelection.click();
|
||||||
await page.getByTestId('Layout-2-2').click();
|
await page.getByTestId('Layout-2-2').click();
|
||||||
|
await mainToolbarPageObject.waitForVolumeLoad();
|
||||||
|
|
||||||
await viewportPageObject.getNthLocator(6).click();
|
await viewportPageObject.getNthLocator(6).click();
|
||||||
|
|
||||||
@ -84,9 +104,7 @@ test('should open DICOM Tag Browser from empty viewport and show default series'
|
|||||||
await dicomTagBrowser.waitVisible();
|
await dicomTagBrowser.waitVisible();
|
||||||
|
|
||||||
const seriesSelect = dicomTagBrowser.seriesSelect;
|
const seriesSelect = dicomTagBrowser.seriesSelect;
|
||||||
const optionText = await seriesSelect.getOptionText(0);
|
await expectSelectedSeriesExistsInOptions(seriesSelect);
|
||||||
|
|
||||||
await expect(seriesSelect.value).toContainText(optionText);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should open DICOM Tag Browser with active viewport series when viewport has display set', async ({
|
test('should open DICOM Tag Browser with active viewport series when viewport has display set', async ({
|
||||||
@ -101,6 +119,7 @@ test('should open DICOM Tag Browser with active viewport series when viewport ha
|
|||||||
|
|
||||||
await mainToolbarPageObject.layoutSelection.click();
|
await mainToolbarPageObject.layoutSelection.click();
|
||||||
await page.getByTestId('Layout-2-2').click();
|
await page.getByTestId('Layout-2-2').click();
|
||||||
|
await mainToolbarPageObject.waitForVolumeLoad();
|
||||||
|
|
||||||
await (await viewportPageObject.getNth(2)).pane.click();
|
await (await viewportPageObject.getNth(2)).pane.click();
|
||||||
|
|
||||||
@ -110,7 +129,5 @@ test('should open DICOM Tag Browser with active viewport series when viewport ha
|
|||||||
await dicomTagBrowser.waitVisible();
|
await dicomTagBrowser.waitVisible();
|
||||||
|
|
||||||
const seriesSelect = dicomTagBrowser.seriesSelect;
|
const seriesSelect = dicomTagBrowser.seriesSelect;
|
||||||
const optionText = await seriesSelect.getOptionText(2);
|
await expectSelectedSeriesExistsInOptions(seriesSelect);
|
||||||
|
|
||||||
await expect(seriesSelect.value).toContainText(optionText);
|
|
||||||
});
|
});
|
||||||
|
|||||||
@ -255,13 +255,35 @@ export class ViewportPageObject {
|
|||||||
get crosshairs() {
|
get crosshairs() {
|
||||||
const page = this.page;
|
const page = this.page;
|
||||||
|
|
||||||
|
const crosshairHoverTimeout = 20000;
|
||||||
|
|
||||||
|
async function getSlabHandleLocator(locator: Locator) {
|
||||||
|
const startTime = Date.now();
|
||||||
|
const rectLocator = locator.locator('rect').first();
|
||||||
|
const circleLocator = locator.locator('circle').first();
|
||||||
|
|
||||||
|
while (Date.now() - startTime < crosshairHoverTimeout) {
|
||||||
|
if ((await rectLocator.count()) > 0) {
|
||||||
|
return rectLocator;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((await circleLocator.count()) > 0) {
|
||||||
|
return circleLocator;
|
||||||
|
}
|
||||||
|
|
||||||
|
await page.waitForTimeout(250);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error('Could not find slab thickness handle for crosshairs interaction');
|
||||||
|
}
|
||||||
|
|
||||||
async function increaseSlabThickness(locator: Locator, lineNumber: number, axis: string) {
|
async function increaseSlabThickness(locator: Locator, lineNumber: number, axis: string) {
|
||||||
const lineLocator = locator.locator('line').nth(lineNumber);
|
const lineLocator = locator.locator('line').nth(lineNumber);
|
||||||
await lineLocator.click({ force: true });
|
await lineLocator.click({ force: true });
|
||||||
await lineLocator.hover({ force: true });
|
await lineLocator.hover({ force: true, timeout: crosshairHoverTimeout });
|
||||||
|
|
||||||
const circleLocator = locator.locator('rect').first();
|
const slabHandleLocator = await getSlabHandleLocator(locator);
|
||||||
await circleLocator.hover({ force: true });
|
await slabHandleLocator.hover({ force: true, timeout: crosshairHoverTimeout });
|
||||||
|
|
||||||
await page.mouse.down();
|
await page.mouse.down();
|
||||||
|
|
||||||
@ -280,10 +302,11 @@ export class ViewportPageObject {
|
|||||||
async function rotateCrosshairs(locator: Locator, lineNumber: number) {
|
async function rotateCrosshairs(locator: Locator, lineNumber: number) {
|
||||||
const lineLocator = locator.locator('line').nth(lineNumber);
|
const lineLocator = locator.locator('line').nth(lineNumber);
|
||||||
await lineLocator.click({ force: true });
|
await lineLocator.click({ force: true });
|
||||||
await lineLocator.hover({ force: true });
|
await lineLocator.hover({ force: true, timeout: crosshairHoverTimeout });
|
||||||
|
|
||||||
const circleLocator = locator.locator('circle').nth(1);
|
const circleLocator = locator.locator('circle').nth(1);
|
||||||
await circleLocator.hover({ force: true });
|
await circleLocator.waitFor({ state: 'attached', timeout: crosshairHoverTimeout });
|
||||||
|
await circleLocator.hover({ force: true, timeout: crosshairHoverTimeout });
|
||||||
|
|
||||||
await page.mouse.down();
|
await page.mouse.down();
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 72 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 72 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 57 KiB |
74
yarn.lock
74
yarn.lock
@ -1946,10 +1946,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@cornerstonejs/adapters@4.20.0":
|
"@cornerstonejs/adapters@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-4.20.0.tgz#94e21f2955d87d2c0ba47ebedaad77ee621f7ecf"
|
resolved "https://registry.npmjs.org/@cornerstonejs/adapters/-/adapters-4.21.2.tgz#aa4640c144bed192e5c3fb620ff32b737de35859"
|
||||||
integrity sha512-OxplEaHadms6mZ5fX8o9zkMVw7rSjxP6+KRovBAqLXlXsM9hj7MgencWG2JX6SR2bUXvHVusiV9cdECcDMNvsg==
|
integrity sha512-BTmj7jZDJky6XOsoueNq+qMavFLMvj46fftD08YovKWUDfoq7osOVpL9PBcnWODx05obsyagkDRyrkqTGd14wg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime-corejs2" "7.26.10"
|
"@babel/runtime-corejs2" "7.26.10"
|
||||||
buffer "6.0.3"
|
buffer "6.0.3"
|
||||||
@ -1957,10 +1957,10 @@
|
|||||||
gl-matrix "3.4.3"
|
gl-matrix "3.4.3"
|
||||||
ndarray "1.0.19"
|
ndarray "1.0.19"
|
||||||
|
|
||||||
"@cornerstonejs/ai@4.20.0":
|
"@cornerstonejs/ai@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/ai/-/ai-4.20.0.tgz#9ee423cc99c2122360c8359f643a8e470717fcf5"
|
resolved "https://registry.npmjs.org/@cornerstonejs/ai/-/ai-4.21.2.tgz#ae49abd66e06d0e44b12935d74e7ae633bf6102d"
|
||||||
integrity sha512-65wl8mXy/N6DUjLlNZvKLgWTGWVu4kWDupxNU5p7Pd3ZxU6RnbG6d3pcM30D/bcQEuUWLEQBDodtBeJEsxJxoA==
|
integrity sha512-I7YIOvcVnkDkkxH/88xJ0Yuemd0Qm6O9TO2nyprzwui/ZLMPD0bTcWPXks+ktxIAtz9rTRyNNodLvbF6aKk3DA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime-corejs2" "7.26.10"
|
"@babel/runtime-corejs2" "7.26.10"
|
||||||
buffer "6.0.3"
|
buffer "6.0.3"
|
||||||
@ -1996,20 +1996,20 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.7.tgz#784394d05d8cf735640e9c3baa206535ee8e0376"
|
resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.7.tgz#784394d05d8cf735640e9c3baa206535ee8e0376"
|
||||||
integrity sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w==
|
integrity sha512-qvP4q4JDib7mi9r7LqKOwqz7YZ8gjtDX4ZCezeYf8+eb7MBXCz5uXAMeVF3yz9Axw4XiIMdB/pqXkm8tqCl13w==
|
||||||
|
|
||||||
"@cornerstonejs/core@4.20.0":
|
"@cornerstonejs/core@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-4.20.0.tgz#9381f113879dd9fc2847c8e4d9e624602751bbef"
|
resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-4.21.2.tgz#ec9fa1e39a0e0eba27399aa950490921cb164df5"
|
||||||
integrity sha512-rcrctEIcyyAwQ6zcVt1wbYoTPyH6YNLNBOBB/aLeJZfLqGAfca+Cgf5K+KSGFJX1gZOdQZmYGmAF9P58B9PNVw==
|
integrity sha512-XnhMGan9Ebnu2f3W9Q2iK6ShHGCLa1UYEPRYHzILgtnTbo5qHsZPay+IO/mjGQYH3VlTUgZDqzMRNBHXmvoiLg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@kitware/vtk.js" "34.15.1"
|
"@kitware/vtk.js" "34.15.1"
|
||||||
comlink "4.4.2"
|
comlink "4.4.2"
|
||||||
gl-matrix "3.4.3"
|
gl-matrix "3.4.3"
|
||||||
loglevel "1.9.2"
|
loglevel "1.9.2"
|
||||||
|
|
||||||
"@cornerstonejs/dicom-image-loader@4.20.0":
|
"@cornerstonejs/dicom-image-loader@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.20.0.tgz#bf6425f2829268311b3fbd6a36bb584bdc431fc6"
|
resolved "https://registry.npmjs.org/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-4.21.2.tgz#6619b3d4f827e75d4e9b479ba40f70b3e256239b"
|
||||||
integrity sha512-A7N2ekKEMEEKbw0QecbmgtL89LMpLZDkyzt2a97cZM9qyUdhdETyzL8m6guVtP10Ga5l9Aq9mFt2ifGtwTw0wA==
|
integrity sha512-g/2qTHA1P7VLmZ7OEHkH0S4jYIJsqb8128KMmpYuea2i3WpT+gOLf82eNYFBlnOCmwRitzs1YLHZM1/nDz4K/g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@cornerstonejs/codec-charls" "1.2.3"
|
"@cornerstonejs/codec-charls" "1.2.3"
|
||||||
"@cornerstonejs/codec-libjpeg-turbo-8bit" "1.2.2"
|
"@cornerstonejs/codec-libjpeg-turbo-8bit" "1.2.2"
|
||||||
@ -2021,25 +2021,25 @@
|
|||||||
pako "2.1.0"
|
pako "2.1.0"
|
||||||
uuid "9.0.1"
|
uuid "9.0.1"
|
||||||
|
|
||||||
"@cornerstonejs/labelmap-interpolation@4.20.0":
|
"@cornerstonejs/labelmap-interpolation@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.20.0.tgz#152fea1a574f825bed2cd0a69013ebb4405dcda7"
|
resolved "https://registry.npmjs.org/@cornerstonejs/labelmap-interpolation/-/labelmap-interpolation-4.21.2.tgz#b4d30cbd8b70dd2f437ab30a7c410e33cad1364c"
|
||||||
integrity sha512-VDUkvRZPCk98NkBFH0qFNEfjQoyYp2Th2+0KAJtDPeA0aqSPhugh14uJQ5uKEkDzZFUG/TUpeaHi1kldx6C5Gw==
|
integrity sha512-giW2IVPqZj3Bn4o9KIL8QaHWGPHoFD8R9aOvqlBQgSyUJF6XFIpfQDixb9txZhmkK0xlMrn/rbnEcoeFLoM1Pw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@itk-wasm/morphological-contour-interpolation" "1.1.0"
|
"@itk-wasm/morphological-contour-interpolation" "1.1.0"
|
||||||
itk-wasm "1.0.0-b.165"
|
itk-wasm "1.0.0-b.165"
|
||||||
|
|
||||||
"@cornerstonejs/polymorphic-segmentation@4.20.0":
|
"@cornerstonejs/polymorphic-segmentation@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.20.0.tgz#d4981f9df051217cddf6a69730386339fe69b5d2"
|
resolved "https://registry.npmjs.org/@cornerstonejs/polymorphic-segmentation/-/polymorphic-segmentation-4.21.2.tgz#99fd727fde374729df2135f3f909a576578d49b4"
|
||||||
integrity sha512-tsMqAd/GrBeEFB2WU2K+YsGXeaP/1yD635yO1udpG2dloRaJrvFiK1dFMFCBLK3Xd768ZS1nq/MZEel00+vYxA==
|
integrity sha512-nY1sGmmVjKT0M7Z/rwskZmn+g90W9PACAKascjYF/LXrOyJozN4zVZn7HzkzYbH3+vcCGvwShEdLvDsDxaomsw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@icr/polyseg-wasm" "0.4.0"
|
"@icr/polyseg-wasm" "0.4.0"
|
||||||
|
|
||||||
"@cornerstonejs/tools@4.20.0":
|
"@cornerstonejs/tools@4.21.2":
|
||||||
version "4.20.0"
|
version "4.21.2"
|
||||||
resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-4.20.0.tgz#58d834f80513689c354e052b9641516a62d24ad8"
|
resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-4.21.2.tgz#019783b87cb2c5c7e1ea86d47f042ea77e827f80"
|
||||||
integrity sha512-kphlW17eohBRk8MXEgdufM2t8MC5JqdlWUCfXu5rfg0KS1ut6iSWGAxFS+12noPR5qDzfVEYnD+4NkL37jg8pw==
|
integrity sha512-dBOFIzFLVnCEEBOaXvA+cUNP+bzkdFwLDjEX3/0dP/4hjoFkZeq+AINAJn6oG5UKycqQOLhQ5gn3z4ugYK4ujQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/offscreencanvas" "2019.7.3"
|
"@types/offscreencanvas" "2019.7.3"
|
||||||
comlink "4.4.2"
|
comlink "4.4.2"
|
||||||
@ -6319,14 +6319,14 @@ axe-core@^4.10.0:
|
|||||||
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc"
|
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc"
|
||||||
integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==
|
integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==
|
||||||
|
|
||||||
axios@1.13.5, axios@^1.12.0, axios@^1.4.0, axios@^1.6.2:
|
axios@1.13.5, axios@1.15.0, axios@^1.12.0, axios@^1.4.0, axios@^1.6.2:
|
||||||
version "1.13.5"
|
version "1.15.0"
|
||||||
resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43"
|
resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.0.tgz#0fcee91ef03d386514474904b27863b2c683bf4f"
|
||||||
integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==
|
integrity sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects "^1.15.11"
|
follow-redirects "^1.15.11"
|
||||||
form-data "^4.0.5"
|
form-data "^4.0.5"
|
||||||
proxy-from-env "^1.1.0"
|
proxy-from-env "^2.1.0"
|
||||||
|
|
||||||
axobject-query@^4.1.0:
|
axobject-query@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
@ -16489,10 +16489,10 @@ proxy-from-env@1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
|
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
|
||||||
integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==
|
integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==
|
||||||
|
|
||||||
proxy-from-env@^1.1.0:
|
proxy-from-env@^2.1.0:
|
||||||
version "1.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-2.1.0.tgz#a7487568adad577cfaaa7e88c49cab3ab3081aba"
|
||||||
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
|
integrity sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==
|
||||||
|
|
||||||
psl@^1.1.33:
|
psl@^1.1.33:
|
||||||
version "1.15.0"
|
version "1.15.0"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user