import React, { useState, useEffect } from 'react'; import { ImageModal, FooterAction } from '@ohif/ui-next'; import { useTranslation } from 'react-i18next'; const MAX_TEXTURE_SIZE = 10000; const DEFAULT_FILENAME = 'image'; interface ViewportDownloadFormNewProps { onClose: () => void; defaultSize: number; fileTypeOptions: Array<{ value: string; label: string }>; viewportId: string; showAnnotations: boolean; onAnnotationsChange: (show: boolean) => void; dimensions: { width: number; height: number }; onDimensionsChange: (dimensions: { width: number; height: number }) => void; onEnableViewport: (element: HTMLElement) => void; onDisableViewport: () => void; onDownload: (filename: string, fileType: string) => void; warningState: { enabled: boolean; value: string }; } function ViewportDownloadFormNew({ onClose, defaultSize, fileTypeOptions, viewportId, showAnnotations, onAnnotationsChange, dimensions, warningState, onDimensionsChange, onEnableViewport, onDisableViewport, onDownload, }: ViewportDownloadFormNewProps) { const [viewportElement, setViewportElement] = useState(null); const [showWarningMessage, setShowWarningMessage] = useState(true); const [filename, setFilename] = useState(DEFAULT_FILENAME); const [fileType, setFileType] = useState('jpg'); const { t } = useTranslation('CaptureViewportModal'); useEffect(() => { if (!viewportElement) { return; } onEnableViewport(viewportElement); return () => { onDisableViewport(); }; }, [onDisableViewport, onEnableViewport, viewportElement]); return (
{warningState.enabled && showWarningMessage && (
{warningState.value}
)}
setFilename(e.target.value)} > {t('File name')}
{ onDimensionsChange({ ...dimensions, width: parseInt(e.target.value) || defaultSize, }); }} onHeightChange={e => { onDimensionsChange({ ...dimensions, height: parseInt(e.target.value) || defaultSize, }); }} maxWidth={MAX_TEXTURE_SIZE.toString()} maxHeight={MAX_TEXTURE_SIZE.toString()} > {t('Image size in pixels')} {t('Include annotations')} {warningState.enabled && ( {t('Include warning message')} )} {t('Common:Cancel')} { onDownload(filename || DEFAULT_FILENAME, fileType); onClose(); }} > {t('Common:Save')}
); } export default { 'ohif.captureViewportModal': ViewportDownloadFormNew, };