import * as React from 'react'; import { intersperse } from '../../../../util/react'; export interface Props { name: React.ReactNode; values: Value[]; displayMode: DisplayMode; type?: number; } export type Value = [string, DisplayValueAugment]; export enum DisplayValueAugment { simple = 0, augmented = 1, } export enum DisplayMode { name_value = 0, value_name = 1, } const FormattedValue: React.SFC<{ value: Value }> = ({ value: [value, augment], }) => { const className = DisplayValueAugment[augment]; if (className === undefined) { throw new Error(`unrecognized DisplayValueAugment '${augment}'`); } return {value}; }; export default class LineContent extends React.PureComponent { public render() { const { displayMode, values, name } = this.props; const formatted_values = intersperse( values.map((value, index) => ( )), () => ', ', ); switch (displayMode) { case DisplayMode.name_value: return ( <> {name} {formatted_values} ); case DisplayMode.value_name: return ( <> {formatted_values} {name} ); default: throw new Error(`unrecognized displayMode '${displayMode}'`); } } }