import { Tag } from '@blueprintjs/core'; import { yupResolver } from '@hookform/resolvers/yup'; import { forwardRef } from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { FREQUENCIES } from '../../../data/PredictionManager.js'; import type { SpectrumSimulationOptions } from '../../../data/data1d/spectrumSimulation.js'; import generateNumbersPowerOfX from '../../../data/utilities/generateNumbersPowerOfX.js'; import type { LabelStyle } from '../../elements/Label.js'; import Label from '../../elements/Label.js'; import { NumberInput2Controller } from '../../elements/NumberInput2Controller.js'; import { Select2Controller } from '../../elements/Select2Controller.js'; import { PreferencesContainer } from '../extra/preferences/PreferencesContainer.js'; import { useSettingImperativeHandle } from '../extra/utilities/settingImperativeHandle.js'; import { simulationValidationSchema } from './simulationValidation.js'; const SIMULATION_NUMBER_OF_POINTS = generateNumbersPowerOfX(12, 19); const labelStyle: LabelStyle = { label: { flex: 3, fontWeight: '500' }, wrapper: { flex: 9, display: 'flex', alignItems: 'center' }, container: { padding: '5px' }, }; interface SpectrumSimulationPreferencesProps { onSave: (options: SpectrumSimulationOptions) => void; } function SpectrumSimulationPreferences( { onSave }: SpectrumSimulationPreferencesProps, ref: any, ) { const options = useWatch() as Required; const { handleSubmit, control } = useForm({ defaultValues: options, resolver: yupResolver(simulationValidationSchema), }); useSettingImperativeHandle(ref, handleSubmit, onSave); return ( ); } export default forwardRef(SpectrumSimulationPreferences);