| import { typedMemo } from '@invoke-ai/ui-library'; |
| import { MetadataItemView } from 'features/metadata/components/MetadataItemView'; |
| import { useMetadataItem } from 'features/metadata/hooks/useMetadataItem'; |
| import type { MetadataHandlers } from 'features/metadata/types'; |
| import { MetadataParseFailedToken } from 'features/metadata/util/parsers'; |
| import { isSymbol } from 'lodash-es'; |
|
|
| type MetadataItemProps<T> = { |
| metadata: unknown; |
| handlers: MetadataHandlers<T>; |
| direction?: 'row' | 'column'; |
| }; |
|
|
| const _MetadataItem = typedMemo(<T,>({ metadata, handlers, direction = 'row' }: MetadataItemProps<T>) => { |
| const { label, isDisabled, value, renderedValue, onRecall } = useMetadataItem(metadata, handlers); |
|
|
| if (value === MetadataParseFailedToken) { |
| return null; |
| } |
|
|
| if (handlers.getIsVisible && !isSymbol(value) && !handlers.getIsVisible(value)) { |
| return null; |
| } |
|
|
| return ( |
| <MetadataItemView |
| label={label} |
| onRecall={onRecall} |
| isDisabled={isDisabled} |
| renderedValue={renderedValue} |
| direction={direction} |
| /> |
| ); |
| }); |
|
|
| export const MetadataItem = typedMemo(_MetadataItem); |
|
|
| MetadataItem.displayName = 'MetadataItem'; |
|
|