import clsx from "clsx"; import { FC, HTMLAttributes } from "react"; import { useSelector } from "react-redux"; import { AdvantageIcon, BoxBackground, DigitalDiceWrapper, InitiativeBoxSvg, } from "@dndbeyond/character-components/es"; import { RollKinds, RollTypes, } from "@dndbeyond/pocket-dimension-dice/constants"; import { NumberDisplay } from "~/components/NumberDisplay"; import { useCharacterTheme } from "~/contexts/CharacterTheme"; import { useSidebar } from "~/contexts/Sidebar"; import { useCharacterEngine } from "~/hooks/useCharacterEngine"; import a11yStyles from "~/styles/accessibility.module.css"; import { appEnvSelectors, characterRollContextSelectors, } from "~/tools/js/Shared/selectors"; import { PaneComponentEnum } from "../Sidebar/types"; import styles from "./styles.module.css"; interface Props extends HTMLAttributes { isMobile?: boolean; isTablet?: boolean; } export const InitiativeBox: FC = ({ isMobile, isTablet, ...props }) => { const { pane: { paneHistoryStart }, } = useSidebar(); const handleClick = (evt: React.MouseEvent): void => { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); paneHistoryStart(PaneComponentEnum.INITIATIVE); }; const { hasInitiativeAdvantage, processedInitiative, characterTheme: theme, } = useCharacterEngine(); const initiative = Number(processedInitiative); const { isDarkMode } = useCharacterTheme(); const diceEnabled = useSelector(appEnvSelectors.getDiceEnabled); const rollContext = useSelector( characterRollContextSelectors.getCharacterRollContext ); return (
{!isMobile && (
Initiative
)}
{!isMobile && ( <>

Initiative

)} 0 ? `+${initiative}` : initiative !== 0 ? initiative : "" }`} rollType={RollTypes.Roll} action="Initiative" rollKind={hasInitiativeAdvantage ? RollKinds.Advantage : undefined} isDiceEnabled={diceEnabled} entityId={String(rollContext.entityId)} entityType={String(rollContext.entityType)} name={String(rollContext.name)} >
{hasInitiativeAdvantage && (
)} {isMobile &&
Initiative
}
); };