import { BaseControl, RangeControl, TextControl } from '@wordpress/components'; import { useEffect, useState } from '@wordpress/element'; /** * Component Class * * @param root0 * @param root0.allowCustomMin * @param root0.allowCustomMax * @param root0.label */ export default function CustomRangeControl({ allowCustomMin, allowCustomMax, label, ...props }) { const [min, setMin] = useState(parseFloat(props.min) || 0); const [max, setMax] = useState(parseFloat(props.max) || 100); useEffect(() => { if (allowCustomMin && props.value && props.value < min) { setMin(props.value); } if (allowCustomMax && props.value && props.value > max) { setMax(props.value); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [props.value]); if (allowCustomMin || allowCustomMax) { return ( { const result = val === '' ? undefined : parseFloat(val); if (!allowCustomMin && val < min) { props.onChange(min); } else if (!allowCustomMax && val > max) { props.onChange(max); } else { props.onChange(result); } }} /> ); } return ; }