import React, { Component, ReactElement } from 'react'; import { VersionPageConsumerProps, DetailContextConsumer } from '../../pages/Version'; import Avatar from '../../muiComponents/Avatar'; import List from '../../muiComponents/List'; import npm from '../Install/img/npm.svg'; import ListItemText from '../../muiComponents/ListItemText'; import Grid from '../../muiComponents/Grid'; import { StyledText, EngineListItem } from './styles'; // @ts-ignore import node from './img/node.png'; const ICONS = { 'node-JS': , 'NPM-version': , }; class Engine extends Component { public render(): ReactElement { return ( {context => { return this.renderEngine(context as VersionPageConsumerProps); }} ); } private renderEngine = ({ packageMeta }): ReactElement | null => { const { engines } = packageMeta.latest; if (!engines) { return null; } const engineDict = { 'node-JS': engines.node, 'NPM-version': engines.npm, }; const accumulator: React.ReactNode[] = []; const items = Object.keys(engineDict).reduce((markup, text, key) => { const heading = engineDict[text]; if (heading) { markup.push( {this.renderListItems(heading, text)} ); } return markup; }, accumulator); if (items.length < 1) { return null; } return {items}; }; private renderListItems = (heading: string, text: string) => { return ( {text.split('-').join(' ')}}> {ICONS[text]} ); }; } export default Engine;