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.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)