import React, { ReactNode } from 'react'; import { useSystem } from '@ohif/core'; import { Button, Icons, Popover, PopoverContent, PopoverTrigger, useViewportGrid, useIconPresentation, } from '@ohif/ui-next'; import { WindowLevelActionMenu } from './WindowLevelActionMenu'; import { useViewportDisplaySets } from '../../hooks/useViewportDisplaySets'; import { useViewportRendering } from '../../hooks'; export function WindowLevelActionMenuWrapper( props: withAppTypes<{ viewportId: string; location?: number; isOpen?: boolean; onOpen?: () => void; onClose?: () => void; displaySets?: Array; disabled?: boolean; isEmbedded?: boolean; }> ): ReactNode { const { viewportId, location, isOpen = false, onOpen, onClose, disabled, isEmbedded = false, onInteraction: onInteractionProps, hasEmbeddedVariantToUse, ...rest } = props; const [gridState] = useViewportGrid(); const viewportIdToUse = viewportId || gridState.activeViewportId; const { viewportDisplaySets: displaySets } = useViewportDisplaySets(viewportIdToUse); const { servicesManager } = useSystem(); const { toolbarService } = servicesManager.services; const { IconContainer, className: iconClassName, containerProps } = useIconPresentation(); const { hasColorbar, toggleColorbar } = useViewportRendering(viewportId); const handleOpenChange = (openState: boolean) => { const shouldToggleColorbar = hasColorbar && !isEmbedded; if (isOpen && shouldToggleColorbar && openState) { toggleColorbar(); onClose?.(); return; } if (!isOpen && openState && shouldToggleColorbar) { toggleColorbar(); return; } if (openState) { onOpen?.(); } else { onClose?.(); } }; const { align, side } = toolbarService.getAlignAndSide(location); const modalities = displaySets.map(displaySet => displaySet.supportsWindowLevel); if (modalities.length === 0) { return null; } const Icon = hasColorbar && !isEmbedded && hasEmbeddedVariantToUse ? ( ) : ( ); return (
{IconContainer ? ( {Icon} ) : ( )}
); }