import { FC, HTMLProps, memo, useMemo } from 'react' import { EnrichedEntity } from '../../../src/types' import { useFactories } from '../../../src/hooks/useFactories' import styles from './EntitySpan.module.css' import { RecipeSpan } from '../Recipe/Recipe' import { LeftClickIcon } from '../LeftClickIcon/LeftClickIcon' import cx from 'classnames' import { EntityIcon } from '../EntityIcon/EntityIcon' interface Props extends Omit, 'value'> { value: EnrichedEntity | string state?: 'base' | 'produced' | 'unknown' leftClickText?: string rightClickText?: string simpleStyle?: boolean className?: string } const EntitySpanUnmemo: FC = ({ className, value, state, leftClickText, rightClickText, simpleStyle, ...rest }) => { const { findFactory } = useFactories() const entity = useMemo(() => { return typeof value === 'object' ? value : findFactory(value) ?? { usedBy: [], href: value, name: value, image: value, recipe: undefined } }, [findFactory, value]) return ( {/* eslint-disable-next-line @next/next/no-img-element */} {entity.name} {entity.name}
{entity.recipe && ( <>
Recipe
)} {entity.usedBy?.length ? ( <>
Used By
{entity.usedBy.map(used => ( ))}
) : null} {(leftClickText || rightClickText) && ( <>
Actions
{leftClickText && (
{' '} {leftClickText}
)} {rightClickText && (
{' '} {rightClickText}
)} )}
) } export const EntitySpan = memo(EntitySpanUnmemo)