import * as React from "react"; import { CharacterTheme, Item, ItemUtils, } from "@dndbeyond/character-rules-engine/es"; import { ItemName } from "~/components/ItemName"; interface Props { item: Item; onClick?: (item: Item) => void; theme: CharacterTheme; } class ItemPreview extends React.PureComponent { handleClick = (evt: React.MouseEvent): void => { const { onClick, item } = this.props; if (onClick) { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); onClick(item); } }; renderMetaText = (): React.ReactNode => { const { item } = this.props; let metaItems: Array = []; if (ItemUtils.isLegacy(item)) { metaItems.push("Legacy"); } const type = ItemUtils.getType(item); if (type) { metaItems.push(type); } if (ItemUtils.isArmorContract(item)) { let baseArmorName = ItemUtils.getBaseArmorName(item); if (baseArmorName) { metaItems.push(baseArmorName); } } else if (ItemUtils.isGearContract(item)) { let subType = ItemUtils.getSubType(item); if (subType) { metaItems.push(subType); } } return (
{metaItems.map((metaItem, idx) => ( {metaItem} ))}
); }; render() { const { item } = this.props; const imageStyles: React.CSSProperties = { backgroundImage: `url(${ItemUtils.getAvatarUrl(item)})`, }; return (
{this.renderMetaText()}
); } } export default ItemPreview;