import * as React from "react"; import { Creature, CreatureUtils, RuleData, } from "@dndbeyond/character-rules-engine/es"; interface Props { creature: Creature; ruleData: RuleData; onClick?: (creature: Creature) => void; } export class CreaturePreview extends React.PureComponent { handleClick = (evt: React.MouseEvent): void => { const { onClick, creature } = this.props; if (onClick) { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); onClick(creature); } }; renderMetaText = (): React.ReactNode => { const { ruleData, creature } = this.props; let metaItems: Array = []; const sizeInfo = CreatureUtils.getSizeInfo(creature); let size: string | null = ""; if (sizeInfo !== null) { size = sizeInfo.name; } let description: string = `${size} ${CreatureUtils.getTypeName( creature, ruleData )}`.trim(); if (description.length) { metaItems.push(description); } return (
{metaItems.map((metaItem, idx) => ( {metaItem} ))}
); }; render() { const { creature } = this.props; const imageStyles: React.CSSProperties = { backgroundImage: `url(${CreatureUtils.getAvatarUrl(creature)})`, }; return (
{CreatureUtils.getName(creature)} {this.renderMetaText()}
); } } export default CreaturePreview;