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}
>
);
}