import React, { ReactElement } from 'react' import CodeMirror from '@uiw/react-codemirror' import styles from './index.module.css' import { InputProps } from '..' import FilesInput from './FilesInput' import CustomProvider from './Provider' import BoxSelection, { BoxSelectionOption } from './BoxSelection' import Datatoken from './Datatoken' import classNames from 'classnames/bind' import AssetSelection, { AssetSelectionAsset } from './AssetSelection' import Nft from './Nft' import InputRadio from './Radio' import ContainerInput from '@shared/FormInput/InputElement/ContainerInput' import TagsAutoComplete from './TagsAutoComplete' import TabsFile from '@shared/atoms/TabsFile' import useDarkMode from '@oceanprotocol/use-dark-mode' import appConfig from '../../../../../app.config' import { extensions, oceanTheme } from '@utils/codemirror' import { ConsumerParameters } from './ConsumerParameters' const cx = classNames.bind(styles) const DefaultInput = ({ size, className, // We filter out all props which are not allowed // to be passed to HTML input so these stay unused. /* eslint-disable @typescript-eslint/no-unused-vars */ prefix, postfix, additionalComponent, /* eslint-enable @typescript-eslint/no-unused-vars */ ...props }: InputProps) => ( ) export default function InputElement({ options, sortOptions, prefix, postfix, size, field, multiple, // We filter out all props which are not allowed // to be passed to HTML input so these stay unused. /* eslint-disable @typescript-eslint/no-unused-vars */ label, help, prominentHelp, form, additionalComponent, disclaimer, disclaimerValues, /* eslint-enable @typescript-eslint/no-unused-vars */ ...props }: InputProps): ReactElement { const styleClasses = cx({ select: true, [size]: size }) const darkMode = useDarkMode(false, appConfig?.darkModeConfig) switch (props.type) { case 'select': { const sortedOptions = !sortOptions && sortOptions === false ? options : (options as string[]).sort((a: string, b: string) => a.localeCompare(b) ) return ( ) } case 'tabs': { const tabs: any = [] props.fields.map((field: any, i) => { return tabs.push({ title: field.title, field, props, content: ( ) }) }) return ( ) } case 'codeeditor': return ( { form.setFieldValue(`${props.name}`, value) }} /> ) case 'consumerParameters': return case 'textarea': return