import {FC, HTMLProps, memo, useMemo} from "react" import {EnrichedEntity, Entity} 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.recipe && ( <> Recipe > )} {entity.usedBy?.length ? ( <> Used By {entity.usedBy.map(used => )} > ) : null} {(leftClickText || rightClickText) && ( <> Actions {leftClickText && {leftClickText}} {rightClickText && {rightClickText}} > )} } export const EntitySpan = memo(EntitySpanUnmemo)