import './settingsEditor.less'; import React, { useState } from 'react'; const SettingsEditor = ({settings, updateSettings = () => {} }) => { const [currentSettings, setCurrentSettings] = useState(settings); const validations = { fontSize: [ (value) => { const number = Number(value); if (number < 9 || number > 30) { return 'Font size must be between 9 and 30.'; } return null; }, ], }; const handleFieldChange = (setting, e) => { const value = e.target.type === 'checkbox' ? e.target.checked : e.target.value; const inputRules = validations[setting] ?? []; const validationErrors = inputRules .map((rule) => rule(value)) .filter(Boolean); if (validationErrors.length > 0) { e.target.setCustomValidity(validationErrors.join('\n')); e.target.reportValidity(); return; } e.target.setCustomValidity(''); const updatedSettings = { ...currentSettings, [setting]: e.target.type === 'number' ? Number(value) : value, }; setCurrentSettings(updatedSettings); updateSettings(updatedSettings); }; return (

Editor Settings

handleFieldChange('blockShading', e)} />
handleFieldChange('activeLineShading', e)} />
handleFieldChange('lineNumbers', e)} />
handleFieldChange('fontSize', e)} />
); }; export default SettingsEditor;