import React from 'react'; import { Trans } from '@lingui/macro'; import Grid from '@mui/material/Grid'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; import Checkbox from '../Checkbox'; function init(settings) { const initSettings = { autostart: false, reconnect: true, delay: 30, staleTimeout: 30, low_delay: false, ...settings, }; return initSettings; } export default function Control(props) { const settings = init(props.settings); // Set the defaults React.useEffect(() => { props.onChange(settings, true); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const handleChange = (what) => (event) => { const value = event.target.value; if (['autostart', 'reconnect', 'low_delay'].includes(what)) { settings[what] = !settings[what]; } else { settings[what] = value; } props.onChange(settings, false); }; return ( Reconnect} checked={settings.reconnect} onChange={handleChange('reconnect')} /> Low latency (Buffer)} checked={settings.low_delay} onChange={handleChange('low_delay')} /> Reconnect delay (seconds)} disabled={!settings.reconnect} value={settings.delay} onChange={handleChange('delay')} /> Seconds until a process is restarted. Stale timeout (seconds)} value={settings.staleTimeout} onChange={handleChange('staleTimeout')} /> Seconds until a staled process is terminated. ); } Control.defaulProps = { settings: {}, onChange: function (settings, automatic) {}, };