import React from 'react' import { ControlInput } from './ControlInput' import { log, LevaErrors } from '../../utils/log' import { Plugins } from '../../plugin' import { Button } from '../Button' import { ButtonGroup } from '../ButtonGroup' import { Monitor } from '../Monitor' import { useInput } from '../../hooks' import { SpecialInputs } from '../../types' type ControlProps = { path: string } const specialComponents = { [SpecialInputs.BUTTON]: Button, [SpecialInputs.BUTTON_GROUP]: ButtonGroup, [SpecialInputs.MONITOR]: Monitor, } export const Control = React.memo(({ path }: ControlProps) => { const [input, { set, setSettings, disable, storeId, emitOnEditStart, emitOnEditEnd }] = useInput(path) if (!input) return null const { type, label, key, ...inputProps } = input if (type in SpecialInputs) { // @ts-expect-error const SpecialInputForType = specialComponents[type] return } if (!(type in Plugins)) { log(LevaErrors.UNSUPPORTED_INPUT, type, path) return null } return ( // @ts-expect-error ) })