import { Icons, FooterAction } from '@ohif/ui-next'; import React, { ReactElement, useState, useCallback } from 'react'; import { PresetDialog } from '@ohif/ui-next'; import { ViewportPreset, VolumeRenderingPresetsContentProps } from '../../types/ViewportPresets'; import { useSystem } from '@ohif/core'; import { useTranslation } from 'react-i18next'; interface Props extends VolumeRenderingPresetsContentProps { hide: () => void; } export function VolumeRenderingPresetsContent({ presets, viewportId, hide }: Props): ReactElement { const { commandsManager } = useSystem(); const [searchValue, setSearchValue] = useState(''); const [selectedPreset, setSelectedPreset] = useState(null); const { t } = useTranslation('WindowLevelActionMenu'); const handleSearchChange = useCallback((event: React.ChangeEvent) => { setSearchValue(event.target.value); }, []); const handleApply = useCallback( props => { commandsManager.runCommand('setViewportPreset', { ...props, }); }, [commandsManager] ); const filteredPresets = searchValue ? presets.filter(preset => preset.name.toLowerCase().includes(searchValue.toLowerCase())) : presets; const formatLabel = (label: string, maxChars: number) => { return label.length > maxChars ? `${label.slice(0, maxChars)}...` : label; }; return ( {filteredPresets.map((preset, index) => (
{ setSelectedPreset(preset); handleApply({ preset: preset.name, viewportId }); }} >
))}
{t('Common:Cancel')}
); }