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;