// Copyright 2017-2021 @polkadot/react-params authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { Props } from '../types'; import React, { useMemo } from 'react'; import { encodeTypeDef } from '@polkadot/types/create'; import { isUndefined } from '@polkadot/util'; import findComponent from './findComponent'; import Static from './Static'; function Param ({ className = '', defaultValue, isDisabled, isInOption, isOptional, name, onChange, onEnter, onEscape, overrides, registry, type }: Props): React.ReactElement | null { const Component = useMemo( () => findComponent(registry, type, overrides), [registry, type, overrides] ); const label = useMemo( () => isUndefined(name) ? encodeTypeDef(type) : `${name}: ${encodeTypeDef(type)}`, [name, type] ); if (!Component) { return null; } return isOptional ? ( ) : ( ); } export default React.memo(Param);