import { Checkbox, DialogFooter, Radio, RadioGroup } from '@blueprintjs/core'; import { useMemo } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { DataExportOptions } from '../../data/SpectraManager.js'; import { useChartData } from '../context/ChartContext.js'; import ActionButtons from '../elements/ActionButtons.js'; import { Input2Controller } from '../elements/Input2Controller.js'; import type { LabelStyle } from '../elements/Label.js'; import Label from '../elements/Label.js'; import { StandardDialog } from '../elements/StandardDialog.tsx'; import { StyledDialogBody } from '../elements/StyledDialogBody.js'; import type { SaveOptions } from '../hooks/useExport.js'; import { useExport } from '../hooks/useExport.js'; const INITIAL_VALUE: SaveOptions = { name: '', include: { dataType: DataExportOptions.SELF_CONTAINED, view: false, settings: false, }, }; export const labelStyle: LabelStyle = { label: { flex: 4, color: '#232323', }, wrapper: { flex: 8, display: 'flex', justifyContent: 'flex-start', }, container: { padding: '5px 0' }, }; interface InnerSaveAsModalProps { onCloseDialog: () => void; } interface SaveAsModalProps extends InnerSaveAsModalProps { isOpen: boolean; } function SaveAsModal(props: SaveAsModalProps) { const { onCloseDialog, isOpen } = props; if (!isOpen) return; return ; } function InnerSaveAsModal(props: InnerSaveAsModalProps) { const { onCloseDialog } = props; const { data, aggregator } = useChartData(); const { saveHandler } = useExport(); const fileName = data[0]?.info?.name; function submitHandler(values: SaveOptions) { saveHandler(values); onCloseDialog?.(); } const { handleSubmit, control, register } = useForm({ defaultValues: { ...INITIAL_VALUE, name: fileName }, }); const containsLinkedFiles = useMemo(() => { return aggregator.sources.some((s) => !s.baseURL?.startsWith('ium:')); }, [aggregator]); return ( { void handleSubmit(submitHandler)(); }} doneLabel="Save" onCancel={() => onCloseDialog?.()} /> ); } export default SaveAsModal;