import state, { useSelector } from 'state' import styled from 'styles' import { ControlType, NumberCodeControl, VectorCodeControl } from 'types' export default function Control({ id }: { id: string }): JSX.Element { const control = useSelector((s) => s.data.codeControls[id]) if (!control) return null return ( <> {control.type === ControlType.Number ? ( ) : control.type === ControlType.Vector ? ( ) : null} ) } function NumberControl({ id, min, max, step, value }: NumberCodeControl) { return ( state.send('CHANGED_CODE_CONTROL', { [id]: Number(e.currentTarget.value), }) } /> state.send('CHANGED_CODE_CONTROL', { [id]: Number(e.currentTarget.value), }) } /> ) } function VectorControl({ id, value, isNormalized }: VectorCodeControl) { return ( state.send('CHANGED_CODE_CONTROL', { [id]: [Number(e.currentTarget.value), value[1]], }) } /> state.send('CHANGED_CODE_CONTROL', { [id]: [Number(e.currentTarget.value), value[1]], }) } /> state.send('CHANGED_CODE_CONTROL', { [id]: [value[0], Number(e.currentTarget.value)], }) } /> state.send('CHANGED_CODE_CONTROL', { [id]: [value[0], Number(e.currentTarget.value)], }) } /> ) } const Inputs = styled('div', { display: 'flex', gap: '8px', height: '100%', '& input': { font: '$ui', width: '64px', fontSize: '$1', border: '1px solid $inputBorder', backgroundColor: '$input', color: '$text', height: '100%', padding: '0px 6px', }, "& input[type='range']": { padding: 0, flexGrow: 2, }, })