Files
node-factorio-recipes/components/home/Recipe/Recipe.tsx
Sebastian Seedorf de95f57b18 Linting
2022-08-18 09:20:00 +02:00

30 lines
917 B
TypeScript

import { FC } from 'react'
import { Recipe } from '../../../src/types'
import { EntityIcon } from '../EntityIcon/EntityIcon'
import styles from './Recipe.module.css'
interface Props {
recipe: Recipe
}
export const RecipeSpan: FC<Props> = ({ recipe }) => {
const toEntityIcon = ([key, amount]: [string, number]) => (
<EntityIcon key={key} value={key} amount={amount} />
)
const joinByPlus = (elems: JSX.Element[]) =>
elems.reduce((acc, curr) => {
if (acc.length) {
return [...acc, '+', curr]
} else {
return [curr]
}
}, [] as (JSX.Element | string)[])
const before = Object.entries({ ...recipe.prerequisites }).map(toEntityIcon)
const after = Object.entries({ ...recipe.output }).map(toEntityIcon)
return (
<span className={styles.recipe}>
{joinByPlus([toEntityIcon(['/Time', recipe.time]), ...before])} {joinByPlus(after)}
</span>
)
}