import React, { ReactElement, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { AllInOneMenu } from '@ohif/ui-next'; import { Colormap } from './Colormap'; import { Colorbar } from './Colorbar'; import { WindowLevel } from './WindowLevel'; import { VolumeRenderingPresets } from './VolumeRenderingPresets'; import { VolumeRenderingOptions } from './VolumeRenderingOptions'; import { useViewportRendering } from '../../hooks/useViewportRendering'; import i18n from 'i18next'; export type WindowLevelActionMenuProps = { viewportId: string; element?: HTMLElement; align?: 'start' | 'end' | 'center'; side?: 'top' | 'bottom' | 'left' | 'right'; }; export function WindowLevelActionMenu({ viewportId, element, align, side, }: WindowLevelActionMenuProps): ReactElement { return ( ); } export function WindowLevelActionMenuContent({ viewportId, align, side, }: { viewportId: string; align?: string; side?: string; }): ReactElement { const { t } = useTranslation('WindowLevelActionMenu'); // Use a stable key for the menu to avoid infinite re-renders const menuKey = useMemo(() => `${viewportId}`, [viewportId]); const { is3DVolume, colorbarProperties, windowLevelPresets, volumeRenderingPresets, volumeRenderingQualityRange, } = useViewportRendering(viewportId); return ( {!is3DVolume && } {colorbarProperties?.colormaps && !is3DVolume && ( )} {windowLevelPresets?.length > 0 && !is3DVolume && ( )} {volumeRenderingPresets && is3DVolume && } {volumeRenderingQualityRange && is3DVolume && ( )} ); }