import { orderBy } from "lodash"; import { FC, Fragment, useMemo } from "react"; import { useDispatch, useSelector } from "react-redux"; import { v4 as uuidv4 } from "uuid"; import ArrowRightIcon from "@dndbeyond/fontawesome-cache/svgs/solid/arrow-right.svg"; import { Accordion } from "~/components/Accordion"; import { Button } from "~/components/Button"; import { CollapsibleContent } from "~/components/CollapsibleContent"; import { ConfirmModal, ConfirmModalProps } from "~/components/ConfirmModal"; import { HtmlContent } from "~/components/HtmlContent"; import { Reference } from "~/components/Reference"; import { isNotNullOrUndefined } from "~/helpers/validation"; import { useCharacterEngine } from "~/hooks/useCharacterEngine"; import { builderSelectors } from "~/tools/js/CharacterBuilder/selectors"; import styles from "./styles.module.css"; export interface ConfirmClassModalProps extends Omit {} export const ConfirmClassModal: FC = ({ className, onClose, ...props }) => { const dispatch = useDispatch(); const confirmClass = useSelector(builderSelectors.getConfirmClass); const { ruleData, characterActions, ruleDataUtils: RuleDataUtils, formatUtils: FormatUtils, } = useCharacterEngine(); const classFeatures = useMemo(() => { return orderBy(confirmClass?.classFeatures, [ (classFeature) => classFeature.requiredLevel, (classFeature) => classFeature.displayOrder, (classFeature) => classFeature.name, ]); }, [confirmClass]); const onConfirm = () => { if (confirmClass) { dispatch(characterActions.classAddRequest(confirmClass, 1)); } onClose(); }; return confirmClass ? ( <>

{confirmClass.name}

{confirmClass?.sources ?.map((sourceMapping) => RuleDataUtils.getSourceDataInfo( sourceMapping.sourceId, ruleData ) ) .filter(isNotNullOrUndefined) .map((source, idx) => ( {idx > 0 ? " / " : " "} ))} {confirmClass.description && ( )}
{confirmClass.portraitAvatarUrl && ( {confirmClass.name )}
{confirmClass.moreDetailsUrl && (
)}
{classFeatures.map((feature) => ( {feature.description} ))}
) : null; };