Compare commits

...
41 changed files with 110 additions and 101 deletions

No files matched your search

@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone-dicom-pmap",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "DICOM Parametric Map read workflow",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone-dicom-rt",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "DICOM RT read workflow",
"author": "OHIF",
"license": "MIT",
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone-dicom-seg",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "DICOM SEG read workflow",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone-dicom-sr",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for an SR Cornerstone Viewport",
"author": "OHIF",
"license": "MIT",
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone-dynamic-volume",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for 4D volumes data",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-cornerstone",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for Cornerstone",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-default",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Common/default features and functionality for basic image viewing",
"author": "OHIF Core Team",
"license": "MIT",
@@ -3,7 +3,7 @@ import classnames from 'classnames';
import { useNavigate } from 'react-router-dom';
import { useAppConfig } from '@state';
import { Button, ButtonEnums } from '@ohif/ui';
import { Button } from '@ohif/ui-next';
function DataSourceSelector() {
const [appConfig] = useAppConfig();
@@ -31,8 +31,8 @@ function DataSourceSelector() {
{ds.configuration?.friendlyName || ds.friendlyName}
</h1>
<Button
type={ButtonEnums.type.primary}
className={classnames('ml-2')}
variant="secondary"
className={classnames('ml-2', 'mt-1')}
onClick={() => {
navigate({
pathname: '/',
@@ -1,42 +0,0 @@
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { ToolbarButton } from '@ohif/ui';
function NestedMenu({ children, label = 'More', icon = 'tool-more-menu', isActive }) {
const [isOpen, setIsOpen] = useState(false);
const toggleNestedMenu = () => setIsOpen(!isOpen);
const closeNestedMenu = () => {
if (isOpen) {
setIsOpen(false);
}
};
useEffect(() => {
window.addEventListener('click', closeNestedMenu);
return () => {
window.removeEventListener('click', closeNestedMenu);
};
}, [isOpen]);
return (
<ToolbarButton
id="NestedMenu"
label={label}
icon={icon}
onClick={toggleNestedMenu}
dropdownContent={isOpen && children}
isActive={isActive || isOpen}
type="primary"
/>
);
}
NestedMenu.propTypes = {
children: PropTypes.any.isRequired,
icon: PropTypes.string,
label: PropTypes.string,
};
export default NestedMenu;
@@ -1,5 +1,5 @@
import { ContextMenu } from '@ohif/ui';
import { ContextMenuViewport } from '@ohif/ui-next';
export default {
'ui.contextMenu': ContextMenu,
'ui.contextMenu': ContextMenuViewport,
};
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-microscopy",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for DICOM microscopy",
"author": "Bill Wallace, md-prog",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-pdf",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for PDF display",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-dicom-video",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for video display",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-measurement-tracking",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Tracking features and functionality for basic image viewing",
"author": "OHIF Core Team",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-test",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension used inside e2e testing",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-tmtv",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF extension for Total Metabolic Tumor Volume",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/extension-ultrasound-pleura-bline",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "",
"author": "Rodrigo Basilio",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-basic-dev-mode",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Basic OHIF Viewer Using Cornerstone",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-test",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Basic mode for testing",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-basic",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "A basic mode used to build other modes on top of",
"author": "OHIF Contributors",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-longitudinal",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Longitudinal Workflow",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-microscopy",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF mode for DICOM microscopy",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-preclinical-4d",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "4D Workflow",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-segmentation",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "OHIF segmentation mode which enables labelmap segmentation read/edit/export",
"author": "@ohif",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-tmtv",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Total Metabolic Tumor Volume Workflow",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/mode-ultrasound-pleura-bline",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Allows users to annotate ultrasound images with pleura B-line annotations.",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -124,5 +124,5 @@
"git add"
]
},
"version": "3.13.0-beta.123"
"version": "3.13.0-beta.125"
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/app",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"productVersion": "3.4.0",
"description": "OHIF Viewer",
"author": "OHIF Contributors",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/cli",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "A CLI to bootstrap new OHIF extension or mode",
"type": "module",
"main": "src/index.js",
+10 -11
View File
@@ -2,7 +2,7 @@ import fs from 'fs';
import path from 'path';
import { execa } from 'execa';
import { keywords } from './enums/index.js';
import { validateYarn, addExtensionToConfig, addModeToConfig } from './utils/index.js';
import { validatePnpm, addExtensionToConfig, addModeToConfig } from './utils/index.js';
async function linkPackage(packageDir, options, addToConfig, keyword) {
const { viewerDirectory } = options;
@@ -22,19 +22,18 @@ async function linkPackage(packageDir, options, addToConfig, keyword) {
const version = packageJSON.version;
// make sure yarn is installed
await validateYarn();
// make sure pnpm is installed
await validatePnpm();
// change directory to packageDir and execute yarn link
process.chdir(packageDir);
// resolve the package directory before changing the working directory
const resolvedPackageDir = path.resolve(packageDir);
let results;
results = await execa(`yarn`, ['link']);
// change directory to OHIF Platform root and execute yarn link
// change directory to the OHIF Platform root and link the local package there.
// Linking mutates the lockfile, so disable the workspace's frozen-lockfile
// default for this call (pnpm link rejects --no-frozen-lockfile).
process.chdir(`${viewerDirectory}/../..`);
results = await execa(`yarn`, ['link', packageName]);
let results = await execa('pnpm', ['link', resolvedPackageDir, '--config.frozen-lockfile=false']);
console.log(results.stdout);
// Add the node_modules of the linked package so that webpack
@@ -63,7 +62,7 @@ async function linkPackage(packageDir, options, addToConfig, keyword) {
});
// run prettier on the webpack config
results = await execa(`yarn`, ['prettier', '--write', webpackPwaPath]);
results = await execa('pnpm', ['exec', 'prettier', '--write', webpackPwaPath]);
}
function linkExtension(packageDir, options) {
+9 -7
View File
@@ -1,18 +1,20 @@
import { execa } from 'execa';
import fs from 'fs';
import path from 'path';
import { validateYarn, removeExtensionFromConfig, removeModeFromConfig } from './utils/index.js';
import { validatePnpm, removeExtensionFromConfig, removeModeFromConfig } from './utils/index.js';
const linkPackage = async (packageName, options, removeFromConfig) => {
const { viewerDirectory } = options;
// make sure yarn is installed
await validateYarn();
// make sure pnpm is installed
await validatePnpm();
// change directory to OHIF Platform root and execute yarn link
process.chdir(viewerDirectory);
// change directory to the OHIF Platform root, where the package was linked.
// Unlinking mutates the lockfile, so disable the workspace's frozen-lockfile
// default for this call (pnpm unlink rejects --no-frozen-lockfile).
process.chdir(`${viewerDirectory}/../..`);
const results = await execa(`yarn`, ['unlink', packageName]);
const results = await execa('pnpm', ['unlink', packageName, '--config.frozen-lockfile=false']);
console.log(results.stdout);
const webpackPwaPath = path.join(viewerDirectory, '.webpack', 'webpack.pwa.js');
@@ -23,7 +25,7 @@ const linkPackage = async (packageName, options, removeFromConfig) => {
removeFromConfig(packageName);
// run prettier on the webpack config
await execa(`yarn`, ['prettier', '--write', webpackPwaPath]);
await execa('pnpm', ['exec', 'prettier', '--write', webpackPwaPath]);
};
async function removePathFromWebpackConfig(webpackConfigPath, packageName) {
+2 -2
View File
@@ -19,7 +19,7 @@ import editPackageJson from './editPackageJson.js';
import createLicense from './createLicense.js';
import createReadme from './createReadme.js';
import prettyPrint from './prettyPrint.js';
import validateYarn from './validateYarn.js';
import validatePnpm from './validatePnpm.js';
export {
getYarnInfo,
@@ -43,5 +43,5 @@ export {
createLicense,
createReadme,
prettyPrint,
validateYarn,
validatePnpm,
};
@@ -1,12 +1,12 @@
import chalk from 'chalk';
import { execa } from 'execa';
export default async function validateYarn() {
export default async function validatePnpm() {
try {
await execa('yarn', ['--version']);
await execa('pnpm', ['--version']);
} catch (err) {
console.log(
'%s Yarn is not installed, please install it before linking your extension',
'%s pnpm is not installed, please install it before linking your extension',
chalk.red.bold('ERROR')
);
process.exit(1);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/core",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Generic business logic for web-based medical imaging applications",
"author": "OHIF Core Team",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "ohif-docs",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/i18n",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Internationalization library for The OHIF Viewer",
"author": "OHIF",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/ui-next",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "Next version of OHIF Viewers UI, more customizable using shadcn/ui",
"author": "OHIF",
"license": "MIT",
@@ -0,0 +1,47 @@
import React from 'react';
import { Icons } from '../Icons';
interface ContextMenuViewportProps {
items?: Array<{
label: string;
action: (item: any, props: any) => void;
iconRight?: string;
[key: string]: unknown;
}>;
[key: string]: unknown;
}
const ContextMenuViewport = ({ items, ...props }: ContextMenuViewportProps) => {
if (!items?.length) {
return null;
}
return (
<div
data-cy="context-menu"
className="bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 relative z-50 w-48 overflow-hidden rounded-md border border-input p-1 shadow-md"
onContextMenu={e => e.preventDefault()}
>
{items.map((item, index) => (
<button
type="button"
key={index}
data-cy="context-menu-item"
onClick={() => item.action(item, props)}
onMouseEnter={e => e.currentTarget.focus({ preventScroll: true })}
className="hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground flex w-full cursor-default select-none items-center justify-between rounded-sm px-2 py-1.5 text-base outline-none"
>
<span>{item.label}</span>
{item.iconRight && (
<Icons.ByName
name={item.iconRight}
className="inline"
/>
)}
</button>
))}
</div>
);
};
export default ContextMenuViewport;
@@ -0,0 +1 @@
export { default as ContextMenuViewport } from './ContextMenuViewport';
+2
View File
@@ -142,6 +142,7 @@ import {
} from './ToolButton';
import { LayoutSelector } from './LayoutSelector';
import { ToolSettings } from './OHIFToolSettings';
import { ContextMenuViewport } from './ContextMenuViewport';
export * from './StudyList';
export { DataRow } from './DataRow';
export { MeasurementTable } from './MeasurementTable';
@@ -309,6 +310,7 @@ export {
ViewportDialog,
CinePlayer,
LayoutSelector,
ContextMenuViewport,
SmartScrollbar,
useSmartScrollbarLayoutContext,
useSmartScrollbarScrollContext,
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@ohif/ui",
"version": "3.13.0-beta.123",
"version": "3.13.0-beta.125",
"description": "A set of React components for Medical Imaging Viewers",
"author": "OHIF Contributors",
"license": "MIT",