import React from 'react'; import { useTranslation } from 'react-i18next'; import { Slider } from '../../components/rangeslider'; import { Label } from '../ui/label'; import { NumberInput } from '../ui/number-input'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select'; import { Switch } from '../ui/switch'; function OverrideRow(props: { id: string; title: React.ReactNode; description: React.ReactNode; enabled: boolean; onEnabledChange: (v: boolean) => void; children?: React.ReactNode; }) { return (

{props.description}

{props.enabled && props.children &&
{props.children}
}
); } export function DomainScale(props: { text: string; enableMaxDomain: boolean; enableMinDomain: boolean; enableType: boolean; domainMax: number; domainMin: number; type: 'linear' | 'log' | 'pow' | 'sqrt' | 'symlog'; setEnableMinDomain: (v: boolean) => void; setEnableMaxDomain: (v: boolean) => void; setEnableType: (v: boolean) => void; setDomainMin: (v: number) => void; setDomainMax: (v: number) => void; setType: (v: 'linear' | 'log' | 'pow' | 'sqrt' | 'symlog') => void; }) { const { t } = useTranslation(); return ( <> { const v = Number(e.target.value); if (!isNaN(v)) { props.setDomainMin(v); } }} type="number" /> { const v = Number(e.target.value); if (!isNaN(v)) { props.setDomainMax(v); } }} type="number" /> ); } export function RangeScale(props: { text: string; maxRange: number; minRange: number; enableMaxDomain: boolean; enableMinDomain: boolean; enableRange: boolean; enableType: boolean; rangeMax: number; rangeMin: number; domainMax: number; domainMin: number; type: 'linear' | 'log' | 'pow' | 'sqrt' | 'symlog'; setEnableMinDomain: (v: boolean) => void; setEnableMaxDomain: (v: boolean) => void; setEnableRange: (v: boolean) => void; setEnableType: (v: boolean) => void; setDomainMin: (v: number) => void; setDomainMax: (v: number) => void; setRangeMin: (v: number) => void; setRangeMax: (v: number) => void; setType: (v: 'linear' | 'log' | 'pow' | 'sqrt' | 'symlog') => void; }) { const { t } = useTranslation(); return ( <>
{ props.setRangeMin(min); props.setRangeMax(max); }} step={props.maxRange < 2 ? 0.01 : 1} />
{props.rangeMin}
{props.rangeMax}
); }