import { Button, Checkbox } from '@blueprintjs/core'; import { yupResolver } from '@hookform/resolvers/yup'; import { useForm } from 'react-hook-form'; import * as Yup from 'yup'; import { useDispatch } from '../context/DispatchContext.js'; import { useToaster } from '../context/ToasterContext.js'; import Label from '../elements/Label.js'; import { NumberInput2Controller } from '../elements/NumberInput2Controller.js'; import { MIN_AREA_POINTS, useCheckPointsNumberInWindowArea, } from '../hooks/useCheckPointsNumberInWindowArea.js'; import { headerLabelStyle } from './Header.js'; import { HeaderWrapper } from './HeaderWrapper.js'; interface AutoRangesOptions { minMaxRatio: number; lookNegative: boolean; } const validationSchema = Yup.object().shape({ minMaxRatio: Yup.number().min(0).required(), lookNegative: Yup.boolean().required(), }); const initialValues: AutoRangesOptions = { minMaxRatio: 0.05, lookNegative: false, }; function RangesPickingOptionPanel() { const dispatch = useDispatch(); const { handleSubmit, register, control, formState: { isValid }, } = useForm({ defaultValues: initialValues, resolver: yupResolver(validationSchema), mode: 'onChange', }); const pointsNumber = useCheckPointsNumberInWindowArea(); const toaster = useToaster(); function handleRangesPicking(values: any) { if (pointsNumber > MIN_AREA_POINTS) { dispatch({ type: 'AUTO_RANGES_DETECTION', payload: values, }); } else { toaster.show({ message: `Auto range picking only available for area more than ${MIN_AREA_POINTS} points`, intent: 'danger', }); } } return ( ); } export default RangesPickingOptionPanel;