import React from "react"; import { AbilityLookup, Action, Background, BackgroundUtils, CharacterFeaturesManager, CharacterTheme, DataOriginRefData, FeatManager, RuleData, SnippetData, Spell, } from "@dndbeyond/character-rules-engine/es"; import { HtmlContent } from "~/components/HtmlContent"; import { DataOriginTypeEnum } from "~/constants"; import { FeatFeatureSnippet } from "../FeatureSnippet"; interface Props { background: Background | null; onClick: () => void; onFeatClick?: (feat: FeatManager) => void; featuresManager: CharacterFeaturesManager; onActionUseSet: (action: Action, uses: number) => void; onActionClick?: (action: Action) => void; onSpellClick?: (spell: Spell) => void; onSpellUseSet: (spell: Spell, uses: number) => void; snippetData: SnippetData; ruleData: RuleData; abilityLookup: AbilityLookup; dataOriginRefData: DataOriginRefData; isReadonly: boolean; proficiencyBonus: number; theme: CharacterTheme; } export default class BackgroundDetail extends React.PureComponent { handleBackgroundClick = (evt: React.MouseEvent): void => { const { onClick } = this.props; if (onClick) { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); onClick(); } }; renderDefault = (): React.ReactNode => { return (
Your character's background feature will display in this section once chosen.
); }; render() { const { background, featuresManager, onFeatClick, ...restProps } = this.props; if (!background) { return this.renderDefault(); } const name = BackgroundUtils.getName(background); const featureName = BackgroundUtils.getFeatureName(background); const featureDescription = BackgroundUtils.getFeatureDescription(background); const feats = featuresManager.getDataOriginOnlyFeatsByParent( DataOriginTypeEnum.BACKGROUND, `${BackgroundUtils.getId(background)}` ); return (
{name}
<> {featureDescription && (
{featureName ? `Feature: ${featureName}` : "Feature"}
)} {feats.map((feat) => ( ))}
); } }