From 671c56279ebb39b3e2ed93d6de841ce309bdc705 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Wed, 27 Sep 2023 20:10:09 -0400 Subject: [PATCH 01/70] gm button --- .../HeaderContent/HeaderContent.tsx | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/components/PageLayout/HeaderContent/HeaderContent.tsx b/src/components/PageLayout/HeaderContent/HeaderContent.tsx index 4de6f8b3..0286dc6d 100755 --- a/src/components/PageLayout/HeaderContent/HeaderContent.tsx +++ b/src/components/PageLayout/HeaderContent/HeaderContent.tsx @@ -1,7 +1,11 @@ import { Link, useNavigate } from "react-router-dom"; import { Button, Col, Row, Tooltip, Typography } from "antd"; import { HeaderContentProps } from "./definitions"; -import { LogoutOutlined } from "@ant-design/icons"; +import { + LogoutOutlined, + ReconciliationOutlined, + UserAddOutlined, +} from "@ant-design/icons"; import LoginSignupModal from "../../../modals/LoginSignupModal"; import { useState } from "react"; import { title } from "../../../../package.json"; @@ -21,8 +25,8 @@ export default function HeaderContent({ {user && ( - +
+ + +
)} {user ? ( From b04ac7869da5fa1a98d65544efc19abc54a39b62 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Thu, 28 Sep 2023 23:07:32 -0400 Subject: [PATCH 02/70] gm portal --- src/App.tsx | 2 ++ src/pages/GMPortal/GMPortal.tsx | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/pages/GMPortal/GMPortal.tsx diff --git a/src/App.tsx b/src/App.tsx index 5051f8f7..a19c2de8 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -26,6 +26,7 @@ const Sources = lazy(() => import("./pages/Sources/Sources")); const CharacterSheet = lazy( () => import("./pages/CharacterSheet/CharacterSheet") ); +const GMPortal = lazy(() => import("./pages/GMPortal/GMPortal")); function App() { const [user, setUser] = useState(null); @@ -105,6 +106,7 @@ function App() { /> } /> } /> + } /> diff --git a/src/pages/GMPortal/GMPortal.tsx b/src/pages/GMPortal/GMPortal.tsx new file mode 100644 index 00000000..b490c970 --- /dev/null +++ b/src/pages/GMPortal/GMPortal.tsx @@ -0,0 +1,29 @@ +import { UsergroupAddOutlined } from "@ant-design/icons"; +import { Button, Typography } from "antd"; +import { useOutletContext } from "react-router-dom"; + +export default function GMPortal() { + const outletContext = useOutletContext() as { className: string }; + + return ( +
*+*]:mt-4`}> +
+ + GM Portal + + +
+
+ {/*} + + + */} +
+
+ ); +} From 0f3407a1a4ddfb4a888ec867d3ced14bfc8feddb Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 28 Sep 2023 23:08:04 -0400 Subject: [PATCH 03/70] titles --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e29573f4..08de112e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -338,9 +338,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -781,13 +781,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { diff --git a/package.json b/package.json index 3e5802ad..24827cce 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codex-quest", - "title": "Codex.Quest", + "title": "Codex Quest", "version": "1.15.0.0", "bfrpgEdition": "4th", "bfrpgRelease": "137", From d6f213b36831949f651291339c507f2c1af852de Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 28 Sep 2023 23:08:16 -0400 Subject: [PATCH 04/70] dice svg --- src/assets/images/dice.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/assets/images/dice.svg diff --git a/src/assets/images/dice.svg b/src/assets/images/dice.svg new file mode 100644 index 00000000..34434d3d --- /dev/null +++ b/src/assets/images/dice.svg @@ -0,0 +1 @@ + \ No newline at end of file From 5e86956d316c8d4c8c4d48b029d5e196c281fe7c Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 28 Sep 2023 23:08:38 -0400 Subject: [PATCH 05/70] mobile styles --- .../InitiativeRoller/InitiativeRoller.tsx | 5 +- .../InitiativeRoller/definitions.ts | 1 + src/components/DiceRoller/DiceRoller.tsx | 14 ---- .../HeaderContent/HeaderContent.tsx | 80 +++++++++---------- src/components/PageLayout/PageLayout.tsx | 32 +++++++- src/pages/CharacterSheet/CharacterSheet.tsx | 30 +++++-- 6 files changed, 93 insertions(+), 69 deletions(-) delete mode 100755 src/components/DiceRoller/DiceRoller.tsx diff --git a/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx b/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx index 1211515d..4942b29f 100755 --- a/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx +++ b/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx @@ -3,9 +3,11 @@ import { DiceRoller } from "@dice-roller/rpg-dice-roller"; import { InitiativeRollerProps } from "./definitions"; import CloseIcon from "../../CloseIcon/CloseIcon"; import { RaceNames } from "../../../data/definitions"; +import { NodeIndexOutlined } from "@ant-design/icons"; export default function InitiativeRoller({ characterData, + buttonTextClassNames, }: InitiativeRollerProps) { const [api, contextHolder] = notification.useNotification(); @@ -42,7 +44,8 @@ export default function InitiativeRoller({ {contextHolder} diff --git a/src/components/CharacterSheet/InitiativeRoller/definitions.ts b/src/components/CharacterSheet/InitiativeRoller/definitions.ts index 8ad16745..c3913889 100755 --- a/src/components/CharacterSheet/InitiativeRoller/definitions.ts +++ b/src/components/CharacterSheet/InitiativeRoller/definitions.ts @@ -2,4 +2,5 @@ import { CharacterData } from "../../definitions"; export interface InitiativeRollerProps { characterData: CharacterData; + buttonTextClassNames: string; } diff --git a/src/components/DiceRoller/DiceRoller.tsx b/src/components/DiceRoller/DiceRoller.tsx deleted file mode 100755 index 26e74d7a..00000000 --- a/src/components/DiceRoller/DiceRoller.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { Button } from "antd"; - -export default function DiceRoller({ - className = "", - onClick, -}: React.ComponentPropsWithRef<"div">) { - return ( -
- -
- ); -} diff --git a/src/components/PageLayout/HeaderContent/HeaderContent.tsx b/src/components/PageLayout/HeaderContent/HeaderContent.tsx index 0286dc6d..b3fa04b8 100755 --- a/src/components/PageLayout/HeaderContent/HeaderContent.tsx +++ b/src/components/PageLayout/HeaderContent/HeaderContent.tsx @@ -20,50 +20,43 @@ export default function HeaderContent({ const navigate = useNavigate(); const [isLoginSignupModalOpen, setIsLoginSignupModalOpen] = useState(false); const handleCancel = () => setIsLoginSignupModalOpen(false); - const HeaderContentClassNames = classNames("gap-y-4", className); + const headerContentClassNames = classNames( + "gap-y-2", + "grid", + "grid-cols-[1fr,auto]", + "grid-rows-[auto,auto]", + className + ); + const buttonTextClassNames = classNames("hidden"); return ( - - + - - - {title} - - - {user && ( -
- - -
- )} - - + {title} + +
+ {user && ( +
+ + +
+ )} + <> {user ? ( - <> - +
+ {user.displayName || user.email} @@ -72,10 +65,9 @@ export default function HeaderContent({ shape="circle" icon={} onClick={() => auth.signOut()} - className="mt-4 lg:m-0 lg:ml-4 leading-none" /> - +
) : ( + - From 379eb10c408df7a74fbccda15be739e9d22ec7b3 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 28 Sep 2023 23:43:15 -0400 Subject: [PATCH 06/70] mbile styles --- .../CharacterDescription/CharacterDescription.tsx | 10 +++++----- .../DescriptionFieldButton.tsx | 12 +++++++++--- .../CharacterSheet/EquipmentInfo/EquipmentInfo.tsx | 7 +++++++ src/pages/CharacterSheet/CharacterSheet.tsx | 9 +++++++-- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx index e2131661..94888b87 100755 --- a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx +++ b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx @@ -10,7 +10,7 @@ import { MinusCircleOutlined, PlusCircleOutlined } from "@ant-design/icons"; import { getClassType } from "../../../support/helpers"; import DescriptionFieldButton from "./DescriptionFieldButton/DescriptionFieldButton"; -export default function Description({ +export default function CharacterDescription({ characterData, setCharacterData, userIsOwner, @@ -120,11 +120,11 @@ export default function Description({ /> )} -
+ <> {typeof characterData.desc === "object" && characterData.desc.map((desc: string, index: number) => { return ( -
+
{index > 0 && ( handleDeleteDescriptionField(index)} @@ -135,7 +135,7 @@ export default function Description({ } - className={index > 0 ? "top-12" : ""} + className={index > 0 ? "top-0 lg:top-12" : ""} /> )} ); })} -
+
); } diff --git a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx index f428b447..54a307a9 100644 --- a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx +++ b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx @@ -8,10 +8,16 @@ export default function DescriptionFieldButton({ icon, className, }: DescriptionFieldButtonProps & React.ComponentPropsWithRef<"div">) { - const buttonClassNames = classNames("absolute", "left-0", className); + const buttonClassNames = classNames("absolute", "lg:left-0", className); return ( - - @@ -69,6 +75,7 @@ export default function EquipmentInfo({ type="primary" disabled={!userIsOwner} onClick={showAddCustomEquipmentModal} + icon={} > Add Custom Equipment diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index 09d8f5e4..9ba59d89 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -58,6 +58,7 @@ import { } from "../../support/helpers"; import DiceSvg from "../../assets/images/dice.svg"; import classNames from "classnames"; +import CharacterDescription from "../../components/CharacterSheet/CharacterDescription/CharacterDescription"; export default function CharacterSheet({ user }: CharacterSheetProps) { const { uid, id } = useParams(); @@ -122,7 +123,6 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { // HIT DICE const hitDice = (level: number, className: string[], dice: string) => { - // TODO: This should be using class modifier and specific classes should not be called out here. const dieType = dice.split("d")[1].split("+")[0]; const prefix = Math.min(level, 9); @@ -189,6 +189,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { }; // This checks if there is armor being worn or not and adjusts movement. + // TODO: Better way to do this? if (isWearing(["No Armor", "Magic Leather Armor", ""])) { return characterData.weight <= carryingCapacity.light ? 40 : 30; } else if ( @@ -314,6 +315,10 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { /> {/* ROLLING BUTTONS */}
+ {/* TODO: THIS SHOULD BE THREE OF THE SAME component with different labels, */} + {/* {/* BIO & NOTES */} - Date: Fri, 29 Sep 2023 11:36:17 -0400 Subject: [PATCH 07/70] cleanup --- .../CharacterDescription.tsx | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx index 94888b87..cce346ec 100755 --- a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx +++ b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx @@ -110,8 +110,8 @@ export default function CharacterDescription({ return (
-
- +
+ Bio & Notes {getClassType(characterData.class) === "custom" && ( @@ -120,24 +120,29 @@ export default function CharacterDescription({ /> )}
- <> +
{typeof characterData.desc === "object" && characterData.desc.map((desc: string, index: number) => { return ( -
- {index > 0 && ( - handleDeleteDescriptionField(index)} - icon={} - /> - )} - {index === characterData.desc.length - 1 && index < 9 && ( - } - className={index > 0 ? "top-0 lg:top-12" : ""} - /> - )} +
+
+ {index > 0 && ( + handleDeleteDescriptionField(index)} + icon={} + /> + )} + {index === characterData.desc.length - 1 && index < 9 && ( + } + // className={index > 0 ? "" : ""} + /> + )} +
); })} - +
); } From a31b04b91a8a5c72aca63de330f5b6837bb2ba27 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 11:36:32 -0400 Subject: [PATCH 08/70] cleanup --- .../DescriptionFieldButton/DescriptionFieldButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx index 54a307a9..c2b1a6cb 100644 --- a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx +++ b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx @@ -8,7 +8,7 @@ export default function DescriptionFieldButton({ icon, className, }: DescriptionFieldButtonProps & React.ComponentPropsWithRef<"div">) { - const buttonClassNames = classNames("absolute", "lg:left-0", className); + const buttonClassNames = classNames(className, "mb-4"); return (
- - {/* SPELLS */} - {characterData.spells.length > 0 && ( + + {/* SPELLS */} + {/* {characterData.spells.length > 0 && ( - )} - {/* WEAPONS */} - - - {/* GENERAL EQUIPMENT */} - */} + {/* GENERAL EQUIPMENT */} + {/* - - {/* ARMOR */} - {/* 'armor-and-shields' was an old category that included armor AND shields. Keep for legacy characters. */} - */} + {/* ARMOR */} + {/* 'armor-and-shields' was an old category that included armor AND shields. Keep for legacy characters. */} + {/* - - {/* SHIELDS */} - */} + {/* SHIELDS */} + {/* - - {/* BEAST OF BURDEN */} - */} + {/* BEAST OF BURDEN */} + {/* - - {/* Ammunition */} - */} + {/* Ammunition */} + {/* - - + */} + {/* */}
); } diff --git a/src/components/CharacterSheet/EquipmentInfo/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/definitions.ts index d2b9ce9c..91e80ba1 100755 --- a/src/components/CharacterSheet/EquipmentInfo/definitions.ts +++ b/src/components/CharacterSheet/EquipmentInfo/definitions.ts @@ -1,3 +1,4 @@ +import { CollapseItem } from "../../../data/definitions"; import { EquipmentItem } from "../../EquipmentStore/definitions"; import { CharacterData, SetCharacterData } from "../../definitions"; @@ -11,4 +12,5 @@ export interface EquipmentInfoProps { setWeapon?: (weapon: EquipmentItem) => void; showAttackModal?: () => void; updateAC: () => void; + collapseItems: CollapseItem[]; } diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 315712c9..0fcf1169 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -69,3 +69,9 @@ export enum DiceTypes { D20 = "d20", D100 = "d100", } + +export interface CollapseItem { + key: string; + label: string; + children: React.ReactNode; +} diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index 9ba59d89..af5c71de 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -283,6 +283,16 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { const buttonTextClassNames = classNames("hidden"); + /* START OF GOOD FUNCTIONS FOR 1.16.0.0 */ + // TODO: CLEANUP ABOVE THIS LINE + const equipmentInfoCollapseItems = [ + { + key: "1", + label: "Spells", + children:

Spells Children

, + }, + ]; + return characterData ? (
*+*]:mt-4`}>
From 33c53d0e85c0770b821e0458d2adff98eacd9496 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:38:29 -0400 Subject: [PATCH 11/70] further cleanup --- src/components/definitions.ts | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/components/definitions.ts b/src/components/definitions.ts index 2efe54ec..f39204b0 100755 --- a/src/components/definitions.ts +++ b/src/components/definitions.ts @@ -1,4 +1,4 @@ -import { SpellLevels } from "../data/definitions"; +import { Spell } from "../data/definitions"; import { SavingThrowsType } from "./CharacterSheet/SavingThrows/definitions"; import { Abilities } from "./CharacterCreator/CharacterAbilities/definitions"; import { EquipmentItem } from "./EquipmentStore/definitions"; @@ -10,14 +10,6 @@ interface HP { desc: string; } -export interface Spell { - name: string; - range: string; - level: SpellLevels; - duration: string; - description: string; -} - interface SpecialRestriction { race: string[]; class: string[]; @@ -58,14 +50,6 @@ export type SpellItem = { name: string; }; -export interface SpellType { - name: string; - range: string; - level: SpellLevels; - duration: string; - description: string; -} - export type SavingThrows = { deathRayOrPoison: number; magicWands: number; From e5eb0d6ea87d6617c2a9966203b21901bd2d2e38 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:38:59 -0400 Subject: [PATCH 12/70] cleanup --- .../CharacterSheet/EquipmentInfo/definitions.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/CharacterSheet/EquipmentInfo/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/definitions.ts index 91e80ba1..1761a9a1 100755 --- a/src/components/CharacterSheet/EquipmentInfo/definitions.ts +++ b/src/components/CharacterSheet/EquipmentInfo/definitions.ts @@ -1,16 +1,10 @@ import { CollapseItem } from "../../../data/definitions"; -import { EquipmentItem } from "../../EquipmentStore/definitions"; -import { CharacterData, SetCharacterData } from "../../definitions"; +import { CharacterData } from "../../definitions"; export interface EquipmentInfoProps { userIsOwner: boolean; showAddEquipmentModal: () => void; showAddCustomEquipmentModal: () => void; characterData: CharacterData; - setCharacterData: SetCharacterData; - handleCustomDelete: (item: EquipmentItem) => void; - setWeapon?: (weapon: EquipmentItem) => void; - showAttackModal?: () => void; - updateAC: () => void; collapseItems: CollapseItem[]; } From 8ba1fe8edb9ff6929ef5d710188ae76b007aee57 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:41:27 -0400 Subject: [PATCH 13/70] refactor to use `items` instead of `children` --- .../EquipmentInfo/EquipmentInfo.tsx | 140 +----------------- 1 file changed, 1 insertion(+), 139 deletions(-) diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx index 35336b8c..35b34af7 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx @@ -1,60 +1,16 @@ import { Button, Collapse, Typography } from "antd"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; import { EquipmentInfoProps } from "./definitions"; -import Spells from "./Spells/Spells"; -import EquipmentList from "./EquipmentList/EquipmentList"; -import { EquipmentItem } from "../../EquipmentStore/definitions"; -import { - AppstoreAddOutlined, - ExperimentOutlined, - ToolOutlined, -} from "@ant-design/icons"; -import { EquipmentCategories } from "../../../data/definitions"; +import { ExperimentOutlined, ToolOutlined } from "@ant-design/icons"; export default function EquipmentInfo({ userIsOwner, showAddEquipmentModal, showAddCustomEquipmentModal, characterData, - setCharacterData, - handleCustomDelete, - setWeapon, - showAttackModal, - updateAC, className, collapseItems, }: EquipmentInfoProps & React.ComponentPropsWithRef<"div">) { - const equipmentListCategories = { - weapons: [ - "weapons", - "brawling", - EquipmentCategories.AXES, - EquipmentCategories.BOWS, - EquipmentCategories.DAGGERS, - EquipmentCategories.SWORDS, - EquipmentCategories.HAMMERMACE, - EquipmentCategories.IMPROVISED, - EquipmentCategories.CHAINFLAIL, - EquipmentCategories.OTHERWEAPONS, - EquipmentCategories.SLINGHURLED, - EquipmentCategories.SPEARSPOLES, - ], - general: [EquipmentCategories.GENERAL, "items"], - armor: [EquipmentCategories.ARMOR, "armor-and-shields"], - shields: [EquipmentCategories.SHIELDS, "armor-and-shields"], - beasts: [EquipmentCategories.BEASTS, EquipmentCategories.BARDING], - ammo: [EquipmentCategories.AMMUNITION], - }; - - const handleAttackClick = (item: EquipmentItem) => { - if (setWeapon) { - setWeapon(item); - } - if (showAttackModal) { - showAttackModal(); - } - }; - return (
@@ -90,100 +46,6 @@ export default function EquipmentInfo({ items={collapseItems} className="bg-seaBuckthorn mt-4 print:hidden" /> - {/* SPELLS */} - {/* {characterData.spells.length > 0 && ( - - - - )} */} - {/* WEAPONS */} - {/* - - */} - {/* GENERAL EQUIPMENT */} - {/* - - */} - {/* ARMOR */} - {/* 'armor-and-shields' was an old category that included armor AND shields. Keep for legacy characters. */} - {/* - - */} - {/* SHIELDS */} - {/* - - */} - {/* BEAST OF BURDEN */} - {/* - - */} - {/* Ammunition */} - {/* - - */} - {/* */}
); } From 50ab00192e10297a2ab36cc1dfcf4b9da5d5d087 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:42:04 -0400 Subject: [PATCH 14/70] Rename and refactor --- .../CharacterSpellList/CharacterSpellList.tsx | 51 ++++++++++++++++++ .../CharacterSpellList/definitions.ts | 5 ++ .../EquipmentInfo/Spells/Spells.tsx | 52 ------------------- .../EquipmentInfo/Spells/definitions.ts | 5 -- 4 files changed, 56 insertions(+), 57 deletions(-) create mode 100755 src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx create mode 100755 src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts delete mode 100755 src/components/CharacterSheet/EquipmentInfo/Spells/Spells.tsx delete mode 100755 src/components/CharacterSheet/EquipmentInfo/Spells/definitions.ts diff --git a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx new file mode 100755 index 00000000..3164d5f3 --- /dev/null +++ b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx @@ -0,0 +1,51 @@ +import { Button, Descriptions } from "antd"; +import { useState } from "react"; +import { CharacterSpellListProps } from "./definitions"; +import { marked } from "marked"; +import { Spell } from "../../../../data/definitions"; + +export default function CharacterSpellList({ + spells, +}: CharacterSpellListProps) { + const [selectedSpell, setSelectedSpell] = useState(null); + const spellItems = spells.map((spell: Spell, index: number) => { + const spellDescription = ( +
+ + {selectedSpell === index && ( +
+ )} +
+ ); + return [ + { key: "1", label: "Name", children: {spell.name} }, + { key: "2", label: "Range", children: spell.range }, + { key: "3", label: "Duration", children: spell.duration }, + { key: "4", label: "Description", children: spellDescription }, + ]; + }); + return ( +
+ {spellItems.map((spellItem: any, index: number) => { + return ( + + ); + })} +
+ ); +} diff --git a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts new file mode 100755 index 00000000..86c322b4 --- /dev/null +++ b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts @@ -0,0 +1,5 @@ +import { CharacterData } from "../../../definitions"; + +export interface CharacterSpellListProps { + spells: CharacterData["spells"]; +} diff --git a/src/components/CharacterSheet/EquipmentInfo/Spells/Spells.tsx b/src/components/CharacterSheet/EquipmentInfo/Spells/Spells.tsx deleted file mode 100755 index 9acaf4a8..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/Spells/Spells.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { Button, List, Typography } from "antd"; -import { useState } from "react"; -import { SpellsProps } from "./definitions"; -import { marked } from "marked"; - -export default function Spells({ characterData }: SpellsProps) { - const [selectedSpell, setSelectedSpell] = useState(null); - return ( - ( - - - {item.name} - -
- {item.range && ( - - - Range  - - {item.range} - - )} - {item.duration && ( - - - Duration  - - {item.duration} - - )} -
- - {selectedSpell === index && ( -
- )} - - )} - /> - ); -} diff --git a/src/components/CharacterSheet/EquipmentInfo/Spells/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/Spells/definitions.ts deleted file mode 100755 index 5b0635cd..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/Spells/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../definitions"; - -export interface SpellsProps { - characterData: CharacterData; -} From b1b825308bc2427440cfd0eefb481ff7443a7804 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:42:42 -0400 Subject: [PATCH 15/70] refactor --- .../EquipmentList/EquipmentList.tsx | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx index 90c30714..886fe162 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx @@ -1,6 +1,6 @@ import { EquipmentListProps } from "./definitions"; import equipmentItems from "../../../../data/equipmentItems.json"; -import { Button, Radio, Typography } from "antd"; +import { Button, Empty, Radio, Typography } from "antd"; import { DeleteOutlined } from "@ant-design/icons"; import WeaponKeys from "../../../WeaponKeys/WeaponKeys"; import ItemWrapper from "./ItemWrapper/ItemWrapper"; @@ -67,6 +67,12 @@ export default function EquipmentList({ } }; + const EmptyRadio = ({ label }: { label: string }) => ( + + {label} + + ); + useEffect(() => { // Remove empty items from the equipment array. const remainingEquipment = characterData.equipment.filter( @@ -91,20 +97,8 @@ export default function EquipmentList({ handleUpdateAC(e.target.value, type); }} > - {categories.includes("armor") && ( - - - No Armor - - - )} - {categories.includes("shields") && ( - - - No Shield - - - )} + {categories.includes("armor") && } + {categories.includes("shields") && } {shownItems.map((item) => { // Ignore previously existing "NO X" items in characters' equipment. if (item.name === "No Shield" || item.name === "No Armor") return null; @@ -138,6 +132,7 @@ export default function EquipmentList({ })} ) : ( + // Weapon Items
{categories.includes("weapons") && ( <> @@ -156,6 +151,7 @@ export default function EquipmentList({ {races[characterData.race as RaceNames]?.uniqueAttacks?.map( (attack) => ( - classes[className as ClassNames].powers?.map((power) => { + classes[className as ClassNames]?.powers?.map((power) => { return ( characterData.level >= (power.minLevel ?? 0) && ( - classes[className as ClassNames].startingEquipment?.map( + classes[className as ClassNames]?.startingEquipment?.map( (item: EquipmentItem) => ( ( - 0 ? ( + shownItems.map((item) => ( + + )) + ) : ( + - ))} + )} {categories.includes("weapons") && }
); From d7159ac9806e5fd59fac99cd860951a2261f632b Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:43:24 -0400 Subject: [PATCH 16/70] add Spell type --- src/data/definitions.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 0fcf1169..77f026d8 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -51,15 +51,6 @@ export enum RaceNames { PHAERIM = "Phaerim", } -export interface SpellLevels { - cleric: number | null; - "magic-user": number | null; - druid: number | null; - illusionist: number | null; - necromancer: number | null; - paladin: number | null; -} - export enum DiceTypes { D4 = "d4", D6 = "d6", @@ -75,3 +66,11 @@ export interface CollapseItem { label: string; children: React.ReactNode; } + +export type Spell = { + description: string; + duration: string; + level: Record; + name: string; + range: string; +}; From d98c31f1eee024ea795cb19db23f6dfe1d2e48fa Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 14:44:30 -0400 Subject: [PATCH 17/70] spell collapse items --- src/pages/CharacterSheet/CharacterSheet.tsx | 128 ++++++++++++++++++-- 1 file changed, 118 insertions(+), 10 deletions(-) diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index af5c71de..e95fc6d3 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -38,7 +38,9 @@ import SavingThrows from "../../components/CharacterSheet/SavingThrows/SavingThr import MoneyStats from "../../components/CharacterSheet/MoneyStats/MoneyStats"; import WeightStats from "../../components/CharacterSheet/WeightStats/WeightStats"; import EquipmentInfo from "../../components/CharacterSheet/EquipmentInfo/EquipmentInfo"; -import Description from "../../components/CharacterSheet/CharacterDescription/CharacterDescription"; +import CharacterSpellList from "../../components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList"; +import CharacterDescription from "../../components/CharacterSheet/CharacterDescription/CharacterDescription"; +import EquipmentList from "../../components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList"; // MODALS import LevelUpModal from "../../modals/LevelUpModal"; import DiceRollerModal from "../../modals/DiceRollerModal"; @@ -48,7 +50,11 @@ import AttackModal from "../../components/AttackModal/AttackModal"; import CheatSheetModal from "../../modals/CheatSheetModal"; // DATA import { classes } from "../../data/classes"; -import { ClassNames, RaceNames } from "../../data/definitions"; +import { + ClassNames, + EquipmentCategories, + RaceNames, +} from "../../data/definitions"; // SUPPORT import { getCarryingCapacity } from "../../support/formatSupport"; import { @@ -58,7 +64,6 @@ import { } from "../../support/helpers"; import DiceSvg from "../../assets/images/dice.svg"; import classNames from "classnames"; -import CharacterDescription from "../../components/CharacterSheet/CharacterDescription/CharacterDescription"; export default function CharacterSheet({ user }: CharacterSheetProps) { const { uid, id } = useParams(); @@ -282,14 +287,122 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { }, [uid, id]); const buttonTextClassNames = classNames("hidden"); - /* START OF GOOD FUNCTIONS FOR 1.16.0.0 */ // TODO: CLEANUP ABOVE THIS LINE + const equipmentListCategories = { + weapons: [ + "weapons", + "brawling", + EquipmentCategories.AXES, + EquipmentCategories.BOWS, + EquipmentCategories.DAGGERS, + EquipmentCategories.SWORDS, + EquipmentCategories.HAMMERMACE, + EquipmentCategories.IMPROVISED, + EquipmentCategories.CHAINFLAIL, + EquipmentCategories.OTHERWEAPONS, + EquipmentCategories.SLINGHURLED, + EquipmentCategories.SPEARSPOLES, + ], + general: [EquipmentCategories.GENERAL, "items"], + armor: [EquipmentCategories.ARMOR, "armor-and-shields"], + shields: [EquipmentCategories.SHIELDS, "armor-and-shields"], + beasts: [EquipmentCategories.BEASTS, EquipmentCategories.BARDING], + ammo: [EquipmentCategories.AMMUNITION], + }; + + const handleAttackClick = (item: EquipmentItem) => { + if (setWeapon) { + setWeapon(item); + } + if (showAttackModal) { + showAttackModal(); + } + }; + const equipmentInfoCollapseItems = [ { key: "1", label: "Spells", - children:

Spells Children

, + children: characterData && ( + + ), + }, + { + key: "2", + label: "Weapons", + children: characterData && ( + + ), + }, + { + key: "3", + label: "Ammunition", + children: characterData && ( + + ), + }, + { + key: "4", + label: "General Equipment", + children: characterData && ( + + ), + }, + { + key: "5", + label: "Armor", + children: characterData && ( + + ), + }, + { + key: "6", + label: "Shields", + children: characterData && ( + + ), + }, + { + key: "7", + label: "Beasts of Burden", + children: characterData && ( + + ), }, ]; @@ -466,11 +579,6 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { showAddEquipmentModal={showAddEquipmentModal} showAddCustomEquipmentModal={showAddCustomEquipmentModal} characterData={characterData} - setCharacterData={setCharacterData} - handleCustomDelete={handleCustomDelete} - setWeapon={setWeapon} - showAttackModal={showAttackModal} - updateAC={updateAC} className="col-span-1 md:col-start-2 md:row-start-1 lg:col-start-4 lg:col-span-2 row-span-2" collapseItems={equipmentInfoCollapseItems} /> From e56c2b42f70a2c741e42f26736c48f853926caff Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 15:12:37 -0400 Subject: [PATCH 18/70] refactor CharacterSheet --- .../CharacterSheetModals.tsx | 61 +++++++ .../CharacterSheetModals/definitions.ts | 15 ++ src/pages/CharacterSheet/CharacterSheet.tsx | 153 ++---------------- src/support/formatSupport.ts | 26 ++- src/support/helpers.ts | 79 ++++++++- 5 files changed, 193 insertions(+), 141 deletions(-) create mode 100644 src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx create mode 100644 src/components/CharacterSheet/CharacterSheetModals/definitions.ts diff --git a/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx b/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx new file mode 100644 index 00000000..71022990 --- /dev/null +++ b/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx @@ -0,0 +1,61 @@ +import AddCustomEquipmentModal from "../../../modals/AddCustomEquipmentModal"; +import AddEquipmentModal from "../../../modals/AddEquipmentModal"; +import CheatSheetModal from "../../../modals/CheatSheetModal"; +import DiceRollerModal from "../../../modals/DiceRollerModal"; +import LevelUpModal from "../../../modals/LevelUpModal"; +import { getAttackBonus, getHitDice } from "../../../support/helpers"; +import AttackModal from "../../AttackModal/AttackModal"; +import { CharacterSheetModalsProps } from "./definitions"; + +export default function CharacterSheetModals({ + characterData, + handleCancel, + isAddCustomEquipmentModalOpen, + isAddEquipmentModalOpen, + isAttackModalOpen, + isCheatSheetModalOpen, + isDiceRollerModalOpen, + isLevelUpModalOpen, + setCharacterData, + weapon, +}: CharacterSheetModalsProps) { + return ( + <> + + + + + + + + ); +} diff --git a/src/components/CharacterSheet/CharacterSheetModals/definitions.ts b/src/components/CharacterSheet/CharacterSheetModals/definitions.ts new file mode 100644 index 00000000..fffa2753 --- /dev/null +++ b/src/components/CharacterSheet/CharacterSheetModals/definitions.ts @@ -0,0 +1,15 @@ +import { EquipmentItem } from "../../EquipmentStore/definitions"; +import { CharacterData, SetCharacterData } from "../../definitions"; + +export type CharacterSheetModalsProps = { + characterData: CharacterData; + handleCancel: () => void; + isAddCustomEquipmentModalOpen: boolean; + isAddEquipmentModalOpen: boolean; + isAttackModalOpen: boolean; + isCheatSheetModalOpen: boolean; + isDiceRollerModalOpen: boolean; + isLevelUpModalOpen: boolean; + setCharacterData: SetCharacterData; + weapon: EquipmentItem | undefined; +}; diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index e95fc6d3..e94fdfb5 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -41,13 +41,7 @@ import EquipmentInfo from "../../components/CharacterSheet/EquipmentInfo/Equipme import CharacterSpellList from "../../components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList"; import CharacterDescription from "../../components/CharacterSheet/CharacterDescription/CharacterDescription"; import EquipmentList from "../../components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList"; -// MODALS -import LevelUpModal from "../../modals/LevelUpModal"; -import DiceRollerModal from "../../modals/DiceRollerModal"; -import AddEquipmentModal from "../../modals/AddEquipmentModal"; -import AddCustomEquipmentModal from "../../modals/AddCustomEquipmentModal"; -import AttackModal from "../../components/AttackModal/AttackModal"; -import CheatSheetModal from "../../modals/CheatSheetModal"; +import CharacterSheetModals from "../../components/CharacterSheet/CharacterSheetModals/CharacterSheetModals"; // DATA import { classes } from "../../data/classes"; import { @@ -56,11 +50,13 @@ import { RaceNames, } from "../../data/definitions"; // SUPPORT -import { getCarryingCapacity } from "../../support/formatSupport"; +import { getCarryingCapacity, makeChange } from "../../support/formatSupport"; import { getArmorClass, + getAttackBonus, getClassType, - getHitPointsModifier, + getHitDice, + getMovement, } from "../../support/helpers"; import DiceSvg from "../../assets/images/dice.svg"; import classNames from "classnames"; @@ -77,7 +73,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { const outletContext = useOutletContext() as { className: string }; - const [isLevelUpModalOpen, setIsLevelUpModalOpen] = useState(false); + const [isLevelUpModalOpen, setIsLevelUpModalOpen] = useState(false); const showLevelUpModal = () => { setIsLevelUpModalOpen(true); }; @@ -126,35 +122,6 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { setCharacterData({ ...characterData, equipment: newEquipment }); }; - // HIT DICE - const hitDice = (level: number, className: string[], dice: string) => { - const dieType = dice.split("d")[1].split("+")[0]; - const prefix = Math.min(level, 9); - - // Calculate the suffix - let suffix = (level > 9 ? level - 9 : 0) * getHitPointsModifier(className); - - // Combine to create the result - const result = `${prefix}d${dieType}${suffix > 0 ? "+" + suffix : ""}`; - return result; - }; - - // ATTACK BONUS - const getAttackBonus = function (characterData: CharacterData) { - if (getClassType(characterData.class) === "custom") return 0; - let maxAttackBonus = 0; - - characterData.class.forEach((classPiece) => { - const classAttackBonus = - classes[classPiece as ClassNames]?.attackBonus[characterData.level]; - if (classAttackBonus > maxAttackBonus) { - maxAttackBonus = classAttackBonus; - } - }); - - return maxAttackBonus; - }; - const updateAC = async () => { if (!uid || !id) { console.error("User ID or Character ID is undefined"); @@ -180,72 +147,6 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { updateAC(); }, [characterData?.wearing]); - // MOVEMENT - const getMovement = (characterData: CharacterData) => { - if (!characterData) return; - - const carryingCapacity = getCarryingCapacity( - +characterData.abilities.scores.strength, - characterData.race as RaceNames - ); - - const isWearing = (armorNames: string[]) => { - return armorNames.includes(characterData?.wearing?.armor || ""); - }; - - // This checks if there is armor being worn or not and adjusts movement. - // TODO: Better way to do this? - if (isWearing(["No Armor", "Magic Leather Armor", ""])) { - return characterData.weight <= carryingCapacity.light ? 40 : 30; - } else if ( - isWearing([ - "Studded Leather Armor", - "Hide Armor", - "Leather Armor", - "Magic Metal Armor", - "Hide Armor", - ]) - ) { - return characterData.weight <= carryingCapacity.light ? 30 : 20; - } else if ( - isWearing([ - "Metal Armor", - "Chain Mail", - "Ring Mail", - "Brigandine Armor", - "Scale Mail", - "Splint Mail", - "Banded Mail", - "Plate Mail", - "Field Plate Mail", - "Full Plate Mail", - ]) - ) { - return characterData.weight <= carryingCapacity.light ? 20 : 10; - } - }; - - // MONEY - function makeChange() { - if (characterData) { - let copper = characterData.gold * 100; - let goldPieces = Math.floor(copper / 100); - copper %= 100; - let silverPieces = Math.floor(copper / 10); - copper %= 10; - let copperPieces = copper; - - return { - gp: Math.round(goldPieces), - sp: Math.round(silverPieces), - cp: Math.round(copperPieces), - }; - } else { - // default object when characterData is null/undefined - return { gp: 0, sp: 0, cp: 0 }; - } - } - const showMissileAC = characterData && getArmorClass(characterData, setCharacterData, "missile") !== @@ -287,8 +188,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { }, [uid, id]); const buttonTextClassNames = classNames("hidden"); - /* START OF GOOD FUNCTIONS FOR 1.16.0.0 */ - // TODO: CLEANUP ABOVE THIS LINE + const equipmentListCategories = { weapons: [ "weapons", @@ -513,7 +413,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { {/* HIT DICE */} makeChange(characterData)} className="col-span-1" /> {/* WEIGHT */} @@ -591,40 +491,17 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { userIsOwner={userIsOwner} /> {/* MODALS */} - - - - - -
) : ( diff --git a/src/support/formatSupport.ts b/src/support/formatSupport.ts index 7c19bd17..4e027c63 100755 --- a/src/support/formatSupport.ts +++ b/src/support/formatSupport.ts @@ -1,5 +1,9 @@ import { EquipmentItem } from "../components/EquipmentStore/definitions"; -import { Capacity, CapacityMap } from "../components/definitions"; +import { + Capacity, + CapacityMap, + CharacterData, +} from "../components/definitions"; import { RaceNames } from "../data/definitions"; import { races } from "../data/races"; @@ -54,3 +58,23 @@ export const getCarryingCapacity = ( return races[race]?.hasLowCapacity ? lowCapacities[range] : capacities[range]; }; + +export function makeChange(characterData: CharacterData) { + if (characterData) { + let copper = characterData.gold * 100; + let goldPieces = Math.floor(copper / 100); + copper %= 100; + let silverPieces = Math.floor(copper / 10); + copper %= 10; + let copperPieces = copper; + + return { + gp: Math.round(goldPieces), + sp: Math.round(silverPieces), + cp: Math.round(copperPieces), + }; + } else { + // default object when characterData is null/undefined + return { gp: 0, sp: 0, cp: 0 }; + } +} diff --git a/src/support/helpers.ts b/src/support/helpers.ts index d674df86..cff7aaaa 100755 --- a/src/support/helpers.ts +++ b/src/support/helpers.ts @@ -9,6 +9,7 @@ import { races } from "../data/races"; import { SavingThrowsType } from "../components/CharacterSheet/SavingThrows/definitions"; import { CharacterData, SetCharacterData } from "../components/definitions"; import equipmentItems from "../data/equipmentItems.json"; +import { getCarryingCapacity } from "./formatSupport"; export const getClassType = (characterClass: string[]) => { // NONE @@ -133,8 +134,7 @@ export const getHitPointsModifier = (classArr: string[]) => { export const getSpecialAbilityRaceOverrides = (raceName: RaceNames) => races[raceName]?.specialAbilitiesOverride ?? []; -export // ARMOR CLASS (AC) -const getArmorClass = ( +export const getArmorClass = ( characterData: CharacterData, setCharacterData: SetCharacterData, type: "missile" | "melee" = "melee" @@ -189,3 +189,78 @@ const getArmorClass = ( return armorClass; }; + +export const getHitDice = ( + level: number, + className: string[], + dice: string +) => { + const dieType = dice.split("d")[1].split("+")[0]; + const prefix = Math.min(level, 9); + + // Calculate the suffix + let suffix = (level > 9 ? level - 9 : 0) * getHitPointsModifier(className); + + // Combine to create the result + const result = `${prefix}d${dieType}${suffix > 0 ? "+" + suffix : ""}`; + return result; +}; + +export const getAttackBonus = function (characterData: CharacterData) { + if (getClassType(characterData.class) === "custom") return 0; + let maxAttackBonus = 0; + + characterData.class.forEach((classPiece) => { + const classAttackBonus = + classes[classPiece as ClassNames]?.attackBonus[characterData.level]; + if (classAttackBonus > maxAttackBonus) { + maxAttackBonus = classAttackBonus; + } + }); + + return maxAttackBonus; +}; + +export const getMovement = (characterData: CharacterData) => { + if (!characterData) return; + + const carryingCapacity = getCarryingCapacity( + +characterData.abilities.scores.strength, + characterData.race as RaceNames + ); + + const isWearing = (armorNames: string[]) => { + return armorNames.includes(characterData?.wearing?.armor || ""); + }; + + // This checks if there is armor being worn or not and adjusts movement. + // TODO: Better way to do this? + if (isWearing(["No Armor", "Magic Leather Armor", ""])) { + return characterData.weight <= carryingCapacity.light ? 40 : 30; + } else if ( + isWearing([ + "Studded Leather Armor", + "Hide Armor", + "Leather Armor", + "Magic Metal Armor", + "Hide Armor", + ]) + ) { + return characterData.weight <= carryingCapacity.light ? 30 : 20; + } else if ( + isWearing([ + "Metal Armor", + "Chain Mail", + "Ring Mail", + "Brigandine Armor", + "Scale Mail", + "Splint Mail", + "Banded Mail", + "Plate Mail", + "Field Plate Mail", + "Full Plate Mail", + ]) + ) { + return characterData.weight <= carryingCapacity.light ? 20 : 10; + } +}; From dd7b315c946caca9b134575a2b6e1cbfa0b4f2d9 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 15:19:07 -0400 Subject: [PATCH 19/70] remove unnecessary margin --- .../CharacterDescription/CharacterDescription.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx index cce346ec..52e90abb 100755 --- a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx +++ b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx @@ -124,10 +124,7 @@ export default function CharacterDescription({ {typeof characterData.desc === "object" && characterData.desc.map((desc: string, index: number) => { return ( -
+
{index > 0 && ( Date: Fri, 29 Sep 2023 15:33:07 -0400 Subject: [PATCH 20/70] responsive style changes --- .../CharacterSheet/BaseStats/BaseStats.tsx | 4 ++-- .../PageLayout/HeaderContent/HeaderContent.tsx | 4 ++-- src/components/PageLayout/PageLayout.tsx | 14 ++++++++------ src/pages/CharacterSheet/CharacterSheet.tsx | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/components/CharacterSheet/BaseStats/BaseStats.tsx b/src/components/CharacterSheet/BaseStats/BaseStats.tsx index 89f98e33..488cbcc6 100755 --- a/src/components/CharacterSheet/BaseStats/BaseStats.tsx +++ b/src/components/CharacterSheet/BaseStats/BaseStats.tsx @@ -121,7 +121,7 @@ export default function BaseStats({
-
+
{characterData.level} diff --git a/src/components/PageLayout/HeaderContent/HeaderContent.tsx b/src/components/PageLayout/HeaderContent/HeaderContent.tsx index b3fa04b8..36d9b89b 100755 --- a/src/components/PageLayout/HeaderContent/HeaderContent.tsx +++ b/src/components/PageLayout/HeaderContent/HeaderContent.tsx @@ -1,5 +1,5 @@ import { Link, useNavigate } from "react-router-dom"; -import { Button, Col, Row, Tooltip, Typography } from "antd"; +import { Button, Tooltip, Typography } from "antd"; import { HeaderContentProps } from "./definitions"; import { LogoutOutlined, @@ -27,7 +27,7 @@ export default function HeaderContent({ "grid-rows-[auto,auto]", className ); - const buttonTextClassNames = classNames("hidden"); + const buttonTextClassNames = classNames("hidden", "md:inline"); return (
- + - + ); diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index e94fdfb5..37b550c2 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -187,7 +187,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { return () => unsubscribe(); }, [uid, id]); - const buttonTextClassNames = classNames("hidden"); + const buttonTextClassNames = classNames("hidden", "md:inline"); const equipmentListCategories = { weapons: [ @@ -309,7 +309,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { return characterData ? (
*+*]:mt-4`}> Date: Fri, 29 Sep 2023 15:34:40 -0400 Subject: [PATCH 21/70] name formatting change --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 24827cce..c2419136 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codex-quest", - "title": "Codex Quest", + "title": "codex quest", "version": "1.15.0.0", "bfrpgEdition": "4th", "bfrpgRelease": "137", From dba3f0c3d4d00fa836ca5d322dbd5a093a652dc2 Mon Sep 17 00:00:00 2001 From: "J. Garrett Vorbeck" Date: Fri, 29 Sep 2023 15:48:05 -0400 Subject: [PATCH 22/70] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 94400e08..0c6a5a6e 100755 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ Github Actions deploys the site when pushes are made to `main` branch. ## Tech Stack - [Ant Design Component Library](https://ant.design/components/overview) -- [classnames](https://github.com/JedWatson/classnames) - [Firebase](https://console.firebase.google.com/) - [Jest](https://jestjs.io/) - [Marked](https://marked.js.org/) From a90d534800b1d67befa3d7252eab02b32fbf9fd0 Mon Sep 17 00:00:00 2001 From: "J. Garrett Vorbeck" Date: Fri, 29 Sep 2023 15:49:25 -0400 Subject: [PATCH 23/70] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0c6a5a6e..8f37d91c 100755 --- a/README.md +++ b/README.md @@ -17,7 +17,6 @@ Github Actions deploys the site when pushes are made to `main` branch. - [Ant Design Component Library](https://ant.design/components/overview) - [Firebase](https://console.firebase.google.com/) - [Jest](https://jestjs.io/) -- [Marked](https://marked.js.org/) - [React](https://react.dev/) - [React Router](https://reactrouter.com/en/main) - [React Testing Library](https://testing-library.com/docs/react-testing-library/intro) From 9fb5dd0d609677d16d275b3168707c9efbcdbc3e Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 16:07:21 -0400 Subject: [PATCH 24/70] refactor collapse to use `items` --- src/modals/CheatSheetModal.tsx | 92 +++++++++++++--------------------- 1 file changed, 35 insertions(+), 57 deletions(-) diff --git a/src/modals/CheatSheetModal.tsx b/src/modals/CheatSheetModal.tsx index 01c02394..082caf7f 100755 --- a/src/modals/CheatSheetModal.tsx +++ b/src/modals/CheatSheetModal.tsx @@ -1,4 +1,4 @@ -import { Collapse, Modal } from "antd"; +import { Collapse, CollapseProps, Modal } from "antd"; import { CheatSheetModalProps } from "./definitions"; import CloseIcon from "../components/CloseIcon/CloseIcon"; import AttackDefense from "../components/CheatSheet/AttackDefense/AttackDefense"; @@ -24,6 +24,38 @@ export default function CheatSheetModal({ isCheatSheetModalOpen, handleCancel, }: CheatSheetModalProps) { + const items: CollapseProps["items"] = [ + { key: "1", label: "Attack and Defense", children: }, + { key: "2", label: "Attack Bonus / Penalty", children: }, + { key: "3", label: "Brawling", children: }, + { key: "4", label: "Charging", children: }, + { key: "5", label: "Combat Movement", children: }, + { key: "6", label: "Combat Overview", children: }, + { key: "7", label: "Damage", children: }, + { key: "8", label: "Day to Day Survival", children: }, + { key: "9", label: "Holy Water Vs Undead", children: }, + { + key: "10", + label: "Magic-Users and Spells", + children: , + }, + { key: "11", label: "Missile Fire", children: }, + { key: "12", label: "Missiles that Miss", children: }, + { + key: "13", + label: "Oil Grenade-like Missiles", + children: , + }, + { key: "14", label: "Running", children: }, + { key: "15", label: "Subduing Damage", children: }, + { key: "16", label: "Surprise", children: }, + { key: "17", label: "Typical Actions", children: }, + { + key: "18", + label: "Wounds & Healing, Death & Dying", + children: , + }, + ]; return ( } + width={800} > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ); } From 5241f4001cfefffa5575648baf11d8932fc9d312 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 16:37:07 -0400 Subject: [PATCH 25/70] shrink images --- src/assets/images/faces/cleric-man-1.jpg | Bin 13716 -> 4788 bytes src/assets/images/faces/dwarf-man-1.jpg | Bin 29106 -> 9744 bytes src/assets/images/faces/elf-man-1.jpg | Bin 17152 -> 6933 bytes src/assets/images/faces/elf-woman-1.jpg | Bin 24697 -> 9336 bytes src/assets/images/faces/elf-woman-2.jpg | Bin 32967 -> 12217 bytes src/assets/images/faces/elf-woman-3.jpg | Bin 22071 -> 8106 bytes src/assets/images/faces/gnome-boy-1.jpg | Bin 31166 -> 11639 bytes src/assets/images/faces/thief-man-1.jpg | Bin 30768 -> 10851 bytes src/assets/images/faces/thief-woman-1.jpg | Bin 14284 -> 5697 bytes src/assets/images/faces/warrior-man-1.jpg | Bin 21443 -> 7343 bytes src/assets/images/faces/warrior-man-2.jpg | Bin 24044 -> 7699 bytes src/assets/images/faces/warrior-man-3.jpg | Bin 16682 -> 6765 bytes src/assets/images/faces/warrior-man-4.jpg | Bin 25984 -> 9185 bytes src/assets/images/faces/warrior-man-5.jpg | Bin 29081 -> 11461 bytes src/assets/images/faces/warrior-woman-1.jpg | Bin 17550 -> 6759 bytes src/assets/images/faces/warrior-woman-2.jpg | Bin 32926 -> 11301 bytes src/assets/images/faces/warrior-woman-3.jpg | Bin 23752 -> 9568 bytes src/assets/images/faces/wizard-man-1.jpg | Bin 11201 -> 4808 bytes src/assets/images/faces/wizard-woman-1.jpg | Bin 35214 -> 12110 bytes src/assets/images/faces/wizard-woman-3.jpg | Bin 17568 -> 6024 bytes 20 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/assets/images/faces/cleric-man-1.jpg b/src/assets/images/faces/cleric-man-1.jpg index 039f8ad77e33c3de1551307091061d0c15becf42..389be7469cbe46e7243d4878cd754df029fa1275 100755 GIT binary patch delta 4277 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 tew@;k%~x}ffsb`Cht%WEHM)t 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 X3yvPuJ)*14)0W)4zHayC{15-xJ=JXL diff --git a/src/assets/images/faces/elf-man-1.jpg b/src/assets/images/faces/elf-man-1.jpg index c5c5abbddab5baeea8725d84a29a58b69d73ef4a..3c3791c4b5768214edcb5815b8e6e8dfea7948db 100755 GIT binary patch delta 6440 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 delta 16716 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 diff --git a/src/assets/images/faces/elf-woman-1.jpg b/src/assets/images/faces/elf-woman-1.jpg index 415e83c7244e26b3a7b96fc611eba7cb9ec33ac8..a8038b0b8954b6ad2ab5a2abfca6601f7b48bd76 100755 GIT binary patch delta 8862 zcmYLuWmwZ;_x}(S1p$$61r!AVr6h-nv@mID6=`A8%~z35X{k*ZV|14^(%m4TW3L>IGk&2$S zRv?gu28bU70^I~%C%FqE{f9{YDTss>bp5{=1X3em`#-Er^5}n@YamdFEr{%Y9HW2s zKk_f~f4u)^Nq>?2V*~#S`Rm&M(ZBv8{r~tse#9M+mr-uk≻!!Q0ny$BeFc3bC7}gfqa`7wB_Xzhxc=q5 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�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 delta 24320 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%0AwlYuqNBhS(70+6QHzOT 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 delta 32655 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%0DXcTIFZC8Fn~LU&0!ccTIVs-k4-# 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�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 H9y@8dp36 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 GkN?@`X6q6F diff --git a/src/assets/images/faces/thief-man-1.jpg b/src/assets/images/faces/thief-man-1.jpg index eb2f0d231689c7e087281b9cb3c1b68439da2902..376d905bc8f493b30efa8bb0782f2853e9528e7c 100755 GIT binary patch delta 10389 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 F{D0TkKsx{c delta 30439 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 ioNaDjJKX+=o%o5bgqy{mU`C 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 YiUvr@`A_T0ta=Ek7mg}cDHA9E17(i_`v3p{ delta 13824 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 O?X|4+`j-lr<^KbHUH>`& delta 21041 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%0ADZOfrpkp zv<1c5qqPFKybi*U22B7Q&JRf2Sd9)UOPh^O z;!CNvnWbX#90AFsQL&}zjVczBBZNG$0|Wm6uRxnR{S!}&Z3s(bgNBbEFH!l@xUPD~ zgFHI8jiW>6I9U;}LN{Zd?vc;qO%mDedIgM{eCd_CQ1N5TRRuw8^(uJh9eP%aLK*3P z64au9R5tV6$vZ@M0P&sJ&M?RB=RE-Q?^c-%wedstark-h-p|VME}e5@sKp2RCZ}jI zED!3~7-bw1r>|^NaZ=o<%E!e201!R^d`$QsudS}X0c}1)PMNGgo2{os9D>07jf2V& zo_#s2B?leNZ*!fSNw>L}7uuQ= zGUr8Mv=V!C;*m+2Q%AMQUzCr?&{4T#`IRIb{{RE@lkx}JfH5z$`|UbY1@)w`IPB|+0I1Z) zG@1ZP07^g<#2)#eVL$}{6o4s!QUIU?{Aqx+0qi#ZAG6ezV{4#5Kvx5bk_z{~57k+v zvz((2j1F`49qDrni%yPhCgq~nEXziJ>LZR-8H}9uK9ta(k?KAV(`_$VCXJDsc}7M* z>l-{2CxQUthDq%D4UBfn<=mj2*;Pb@MmDJj?xz^;NzZY|V@(ozPJ?S4(L#$lO3@rl zsqzxrM*tDiDh@qxaf4bA&Z^D{4d9&I1((fG5nKIX1Qk<`21f31MgZwlBh<8ije6Tf zQEMc=O5ASwq?>UBgOW(<2Tc1_CNe!wRM9+bqRpo*mA+UW>yCQNc<1- zr*zQot&foYFaFDV?}Yx-;y(guH+Pyi4|6q}o%32M{Kb`t%P&FP7Pmlb2kz^QZU_; zzW%-Y&;>bV-IokAjBr0%VPiUVIV2qO)`F2zL6g>y$X-15rUl3~%|;7vvCAO2w$6N+ z{$(FS)P4qy!pK=C&~Hg+wU)up{PS-zKgjYwS`e++taP`KpRwFUatHT+8wCCam=z>~ zSXiX7GBE5$C;@~}F)(NVpaUJ~0L1_lfH|fCNDrpJV*dcxzy2ERc)b4r!o@xo{{Vzn z>^(HEwtb`R9(VmUk7nN|-#fcvzB`LJxBXXiSF-k=(*FQ!me#kEzUK63dt}}1W7GUa z{{RHV{=hJQ#pyG7+y4N6<^i`GasL2K&#iqo7h?Ya)m25?+IvoK?%LM%zUSiEPm3Sg zvYdXY%gWOD@4f#3x{oaJx9n;E00@8B$NVf$wf(Qm{{Wa?&AV~`08LJM*VOn`l7GZa w`rp6oJ%=Ywer|qmINIF4ce(u!#{510rmQ>mp4Zy*bmg}%FPpsu@8o~~*)=;f^Z)<= diff --git a/src/assets/images/faces/warrior-man-2.jpg b/src/assets/images/faces/warrior-man-2.jpg index d6aed317fa2f67475ab4dfac989a1c7de1472718..252b5c98f7db2d03f3ffda21088ef167eab338ec 100755 GIT binary patch delta 7212 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 Q=J8^+KCspJ2Y&Yd0NX1HivR!s delta 23662 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 R`(AFGw&msXcfI_N|JeZY@^AnE diff --git a/src/assets/images/faces/warrior-man-3.jpg b/src/assets/images/faces/warrior-man-3.jpg index ad0c4e8c189880cab930a2ba9ca756f619dac639..192521b1288429bf6f085190cdb507a9968f2e5b 100755 GIT binary patch delta 6270 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 Gng0h$v5H&( delta 16242 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 diff --git a/src/assets/images/faces/warrior-man-4.jpg b/src/assets/images/faces/warrior-man-4.jpg index 29a9c8d306fa820df994dcb5840c2208b1794d62..8fe00f41f83da39ddfcecf28861bc275dc189559 100755 GIT binary patch delta 8709 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 BHPiqA delta 25617 zcmV)1K+V75M}W%#6#v-&-~bRxMoC5h0RaF20RRC20F$2riwM8~5eNYQ0RXY(y8(aN z01N{G00I#M5dc2`_=6S9Xg_5kiWBmn2cmYS1e<-S0}u)TdW=v7h{5kjWZ^zul$#9% z3(YVsK$#sYHaixTIO2IUv>%ew3XlEmcp*YEgfC!0I$T zAK>rA2*fk^cf_6*y^ws8+ZMcsfBR_v05JRwXDQ-oY}A+BQm00H-5H)P{hd5vq*=|a z_*vJ*8bn9umdYm=5fA!lZbtR`fJePuJZxL#s<~gD-+7%(D~jfWx;&a&c2ZT;f;xj; zmpMw(LG4AvR+17sQE`yEGw@ z%>o{)kw|00nqnLjiU4sG00g8v4^+(;0?aWUxT$g(X<^9CM^LbyNzG`%7NSk7P%~pd z(6t{CYB6bgU7Xhw%0LSm7RR~t9_EvF6VUB--wP*!;1)2;6uOgfF?oLiFg}2T@~=Fe zr`NS4)vgISJ0pa=ztD^0Xbq-RNt>O(|Pt)$8xl5>R zZebW11y%EvUr~TR&SS7&9WY4_qN z?B$*-9qW@7u?fK$8<~Gj;!iw&m5XtD?r4+R_BvfZ;rEDdBbNJ3{?ZXZfuxZG1&@#i z%+1u2IO=m)N^#kvRR_9fdEoC5c=N(KjlJF0op*a_8CeR-=25`sEBCu~9E#@jW)8MZZ!)+F?;S+AmR2fqBRL1$^Yn&YCrWiN1aL#|6)|}dQX3E_c+;jf` z75@NZ-7n$-+<1?`I;0V5aw(h2m~0a_QY66p$NSj&=dE5J9V#B=^oRCQG0<-G%hVf$b0!0?_mPJVzTlenp;8rBG#%09&Ju&Pk;+W~1Epx0 z1sS8k=~e}1Od5Y-aimZijmNbhu;852LLR9=*nD;i-fBMuQXnLs> zY$56>812327NUgu(ir8BwHE@!Fyz!Wz|e*OF~v^cSur47;+#OQx8~?7m>Yf-@V2qz zEpFSx`W?TUb8vr)g^fqvcRiGMH5ag4_5T1D%cp!K@VS5ReuZ_i=Nt7a)xw*HKi*(+ z7qXx^?r62ijpXmp`SSk&UDP!R4blKc?V#YWJ$-UV6;@jv5l?fk(Brh!tc17o1S=u{ zTW_a!{t$X+p4FZE8m{c0#j%Tof)qIE@%vsxACDLns@6J?^k=zzGVsTQk_hhgc~*HQW!W6o6I^+VjPCOg z1RqQq=BX#LHiA!6*`x69hHlEqW#dz1u`imdXCIdf5JBXSs@U`+@va#)*y>k31H&(2 zWUYIDZ)>Yq#Wv$4v53(fhBh!!lsLx>pd9Cs$i;uFvaakdsqoj~{=2C!i1eczAd+ty zB_eA_Cyz2D1T=n*L0*R^txJ}c8f`PK(mW-ocy&>T;C3Vd7e{JszPjp5iYEkSbx$iQ7d!-FI;p5XOUgX>BaB}!b-Vx1Vy zHfMjqA09pk>YoX|& z^c@LU@%fUw6V$+{>yy&0k~F8aD~xW#ngem_p47mRQ=XIoIwnN`E94AN1xX|-Xcf+( zQ#|5z-3lRk9#(?n9m=@i^d}kv#9CY*;s!v-Zq7k%i&nL37wTgdD zmbZ}}jy$9IL=JP^$rD;)IaHOF3!G;~s&+4R4GH26Hl)a~@iJUxEsBbpfIYn>wL zI^Zb+OJkmd5&`EG=T6O8GpQ|gI|uk)HEA2feh$>`G%b1r-ss=HhDgca?;n3Gk(0(o z7-VPAV&0nT6epwNaXS zcQce4_mP+5{{RG7!>CVv6c-B(;}5mL!$R_M8Md4l+zvx2!S?88tWq60IU~(HTW1}W ztN3%qHY=~_nyMssmNOMbmL-22NUhLJfaPRfK?A7GO&YVME@=J1R+_6GSNER`d|B`u zUI6iJ#*wGrwxOk5D7(_{T{blKtWMqQ{4yyFj=h;rY**3Y>qfj3;&^pwN|c;raLk!K zE28FN6whiK5Y|q3p)jzjDv-y7%>pM;#Q-u+gbDzqD)Z8T9fGH|108>}6ox2HI#2_G zW3>P-(?Aj^r1b&nNHqC+c@`KBO@ zVlYlU2^EcLa;qR(v(S83vc&%d&cRxXpCDQw6;w1labDSYdK4? z(+XY7#5ouPEsO#ON|e!Vn>TzPuj*bLy%I#Mrd8V9asGX1ZEi}XC!<1mx@6V0&$WeF z65=hA6>Jd4jGxkuZ3d~mta7(HZRVK!qPII#>^U6|_|+*XElGcsCkLVy$5__vCRweg zdr-Wy#<_3Q(s7I2OPwC~@H6(2@y~*F+bus{jO$tr+pKOu0!YVlpp0i9!gxNl!->Pw zlw9GXM^ze==24c+{RQy-^qvj6(tK~>tCrNfDdGoIxwnv#uo-yBUUq!nD-M~#uO-iy z-a1rWOVfHZb)J7X@RpUS+sCcx_K$Mb>e7T&UBVU^VYKHUV>kz>;EYsGDL!cII&+iv zXSvR4J|nuczaAIy3@;)uKV!TSaLJF5Zan7)qkTC98fvfEXi}u@%@dmVr{L&yO%7<% zM~PVqM>0l04tNBnF^)(*59yd~$KFGO=J#3gN5+2*Y7>9>I_hitA0qR^dYbMSBpYjh zS8@~l21HZ!C*Hjbwr&+&HuP%fv0${t>U<&bBjOi`JaIG<>X$Of9C=vOvD(eu zfa&Nz3iM$G1VNFd+O4c=4hwZ-?^w=U%fX=CRl@!CjrW1q3QiI?_0*Rdb5&vRUHv0fcya3oHtf~ zW^aEw%&g1DDh6^#)4eK_GE}W&^aJ*Hf%V^q`mckoVFX9t(N=6XHJ)$YQ;D?Of^8baerP7+jxl4_tR0Yo`rbH0nXO zqGu)|l&e9cwLd-QwU!%+Af6VENZ6~X7%ITvf;)3xReq;|uEKdB_M}T9mfM1HMZkZh zBwI=Ks!fb?j0&&@6vQ`aGzQ_b)_}3sEO@E7$&xQho9YD176(c$0Ar+>TyK?=Pnblp z!~hj7hU1wjZZbWFm>)}i!G90e#h)6JUAnhft-Ld1J^s^!`|_qZxc>lov-k>`K8Vh5 zq0;``J{OKrET3apWSUu3C00CeHvoS#(N1~AV@FDk#_*NlWAl>o(Hi({QX_?aPQnkg* zA(58{J%x0}cR1=(Ni&SoEMoBAiekPTMIrK~QTJFLIr@*zqN}uYGK>_DcK8Y6h;)5g zbw#&&VjwRw}5D^gtp6GxgY9-rgAOZy8^v+*62=q(6nF9UW)Iad5I ze=5qR*N*7Mgn5@Nkxpi7>sfzUE_XAHq-1v(2h%-|tzj9r9a*f>PU##%>FDxG(87-) z7@pmLCGm_Cp1fzCy$4FtHMLb4mnXVJ9?zSRUVFj&b2<%^XupZ3$B^}wv8 zpDp?eOWkgKQ}O=*;jPDnyhHu9rz=mS>Pxyil+QflY=ih;00IwjUrm3NVwHMIn||^< z9KwU8QOzwM=6Nc0#yZ!i&p45k6`&03lmOGX71ysdXaypuOjSw%lV(RsEEloXs$->N zxXICQdQw147oL;?L%hAiiUPuUQ~>cG6bME`j+6{Y;b&l~q_H>v4s%Qo(vR3b;ivp7 z&jRayB-JC^eX24ETO5CdQN(NXInVn<`c{0_yJix6(y`@#wr-}kdTaqotdSNi#&>V| z+wueoidxLto`>evp==a9i^zA#BzCT;Y;{1W*&BM|vNuez3}Q!9fyWe{hOt*?UE#%= z2Ua74#bZ(39ki2+J!?qRo+u+#LV6Kg5?Y>wTS)CRElxsI6~})Z3dT`KR3y>f=}fci zkyDoI#bsuWr7NSMf3z*Xml^}|mJ?N=#tBPhbgmw@%V zi)k{lIGPE#0O0IpWpBeKxN1h`(^p5(8i$A*UGOsAF2|NTWmyD+Dt=Lr%k=~wPPN3{ zq;k@V=d&=pKjMFHvP&hD;jJT3%Hl~2rqPTXb;dn9R5)`xqe_rzU219gf(z@JEcI;_ zt>>6X4orjhi{E1or`x!pChr%y&g7S&iK%L?(lFNSUMV5NiDJxhuVb9>5v!LCTFp;iE9A7}Sf5wmv!5 zyf*eSw6>CYux~0n#t9m}2LeL6-#Z-WJ88vC#OqB<%07?L+2UMflu>w>)=8;6|0ra3(CrIeI zTaWUy)`WjZ;TIUi03$`uPPD{&2f-hQ_ue`2ls2{&;%RNlm?L0FdC&T=aoJDKeV5*p zwb2tfa-;Pl!x}A*gggPKcxK*G-b^U1FF@f(FYl9<{{VqjGi#Q{G}gC2JpTZ0KO9G6 zA=4l#CYVX`vB6YsH)GrmD(Eh08`6)vc6?p6uWWxIl=V5!9mgNix+kWGRXen2+@V0V zmgdZ}rsbpq8O=n_ibtU6Hey6fD9JedYnG!u8gV^$!n!0=n1MVHI3l>GBh#fy==6;n z!V$cCif+eN$2E(Q*BVJ3PM4-dX&^&^x1ltjb43=B)Z5v?G-N0Qlh>_7orBr7W$OO` z4_bfx8RCVQXFVwAV&q*;Jor-UM%28%qva;JMZMoH&aqyKHn&_@d)d z(9$c7Leo%*kP{mMcVul#>FnWqN>!{-^TqZ%Kag^FH4nV3*1Oo=NMBI`vX@M$=0O_~;)*~i}=aEAK${)s+hq-DZ zJJ1_4z{V&By9>nv2;zH*QV7Q9k%B1CQceXu!_@n8_HghNegV^<*L6uzXS|J7Sp1t6 zj?s@z#{~DS-I17%Hk141X6nC!Q1m zj&s8~^GT@mM^qup4rkS$mtVEFiJQcJCxcP@N1BpAvW5h>R3khd*41YqdlX;*H(he zFp*mzRxTDgXJ`*NA-nq0RIdl&pWtXuuAJ@X(!N8wqxJDWypl=jU5EHw*M zW(l>^ApZb5=!{jhI4idaT@rumUkvOuYj$gR(1`~*;Qc}ES=6C_gvJ=XZ8OFEW#G+c z!7LueGt(GsYQl*1m}F$Ye~=1!qG^XasvsYU3bd(GR6q zi2~w_fzS@MkQU(s7^D^~D&w^>mW0aq??^64B;)Bo3S}O>C>4Smw}NDzBZrNHDfA}&OeFCb9=7e z=_VgF^!tm8R*jdK(PU*%a5@D5XWF`{O4_rll{lojoQH;V_KF76;v3A8g+QG0PB`_g z=O-s{ryfLD_>X_#8}A1)i|E@js68-Lj-anm)~Qo>C)%d2jzdk=btGZ3A{VFON>t<2 z(luuGH$S$op&n?CbnI}yDX8UF(A(Nic8x6u;$+%%p&9dr>JAPnXHNT@(Z#xNL)p9; z@tWRbSl(@0=HQB`(B}JAF|CeEPFtPlf`4s2QLbZ# z`ohj=+4(F=5)WbSDY`Bir*oNCg-5Ef?|NUxUk7;J!U!(yz-jWWy9AEoj^O&&4Q8H` zN27%L@rjxQgD9ufK$nt-S8kGM44D@SR ztd+K0u|-Vej;9zrGM;!f(}kf7P2(gAj&ub9J-=Whh<$ILlDTH>csK{%}rnZe22;k9e`zwoxBr(To`C`)+`;9GX! zQOBvyIrJvIJOnu_MaS3t(dT2IH72FkPx3r==EdP{jy`22Pu9Mo_tg2TSgj-&9MA85uQ|V3FjHcI##l%syzY}y^K<4jV__A>Q^6ThUI^t zL;b_Hnv5f>8+9k7MmCwRLvRvFZUmX-C3ndOp%^^=6|7u47)#nmcF_HQNY?y3_UBV< zeW61xTjo~AN}q5D&!%xsP=e8K*wQYgxuv&q--oikDnp&fxl~;Qo zcKitVJui-Y83wa=B&TRBPDlWMjd*{UitZ9=bUvx zS@1XtJCo^AhHDY4b~45DQFciA-f4BsRa;TLGs+!~2bfU-#&(bY09AVw=*MJuwecR! zURtwz;mmrkj4ibroexCR(CHER_Y=ir#wfjQSciCf2IQ)_x4uGo;jNn}WbZ*uaMc{zVmCQAYbV0PerL9b5{DJp*VL(aocgyqW>zvg;Yi{f>H zLu{Iz)y{pl_2lp?3XV8+&uhM(rBkQvA0_O%oX5m3 z2I^Wbg01x{ux`9bcd1-o-a{J(5K2Pe56(c+ z^k-ZnKCu(TFMQT71>Mk;bs#9leW-(16=v;baGGtF-CiS(vJ4N#x+gDi;-?SZBlVB= zTQk4Gsjc7*y4Qbb+CRG7gX`Bd^L5mvPNbJZ?_*97ogQwe=KdpmJbxD2T^JM#snDY- z95xO{eXEB9S*6J$^DHt__K5ilQ}Aw~;f+RJFI4c;q;R>)$GD94I5q7lx2$A&E|gNV z;F>*0;ZD2Z-64`FbhuQ=z{n+tKH@rL5rRFAYaB&-&0Bw%*AGVx7kJZ2`f7a(XW$)iq1t$3z*>KUzI!<&kyqsgUI@pp zPJW#KVy7Nfx}5l0KF#y=TAeS4bj!JKEpO&WQ#6Lr z!hEJdf)$GM)CT9(L9aHYnsI$KJZ^U7%(|YjZQ)rU@TRS(vxFAX<{#R4FnJkSL; zj|9^Lqd~@LAT35H0bhy(aTS3)nqW)@M-+fUqtbvF5N4PXs$^0VN3HxQ)FbeZhV?HI zsq^lpm1Bi6LPLcodt<5V)1dE?Dr#uCx|J2rE?%8YI}aLLXoA@Ij@I*0YnbP_yN2H@ zICFosyuNxV;GX#7wNJYXb8L<1LDs0$ZGMNde#0Ily3=laf2!&lCDo3V;u+wL5>z?b zp@!~y<9;*su8h8FH6;bJG0v$q7%ScNJ}UjBJ|4~RjE6hJTV;RH>n&i0dDt>%a~0##yk$?8Ug_)9_u*+2ejtDN zCqtGs)upz9%lyn68<5wa7-E~Rxp_ASNCpJ}vJ!rhd@s4ahw;p>2E;W<%Dm22GOR;f8jy;0^~KJY$=;V&84 zXu5O>Z6uK1-z~bIlp@5!GwalG^flGbIYZvxPt4@aD=Ku=I6d`$*QuU7Epwz<+{dS= zhVEP0?cyX5Rw8p7eRi?O)`b;Pc9zP=hbo@V3CDJ7{8qdF0EKn%BHP3AyoP`KTmJw@ zjY&E3GnpUQ90B;(Rt^sni{|?<{LVa7{f-}(tiL1Vc_sma0gCsJ6|xxsJvvY(Ghh^4 z1p^|Bh>m2<0c#aZeA5PPqM87=5FWI23k1WCDFFiKG{CnK5;I5%3}khnE;ncffFw{T zupQ-wwWa9(83tAo&md+RQIB zi>A}<&1U#~^jW&+J1|ScmXNcC(wv1aX&#bgbtS#i$tnNsV#ck!417=T{g|`0y zyOqbM6o$Jc04Nt4XRk}Kje)$tl3|k9>Sw6j zZ5v6qsU54n5l~lWgH~>=tr6Z8wR_!SD7N6Fi;<6dbzP%!u&K(TN9q3n?5ZV)!8g`K zZCREz4W39)-{L3G zvE`mH`0b=kc>W#K)%5*F)R?A@ZjM3w%6^sTMvUB4nd45ZDb{efcqhkpl1m)o;aE39 z4>WQ(v$8T(BV*_<4|t}={=p?v8IX*18OA!(l}!#g;hbeyLGbs6PJuo4w83q(#z^G3%SkQ8vH;K&{{U#l zRe#_+myDP`aN(=Z}wiq`we_{;M=GTMJK;+Q}Slj@1Xt<>$Ce5)V_l zy-Xw)9?(Y)B3{*VGv&GD0%C~a*E}3!^sh+ZdXC+YDcFBRY)J1wu007OGzP!T=~5urS>~F$7)d2(u6%Py?Kb20+b&iUPxtvU<}Ui9rX0`P7rjeI5HE zS$&%G#NHvERF2ll(itR>kCZYyGLLhd9DOP($woZSp)M|Ol`YQa!u~9mSMh!Jry#h7 zE6Yo(NMe7HxCz6qM|NVnkJJv;&w@@h`K8w8*o%7(Nc6GuckO3wapGMQN!Hpz^7wj5 zEF5mhFi6{xzXC8%y?WBtK89FXa#V5deA}aHpJR|0VgmK9c}C~6Mz1Mn#9lP}Y$n#- zj?ge@g)2Lz%MRUH|&)zS7fX)Ij@7|PGN-zSZ{ zJo>f9siw~yziIyfR~&7YVspS9>&|d~(X@|K+d>o+XCvn?j{g7+E__jWsB4m0x=%UY zjG2GR@yFx*>$;6^XJmOe%2BWH^*(#>$By-%1M5H7o*-9Nh~XWHUBf*`_*ZnPMx=S7 zd314;p+9F)pHcic__c3*iwfKf4tY81Ij=7hO~G9DDPvU6QL*t#J)Pyxm{>;%U~|A2 zuP)8I6;`)8N9LvUHy55Dz1G>8h2{Ol$!>qVyoI^^>*~~!k0)f0gOYAeecL*SAh)!M zHHg{cm0egB8N&g?e=6jXZStD)t6ci);qS#uZ;DwPkoPfTEF=E_ zrm?o>3(n=@xoJVr_rA^k?_VZWR;p>#`TqdNdj9~6G)-1(JG+@?RV8DaC+A=9alwBC zWB&lHUeqZ54tGa2ql-cXaXJi zG*}Jv;($cqv*|!wa-M1Q3z8`mtOS9uIiM~_Bbq}+c9Wb_D12|8^jHyKFatU1%^>#-j~}t2LamG@4GWAIMmA zRse!MK?EOTUbXui&|i8!R@8L6i$iy6e*7|E{WFj7u6Frlsp!S?L9}xWR7!u*JnFCg z);O+^lB8=#d|qDjV%t#Te+PehRR7f9IsJX)SM!&*{v#dTeMO1 zSHrD0;!XaPJTjIS4*}#fgrM4bk9zW}SD{W^*FEetEOl7>G_*di_$}~>JS%9o*O#!z zb2LD*j$K!iunh1sToo}YvFU%%!pjfwZg-wCw9+Bdoa(yj#}cV5OQPf7n!!%&>$R29 z@fXDnJHg&N)^0TI2UU*gt)g)4Aaxv(7*QZKyqZ`Rs`TSg=UTs0%$3yTdz}mvu zJlFez?He5T6~T?Hr7J}0!P1qlBiTH6sKwxKg<8et@87+nq(eNju-bpWs|w`9({*b_ zbUJZ0RT>hPk@5G0thTHxHKCm)O|r%OS2cOIW;G`+^Iv6G`43cWA^O<;VnJQwdJIXBFzXW(a5dCD|J@L z@7!0TPKu1A_fMh2Qm=nJ66%jo*8E%HZ;e_ZwAM^|UyH4j`Er~kzNFpx7!k_HoPE+s z^{it~cv*Y8!|`9{hTL%rT_yNG_$P>r1Rte$MX4*Jk*1xP z#OuhWDTe1AsU*0O5ZnFdniT@@WW^Jq%+X zCz=XKuE6Is3~~}X&@y#$dLFb|;C&6?-yQge#7_;TrKV}iq)mndeeJ8sp*m%cB_|f3GY&6@MXVknswVvCFTQqxLf<6`9>pJ$gqH2E`W{q@(ivr%`CPiR!Mp$q$ir}kO zoD!3#zme$C$KxcqX~~_YkMOHPxPrno_?_ZQ+nbwdWt8d8^Z71A2$1dIHsCTk^{#1E zPgMkZxJ-XGagA+3G?wk?y>87d8}>8Tyip43o;~qqtM(RVXmrQBk;{zm(sTNB`qs5E z-&cq3;*;-fO)KRPjID~S>PxCk@~@v$p0W57rT9O_(`kA}=`DldNgNkxCVE=00*yB;$?<_o<;ubsKSa z6nPMvTxmIFu`J#glrj9 z{HN4*HPp7$=6jP~YPWiXQNgK9_bCePh{$sBk3ijV>~cPpDhfKpZcXVUI3QESSvD+3 zfq_UYB+4Cr`Uh={A-f62}#}z`ius3LY+QLO8hQ*R*mC-h7(N@ zu<*v29mv7U!a}k1VV-N2RI9DecMqK9OW~EDq4dwg&lKMHvf*w`#+9W&%8@*JU6gjp z5k>;8#Tet$@vbaRB5`+{v+^~kkD{q6I8`Ym+xMGl@ALVd*QsAYVWa(;!OMR#rop)U z%zbie$E{o1I~@Aoo_n54eWpieC)#GiNwhFxdwc#lqA!@|oVRS`bq!MX_Vz6cMqfKn zzm!EEImf9!z;bK0oD^3ywnv*fl9ah2yEw1g6UCAIANXtG-wo-J$9Fx&_*o3U^3bX? z$mDvKBlNBEnjc-n&U4u#Jm!C=)Uc3*HEsU@!=EYKd{*%tmXQt8G!~NIu-Ng!t0JdT zLB?}~jQiKqJhp<}T=`jJt392Lze(0@^?1d_ywU`d=FFUZeQPPx;blEHkGOhUdKk z5#qq(>p)mV;Lw1z6VMkdDOvz=0~7))%9-gv(OiH!P*uqzAW#<*P%m+(+`t=`w~-g| zQ&mm!%|9|FtXe*Q@f=^f4V-}(10KZx0F8T94k~9RdXQ_F)cU93FUFM9Y_0VF01-j< z%PA3Im3+)N1AJjEShd@EW`Llo0v8j!yVp6gkB389-IFF2}ZdX zI<4$`zHUr0^$34Iuf1o8sH#3l?2YiWT{X`yiJu<++gj{?IPvz4pu;I^Z84>mY#s(e zkJqQ?Uj9Kr!ZMrcc$`I9O~MPM&zm(tCcCUGQ3mqj+YAU7_(AmdHS|q&K4#~y=sq5w zMbV&|Sr$m-CN0CDlwi7p-x*r->(o<~k-T8yuFDQN&0v33fN-=85Kk`L;*G@FRpmak z3gvkvBA5{yf=wW}o?|z9X$g)@nsx)RQffd)Gyw_EY5;P%6aiuvJt=@)YBqK;`ImPo z68f>lQiP?l6OvjOSKc_$;gCTT@fYivWf7?N=O^^7RR`6Q>Mn;X;@^rbqO!rJrIqZA zyNrm=V?%%Gla0o$VWZriYTrQc2gIAN5#OCJRfZIq!DyN_ARG+f)K#RQuM(p^Z5imR zBPkB2<_9AqHP3dP(WS1ec<;q6J@kwC);m{*-t`T{Xv#nXBod_cQbFnHM{4!sRaJ_T z>T#&@$;G{oI+7ATVbZ0d&3_N-QrV*-zA$rxT-AT0cXP83J1ZWw;V+AKmU?`;9;SZP zV{oMmQW8{WxE;CbN9$7uZ5ZmsH*+pa&+NH|sbF(&D-g;YHqU-J#b;WKYAp+)h;*6j z{{RcVA=^nLa0vu*frKZf>hdudW{;!6<6|ukbg zL)Cx!%1cAotbQ$NcB#3f0ul~7E-~LDKb2uRO}z&339U~m_`Ul=SzE?!t!~sl4gwv= zJ%&YVLjx*~?DMfW_|jT#bH4}t3#w|GiulXL=-Zu)wzkr8Q$NPv?PH+rT4M1LiuP2t z>df$1Y03L)ySOV4=coCttA^r zyU^PenqjbdN>`U9eWvNiP#bdqPfvXMSJz>%@xoK~YgT-I zFBdFrS5ivI^s66&H@^-%Gp4_Zbhn@44~~@=M$%ji>DH1qKGilp?2dR`@T<7>$y$HK z$x!{%_`3Ode~JDJ%=2({e!C}DpYYSNf6V;9y1Vs$NYU3ulOB~nhCDrg9rl^w+o9(Ug+%%`r2U^w??we*)lTOI!uWf%ci-mb2HDaJj zVkK4Migp3uVyeJ(s5q>^8=iuIHoP(5PZjvZ+-Mp!_YlSYy5xkDo4L$f>&9q= zvfO>5W*J!=7AwzEIvUZ={YigOv$c+LNIds>m9kl~OL3BV)@7Kw>V=sVPDVNU)gc{+ z!QBSp=U8oZ<6&)Ptg6It(h-0M&=ODKSl61jDRkp^bJy~^9qot^lx9${+@^C{LnmZ(XeH8Bo%N$2h-Y_^`(EFCfvCMcNCgTYE2d))TE63 z+4|Npq-?79FUPBi7h#yF?lV!y(MnN~ucY{n>rAfY!ERtIow8i_-hS)$=54~3n3 zd|cLKMUVSJ5EPO!$FF~`0Koh!530v|9S;{i=B}UdN5(htrk!W0&nRPnuncFOhc%qA z^yBX|QpDAM>SuM~xO_k0`D5`{#Cy-SYB}>QwB%tVnd%s?LG^3_?_BeZY+vrM%FC-d zDY`gc-r`-~L}z?Q{h@qi<2y&vY_86Wq`1e~EL^KH`b#ei-$j4I{cF&|WjK5}yA$IN zA8GSy8vV*B(X`mWK0}-pk;h%c<7mct>Co3av3|x@qpbV%UY*~b$i}W8>yYKD?FYKq zzh2AnXQudrTk(HKh2qwAFA}Ov@e{?CA}hBXMf|#yj06#7KnnY?0X$?e&rj~xrITYZc>Ek|;;E=gTHDL? zFvnr2;j1`Pmo>jJ(tW9P(c%3)_xY2gmvcmib2)Fipz+f`fcodt=Dhj3EsQxW4ql`l zE4q&6>K}g(X?F_}X~eNCLa%MdIp;n5v8sjCd8fM~R_5h~$i{PNrho;S-Cj@guker$ zINOqQ_2!yMiMwb|CAqkY39eG!+D(CkdzX7FWCB;IJRj1Ql6DhLD(tQHOK^yVN>RI*G{#PX*#e` z!jD!x0QWVNV&v?G+FG;Qv_F9wKZG=0JH@{fqz3h4ZyR1v8DqP5_B#}UNQU>k35{W#~K}G}Q8el*Y8QOnH?f~U@$mz{xTCAxw()Bc_2-Hn8-u@2! zZTLOmj{@0vKjKHjF?oHZT*)LlosG=V$#V-Fs!I@HkAhA}C`bb)rlg}QN)W%zue@H) zuBlGnBbWHe@sCRQg{s=WhBT>kjU!FBTWd>MHhF{s%w6_;pq68W8455mdefs8m%V?v znx`l?%+IPnW?zqf8u+8|dfVYYiFNBOFUP(IMw`OYU&s;-QrS^~wJb)^+Y2Tef(n!0 z9ek>A!6z_A`8gSil`B8BU^1U{Uv8LVHxudT;XzWaNV=><(tXTCV@_webzLrKiyR)?TVeq@h{{Vj$^|aEw z9iu(OXv6I{l8u(Os!!gML%{lHHH})(qZ`eV<*kwQEvLiJ1biaBv(UU7e*Qi2ywdF5 zXKDqomp{Rf%^*|A0}IrWdt$LuuLlZimOWor{z%W+Nl)5U)%0B#`Lm+CwXpavb^W2P zq47V(YuO7~+Ja?=M{)_t9EpE!aB_3PW7OnvsVb|M8YFfoa(mO&_Bs7!uJjubf8sKi z{wUTh7iQw!&I_JE!8~T1BA$z6T&}m>{s%wc(WBc)_qyfuHum~LdE`xi z06+53{{Wt*ygnhs;$sNV!$r4I+fU2q`5vxYN}9b&uF5~v&mZwe#dv>hyheO2;5|L8 zbbG6&kt9S|-crXUum=DhdFH1L!p==%GdXkBveR^zZ(DqfYG#V=7-eYwW{rluBpRW# zj%}`kVVQ_srIds7Hv@x$djf0d<;zY!MG*he!j$dcQ2XxF-Sr*mrno-1p43WUCqRpQ_k2Wt>=pm16&gSJpngw zd+)8vZ(0KlZrj6NxRYVh{IGU$E}(-%t7^vyr)w+U(#jYrD`gsdNM4p{U9 zqaJvyXIh$eqojW`)1^YEE$chV{{VN9^X2xde{`uW!!CdBaH^m#OKv9v)St)>!noA$ zq1fSViZ?stJDpS$$=Wap`c&TRcCj2mf!Yb?n1?(>aZCuOXN^SQWR4hmic*4_vnn!i zcSE9(Yi7>qpFYIZ!m8?LI5()sKG_Yz&1%vl(H-c>NM$3q z#c#}>#yo$$8PRG!F4Z+FeLmAtx3^c*0aRp&B#oX+GY(4=$;sRA@qre7#KD zr?D)fB-xUWcTk%F2>BKb*Dy>6-=SPI~e+m@O$;EQYOV|tfzp0;Bqs;&OWtV z$?PVY+>Iic+X{?H^ckmh)C<B0ZhYyOM;IQYp46vSFx-_R*>rz^o(#}zbRA<+)TQwbrErox=90)^wi87o28Cr- z48ZI-BO8NpgT-@7y-7Bfi@5E5&v@1@JZrDrPvM^k+3B7Z@J55OM=))*(~y)#MwQRs zBrty++nxb6!U5kSAl%~!E7W&v(w&#WjK2?f!q-E(m%)Ftu9r5i;vGnNcm6E8gsh64 z9c`57$&a2`oyQ%x#lB~)O&3HomHpjW1%{8Ld>>2M9_c(!;`^<^uJTMa=cxdaa7QGz zdG+dKp()d>F;~-$UXH&3^9^L!`myFgz-;J7YngbDv%fR53qT zPC@K{J(EbM%5>B$jy)sW1MF_IKiyrJ4)>vRHta@&bP(aS626b z*!qRi+(Y5m;x!? z-Xnwq>ixgj6?RcpT?uW;-JOIQCZlcP%Y9OR@Q1bY{?8aAW8Ga5yJUNZ-BlpFcFs8_ zlBoHu*YZPfPCUUhT}ed8Cp%{{RhX zXT*@lJTOZ47QoLHoKmvy*t|4yD`BuX#|Pgz2MASO)0WXkKk5&vp%nX z;rrc26`D3HB*rzFunAs-fI8>voSaowu9ceIlNvW#J7|6V`&53=R^ActZTE-#JK`&S zD_OgX1J836!HBQkx6cRWAq!{a$sjQp9=%F#isemny}dfK=A&8SosxW=PspFzJK_>} z_u>uqrD>@NL`t@yp_ybwkt0yS2;q=_xswf(n#Ug~RKztMVv=9xdf9a;(8EUhNw(kU zc+B@v$#olKfyVb76UGUyXvL`5>y)m=7Ns1>&a$pDNbWmRPUuZonrlc{1%Q?ye9xW< z_7o+qqHj$IQq3bdZlv&W`PCs3wUL+ZgPdSf5nATZt&D}i;AWVvbExc%l_XPtX*Fgv z+IL0RFUZ2mx%U;%It%QZMz3=8cQ#VsG@DQRLlw;^RffpbN)pkQ8%`4d(8?dbu4-e7 zadw(1&{FtHw-LNa<+2qc)Yn}(#(Ji6&JAu{oW!>=C8S?yV52TcB(?`{W73B-mE`PK zv)0kny$mUCtu5+C&cKhDec%3ny?NCt&b+y4H)EzSjWv0a=~|defGzBzRZfn>f@?~+ zE_i$LWXBTYFLfi(G=CS&UKG2ujUqxndkN%w;=Xegkl8sRNQ(Al~uLBraP{iNgb*E;HskE&(CR1IGrw z?+uty%o3@Fn)KRVH1OCClJ!HnP%YvZ%dJ<76(DN~=dli5da{0ZrQZ#_?Y1CZh?JJnpP z&wse~FAMw)@E?Tq@3U%FHrmX@@0LsWL!-8H#Ahql*ERUYamSg~YggJvud#~RLEG<^ z_w=##_)M1vhmR|VGw${LHaw5^x%k!KUj+CqycMS3=@32KY?4`9v}uoH8gf4>?cofU zG0t;1W4-pFW~T0c_3otq0L;TU#o=%mSy5KJw6~X`@dt`qQ5t1}Y8MYR?y475yp`W` zIVc25f89)eb^SRy)vHUMyS$$7x%s6kaHkZht1gSNd%=4=J*Mh@Hj)&cXyuPf(^1nZ zZk4@Y@y?WPg3MLR2DrBx@DY!V6V1yp%q?yXzh_X)Qxc1va0?L0N`;ryuF zd9cZD@=jQP+waOM;x;|_$8MXcIXK)Y!AYw#(tIiKp5McdZLi#GI<3Y0mr{8q6euH! zT<>rbkD0h92MRiKn&!k;bm_UqH?v;4n$V={)l}sxD?MJ`pE95ACE~w|e+Mo+Gpu+T z*X(f9uVfOr{o z8n{S5Y?a&TuAlHvlqG^_B=TiOS60DB;EeXJcebafh-64SrCp>-r>|^MSHF-uTgVYPti`P5Gd%#xG6hO6?n*HY|SeB4PPGBD^fkfZrl@QQ|s zSjKX4*5-oQTinLc$XNkA`Dyb2Jr7Q5(`#Z;4xeUipx^^o;}& zN#6eeU+Si9 zM*hG&LfSgi9g#w$*zD(xK?-?{RJmEnu&JZ){I_=eu*Jj^7y zGIIMf%MyC?j%)2DWgACh#Ixqq^iLM;x7M0AO|5`-j(}hV$KVBWC3C5+REccixm`L4 z=U~uVJ;mvawgG%7{{Z5D0aW!Aeb|?N99d7P%__&EN-ia5Sgt@KAb@Uvl$FO_peP{s zJW{E(g%{PHqj7%v3S0O;!q<0_t)y~GbuW|>X|5y(elSQ12g}Lz9QCMF6<5s4=j1wn zhV2HQ9Cxg%ERw^7j(dMKbGr`MW7}`%>umS|`DQ%czKquN}s z+yi3-DPB7LX;i&7+CQh==*;~)2%WtQBpn20rxU&^y za~Tq1L%5*81Rm2GF?7_bb=4cgpPpXLY@Pd9?LTPm3tj1d5A|J3K(@1=Q}EggnBF{y z8_EO}ljh(REr2=@Dpd}8sx9bqs;)6|N8?_(t&5*3c+^998RVLORUb1sY=gV6bJ%w4 zUGjYIneKB!Jd2fVWolZa+M}6fNP#401DyJk)cs91`j_NWc5;4VI018xpl~T9hVIP^ zJHb3(Wu8TeV;j(fB)fFm$Mg27aOIaW8h4K?H8jolzHAJ^WFInM2Y~_Yf30Vwef(YSE;1-c{OiIv&T^)XEX4)9Q;-aZPs}r1+t&m7b;89L-kJXZ+H8SaV)1mS zTK@F9BN`ZaRBxi{&#HU@@DIV7?wdBB@OsYD<``8c)GtNgCIuPEo1FQFoGAm_it>~y z;wp1g{=E*mwIK*7!(@90k9;fegTWsT7sJ}cth&AStpq~W$iC_048J=J9jY=x$sJF6 z?u9siN8N_6@;N!BEoHI!!Q=k`2Kc+f8l}~=+SFG1S`uxW$!2#>PBKVbj(tXJx81Oz z%+DqGdiM9;FVy6?X=b=GBo?g5GxxK|>Dr>CoUIg6icPj!@wTlFt*p;{%jLYU@{`6# zVN)GSsM2;J)0%thc7h1nR)KuNqn0SZhB)qj0Rujn8KOxm3N5tHP4G91d_kaS@#z|<;r(;N*Rwt8 zyz=F6`+0IPxaS*sgPto{+LRpaw_`OYIdb1~>yHX}D#lshDLT%E7(~yrY+`VwrQ61T zSp$+Y->*zol%(pxO~%*g_ad`Ue6e>u!@<58)Tf(HNVIuwE$(h0x0oyKDI2iKBR%?O zrvkFYDSJP4Us2(CdEYa(kMBOVl1oW0Ev)R7CXN_n--pMRL0!26-y;;Xb5Rq&D{S#^ zjMnn&7JBE0F6REvx76*}&vKFd#v=`Xw>%yPU(&CZ^1CCN+aHB~A=I?}c0cWCY~!`R zE&h;^3?qNG2WrylK^V9@bTC4acPRtwOJd0q26MFVN$=25m|Er2q|Uby#IB-4v~5nK zIKljBDv6Zf(bV``OlYozw^2qzN#*X(L-px{(v;se!iweG`lI0YgnTJ2z>4;N*q6D5 zP^4@NBa@5;CoDKUJJxk1*TRXl_ddnaKW0A(>G}=bvRqxQz5TzQ@J$lU9H5VyHjTl? zNAQeen$5K&+am7iBjxYftHD|ig1!}B>6!?$wX}{lFr z@rstNH0)e!7(Buv%CdlZar*T9e>xiOBJ3J`b3Vg_lc;0BJanj&w!H?G%Mj_)N7V;j zhrKJ^XjPfJro(GIUPZzJpmE2~^!F8nqW6yGsoO@3?-2YnNu!eMNS6+Ohv$oF$o~L< z^&f>@JVQ^Gq9#yV#N**x?J8EXyo+IO6!s_8PpxS^bwsYmsdyX39wD`{juq5r0Ry~w zlRFfQ7WU5qylV8)thrX2T=Zy3&K~h^!|&q%03F=h!)-m)?c|O`mk+qePDteXj)NVs zUqIzfio4MsWO?dnk8$vSZ^OR{_!{CHjcUz2L#=`j_IH{Dagut>{n#Ji9QxwC%J{mK zQ{>V;&Ztm@Ho3KD*E&b+z2g4>jXHLn;vXDqvG`-dmH|%a*UEN_ZgBuORY8!uo2ley z0;dgzry73RZ&%#BOy$q)qpiCdll*7!7r`4nL*cjV{i132cBtTgOLWR*ji%##vP+!K z{jd%=$v?wY7gn>pbccSg{E>{Q#+vv3F5Qf84)`kf#V~V7^ncmwTo#8z_ z+sL+JPnVK&!Q^)Qs;_W9f%ti(8^10UUBG~)SbmtTc}!$~(>|5(M~1JO&|5;z5jK~4CH%M-p4udZ|w{FNqAqw{ydlAwy~v6 zb#Ha19a?LDxUHB+VFu!i+xacnoG1&(CnQ!=n~F^u#*Nc&L-BG{Ao^9JTe%vmf=D>P z&*M~pk`V9mh2)%mH0@zr-O>%*GpL2OyA?axx^3;B^U{;1o~)%e9TDih4A8FiX9+7U z#8B-4 zf=6y^nx#qK+%7cJ_}!1RExs&i_dXl4)O29&rQTaC(4_38Fh&ZnJ+Y8M>)6*U<#&5n z6m6yMd<*+-d|=ajOQ|n~Ev}=NQ-)mJtZTJxBFD;wvPoviC!By6J!)!7b!T$ zm7gzv!=ueSP_#@Wl42o_1{si+=)ew{Ac5Z>TI_R3&et}ztqxrY(WbfkMba+WNZM0) z$Ylf*yaA4Q^r9_ET?0-#kJ9vr-ekOX8^YzIJY@D6`g2CD*l8ETM+}xZ@v(AN_htqP?f1DpcBB(bWk0{_b~iY{;9j(76LW01Lq9zG=Fu z;*~jC=hMC)@b&!S)=OJqXb=p?8sxH{PfQ+aw3enD8Q&HB1oL=9SQ@jnrJ`wn_fpJM za_q5|GVlr90PX%2HtbS&XW_P~s>`JKwl5aw2=Sn~GQuPrF;jx4*_4crMy`aPFD#3x zXv*OuzpCmTWn;m#akMu~Wym!RTm%QoLU1nO$qqnHs-`?=&4c zZBh$KUU(Tu+MS8y;PwKpNpdrPKBuL40`^PGA$O_ij3CZql#Q(mG|oQ|DK~A!Z8ScG@Up^eRKY4pr;=lE!|}yuCw5d9(C>|v8)+kg zDh&@8_{H%1!rm+JmbC_`klSptnmeWlj?tm{vIBKe%bXq$am8af#tF&vG>~&aLRf<$m zacv?H9yu^DMo$bn`T{F|I8ILLTaHTG8Mc!;oPq-roZ_jrD;}fp^TnptXsk6XJ-az! zCeU6o!wh}LsHt)64EA3e$Kh`fLuD?G$qe?W#pWoxT^I%%h(CB7^XNydB|B)y4u73HfJ<=|+Cga=$#4;+nY_ulBX$@R{{UoT40{eU z)|E}PDjK~_6!89}_7mOdYdxN)X$oAd_R=X!f znmRK!KObB~TFb?DpD`s`NWfrQ9a&Gzr`&a`_A;mNYKiuLv8nOs%er&ynCiL{CDphY zXyZG`9e+dW1rp_+k46bf9`e;5!|={M8v5crPh0T??Uj|BMsGR7DuxF;RlfG(Kmc{* zV}V>X;Qkc1H>WvX>753Z@lxADihVD@)=;$fGBUNzz#dwr;&8+PkTZ;PoN{Ze!cHnN zc3t}Xh=sX-xu&lBboq%shp%{tS7WO@_gdV;Ej-P$VjOf0(Q()hN^~JkoNZ5U%rP^Z zzlePY@c!RS@Xe*ZoqZz1Y!yJ5;nqe9GEOigK(mfx$R&jCHQeHZSUb@RU?jZ>#83YEF`NKD6+io^RBTZQeT*!nNw*Tf$K z_~k9_1=LoT!~JEA*$PSN`?fqV_N1!YN$L3#;`fQ~IuC>vbheJoC1Y;;;}EI`9=P4d zVfYH@O6bB;N3{Gb@Ls(BBZ}PV_s%4J>dpaw$m^50k6-w^ zucySX1zq@m!SKgA!j5BWPnGsT_Ey{GWw6ZoW55T!V^Wl<&ClAYMeMC+y-xQUKE+vk z{=5GGk@f6)4xAllYe>>{C-<>s82v~&KaFDbGgn#?NG{iUSYE{}kpK*H^Ml(Zc^UVA z2BqJjO5IWOFYN>4VQp>VT`OF*pFzHlPB5&qOp;mLhar?lD&U7I7^=FA;DB;5US>A; z<&w4j=62y}{ir+Jr&a#|0Q@zQ#_SE^63Tiq@;^%TG-nY2R}M0axI7-1pbL2}%ejfb z^@>h|r2$7mb%RfAv^)+`}AvDvwEf+FLxE@qtR1QM) z0;VHnt8j)AN)QO_a0vD0sFPDj)E7;ZyV@k|VK(|9GB+i+RExd&3$*8brJz>10@@XuQ0y%-A^$4^QDEryp7tg`T@YrZsgNR z86=&^{4MaK#Wy=@ai*H*R!V`>_E3wqYXML;N zS{-%PTZked+(sA7V#Jng0l4%TJm3n5(^T}1#Y(KFthYLy7e8^pdGo5Q9yeLGB$CB5lMH-jk8B(KPF4pafgE3$?y z(5B#`o%*w;jw)23;cKRPcZ$3xki@fU~jZ+jB?1>g$H69Lv$L-&S8;0}1{PBRH71*!SD@eARHi#{3a(`cR} zv3MqdkC!Us$0!GeM(#ga(?)@6u5`Z)ziFR}Ukqo4J3Uo(O9+Vn07BGrB4g295b5|I z!jxAh!YL&+X&<0}{{XXB{1kKGj;PkQKM`&x@Ls5l6MgJP;>E^4hIrJpXZ`d8p0#dw zUh$u>cm3P@^#1^Wew27q#J(EwW{GdEcvoA~^=&?N20NP@l%6KzJUS9P)?1o#xaif5 ziU9ee#(%Qsif%t>Sw1%SE8?xshTzm9i8TvY)=3^sxDqOVsc$Uq3b-xzNjwo%SC+Lj zq}pp{j)h)4iZWMg?mlw=0D_=+?@sV{fvj|-yt-?z7V63++bL-t-p&FQcOF8SBqxk@ zt_efh)l0U&r}>)GsG&)>>H5FW{E4^JFRchR_fp67V~X#xXBEvDyiu(v+V?9U?jA5{ zav}3FZ}>`o^-jKBu>SzIB9|fyi2fzkX5;M(9)GxjXyie5Rd=|#ee=rlH>(`g+S>`1 zE$#AhMGb+Zk#q~o@qvugUgIo4Sr`ybI}zTC0%n{~3@U}lWjtdzKZ&DO3E7e}w4W)2 z^2_r%z!=U!K9tvRdXHCFr3GW!rCClsV8OH4`_S8ewZS3}w5o!@1eFMNk~8w~2jUM( zkldaWhwSn@0hZu|{wL=QJ1HFv4eMd0p`m3f5W%liA#)$dxhc~i4&dcL%|4;6jiGl0 zHi(m12DP3xU6MD?zA|~wuI3)O1KN_icezcZtaSbW(M|sVjbc%D#@|i0bS$huMvfM9 z_4&7dR&|}JU#tHBGfFG>o=F6gK4`_AP2(Z zchq2t+J$#XHOigJjFQ~@8{zEY&umi2R&v09K1SlaWP$$x>Z}s5neQG8@rQ-HO1JhN z9@q5UMtvS}Ykw7;!pPRM5s;Dqa;=WXp1zeyr=k?0D5T`9nbPEAJt~O?0hF#z2*n!# z^7riF`z|l+@V^l*-^BNxB)0KRviI;qcN+$`0I=FYVjYi|Lq7oR6}Bp^I+EsuY;RtF zTow#YxB1S7wq*NM1)K$jE!p2V?Nl<2S`$gPO3`z8HA>TJYW0 za>l~xk~ux3kCc#mGMbkZ^)59f6=d{(KVAO-;G3VeU&f!>TF1q@f5isSZx4i)#4YW$ zlUv-~8-X`26}+Lh$^H}>-P;xMTwBF&g{4J%FKO*B_PK3qc{}cOQ>7a5ZD`lrdzX(s zGitVIf(<+?+y_-*H~PF|oMWD~^n787d@QKDdrxW2{o7jJx7_?gDDh+aR#T5<)j4@u zUmf>v`>V0}Cb+CZ#dfAzIVC(7spu-`kfp#s(Vjq&C{0F<@0yF{{RF3+0Ym98~^|S diff --git a/src/assets/images/faces/warrior-man-5.jpg b/src/assets/images/faces/warrior-man-5.jpg index 1c130664eb813709c2530d91a30b5cb274838a24..6386e3cf3686e2978f88317d0b498d6c1515b3dd 100755 GIT binary patch delta 11003 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 delta 28739 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 diff --git a/src/assets/images/faces/warrior-woman-1.jpg b/src/assets/images/faces/warrior-woman-1.jpg index 84f4d9bc457bb78ccb2644363acb868c01bc13a4..3eb412344d92ba6d4b1864ae9258600482fc32a6 100755 GIT binary patch delta 6264 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 Y0^rq$e$(3fUT&PW<>m8tz5I{=*^_B!2LJ#7 diff --git a/src/assets/images/faces/warrior-woman-2.jpg b/src/assets/images/faces/warrior-woman-2.jpg index faa576a7522c3ac96a699192ea281a23d02b1a38..c61d52a69fd807c704dc05561a653c2f81a5bd77 100755 GIT binary patch delta 10842 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 delta 32614 zcmV)SK(fE3Se}6b6#v-&-~bRxMoC5h0RaF20RRC20F$2riwM8~5eNYQ0RXY(y8(aN z01N{G00I#M5dc2`{N>YA5%2yL73NfWpP}HRXn7)gi4th=tN|QxQ59#Yy;-To$%$zi zsVuBOp*cJm{+5*@Lv=4Jrl!B6Is*S z%G^!dN)9>zMt_m7IlUS7c!=tvmyv(=AAvg}hf+bY)){5NZB1)ZjuYi(|ZN%pc$AqoN9LE2d3=59A} zkO-~0XIcsf=T#v>Zll=dwcGE3zX!voh<+jIhUx?hCY)}BvP=Q_P%4%ncj;a9@?1qq zYOXF`${u^$(f$XMSBY?xtGs_cUl)k0+Ba(ca!TI4kB|QVXdjH%KOHXg`!&%uJtM)| zM7vVmqViVq;hQ*(Ffyux0o$COdkV`j#Ni_agv-^btz|Bya4pJQcfEE;u;QVr#w<&Gh-S89Ln!D76yQOoUp z{^rzYDzEo?Bg8JXJ$qNx9`4H2Sj8-XqK+s4By%t63`?HS;P`cBQNCX6t_wv;>Y_KTLns?ezOeo90_fURgl- zL1Hu1vGvKV6$bQjvN`^_D66P8{NLnp_rDW#3wb0qmbbG=z#w?a#xM?Zlah1&KMJ_e zr5*0bmM0fc-C93;Dct;EyJcv!?J8?%*>>RGGh^_@Uo9*9u_1k8)|F4duW#`eQN32S zyF^&q?(SXT53hf&;H>rN#c4Y^0p!A=rKS6#3M(8l%gzWk!2xTPS3N08RJe#>Bbti@gkUy<+&Yh0h zb=y{K>hwJyO4Ory;?)btKZKExJ;AOjwIvNKdQ>UKYnz(vuX&_GBw-E0vnj#I!8Iyv zmf;lcj9Km$2!78O-o+we?FDvx9-UMyj(eDO*86UJH&D6wsx12$q^QD#cInV z5VFN2I~YDXXQq8XHBgr&@cawnT^nB4?ww*tp3h8{ zUzeSbdEa#5au4$6x}hpKyK~f0w)g)4Bf_sk6_?4XbY(W()tBmZcb~QIjH2;a@ZZCa zgfF68O=$~4HQAbWb(fgfMHt#n3BwoTka1m5#Nco$)|E!~QPF+u;g(yQX72HnC@9|U ze)E6-0KivYnUUiU3H(s;s+hcY@m?$0B4<|c?Vy(4+=6kmExd{_3GQDw_pY^><9S?Y zsM3#U>o1(Q`;I^LcP{2tF-~>o-cHe8kXl>UQ;zU=zNc@0jkUY#$nuM*cBA1N z05SP~a_0xA052KMcyq#5tu<1-oZG(c_C9~PW>{(z9ULV!PBF64TI}<`iJBLPbuSpf zrs*1Ewx4Ywj@iV`FWMOY0LxI#^Kc+!d9_(b%Ny+j0B5Tnna@E-)$sKH0Es)l?yuE~SiE*2 ze&(Ml?>G7{)tpa=KWP5|9qN|fV$y#i7BtNV0zkJSnL` zGe8u1yZo?>FiG~$^AuceNtSKA6|c&&yc%(ppaG?b;5c04cHHEycqDWrXBnX~9Fe1E z;rXl=?K+O1GDN@)$bZ$J_JQXf<3Ej3UCdyQgNl{{VlPTUhYEm#b;7d8D%3TcWc(3^6<&r~Re(>O0iRj-1ih z)}AU#T(jTsXP#eZGTI%#>tTLURp`U8K8CWhI~7#+A^yR3iDgLG#^kQ?!BgB3NpE7D zmguE(V5Eahm;5W`qS7=k_$;A!-aq6u03f8EkJJcy3pSw9L%_l#P7#`eI^KzrjjCrJ&sq_!Q6tdSWzu^n< z4w&=ldW0)-uN+{TJD}S`l6eY2P;u*=R@7w*i`i6KKg{9A##Db=#8H)`wDnz%>&2GP z=-18mOIH@)4=z=a@Tt%$p3Hdm>)V>^l2kqwq32O=6#e;G_VY2N(iR!5^+vlR%V_+` zT2dPs7+m!u93NZ}S$iqT`$w^?@o{A)K)1BcPKQU3toEBx8CXPV;|H@ihY`+i@V zihp_Gek}O?@khsZjU?K;SqVW_TT!sEJ(S>Cc zs=x0&KkyY~VriZe)U{R<-aOX~+@0)O`PYev#>!6ecYbHm;WGHbHiAicD;-sr!*^^4 zhiK#Yb6ign+dU}YtkZ>?qdl6gH z#H4anz`1`IUMBF}?ZGlk?X>r3i3&Sl=OVodRg}@<*2Bt-nz4Mug{fbCt&- zB7mf4cS1R=xmnQ~$mFkdZKco$5<~%T$%X?RaZ1L@p^#&dTWP`1anRB@ggm6j$ zmQZo(0sJUY=8H`5s@0V_sUE+e_?trTB;VRs+JaiyL`0vxomIAw1Ex;}P5~eNYV@!; zN!I36;@|b$`Rvy)r-$Wrrj`4>U!s5C?zzf*Q~kd_AL#Eko8gT*4Q~T((;nnL#QoAU zo(Zp6VJKnm^_q+PG54R%{44Q12aLtyt@S!j{8RT=$uD{S2g&{_{j0tv>x*||;ia?i z)s5V*D@CV571^7qFY0KgjirT6VCg9Nzj|ML(R`6rvf8-zrI^;0OMR8@!|s1tznf>4 zy@s`}OmDSIspe@3V)Hp>KK%5q8nxvD z$JWro-76l6r2HJZxB^+NjyQkhS39rR?pS!GsnXm0A%O?_mSBBWrB!TB5w(dW_(5i? zx#8R2ETXhkB#hlSTE`*ce}y&z2S}~ew`cB=T@b`ebDE|SoRQ&PGx%+Br`$<#XBweU zPsrp0`B$%o#yy$yc>K05?IWGg{9megO6e^w)^lqA03*WF7L1H@jlh54_v$O#qll+H z(ejv#EoyG*o`?pIf1<&wv{7B#U7szsqN770{s+P2o)YVLe(18iDpK~kRBONJbf!YP1dN{(|kcCjnZt|65=7d zXyt=)FneKv{VS#wEO5?;Hoc1)jlqUTxkY8npE@_LH)H|FE6=_S68Bi(xs{DGBpQ{h zcPVtr>$I5^f>FBk?g-E1deq7Zu4E9Ki*aUOi7hT3DCZehiLif384S4l!_<0?wVdP1 zZAxlKJ}lPsU<8J2@&WlzxUB4%w>yUW8IxLF+DZhm>~2Utq*Us+Hd0br6UctkZdJxk zbGtqL2=(`;WG$JUDR$yQNffMEYDhu13>bcW>&;Ts`+3vmrF)a<5lD}?j=r@uT4uR* zIl`*d_7^|xJA~iswOHOAO|~n z{x5%OYA%0TvlmxhRk@En^w%+&%6UbjarCrR)x#1{8=*Pb4@ zRGQB75i-aK05Ri?^MlW?di8M0R8E|a4;tMDs>eo;Le_L>H5)xc!rG?ScyYDI%t>7A zkRG0ZN)i}9FmRqAJ%~Pw*ABIPt=#zg>3@d4S01FiIK+7TII6VRUi27oxEy^jf zDn(P9iI4FT#v7Yx?oeb$IN2uN2qTbt@%}Z9Nb7T>4?Q_f9@QeY)fUECPScf*&t|~K z;hIshm5nEPLzx@y=0O@$~p;1TPCxPCROdg^nfWZLLv=-1a8ZP2ur4l;jZ zDtdK0Pfnbl)}{@o%FQdqNpr;Q3|99x_ZD|STg_0(^Bkxo;N*7%WALXq+VL=jM&zWr zoYlsN@Bu7)M0m@--;qv#i_<=%jQUnKvDTk9#4U+e%DYJdkV?9M-!Sc;>qh&MuNS7| zAK2TA%WUeQGnk0^x@2+IlYy_b?oof#{6BuO4UvK!ON@+d>21ZdGLe08?>uxly^`4D=%yAc2aQQ@Yess?)kNwX6Ln!LT=$ z_R?H@$R>}K1P(wx-OfFQSF?XnSCE}qP4dL@+uOOdTi@*+QS%VxBRB+)Q}ygC7WuY1 z;<**Nl;)IN%F>cCk+nS!r{F4VTF~qM6?j5#8F;Q6bW+y#pS+cT&t8JKan;rymzzCo zp9l52`ur6`$y=X545X`yQ`>Wy9(Z2xN(+l**=x+V5qvj^tL<<#}csq>^>v& zqvGf78LxQi{#oX|ZJV29YWYMS-M=dKT+|mWHDq`m&D3sno!c_}1@P|w0L8OMsCa_r zPc6P>fpgOt1T=X>!+sJ=KBwY{V}jKS!L~;(yOd$Gz~BOZrFwsuOS#z|24fh;pEEtP z#21%IsM}qtU_&n10Lu-H!OnYvGm7hP-nr)}{^>5K3FB!R(&6s>yu~v4!2!VYRA7;g z_#dTbdu~&YHLbbJ>X%J@WZZ^UV&sBz%5rh5vHT@A_9h z$9l8S>M!p;+ogY4UoO^D5f6{N9~f>2bGJWIYodC^Na3crYDybwV&316-Csp1H!5~W z+2ND3eR-^$y7fAvPU*qyb=qF0moQvh$CizeGNj>^ha?YPH*sATQ@oMqIJ#{@USyD6 zM2+WZ!CZyQMC?jVGtc{{{Nk{BYZIkjOO{XOSH05`@*{t!cz8xpi8ESAerVVZM$^#y zj-%G1*48^3DP8ha(f96Qq~`BzCALnWl8kol$D#hBty)V!l5o}Rc0L`R-&)dU(C-^< z92oPHL0mWw$Ox`B{dyei8?exH-oT+&`=RciYJ z{Fqi48LodRE1y$JT(;23@dLvg_yhnk_?qdV7SZ766=NB4jj@vmk;QC{G0EJ^oO}KQ zKi0b7tbBedT-TG>zhQR-HwpHOpsYS+0GyIN{r>;tj`$e<8y?Exfk7$xH z<&*=GeL?m7t6EWZIk9tBXJHPH;uV2Y?D5Q_<=KBVxh^s4**&^r+PW`xZerjJ#=YrRhGkpaTR5@35^ z6UWrn6(!8h$}x1~WVI?QdGEDBSfk`1Ir?PxIjr|J*cBy`RI#&*%(=L2s-x7@wxYSE zvNV6E309JXHEjDg_Gb8T7K39Dnl)>SfF4&P?=k+B@_771#8hvg`W{(?jt+u?->LS; zhpr*gtd%1w0;uDsL0)=idyUcOUmCtQTX;7>mg%k(NENWVxi#ous7k!-c^Qr(I9NF! znjaIsDQkW-*Dh}FFJ+f}j8#cE0QBO%sxg02N-@~@xlPoQoVR9Ag>-l>ANy}zm7=h< z!Oq>=nDhX5B#Mc)^h1S{yFKef*EI&vgpwO?3TXw|mT4Hvb2uFEzT>U|`qw-z+fY|M zcZG~%r(RZFj~?-#jl3prW=kubV^n>_dGk1rCm&qnKGkZ2zO0#J>A`ZrJ9?aW@l=0- z#IR}Q6dt?F5&bH?it5Z>VJD|9gi~I&t#U+J-2JhNe4M(H>&B+Xto$qRrNyIvXd7|_ zyFqX{00MjQ-nOAtLEPfS(RE{G(Cs`$aSz*HYX%c6O5hx2k9>Ur1p9+tgM7~Ch@;B6 zUvrl69qGRC`%3H#u(siW$Onw)>NsnNv_>0*iJSJ4SK! zsAiDYQd@mhqlzn7w{2V#$r)^no_Z8-1J`?RSDJ5B_*zJF#U)-n;3W1(GSDxLO_guG%S2;`R8shZ%haj=qDuyFTC= zyE$l%cR174o~hyQ6tB=7?LqCHnqQf7Z*2rbSB^sg5iiF5a3vGrMQ3N%ujw?4r5dv|H3LkcUP+s9r& zuL`1fKBAnHN3_GJwAv}S3zY+$4zO!FB`go`d{xT57gAFU+}`votkXe$^GV(2z>Um zn+X>&w(cE!SD#j1>qpk*)VXU#-*k62*6x~gk{y4z+l-UY*Ph+vk@oRU6kLuywtb>U zILdS$_31@udO6s#6tDF`mwQ0HM%iUKsns2p0nsuOIZV5X_Rz9ack!8k#IxrzLMs*AF*oYRxJ+-cW7RFOinKg}C5w{oPM zvwD96S|@gq%Tmc1dWEvja>0O#2RYAug#5pW0H394V;*jYH{%{DW!{@^#OpaMpyXXpe6XRumoNdP@9NwXln3 zpKU6W!6v!Z2LAvN*DTd9fgKlwemzZRGK+u74hb0twPjxc8GI*37dVtYGwpBL=f^rv z#9b;|IHy^h@KhY*(!OsMMpP$hBkQo3sA6ez!R&H>wJ*ZkeLqTD&nUQNIot_7t85!_ znoQ@%a@C~dw>~HE{+}_|-qIU#4&bUbob|7za`#d3Q-ixk{{X~)4Nqw;jk7}0O>=() zfig16ryvvcVOqvXqZr0YO6RwJ&R-mL@7deKFQjQ+2W@8Q2CHk|?d@FzZKKQ@I+M3OGWpgu3`-{4<$tS5bHF4=HMCqZG zYk8kxd@lW)=kRWu9oC^{t0p}-QC@87%A>LC!jvgTLo?%Vlcacj+eE462Lds_lEifX z0P9z=m&VN`eEw@R;@du7xw4U_n({<0(U7cFbJwc_*l~b8@m}SRn7zy|5nO*XQOd-h zGFAw3+^7lAdthR+leVSD-e;d{Bu5&dU|S2Ej!7Vs{KZDbu~#{!m86hF2Tn#PHRZLz z6znnsfgV_oQcnZ?`cZoi)N)8;D<%OsN#VkyO!~9olbl?zL=*XJvki zy~_|K+l}FX{zn=2H8WO8l|{a17IDpJF76#78(59XyyrgE7dkG{oo0Nyn9=wsaa>bZ zO{3~?llFC?8EI_}x_Q6iSHt5c<>%VCpuO|!u{B@Sotex*7?MV57=V9soOLzckA|zg z$N<|XAh)$z)Z?DUrK>bdWGXoMR1Pzm(`0h)&ey`0QLVYWya=swaTpJd0l{*64!Hd( z#dAGOYe~g>r*{pEQ^xn7G*-I;79$Ndz(51O-g?&YN^eb$8M#yVw>jJWPAKA^SH4z& z!dd=g7?FbEK=kTIAiu5?uI`Qu{>g3d9PaQGfwCHH})F_DiAN zhM=h?`m-xfx)zrz?t#-kGM@FB(Is=xVeuB6nsUblqBA#MK;!FN?t^o?X3@n(LzkCQ zS$zKh?1k2*@GNs_uKrTp{iZ;7^YVfQGr|0*_j$P#wHG_(=W&0~_kY;KUm8Ef&kn<) zPjznwy>a$Q>}PK@XB&enFG4$lI2GpRG`*xBHu2WyvyyRyfg6b!VO?w%!TDL?#UeW?dw~tL(v@a z!Yen_`UBzj?D>D9__M_4#Coi+ETu$fqyy#TbQ$BXHPP=^T({8Si;fZVC3og~Y~Qm- zgIS|5ZRSh&nn_r@G5mUc1#{HGsOXv7M=_kWXxq_0XCDYcz^0iIAm`>#Y9WM+W!B6m zW6^Xkf|?$i68Sa}D)t*ic1H-3Jj$5qH*1(*7BuZU!+L)#vJ#8srZ9VPkH(^ORAppu zMzfR~XXh8j9~RsAgISf+GC^w0kd+zp<>6XP_Er0%)RXI8?hcQ$k2Bq$GnnFCY4Rtc z{8{8$mbGnRVr6*KbZzEghUGZ*_a_4bu;#kl`krSk-H$TWwTW(s7c&%>=4L{81ob)k z8s~23RAYZ;aoU!q_t!H>qzJpuHJtw%iW+@AU?*I~Y~bolFs%X*|i| zb`ha5k<^egyYmEN=}o75m@72VttvgPodH-p{W^d4M4sKr+9F~O^#`{(1RrBnJtJ;{ zhrKr^y3w9>s!A5=X0>vpu_OjLjOQR%GTiT8Wecq3WkJfGaa^(NeI_AoIP^B+yje8# zjJG+#&2zZgN3#q{sfJNzUhtA-21sm!n(0dCfmNj0G;ql_XDY%l-!lcy(e$lSvF25& zccFi!90_Kj?io%n%FTuh54X~)#tK(EOAU6$)-;`Lt)!QQi_BfYK+ZV(pbU?C)-jJ$ zlB1tSRne`gY1kELqr^hPnl^>0&<@eZ%3YB2u*q(&pc?O2qb zkbjBwsFbdbicnE{9Lq*kMn)?msWLnsqJe*x^t$>h^{z~G)bTFeG(8-i4we&Mx}P~)PZSrgJVXuu04@h_ zb6MQ$X>>k>_#NUXQtm5a`?6I=?g{6g&bGs1IVWa$_{<-)hcr*AW4BA&G@1~hum~9G zUX^5}8>7d=`;xOQ+Dw+tqFe*?>s)`Trz_O$l^$hynin1_v(s%JS*{QiT;p)fbSzwA zw>c$%l;yGTm+fuw(%$;zbQ?SE&nRN;8~xbN4#4!u^*r7duB*=N_~a$H{Ei;Buq#qT;zMh^~Rz zS%6TXcITk>rXm6WKHz0|z#LFDpu()^F^$>IGuD_Jej0*Teb7Ymuwj&5Nf`if_|~-7 zQb@3d()P(b~)m`)y>qWtm|;;`YbwCyKPw+ zFJg_~Egn>cjQx0F^}(o|tsYZqP<+mB(DQ5Cm6l^N4Y}$)PI}e{YDBhduGoHr*DUlt ziw!k5W?i}4YY{>*^Kr#QedDsVu<^4lczaA5t<(PXKve|#_3S&=u~&aQj9k=J*HfTA z5t`O{Elu6L#xxGe5!_G{-yDvkJXZX+Jcm(BWMt}^ZOTZt@Tm@RN(JO6Z>OyQwbY6M zcO}1&hk8T?!dE3YIRO4Y%81LMRVk#oiW1wKYlV3uX&GBM!2t95)m)BE2`^;xP2ZfX z9z@FEYI`{T~!CGJ%8Z8jm^#E5=S^WU{2G|70F&M8lBW78mm+8 ze+PJtr_qtw$3QyPwDC>DQ;N0@DyO=O_qx*{B*+QIGn&SDi!*w7Wo?fv_^;#C(exXq zEO8u8?pT4)XYzljr%}|GDmI-zXBQ{X{KNQ>@d351a{FAC?68$ci~+$=aJ+WoCmk#7 z@br}`YA5FSy6+KL&%VctPpI8$*A06)+Y-4kf_ihG#MeW2In)v|^;^F&2tpfq%Mv+r z>zYMa&6+T&A30v9+daQZ5YrtKt9{-G=Z?9jVLc16T<(7g2_=UBk@{05mQvOWmJz$U zHhJS26v*aibh;e!X5GO@(-AF$T%GJ$4;GU z;I7H5QruUGidiQ&YfH=X5Pn3r}#@ygHLyY^uSqm zutftH>Nj;2zNq=?l@#6C(|AY166mui ztay1yiFBY&76abAE+-j}KdD8g7++q-t-d zU&AEN_GrfA9yl1~x3dfnMf&Eo!(s0gIcal?ADBOBC_`5pKbiBl#4iJDo)6T8zPV)3 zT+V-{>PVPntz%}whsOZ)A6}KsS`HGsTb{-atZPEa-r7G?kd>NEjUB98KmkmL10KHh z5ob+EXkW6^uNvOwSz#=Y50En8bm##UvOM~hx=7?NEEu^ccQHIFoc^Mw*Efv&nbRYq zZDql!HBS2e+O{{V~T@b8PQtc-t~ zp`K8H=kA)v6ApM?9T++CROM&scY!qqlSa0kxDp^B9-S-1yNk0umX!5Irmw1Oh=ptc z)OuEOk#K?YFYO_$O5PjQ)H{xCc4y~TiSAzZ^{ioF zo0(OZjua8p{QxGuA|ib?#;%g|MP z-lw8*!1bX6>}S6$*v~;!ggPW&yrcpTtx${c$Q4*N!g}%!Xfw9D4^2hkI0ypt$UM+4 zOPac0iVP?sm<_oDJ5E%76;ZcSDzv2aM_nI>jU9FB;farfdgVwFn zcIH~6nOBYZC!=49&%>!rqF<4JY-Lu6!emBLc6$-QALokAJ#5Y84rO?=pOsbynM9eA zHd3vQ7<13$MJJ)OUotQyl#cxcLpl+u;Y|kT#9G95mgFwqotTalM{`ptDr=fu2BRvH zRO7oa6p-1Z%@&&-ABS~_w3~mlno+$@0Ud#?B^P_6)r{jhZk(R~0GaFdb6Wk9JD3y` zI_Dt+k~)q%R*3QEbnJJY5b)lq;yZn@L{b-M<1Wd+BOi2noM(>Tm2X9JGm8@WPS3+y zzKf@8k$7WWv3nbZxceGOGMBb!&&oiRPYlX(az2&c%9-Z5O)I1AZ6klcT43;Pr1sZf z-AE&bONbaN3q%KZmyw;s9=Xq^DW>1cV;MpzzVCPBe5w0hN8s-X_09-$4{+% z)1y{tLR%y3=}Qewy0Ln*;GY`&Oz~CTt2onEHYn$7u-;vX?dU!0*~8%>7^gGC#bc*B zmZpSVPvQl{O1>kvNESp5k1qhJ>5@89lqsj~FojyJ+M-0h4AJlPKN{)w*2+~h6>S!2l$b{9)`E4Rl`Ji_?i%`)W6~W^4`8Q{bBAk z2<;NmLV7#yLR`1*VnZw^&t%adt>%E_83VM%U z_i>7cv8)~4j(SWSr~u==LC}v=_;aVjr}$!BS8z$M0|0T(&~}0P6ZqFAGFnC})a=Wn z%~EwAO%EpWTsH(YbTgew#*UX}XSj_VF4Eu|~`&E%27wt<3&V#F_CIQ9C_ zor!T$cRSC89|gQ)@xN040EAoN{+|^3tWisMFP$-tIIY!k(lc@gAP${PI44qEky@D5 znxMJn^fNv)d<*!2@HfN}_;bfrR_S#ux?F>6DU}r)?uIxU8;`oc9ANjSQk1DA<8BVfl0TS1oE@+71VP8n@Nzs-J(M`e*Rp zThY8-q{c{&>dRM%s$^wKFwTCs&3w&xO3igX-wje1Qd@3$-^HKVt4;8Rsb#JBV%|js z*=13Zo4Skx&||e{OBXdCXHneJrW${o=BiVTyo#P6_+_bG==S=>zMj#>`%+OF{DTTQ z`;(JID&5$swCudie}{emwbSomx@br}@;mx*QBqH1N=h+XA6EEFUltl{R)O3fx_)DV zYd&U{gt#W|Q1M2)6Yh_32Lu9pisqVaos?a*JY(VvQ0lrh=A2tTbVU!h9DjdG(u#1B zkm|KG)7hV$el*gi)3xnSO_g0`wv~#h?lYYJU&_AXl|@#Xn(BUEUW>z5l_$}d7V?K+Z<*ZV=H~;}hP5Rzw|3V4e)TMWAF=Az?k=E+q`R`L z$__VU)MNaSS|xqXM=MJ4*srL}wo!egm1#;zZtktbsCmKn$jCohhc16qbW?(p)70}V zTIjQwqhe7T<^KS5^sKrao4c8e8cA^)<(%LTb4X{b-51fcOIU|I6ulOb}#IFtN7mHx+CY=;gwY>5+T4q$r=L>kP*R>2Q zse3e!nyHWW33Ep0Bk+GW_Fvadt*+bnr^E6+<-BplYv)EvMVSYgAp@=>RwLJpb*v!{ zSv4i8)mstG2)b`W^#|ZDgYUFGIN0hMXPKicDHfT2kr2TV0bx2Ggk*q6P)<1nS6pdw zYt-|-vZ%G#_U$7^vlfA1Q*5YrCzNsrxX)2lDRRE%af*`DLoa{C7vI^@$#FDM-59~- zA>IM>{{TLfwK(%=v^eU`#og+Bv+;}ez|edLsL!QAWG-$JO^gCElhXj7UV}c>=)(sE z9%_v8XP8x~K1wk>J5%wr+P<5q{7?9YZX=%W_gZzMC^AA1`mn&@1Kg9_G}L{oPiUdZ zIw`~Al(l}p@DG2^uN2E@d`o`1RL^m2Ze5{fTo)|a&OOPmp0CU8CCRb&m{mVxA84%X zXYwmXXYk*K{s`)qm+)Ifs_Uce5`!3#-r?9_Z_hknagYG%T~%6i zW!Y$sDlz{6Xr`CNd$aN%kZZ<1r27~4Gx&=wmX7*&h%RNd)AV^7ST5v3A`!L&0O#e( zmd9Q0(;2vKmV?QM^w{89U1{5ycfb4diU#8XFq*tJDeAY= zT_b;xG6>-3iiI0$Y^BVse9!U2;ne!P?czNl0lSS#$e`oRQP1Wp*vs)=%iNaF@IHGt z%l@_d*nCUzK6I8zVRwc_DBzW4VaPuD=xg4xdY>knS}{bQJbPG>z;6CjSQ#@&n?vBX z*ZGv5qOBqs9i$n#BWo39=j-Zys?yZPq^y6gcDi4JZuO`_+r{&k+0noyat|3jhw`gY zZ5XJdeApx!$?4*?RJIlqoIEzZNAx=$Gd6N-zgS?p-w)4X>$-xzqh>N~it7IuGh zh=+z?#O{yKp2Ut1twWo+q-iG;o|{mP;u&H*iBPfwmIFP9r>=cPOpB(P+~jYfmI)3{ zPJ2?=-{My-cuLdzL&R2y>Pkl^n*RVr=lSBZsXj=#7YKVvD0e+(DC3^>?n-W0&fpu= z4h?yWM0=J^*=&CKc*5t&vH3(wB>8`E&w(H#s69IR*U-^gpCeu9c@?$ZgQaTHYI=u; z^!vA*JVr?4^2q=UhEav%7|;Izs=E{;J+wT>Cr#_A>-tZLv<+WKjOq6tObVekMn~@O zI(`+*=*|?*i>7su1sh!ayMnW?`o!t!)2=gJDprN+J0x?)pEX`uD(#gukJ)Qk z_>JHdJ|gkx(zP!kW@|)+Qr3Sc$@xI&P81Mud!M26=Zg00m8}n67(c2@nLEjMJWt`D z?AM}rd&GB<>kAIByXO}7Y=F857=|jm=hvoA(kqf!SjDUCcf%h#&~7?@r{10!_)Fo) z?L0f9PX7RBhUKHYyuC^ zP4I)^cYt-z_(gm<0oHDG{f%{baV)ZVAnguiea*Y&ZJ~N&IO$tb_L6?mqu9!h+GP+iaT3-6T-mHJy@jt@9+4J^YoatUKxL=BY5MnA$nG+avn-}N(X#}){aCYaO z_!Yx0Wvuk_>+?N2Z`(dvO8$L5N0<1Y$KEgaldRcWYxfXaX;H{wwbHB=ZS5>lLO$ea zz!?jYa!v+GtXz|ea5|%hbf&$d{7U{H_&?&UI&4@>-cXE6`;dRG)Fc8)>A^IqRg9Os zjjQ2jP5Z3l{5j!GQ&`oc(_^`nS!WRLE6Mq>oS)9MsU;ne&q|w}`JJqL^M1|VAJVkT zYt3iIvI~QsHrdo7Cnx51T;)g^802@QD7d8MWL-N{ZAR@Jr2ha4yeladkxug$Bt?Q< zi6a4wXc|bSVnmL50uDBAluG zYuKY+6<4~?p09?hhkp7qqLUBh%%FqDbAk*L6uJ$>fW2?}0*nBq&!E(x_)69rC7$*U+N4{8O9-^&I#!{x0b;hT>238GzGjS!bj5NsdJ%fu z{payRtQKErX(j|AbYhq>jP=@i9FDwK(m|geG<>b`3&r==7mIIiI7Rar+9s0<6aaU( zbLv1K*2;XRE2ie`SMW#0%Y7*&kHj|(HMFg=SkxvM0CB>e4n|LZdbn1-qGMMJyqdZb z;*Ni}qwDr2-@^BLIJc1li+S8G@qh|SjlgW@1Y?8Ny-F|L0U1B$!1wQS=kYX}sd`pO z@Xv&IIu*BxHBS!7a#qsfMv^OAhuCeU+(fYh!2pfeC$J#r70-%uf=-(~EDEPmO;=jK zx&Hu2`Xfp3?}Ri6cR_Pz*+qxVl0b~H@^C#)595k|@@h)0e~(k>DN~_^O;c7hZYM@z zsce>en@GdN_ctu?Di&2J2pdYUCmB*R^5>;gIgy1|2H!&)Rqz*vEc_|1>pESNF!HY% zt?o%NWuJeT8F?e*!m{`4)YYjeK2~KY`zZ6rp`O1Ib>9{@g8VOGD2_`lDrv7}l&LoI zh)ZvOl<~?dF$zD~;)u#L;O50uO088+Cp+TbgZ3XEyixWD?k_AYt$xoYud44@($dBS z0WISoov!2(>;OH1>saD(E)h_t@jvS9>cL>t+pSmOJfHTU{jBuA1L=1^0Dos2bhZAL-!IIOu*n3EyxGrV&TEnX0JCdHh!+@;hnMc>NOPqPj1&{{RE= zXT$SDV{VOmt7;7;)a+TwU|osto~ONYYbSTBJ#`fb+Bzd8^-{ALEZ50JDt8VEAmo24 z(IcLulX`A_H*MoPuMqf3%fvcWirzKNs>N`jcWsppSx2YL0r$YKEw5uY2_D>PdwObr zaq4*s|!-JK{kq+}>E+MB9Ot$`Ui~YtO4)v(%-Bj5?mzW8u54 zCMJdAU;qb$)YluG&h-?QhBm!w%8plmBR`#7Wpg=bakscq#Ex_8TO%nx=OL|5k%lbW zaazYyo_Zc_;!DV-XGg(bLO8CvYpOi@?)o##b>Hmta#jez+&TXmc)#!9+@wsh2W0dh!ti@$UVvm=9jIjO& zhfmJLy^>1ngQQIL3Lwt3vZd%V&3yR^x`q8;*GgzxAbS1@1|4 z#GCWWpaZw@fAzCSOpean8>yy`=17#V1mkuAr(#^X6HTVI&HcTB1-y_9qz>S8!205* zQnsw9tLVC#ejtwS&fP67&ngCgaon2o<1Tr*NcOpXjWr0E$*A6Gu?4u!Tx1VHRMMN! zBX~zs_rF)Y)pb``9x3Mi#IjsVAZ5l$!r=Nh~GtF-0L)gCkvAUcBj7j6C(BN02gT_iJ!M)EP9e{;KswJ`K_n#O1 zRpA0GuOWb4LKp0gB4a#Y<0MLYjkrDfRZkeJQa-ANUP<*^MVEeDU3WN2`?L6)LWr zwwLC8)u8^)ehZc4)pbi4C6&Np&mKS|bAet2W|r*wwxuM0l2sr&%HbnJ&r}P)%9}j8%9JW?_ zyPJ!DnNXul@)IE*RSV z^K$NZJ(q{Ayg{ojp7zUte92i?X(|^3ob~tU2jDB3aJJ`6DqU#KpH}c+h5rDvzq6#$ z>@Jl_c;}tB6ON!0$;YqhS?Y^+cRcUKKL`AO2Y)oWd=?LBG|m<=8sT$}b{7PC<#_4d zwC8cLi>1wf>7OY4bNFK~!+#Om-0AlQ>dJCd1{;xAIKaUm4o@9DD5#W|F}@n7FSz&a za2h&Y*~=!Wr)DCz0v+sw05Qh|_Z{mf=+3&4jNxOq_<8Wd;t$84h(p5K9KKbxoB5Z2 zdW6o)6{WBsZ~3`rZZ@w{Na@sDl&edYJDkykF!cH7vHETC1INAq{fYhoEvJRyj$aX8 zFWIdA(GU||-4(|9F~$%8eJ~UX){Yu9)2Tg|k8f)HtJ1(!}epqS?scZU` z*NJ>peD~U}vpe10Pcstk%yM&{oSvS4mB%?sqvmJ1LYyeUQ;$Hlv(w3N#d5q1FIvq- zv!YXs7N%~sGK(-%faR29fC%gL>x$kG(^Jl?h;o&dhZl4A@w+|h+A~D@7Oi`rYnFP} zocnHUCrg;W-b0W-9AojRapz7isaNIIAFdt)_@`^)-vMbF-G$1$S5~O`-JBACGlT9k zkHWqi6B$vc>Ar{QIeg)Xp&GI3zv0JR>&bHJ%^*8_{{Tu+lW5X#S*qFrgeQ(8ASB%Sl5MmDi_OC{k9Y=G=uZ(io<*r`hRxdLg9@X0jrJ_8_ zlW%d>HnGhj`LDG(W9xzbHL^!6n>wv3)EUG1M{q*SbA#pfPzSFcon6eIV+#E?NYg$` zmMauzC-M4!^{P!{*ko`3qG`j2VSqr%W8Q(>eak}(nU8XyTrNjS1hqAPbo*KDbY#7Z z4>sy$jZ1U`?_~P{$v)It$c3!ieF;20r7pKE#LXaBkgBo%CtT#?>Us7RjcSUNZgfzh z>d%zzY&9)DDFvvI2;(@)o&n8yubNkr-1efQO(;iXPpvkdEZX!=xWOO;oYpsYvAvR4 zJnu@5OWVosO66I$DfaJwT~hZ_M>6-M+51iL8{_Vi4bil^w7U|JL}8g(Bt;oG=Q$u} zKDg0h;f1Qvd7nXes%5AIyT zPTZV@7|83}rC~oLbw(G}yB*b+jkNC(U4)BO7dJNv81hl}iG%WF+e^O76)DjhuDb8zVU9KTTn=gza{Fp11ouSonv* z9t5}0G<$!xL#8c%%-`tgmy|+2UHAtiyB>S~bOTm668Ka0e(;C( zO`-nKp52z?Rc479?r-H*l|W(7$b6`P&fFn5$*H3WSw(2x{{Yvat}3i9=JkwrUElmU z@>lJxrfZ%g@wS_P;%^dLm(#6YcC?b<$q{F4kr)g9w2(o691b&{MQe?m8jLAv829RP z)VxtBB19My3gvgBIJ@-y}8p)_$v6k!yg3Z&$! z4ujj*>S~&QGmF&bu5HOZ!xNS#x2;P?sgzYoC6_+6D7T^X$LzcDllucslfZh#$%Jlc zY+6HwaCs;R?m5SxbE?K_N7a9I8mD5WLDReli ze&2ekFaWoo$_@JoM;48ue)4TKJC(6PhV$9ZnAWSky12FC?TcbF>=tBT6vY z9!*Nqsqr&gLSd*QK+K`gWM{an>PMGS=}Vv8Wjpwca}|(n8RH_ghQ<{)C(}bc$VEZ( zE;2@cc8~8?r!=%zJx5K`QFPgLNftYJj7C_z#@Y&~$3KxjR{B*v5rkdkW6m1R<5JYk z#Ia4~1G$I<9#2oH&rY=oGk#=?T9gLXM2VOd#s~lazQgI$>S?uLi@8EQE$$|cHw?aK z%mz6N>-hqI3U(hcdtbVlZLO^BV`Pa_$pjyNynl?0d+i^Aq}y*n#aU{0J{i#)LGXl{ zmB}k5=*(Fhstk<&CqI>WxVoIvRM$h-%jojcb*0yDLzI%vWoh2o*vFH>Jw`gzb6<0A zU0sa0pHsVGWG0Zt%n8eUhM&!BPnWBd1@NBZ4u_eI_Da&8ws0@R0VfZZBWR)%XwK{{R+v zu<6&UCB)WOO7`oAAltH|5S)%vBZWVA)~1}3X{Vu8lS!tvI=_p*25xj~R+bwno&^EZ zd$#E}05g&?)D;J&cs~6un%x{xuI`h6J`nhsX{JZ2PxenX-UyhD@cvAt)x*ivS7)yLHTY%Wsk{~8uM_Fl7uMHrBYmb2eA9O*lw^UQ-QW@rL50cZ zuM?9^scq2hv}MZUzf+Px~JRk zbd*@F;}BSBzy%TH3_F3s_B(!=Cl##a%`4dFrxyrvr>|CX8i+9e0Hj@iwq$dZP%u8Y zsBGC=WMN;n6UhXIZe%`#u>Pi^MZu6-!H`|D7jSR*2%;**ITqd%A|vI4g~|YWH*9`i zrD)aBk2RTo4;%QF(-Fz2G{Xb^XC+V8xhi3)&sL7=c&gNuqam{R*H^rMAlx`CFfed4 z{uL3z(obVaCh|y* zJ(~eM1p!Yu2Mv>sp8Qg>+{amL^f;^As{wY_`(=%SvrjmWX;6D8IpmD|$ME%~rp3Lk zh-1;$Qk(4vlPqjRcIILR#RsVXV4P!*Q%Oeqj#FuA^Cs2pCbgN!+_NfxtfL`Ra87&m zr7PTY$G3R%K=?g>`&al^Oz};R#Mpc(;=M8j zdx)fs=Y-GvOvO|f!EBJ=o`a6n>a1rX`n=-#W3xO3m$^&pROFncy7Nb|e#lyl?}x8$ zv>jIN#!J|wh>NRPiMIqU9{}=0A_mAm$J?cK;aqAiRk7!05UD})y&qHE{yF%f%J;*! z8gj(fR-)T~d&y#pGO7?tb@N|vb~C=0>^7c(hM+i z&Cs#lNjw61>t20WDXTNsrBTv*9=Uz-p37Fy?b`i+e64585H+kJO zn$wm<8nhNh8U1_jZ$1_YJXO`EzZB8{Q2cXP%__zOE%F1$x2;sQCLZf3+gQyY+>66}qa%a()FpFC zO(Szb@VUCZNbe*_qGN_;{u~k0IL}_yq+xfdg-Y6cyPXZzgQEin*`BKTLM(O(eBudc6^)70gpi*0y*5 z0A_gOJN&X+X#W6!latBkAXQyoLL6LGECLxc$VU6Ln$)G56t_|13rL%0uBW| zMC{9K@2JTXR);Gjg;h&(z;Z{fGfAct`ekwb$owj8Wa)+$3x?{{XNjm8z7<0wpiJ z23_DB@)#421$_gc`FW~4A0a$qoV}eW-FGQk={LR)@m>6SAC4__qiHICYM*VHcbiC6 z938+CIyT&6oCDIhsMMTg%CzkJ9;PCVInw89_FAszpZJ^O$BYp?tvgP?f(Y&;M!fqJ zk=Wd@z>$%0l{o~39CLy@*R3kmIds+aXN5}(NlMabC#px5YC86z;$)f$?LN+z8;~^Q zL}hSG6xs$ljP^Mv*0554ZR&N(5sFsV^gPP*L%O)V7OK|?3j#)172Vla9OM50uUWHo zYiN3B!as+a=ZkgCF2XG~R@3e7VrzmF6A5AgW85eiIIc`(PiGEDyGmLwFF%p#e=+??OEfU58;))r^D}sx|2cVLO$9OQtOj{)f}I^N$0N_u8iLW zgN-O*X+Z8@!J*~0v&x<}V-|KKSuBi$McHl`D z3P-r@UpYr6g&FfxdUj{rVtBpcX!|@&EiUV4@-jRPtyyW78jaNMq2`njS+D>DraR}K z{{UTmJ{$LR?9a@9vl~~$IYsDCdEE^{w2y93IbIjLYp} z<57sAX(WXFu_L}%pTn@vC;V!zH5)OuQpanMsH7@<@ApUN>qWt*BNp!IZsf@=?ed$Uxu9|h&aPrf#FC+}^4IL$k?u$)uTm)BLixplOL zGOaNP0xn#W)1IcC*`Fecx!h^r47F<&icLb zyb#;DSqLJ3NkWzEt=GRJuUgg@YWo;YDl)eBI88`RX>`eZERsH02Vwj)Uk6V#4%hOrV8QrvFc7nFn>O2 zZ@AP|?uXcFl0ge6m?4c9b26M49*5hSY1t7ac3#te{8>6O`3}w_jH-OwLi^h>?W0sQUOKA~gn5hJbImyB4S>DFHyxShf z@UA;8KGrQ>Z80AGW09?1N8@NlCH=5Z9{&JATp0IKD#_^2Qz?xqle>-NzpudMZ`$Wm zzLxiYQF-E;;fnysSdVXWT$a+v^qcC=zrr!S%sx+={#1X%xGoMUv|`HZwie%lb1 zBr*AkrybJ2PatyCAcylLqU{a>e- zn0q-=YNch(K9T6W-=C55r-XbuV!d2VbxId| zo)!}X>ra+Db@Dw%-HxWPct67$^~6y%r=P3eOfkEucYN}TwDk8G70pFB$}U>UUxC+u zUh}6n2WUf2R(rqf>*D$RdGMda{v5K@&CFUptkZ-ssRq+|Kv#lPh6;G>{?+Q>v2v$Y ztRCxC=y*A zYsAaz)}uD}i|BoJZ-T+%@amks*~ezTUg-H}Sc-4AG!DSAI0vq4>nOD~bbeutjOfdf zW|jW{hV?5+Q%^CtF@d>2+}p^>7#;n)S96O_$Be2bxr!24&uf!E1$a3<>1@WOeNjEF z!)*@kRS6lv`J2&4p!cgxi7S(TPb9OG4g;Wks^jG!fa^x!l8Ba;Hxa{gdeE^*h9qJ> z;69(ArDnAol5HeqSZP|WwKv)Hs~N7Ge9R*m$Jf%KCoK`Ir5I}_box)i?-OcLFPgEy zr|)J!<$j@aLyKFP%Cu6t)b@Xc-v)d;;i*T6{9fisfIni6WWoXlT4E1>-r5Egcm$l2 zfr`SWDm2yOzjygA=Uog8@h|t9ujO0YyL}htH{v&ntZYTa#k!koZ}m2)&6k@Tmm{t@ z&u(xy6*zm!E1li$%f>jEV9Ci_p0`sPUQl)%>NSyyRt z$&7->1C!f|hEjIa&iie(y2K$z-h`A^`9|V;k@-|JM2zdpqRL~L*p_|S1YjCP>d3W8 z#ETpeF)mOR!*B*MkL&d`HYh7@SGBkT6^yf~!xqQ!d;b6`K-Qywp7vA%Z!x(T3QtUT z`kF6c+WH+|!ViYpx5b|tTWD6YCB3A3u5YfTASJ!De>9RYJ%At5hbYshD%Cz1{ymcO zWXaBTA%>!_IlC^)yM9S(&u8)GtKpjq=FofvVkOcviYUF#za30ueH4r-(AsXONr(TMZ0BXR_T@OKs`z6 zk?U882YNBDE_qgb}F^R8{#Zsa(0k`uWU0rU3GdJe}lo3bYEa?tl*ho1^A z^&2(R@8%Jdj7R2d&Og~jIQnE(JiOYS4t$>KM?dk0<2Q$YeiCVVo`>PtZ6wy*v=)}| zOk|x7FlCVTW7E+_YnG*VQ94v~U0-GE-1P9dbexrZLceJDex1C}f-i53+MUJjsVnMw z-laP`LlbUyk&ZwleR>M)gk0jIOI8F=TEKWO}j5_5dFBt{wBgZu;oFm;4hfO65xp7o>HUoS*2wGfVb8 z@!EKE#hR~&F0LLp^?Nt+h-_uYIQ&Q$_Z3sLD@Lz>N2B@dLQb|8bXMxpUoHOt1L=GF z%Uwp|6tlCtmg-IIcQBEhHbw^g=Pi+(065~iBHT1Q*+o>lXA|NN57?boN$~B27L(mw zT8SS$qb)t)lDzPGXP{;99aW*#ef50vDR zJ7?FL@g+tzUEb%{Q^!@qCm6qXv7_*7!g6@i#;K@Zf;8PIi;I~yf(w5F4Dd<8{Ik$k zZXOCPc1MqnuPTYRyF1?;-uQ1zYr${jT-+{yA|lcM0CpT4k-UtPo}?a5Z~)}>N^4Wh zj2p7(d4zg3&Zh!unu7l7Le4YB06kA&IN(tTU2`((RONh;+{#M{FXf))K#JPk45Y9> zcQ{ae&-6Z&DDz#egXUE1y0fwH4~AgXqnh^V%a%~6iOw^?&!Fj_%e`GRnr)cZoTAcy zLp(=piq}?5%WE9O{H#XNyyRrBupdvxl-`U~uXOi1ZwdGpQ1GO!cc$tV(%WC#ui7J7 z8z@1?Zn@{7^&XYyOBEQe-JYy4Gpg-Zq3C)}vHhI_K^~h0zTcKL^R|a?@3M}k9Q%Jf zD%F(qXJs5LDPGIw%04pJwG9%{Ba-ib&y@jnRsb(KJmlvYJt#>{tD*DCl9itO`JN+x zb*O8)hx%mAEYgt6kPZhY1%HKmqyDqL)a zs$G>ENSX+@9l$UFc<YmYLTZk`!zmoxQyeg|etNw;4cC#!ss@=0rNSNR=Z zg1#7O9})Beb);X)_qNZAh_;3-Paw9@>N|GnN-$E2W|eEs5@`2dg?|ixZs5@e+hAL1 z=AEI~t`y{qFjgRK4aXnjM4u`$j9jI5dq0N08eK(sXu6Evd&XT02(Sn^Amn2JbUbs- zaZ2r;jW&|h@xR+|<8F`eFT+XUO%Cc7@eZj0NRlS`pi}qdVc6$8MR3*U#a8;QC!+YD zZ!cDR*cx>3cz^8-O49a!ihpVOc_Z^K#r$RQ16X@aK3S!jb}uZ2&jY(VpXzJYjvj^@ z7i(k8mOC4m)pY2)U$&onJ@es@!i^ikD3`NFZ*?LFn&sC!I}pBu*SYns97ZNpowi5N zWw~8E7ry=J_wDF%9wqpf7?3A{JSS_SMX&^%LZ)rmIUs?7?bMHdTGA9E-Riz?o`=s) ztm3Uja{4V#Ex&^H>7~5Ao?D6MC7tAQ%ujri$u-^2c5y0JMLh#t)I2M%*!YJ`l*e^r zI?Wl+aBAv7RfCH#r%}+Trn(0h*NnA(-ch#(VNeWVxi?VoRyeyqPi;_HN=-1h0J!Av9z;H;yBSp zOEEYAel>AM6(@7(%@4rW9tZF|R(AozfG4?(ow+}p0deyl7q_oUhb(nGsZ{op z_jWw@RkLfm$YNwMTEsvR#oT`rX)|mi9X1iY88!gfMjez zk~{Ozd-Gj9$=O`N$CWuGQ}NBkhJ)d0^m{Omaj0J^`P)Dy-UZvnItFri?g!S2lI4Sn z>i+-)Dp2QtsHFNY%%$K>Vc;U&w}9Uu#D!G>?m+52yYX2FxWKP6rXKR$d1^8XXYMC++~5u?TcxqfXDwcb zL8M8`8n36hL3Y|H-YbU+o(yr)Gk#aCQq5saMMV{@ zlW4fbC#OTsHBBXAvHNVyvRq3uvj#lLD{@I6-5Dp}9+a(QH741Qdlb@HL3pznWAfYP ze^qin5$GvPYl;uvXt`rJyoE%il)wnyKve{P<0R+l*k`pI*W7Ln`WGZ)ZwZ~t2+nYT z6(@m%fyX~nOP>0V*;{j%)Ndk|Q*kA+6O8Tv=jrstOMOjZt)f1=@W+C6EB^q6_HxG< z_p)6}Z{}eza8&b*`(Sjcx{9(fcbx9er|o<_r;CS{J0uOcN`RsFb_}5LpMTD|>Q4F{ zbm7W*_w7CLtHYnO$AT{WLveF%y0y$KY;8=S$uy*6fu1_%yzFIZ^Q=A}_>%ts$yay! z9@bNWr&&B!FG>*K`_H6TcF)GI6ZoHh#Qy*oynQaQtzEs&qpMtU&cuWS^d5i;^)Q%P zcnS)fdT#o++~Lfz^|O3Zn^s#!JtDd#`u9GA@b;6S_zS}AWvANtfF^Dw7~M3OxGXh14ILHVUotNYc-Bd^#k2xkTtHMPY$Ae3P%--V6upw=Dj1i4?JSQi z)NK5{$qwMDz$E0>l;_o+U3@x=v`i^OfW)U_y(^+D^W_^HmE>V$BNf>fq2^VNrJXrI zUiqal($LwB5h5&j!2N48rsgK8cvz55YT}G)Pr2`(ve&|^8>@rk&lNK)34w0{W6j!6 z-shFiuUumtYUM6X7sU2C9DS{S+tMp{`X06M5n%qwxV^Kox0WkX2||q>ykIsNotGQJ zaoh%OK5TKimu*f530)~&Bj#Tg>rrywW$P$86&4T|tpy`ueON2~-Mov0spdO_56w0EubTrU(kWm z(025u{>n2^cIS~ElHzoKyVWnImS})1^FB*l&7NJm?dTMJJ?eJY9=n}}i+pUYZZ&J0 zYjbU7gBk%>UUe5$@klwfO~<| z^VITvDa5v{y$@e-Ei`K@ONj&9+9IQbA24sc$}`lGM?>jU-Hfb%-iY#_8u)_d_U&P} zju=ctfT+04Iv`)10|{25TW_poR$Y221x2V)1I0c)7Dq+ zE|%ySm_Z(Pm14&OAoS0#)AOi$n_HC>^{H+nk1?kvLFT-zg*Y66?ewOQ_tCO}lf$<1 z+cctOK`OMRF#Dr_#z+gtIrr^JJ#`yRrjho~h4kGgU-*CE{ZcJmZC6sZPqf=Lu#3&L zRv`?Lh9OjiQUepz9E$Vt5>C5mo}LCWSYB5X>z{;oUJOM|FG!Z!-ZF>Hk{~1Vdxk~H z$n+wYG8Zdbo#vsdX_oevchTI8+QiJVpSpw&zwG*&PnQI9G)@~k|nRrZf$dtZ#BODz;e`&4Ztz zT9)@Yx6-vMws@>`+q;H50Tc}6{V*%O3QY0qa>uEf{{RfUeSZ7xd>gB_;!1;T!H6Em zn)GQ=sZo2Y@kfP<#8IOC_xL~ZFebFW(5_9UqhmFHwCZxv%B4v9iYn5bC(BV;nb5CJ zw0Y@D>&Rk7h#G=Fd--*Ub?_=7?_rY4(kGmN8FoZi z=Ofdl7fW%g%WY1}!nUyZdd@q`+cz`0B^G35R3rF~anN=3=}s**p`76>`^o*pvR_50 z%Psxv#}_Oz7nhMoMbBZ!IO|oiB2v3L=*g@gFE+HH-lQsLP1zJJTNgN%Zbv~R7kxJc$ot@ch;m3mQt>ymSyOG7p z5igqHl|X*rBOOn1$;TCn{v`S7ra$G_O`R#Nf(yV zr`h4oGNF3#Iu1WP)@|QYXhz8+iM6`A1+Ep>=@(k!M}MbW~EBqJd}Je~o_?O9fT#L~jX z^H*OD8qNVJW9BFxa#tp^or3Wd~y46 zL8bWOYhNB{`hB`xS~uCQJgC4o3QknMI*@bt8uT)ZWU9Gg=JefpcRZ~7Dp*)U6%F6J zFFw!Y^uL+&9+%~Y#&s=2keVS^@r>>n+^x(`1$V~*La;WLhL1y&_8Itt@taAu@usyBX!=f|OtuF1 z<&yIU8`3g2G85B`5HrZdDMED@Dwi*xUy>@8B83O-Dn-tJ&*54xoBa{)o;dx1ynEn% z0ks`3Uky4SWw&^Qan0xr!OW@VZOG0hwDz=MLg_04#+)TvLEt2BLfDO0OY+9stIuAfG{ zjEj9L)DxpIfFp^U2-zU6eLFGr!1S+w3s!Po{-?lZczQ6O?v;%O)a^7oDXwl( zCze85H4ar>x#~KV2Lyxk_Z?fFPTC`#)7u0}Ap8B%&~>IY0!>pd@jp*B>tYf}{Hf@q|_yAeSU$q>k_ zco^Z2JBEESPC2U5CQZtt)ZFkdhF0d*O-kz6q_+{YtLG`lmyDLjsQ>^yGHE+*!p*)| z>~Y>XmMQKH>tEGxayEmkDR93f&!JY?i_#cK+2O7CNm zz9OS`j_1`HM}c&|h1xa!_rvWEPZ#i7NsG&WjmiX@IU7|+CmliQ_2-tpB65pVtdZM; z!P8Stz1w|{%1<49Sn+p{zAVq;U1H^$_8X>-H9vK5akn0vRpIc_r-yfUa@Di95s#fr zWMfTQFwrmTx!ziMlJsmEiWvOE^7^^4L7e9dDR<5nxhUV$w zZ?pj!api_A0q1BZ2cYZFR`hBmbaG;-xms2>Tf>@`j-T3^WC)@n(%dl0l{w^<838~C z7{}9^*PEH@b8@&X4iCgPdasBso=BsOV<*cBPSA`<9+7O|IFzlDd( zbLHSe0rq)HgZ{{B=fzi*3VhVnPLZZ8pOGd4_T_1F`?0g^bM^Sxy#gXdH zPVHJ0yO(OMLBnpnN|!z( z)hy#{Z9Sv5X%}y+DC2?HeR|Vs;F6A~P4LG}jrC{NHH(CnRRk%2I4lbc5;M@_r|DYL zNovk|?aIk)cHSwx)7s_>O*&+Ia{%1&{NOKf!N4a3b^K~2HGKz84J}1q70Kk>*@lui z9?76akOtaZ5J~C4QGtQqwME>Xro4&~R@~t=n9i4BD@tUR?&#o1-6K{fCq0HSk9xb= z5|=lj%UD`KsV3Ba1~3cDB#(tv2LO;c{{ZWpQ+A3Qa+5SP>xc0Mx2I^jbe7h(3o4RQ zFurd&EXM?sf%tT!pHayu#rHnJ(EI^);!O@StZP8p0(fkGBn@_RWui9>uwbjMMK|F+iBbFeXmLs=8$T`JlR>spoV@(XKQM|Wv}2ZiG&jFJX%)C^adikxZElTXn1 z@HA&yydiG7{-@$*mo>h<4nG>;lhpc1!pl<%#vA<>e=2;vxNWNc0MdYqX`L0-yjS*& zB~9w;R|niw8#v!n%=`o4okPQZGB>hHAhnK1D#YXE^sc&+RUo^bMjD*3^`yEUbA998 za`B0YqktaZWxq3B5W&)p`kpOZ*AYL5Ll$f6{X$TG_m^_b&+)M%@~(v#!F#CUbE#fe zsP1%H9)Q=ftdgc8&jZ%D>sRGgN2fy#&hGX*+YKEh+X^5EgBSyf^QTd*Pg)ccRyWf| zf)x9sIIJB;&ZS8tRlKx_As<5wG4WT%R+>Jg zcc;UlG+NuXE?QMp@(CHhP&1Q|bJn`)xl~tY1z19pfU-lNu<^AyrsA4h(F%DMty_*3H5mdBP>@co;jr#n?{a_8J* z70HQQ)oI7gzquWFDRR-RFC@P9bsiSbt#pYaj^Yn0JAhd6z_=EJXJ1~CQil-gjzcbj%BCz;> zmsW1dH^1C`x2S6`s_K$z5hFA&EYBLLJtUC09^Fa$R@E0Zsjc)c2`5T2uJnzi^Sd)O zo2lMLnpub$z*EKtq3!;0U8~(zJV`%kCnJ-dcb;buC=Z;I$v)LWv2#w*eCP9S5bbXG zC!gwS;;v;mGp3ftJ9tvw&e+{fssTiQ8&yU*XKt7jNpv%d>dmHxJu=n4)p!vjBkd+F zqs(p!q-*`vz~+-lZa80}C=E(gaX!Rmm*znsJD6bMkGDTwK9rkk%^JojrkS6v*-5KO zYY?~yh=j=Gw*d0Q`VKf9YLhW;+9R6r745jRO(xn=dD2m7d4fzYcV5YX1PmmO5UQ z4yQG)ny8S;6l}z?<)8hN&r(ND^}(x_r>NXv3&-(3OBith>yQ zy@_HOk0j?L`gW|UFKF6s(MHsN8>Ewpyyda^;ro96(_>q_pWzpT=2f?a&-R1Hay^qh zNj*(*VCcML{k;ANzjb-{J*;(gms0w@Eox1B&$4|FmVO&)(Z=HHZmvNCwky)FK8Ge> zhqC5pw%h6!kwp|p{{ZU1$2~p2op5ry-1k(|(Vpk~I{wWte$jDj;P|_L`w28LYIgmA zT=~9tnf}^s$CvM%*UE7>6FwYtQ>D-CFV@zzyq|L%O?c2rrE_~&{g0o*!X*Cyg@^W( zpLhW2do}<^Pu`ze`o1rR`mCrw;(JbS?%LM%zUScCKaU^Ua-4pl%gWOJCHKGg7h}YJ zFZ>I+vWCXiKNppX?7y2jw#y7c?c+Q9=DxeaUK?H|JX>`=kFezF&&|)x=Nns>&i6li Z@dF7i6pkL!_MX?9r!Bd8eBJMJ|Jj2on$7?K diff --git a/src/assets/images/faces/warrior-woman-3.jpg b/src/assets/images/faces/warrior-woman-3.jpg index 2eb6d5c26f1a8e9c3a157834ca48ed6a43d02510..b191ee6d7238d7f27916d2747f92c328fb54c73e 100755 GIT binary patch delta 9095 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 diff --git a/src/assets/images/faces/wizard-man-1.jpg b/src/assets/images/faces/wizard-man-1.jpg index 11a39d278c8d0085fbea3e09ed3b8194d36190f1..567677830712731b0a27af61eb33cd85acaf28aa 100755 GIT binary patch delta 4297 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 U(2mJKhoOw4$5_=uH-7s60aPZu%>V!Z delta 34920 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 diff --git a/src/assets/images/faces/wizard-woman-3.jpg b/src/assets/images/faces/wizard-woman-3.jpg index 2f21f7a78174f9548de8e7270ea2fc88a34fc69d..fa3675effb94a9bc674255f195bdbd2e9f24307d 100755 GIT binary patch delta 5524 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 delta 17135 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 From a91e5a3067cb631b780efa4bb60d4e4a244ef363 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 16:48:07 -0400 Subject: [PATCH 26/70] build fixes --- .../ClassOptions/ClassOptions.tsx | 3 +-- .../ClassOptions/definitions.ts | 9 +++---- .../CustomClassStartingSpells.tsx | 2 +- .../StartingSpells/definitions.ts | 11 +++----- .../CharacterClass/definitions.ts | 7 +++--- src/modals/LevelUpModal.tsx | 25 ++++++------------- .../CharacterCreator/CharacterCreator.tsx | 6 ++--- 7 files changed, 23 insertions(+), 40 deletions(-) diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx index 5c644c8f..064beaf4 100755 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx +++ b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx @@ -4,8 +4,7 @@ import { ClassOptionsProps } from "./definitions"; import DescriptionBubble from "../../DescriptionBubble/DescriptionBubble"; import { getClassType, getDisabledClasses } from "../../../../support/helpers"; import spellsData from "../../../../data/spells.json"; -import { Spell } from "../../../definitions"; -import { ClassNames, RaceNames } from "../../../../data/definitions"; +import { ClassNames, RaceNames, Spell } from "../../../../data/definitions"; import classNames from "classnames"; export default function ClassOptions({ diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts b/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts index fbfea724..11a28df0 100755 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts @@ -1,13 +1,10 @@ -import { - CharacterData, - SpellType, - SetCharacterData, -} from "../../../definitions"; +import { Spell } from "../../../../data/definitions"; +import { CharacterData, SetCharacterData } from "../../../definitions"; export type ClassOptionsProps = { characterData: CharacterData; setCharacterData: SetCharacterData; customClassInput: string; setShowCustomClassInput: (showCustomClassInput: boolean) => void; - setSelectedSpell: (spell: SpellType | null) => void; + setSelectedSpell: (spell: Spell | null) => void; }; diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx index 7e67b150..6fdac5e3 100755 --- a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx +++ b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx @@ -1,8 +1,8 @@ import { Checkbox, Typography } from "antd"; import { CustomClassStartingSpellsProps } from "./definitions"; import { CheckboxChangeEvent } from "antd/es/checkbox"; -import { Spell } from "../../../definitions"; import spellsData from "../../../../data/spells.json"; +import { Spell } from "../../../../data/definitions"; export default function CustomClassStartingSpells({ characterData, diff --git a/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts b/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts index 12dee3bc..67cafd66 100755 --- a/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts @@ -1,14 +1,11 @@ -import { - CharacterData, - SetCharacterData, - SpellType, -} from "../../../definitions"; +import { Spell } from "../../../../data/definitions"; +import { CharacterData, SetCharacterData } from "../../../definitions"; export type StartingSpellsProps = { characterData: CharacterData; setCharacterData: SetCharacterData; - selectedSpell: SpellType | null; - setSelectedSpell: (spell: SpellType | null) => void; + selectedSpell: Spell | null; + setSelectedSpell: (spell: Spell | null) => void; setModalName: (modalName: string) => void; setModalDescription: (modalDescription: string) => void; setIsModalOpen: (isModalOpen: boolean) => void; diff --git a/src/components/CharacterCreator/CharacterClass/definitions.ts b/src/components/CharacterCreator/CharacterClass/definitions.ts index d45c11ed..ff5788ef 100755 --- a/src/components/CharacterCreator/CharacterClass/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/definitions.ts @@ -1,10 +1,11 @@ -import { CharacterDataStatePair, SpellType } from "../../definitions"; +import { Spell } from "../../../data/definitions"; +import { CharacterDataStatePair } from "../../definitions"; export interface CharacterClassProps extends CharacterDataStatePair { comboClass: boolean; setComboClass: (comboClass: boolean) => void; checkedClasses: string[]; setCheckedClasses: (checkedClasses: string[]) => void; - selectedSpell: SpellType | null; - setSelectedSpell: (spell: SpellType | null) => void; + selectedSpell: Spell | null; + setSelectedSpell: (spell: Spell | null) => void; } diff --git a/src/modals/LevelUpModal.tsx b/src/modals/LevelUpModal.tsx index 5eede99b..48e247cd 100755 --- a/src/modals/LevelUpModal.tsx +++ b/src/modals/LevelUpModal.tsx @@ -2,7 +2,6 @@ import { Button, Checkbox, Modal, Typography } from "antd"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; import { CheckboxValueType } from "antd/es/checkbox/Group"; import CloseIcon from "../components/CloseIcon/CloseIcon"; -import { Spell } from "../components/definitions"; import { LevelUpModalProps } from "./definitions"; import spellList from "../data/spells.json"; import { getClassType } from "../support/helpers"; @@ -14,8 +13,8 @@ import { useState } from "react"; import { marked } from "marked"; import DescriptionBubble from "../components/CharacterCreator/DescriptionBubble/DescriptionBubble"; import { classes } from "../data/classes"; -import { ClassNames } from "../data/definitions"; -import { SpellLevels } from "../data/definitions"; +import { ClassNames, Spell } from "../data/definitions"; +import classNames from "classnames"; const roller = new DiceRoller(); @@ -45,17 +44,12 @@ export default function LevelUpModal({ switch (classType) { case "standard": filteredSpells = spells.filter( - (spell) => - spell.level[className[0].toLowerCase() as keyof SpellLevels] === - level + (spell) => spell.level[className[0].toLowerCase()] === level ); break; case "combination": filteredSpells = spells.filter((spell) => - className.some( - (cls) => - spell.level[cls.toLowerCase() as keyof SpellLevels] === level - ) + className.some((cls) => spell.level[cls.toLowerCase()] === level) ); break; case "custom": @@ -96,12 +90,8 @@ export default function LevelUpModal({ // If it is a combination class, just use the magic-user level const spellLevel = getClassType(characterData.class) === "combination" - ? spell.level[ - ClassNames.MAGICUSER.toLowerCase() as keyof SpellLevels - ] - : spell.level[ - characterData.class[0].toLowerCase() as keyof SpellLevels - ]; + ? spell.level[ClassNames.MAGICUSER.toLowerCase()] + : spell.level[characterData.class[0].toLowerCase()]; if (spellLevel !== null && !isNaN(spellLevel)) { acc[spellLevel - 1] += 1; } @@ -148,8 +138,7 @@ export default function LevelUpModal({ : characterData.class[0].toLowerCase(); newCheckedSpells = characterData.spells.filter( - (spell) => - spell.level[classNameToCheck as keyof SpellLevels] !== level + (spell) => spell.level[classNameToCheck] !== level ); checkedValues.forEach((value) => { diff --git a/src/pages/CharacterCreator/CharacterCreator.tsx b/src/pages/CharacterCreator/CharacterCreator.tsx index f5e70a74..9781bea6 100755 --- a/src/pages/CharacterCreator/CharacterCreator.tsx +++ b/src/pages/CharacterCreator/CharacterCreator.tsx @@ -1,6 +1,6 @@ import { marked } from "marked"; import { useState } from "react"; -import { CharacterData, SpellType } from "../../components/definitions"; +import { CharacterData } from "../../components/definitions"; import { Button, Divider, Steps, Typography, message } from "antd"; import CharacterAbilities from "../../components/CharacterCreator/CharacterAbilities/CharacterAbilities"; import CharacterRace from "../../components/CharacterCreator/CharacterRace/CharacterRace"; @@ -13,7 +13,7 @@ import { AbilityTypes } from "../../components/CharacterCreator/CharacterAbiliti import { collection, doc, setDoc } from "firebase/firestore"; import { auth, db } from "../../firebase"; import { classes } from "../../data/classes"; -import { ClassNames } from "../../data/definitions"; +import { ClassNames, Spell } from "../../data/definitions"; const abilityDescription = marked( `Roll for your character's Abilities. **You can click the "Roll" buttons or use your own dice and record your scores**. Afterward your character will have a score ranging from 3 to 18 in each of the Abilities below. A bonus (or penalty) Modifier is then associated with each score. Your character's Abilities will begin to determine the options available to them in the next steps as well, so good luck! @@ -108,7 +108,7 @@ export default function CharacterCreator() { const [checkedClasses, setCheckedClasses] = useState([]); const [characterData, setCharacterData] = useState(emptyCharacter); - const [selectedSpell, setSelectedSpell] = useState(null); + const [selectedSpell, setSelectedSpell] = useState(null); const [messageApi, contextHolder] = message.useMessage(); const steps = [ From 31ae50297667cbee6b4ee75ba8c3a27d247f263b Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Fri, 29 Sep 2023 16:48:31 -0400 Subject: [PATCH 27/70] version update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c2419136..04482ffb 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "codex-quest", "title": "codex quest", - "version": "1.15.0.0", + "version": "1.16.0.0", "bfrpgEdition": "4th", "bfrpgRelease": "137", "private": true, From 00fe69cf77ad77cf8514709f9ab8ae0955e5ffab Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sat, 30 Sep 2023 00:37:52 -0400 Subject: [PATCH 28/70] types refactoring --- .../AttackModal/AmmoSelect/definitions.ts | 2 +- .../AttackModal/AttackButtons/definitions.ts | 2 +- src/components/AttackModal/AttackModal.tsx | 9 ++- .../AttackModal/WeaponTypeBoth/definitions.ts | 3 +- .../WeaponTypeMissile/definitions.ts | 3 +- src/components/AttackModal/definitions.ts | 3 +- src/components/CharacterCard/definitions.ts | 2 +- .../CharacterAbilities/definitions.ts | 26 +++--- .../ClassOptions/ClassOptions.tsx | 10 ++- .../ClassOptions/definitions.ts | 7 +- .../CombinationClassOptions/definitions.ts | 7 +- .../CustomClassInput/definitions.ts | 2 +- .../CustomClassStartingSpells.tsx | 4 +- .../CustomClassStartingSpells/definitions.ts | 2 +- .../StartingSpells/definitions.ts | 7 +- .../CharacterClass/definitions.ts | 3 +- .../CustomHitPointsPicker/definitions.ts | 2 +- .../HitPointsRoller/definitions.ts | 2 +- .../CharacterHitPoints/definitions.ts | 2 +- .../CharacterName/AvatarPicker/definitions.ts | 2 +- .../CharacterName/CharacterName.tsx | 2 +- .../CharacterName/definitions.ts | 2 +- .../CharacterRace/RaceOptions/RaceOptions.tsx | 1 - .../CharacterRace/RaceOptions/definitions.ts | 2 +- .../CharacterRace/definitions.ts | 2 +- .../CharacterSheet/Abilities/definitions.ts | 2 +- .../CharacterSheet/AttackBonus/definitions.ts | 2 +- .../BaseStats/ExperiencePoints/definitions.ts | 2 +- .../CharacterSheet/BaseStats/definitions.ts | 2 +- .../CharacterDescription/definitions.ts | 2 +- .../CharacterSheetModals/definitions.ts | 7 +- .../CharacterSpellList/definitions.ts | 2 +- .../EquipmentList/EquipmentList.tsx | 17 ++-- .../ItemDescription/definitions.ts | 2 +- .../EquipmentList/ItemWrapper/definitions.ts | 2 +- .../EquipmentList/definitions.ts | 7 +- .../EquipmentInfo/definitions.ts | 3 +- .../CharacterSheet/HitPoints/definitions.ts | 2 +- .../InitiativeRoller/definitions.ts | 2 +- .../CharacterSheet/MoneyStats/definitions.ts | 2 +- .../SavingThrows/SavingThrows.tsx | 14 ++-- .../SavingThrowsFootnotes/definitions.ts | 2 +- .../SavingThrows/definitions.ts | 19 ++--- .../SpecialsRestrictions/definitions.ts | 2 +- .../WeightStats/WeightStats.tsx | 4 +- .../CharacterSheet/WeightStats/definitions.ts | 2 +- .../EquipmentAccordion/EquipmentAccordion.tsx | 17 ++-- .../EquipmentAccordion/definitions.ts | 3 +- .../EquipmentCheckbox/EquipmentCheckbox.tsx | 2 +- .../EquipmentCheckbox/definitions.ts | 2 +- .../EquipmentInventory/EquipmentInventory.tsx | 19 ++--- .../EquipmentInventory/definitions.ts | 2 +- .../EquipmentRadio/definitions.ts | 2 +- .../EquipmentStore/EquipmentStore.tsx | 4 +- .../EquipmentStore/GoldRoller/definitions.ts | 2 +- src/components/EquipmentStore/definitions.ts | 26 ++---- src/components/definitions.ts | 58 ++++---------- src/data/classes/definitions.ts | 2 +- src/data/definitions.ts | 78 ++++++++++++++++++ src/data/races/definitions.ts | 3 +- src/modals/AddCustomEquipmentModal.tsx | 2 +- src/modals/LevelUpModal.tsx | 7 +- src/modals/definitions.ts | 4 +- .../CharacterCreator/CharacterCreator.tsx | 11 ++- src/pages/CharacterList/CharacterList.tsx | 2 +- src/pages/CharacterSheet/CharacterSheet.tsx | 13 ++- src/support/formatSupport.ts | 9 +-- src/support/helpers.test.ts | 47 ++++------- src/support/helpers.ts | 80 +++++++++---------- 69 files changed, 315 insertions(+), 288 deletions(-) diff --git a/src/components/AttackModal/AmmoSelect/definitions.ts b/src/components/AttackModal/AmmoSelect/definitions.ts index da1569d9..527bfe3c 100755 --- a/src/components/AttackModal/AmmoSelect/definitions.ts +++ b/src/components/AttackModal/AmmoSelect/definitions.ts @@ -1,4 +1,4 @@ -import { EquipmentItem } from "../../EquipmentStore/definitions"; +import { EquipmentItem } from "../../../data/definitions"; export type AmmoSelectProps = { ammo: string[] | undefined; diff --git a/src/components/AttackModal/AttackButtons/definitions.ts b/src/components/AttackModal/AttackButtons/definitions.ts index 4e29343a..23fcb4ac 100755 --- a/src/components/AttackModal/AttackButtons/definitions.ts +++ b/src/components/AttackModal/AttackButtons/definitions.ts @@ -1,4 +1,4 @@ -import { EquipmentItem } from "../../EquipmentStore/definitions"; +import { EquipmentItem } from "../../../data/definitions"; import { AttackType } from "../definitions"; export type AttackButtonsProps = { diff --git a/src/components/AttackModal/AttackModal.tsx b/src/components/AttackModal/AttackModal.tsx index 407f821f..734b4b79 100755 --- a/src/components/AttackModal/AttackModal.tsx +++ b/src/components/AttackModal/AttackModal.tsx @@ -3,14 +3,17 @@ import { useState } from "react"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; import CloseIcon from "../CloseIcon/CloseIcon"; import equipmentItems from "../../data/equipmentItems.json"; -import { EquipmentItem } from "../EquipmentStore/definitions"; import WeaponTypeBoth from "./WeaponTypeBoth/WeaponTypeBoth"; import AttackButtons from "./AttackButtons/AttackButtons"; import WeaponTypeMissile from "./WeaponTypeMissile/WeaponTypeMissile"; -import { CharacterData } from "../definitions"; import { races } from "../../data/races"; import { classes } from "../../data/classes"; -import { ClassNames, RaceNames } from "../../data/definitions"; +import { + CharacterData, + ClassNames, + EquipmentItem, + RaceNames, +} from "../../data/definitions"; import { AttackModalProps, AttackType } from "./definitions"; const roller = new DiceRoller(); diff --git a/src/components/AttackModal/WeaponTypeBoth/definitions.ts b/src/components/AttackModal/WeaponTypeBoth/definitions.ts index ae20faa2..eace844a 100755 --- a/src/components/AttackModal/WeaponTypeBoth/definitions.ts +++ b/src/components/AttackModal/WeaponTypeBoth/definitions.ts @@ -1,7 +1,6 @@ import { RadioChangeEvent } from "antd"; -import { EquipmentItem } from "../../EquipmentStore/definitions"; -import { CharacterData } from "../../definitions"; import { AttackType } from "../definitions"; +import { CharacterData, EquipmentItem } from "../../../data/definitions"; export type WeaponTypeBothProps = { handleSwitchChange: (switchChange: boolean) => void; diff --git a/src/components/AttackModal/WeaponTypeMissile/definitions.ts b/src/components/AttackModal/WeaponTypeMissile/definitions.ts index 1307dbfa..9387b598 100755 --- a/src/components/AttackModal/WeaponTypeMissile/definitions.ts +++ b/src/components/AttackModal/WeaponTypeMissile/definitions.ts @@ -1,7 +1,6 @@ import { RadioChangeEvent } from "antd"; -import { EquipmentItem } from "../../EquipmentStore/definitions"; -import { CharacterData } from "../../definitions"; import { AttackType } from "../definitions"; +import { CharacterData, EquipmentItem } from "../../../data/definitions"; export type WeaponTypeMissileProps = { handleSwitchChange: (switchChange: boolean) => void; diff --git a/src/components/AttackModal/definitions.ts b/src/components/AttackModal/definitions.ts index d8cc60a9..66a656be 100644 --- a/src/components/AttackModal/definitions.ts +++ b/src/components/AttackModal/definitions.ts @@ -1,6 +1,5 @@ +import { CharacterData, EquipmentItem } from "../../data/definitions"; import { ModalProps } from "../../modals/definitions"; -import { EquipmentItem } from "../EquipmentStore/definitions"; -import { CharacterData } from "../definitions"; export type AttackType = "melee" | "missile"; diff --git a/src/components/CharacterCard/definitions.ts b/src/components/CharacterCard/definitions.ts index f129a8a2..301db849 100755 --- a/src/components/CharacterCard/definitions.ts +++ b/src/components/CharacterCard/definitions.ts @@ -1,5 +1,5 @@ import { User } from "firebase/auth"; -import { CharacterData } from "../definitions"; +import { CharacterData } from "../../data/definitions"; export type CharacterCardProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterAbilities/definitions.ts b/src/components/CharacterCreator/CharacterAbilities/definitions.ts index 0d9d15c8..f61263fa 100755 --- a/src/components/CharacterCreator/CharacterAbilities/definitions.ts +++ b/src/components/CharacterCreator/CharacterAbilities/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterDataStatePair } from "../../definitions"; +import { CharacterDataStatePair } from "../../../data/definitions"; export interface CharAbilityScoreStepProps extends CharacterDataStatePair { setComboClass: (comboClass: boolean) => void; @@ -11,16 +11,16 @@ export interface AbilityRecord { score: number; } -export interface AbilityTypes { - strength: number | string; - intelligence: number | string; - wisdom: number | string; - dexterity: number | string; - constitution: number | string; - charisma: number | string; -} +// export interface AbilityTypes { +// strength: number | string; +// intelligence: number | string; +// wisdom: number | string; +// dexterity: number | string; +// constitution: number | string; +// charisma: number | string; +// } -export interface Abilities { - scores: AbilityTypes; - modifiers: AbilityTypes; -} +// export interface Abilities { +// scores: AbilityTypes; +// modifiers: AbilityTypes; +// } diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx index 064beaf4..7db6d999 100755 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx +++ b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx @@ -2,7 +2,7 @@ import { Radio, RadioChangeEvent, Space } from "antd"; import { classes } from "../../../../data/classes"; import { ClassOptionsProps } from "./definitions"; import DescriptionBubble from "../../DescriptionBubble/DescriptionBubble"; -import { getClassType, getDisabledClasses } from "../../../../support/helpers"; +import { getClassType, getEnabledClasses } from "../../../../support/helpers"; import spellsData from "../../../../data/spells.json"; import { ClassNames, RaceNames, Spell } from "../../../../data/definitions"; import classNames from "classnames"; @@ -14,10 +14,11 @@ export default function ClassOptions({ setShowCustomClassInput, setSelectedSpell, }: ClassOptionsProps) { - const disabledClasses = getDisabledClasses( + const enabledClasses = getEnabledClasses( characterData.race as RaceNames, - characterData.abilities + characterData.abilities.scores ); + console.log("enabledClasses", enabledClasses); const baseClasses = [ ClassNames.FIGHTER, ClassNames.CLERIC, @@ -93,7 +94,8 @@ export default function ClassOptions({ key={choice.name} value={choice.name} className={radioClassNames} - disabled={disabledClasses.includes(choice.name as ClassNames)} + // disabled={disabledClasses.includes(choice.name as ClassNames)} + disabled={!enabledClasses.includes(choice.name as ClassNames)} > {choice.name} diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts b/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts index 11a28df0..27399a7f 100755 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts @@ -1,5 +1,8 @@ -import { Spell } from "../../../../data/definitions"; -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { + CharacterData, + SetCharacterData, + Spell, +} from "../../../../data/definitions"; export type ClassOptionsProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts b/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts index 7a9c969c..fefc5dfa 100755 --- a/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts @@ -1,5 +1,8 @@ -import { RaceNames } from "../../../../data/definitions"; -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { + CharacterData, + RaceNames, + SetCharacterData, +} from "../../../../data/definitions"; export type CombinationClassOptionsProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts b/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts index b5eb2f55..2c7dfdea 100755 --- a/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; export type CustomClassInputProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx index 6fdac5e3..c9411852 100755 --- a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx +++ b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx @@ -18,7 +18,7 @@ export default function CustomClassStartingSpells({ setCharacterData({ ...characterData, spells: characterData.spells.filter( - (prevSpell) => prevSpell.name !== spell.name + (prevSpell: Spell) => prevSpell.name !== spell.name ), }); } @@ -33,7 +33,7 @@ export default function CustomClassStartingSpells({ key={spell.name} onChange={(e) => handleCheckboxChange(e, spell)} checked={characterData.spells.some( - (prevSpell) => prevSpell.name === spell.name + (prevSpell: Spell) => prevSpell.name === spell.name )} className="text-shipGray" > diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts index db48af8f..c274ee04 100755 --- a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; export type CustomClassStartingSpellsProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts b/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts index 67cafd66..9549b814 100755 --- a/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts @@ -1,5 +1,8 @@ -import { Spell } from "../../../../data/definitions"; -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { + CharacterData, + SetCharacterData, + Spell, +} from "../../../../data/definitions"; export type StartingSpellsProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterClass/definitions.ts b/src/components/CharacterCreator/CharacterClass/definitions.ts index ff5788ef..33b8c034 100755 --- a/src/components/CharacterCreator/CharacterClass/definitions.ts +++ b/src/components/CharacterCreator/CharacterClass/definitions.ts @@ -1,5 +1,4 @@ -import { Spell } from "../../../data/definitions"; -import { CharacterDataStatePair } from "../../definitions"; +import { CharacterDataStatePair, Spell } from "../../../data/definitions"; export interface CharacterClassProps extends CharacterDataStatePair { comboClass: boolean; diff --git a/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts b/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts index 22f06f01..95c6eb29 100755 --- a/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts +++ b/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; export type CustomHitPointsPickerProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts b/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts index b08c0d3e..bc18d798 100755 --- a/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts +++ b/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; export type HitPointsRollerProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterHitPoints/definitions.ts b/src/components/CharacterCreator/CharacterHitPoints/definitions.ts index ab186922..a3e2dd23 100755 --- a/src/components/CharacterCreator/CharacterHitPoints/definitions.ts +++ b/src/components/CharacterCreator/CharacterHitPoints/definitions.ts @@ -1,3 +1,3 @@ -import { CharacterDataStatePair } from "../../definitions"; +import { CharacterDataStatePair } from "../../../data/definitions"; export interface CharacterHitPointsProps extends CharacterDataStatePair {} diff --git a/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts b/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts index baaad7e6..de91cedb 100755 --- a/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts +++ b/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; export type AvatarPickerProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterName/CharacterName.tsx b/src/components/CharacterCreator/CharacterName/CharacterName.tsx index e50a5deb..d3568bd1 100755 --- a/src/components/CharacterCreator/CharacterName/CharacterName.tsx +++ b/src/components/CharacterCreator/CharacterName/CharacterName.tsx @@ -9,7 +9,7 @@ import { images } from "../../../assets/images/faces/imageAssets"; import { CharacterNameProps } from "./definitions"; import DOMPurify from "dompurify"; import AvatarPicker from "./AvatarPicker/AvatarPicker"; -import { CharacterDataStatePair } from "../../definitions"; +import { CharacterDataStatePair } from "../../../data/definitions"; const StockAvatars = ({ setCharacterData, diff --git a/src/components/CharacterCreator/CharacterName/definitions.ts b/src/components/CharacterCreator/CharacterName/definitions.ts index a79b9963..3ea2a37a 100755 --- a/src/components/CharacterCreator/CharacterName/definitions.ts +++ b/src/components/CharacterCreator/CharacterName/definitions.ts @@ -1,3 +1,3 @@ -import { CharacterDataStatePair } from "../../definitions"; +import { CharacterDataStatePair } from "../../../data/definitions"; export interface CharacterNameProps extends CharacterDataStatePair {} diff --git a/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx b/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx index f25b93b4..5405f4fa 100755 --- a/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx +++ b/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx @@ -15,7 +15,6 @@ export default function RaceOptions({ customRaceInput, }: RaceOptionsProps) { const onChange = (e: RadioChangeEvent) => { - console.log(races[e.target.value as RaceNames]); if (e.target.value === "Custom") setShowCustomRaceInput(true); else setShowCustomRaceInput(false); const selectedRace = e.target.value.toString() as keyof typeof RaceNames; diff --git a/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts b/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts index 41ea16f2..a4fa6476 100755 --- a/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts +++ b/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../../definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; export type RaceOptionsProps = { characterData: CharacterData; diff --git a/src/components/CharacterCreator/CharacterRace/definitions.ts b/src/components/CharacterCreator/CharacterRace/definitions.ts index 7dd1d438..19afe7b7 100755 --- a/src/components/CharacterCreator/CharacterRace/definitions.ts +++ b/src/components/CharacterCreator/CharacterRace/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterDataStatePair } from "../../definitions"; +import { CharacterDataStatePair } from "../../../data/definitions"; export interface CharacterRaceProps extends CharacterDataStatePair { setComboClass: (comboxClass: boolean) => void; diff --git a/src/components/CharacterSheet/Abilities/definitions.ts b/src/components/CharacterSheet/Abilities/definitions.ts index fdf2cebe..b2f13305 100755 --- a/src/components/CharacterSheet/Abilities/definitions.ts +++ b/src/components/CharacterSheet/Abilities/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../definitions"; +import { CharacterData } from "../../../data/definitions"; export interface AbilitiesProps { characterData: CharacterData; diff --git a/src/components/CharacterSheet/AttackBonus/definitions.ts b/src/components/CharacterSheet/AttackBonus/definitions.ts index 5f6a8a01..dde3b441 100755 --- a/src/components/CharacterSheet/AttackBonus/definitions.ts +++ b/src/components/CharacterSheet/AttackBonus/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../definitions"; +import { CharacterData } from "../../../data/definitions"; export interface AttackBonusProps { attackBonus: number; diff --git a/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts b/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts index 96e364b1..85c774f6 100755 --- a/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts +++ b/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../../definitions"; +import { CharacterData } from "../../../../data/definitions"; export interface ExperiencePointsProps { characterData: CharacterData; diff --git a/src/components/CharacterSheet/BaseStats/definitions.ts b/src/components/CharacterSheet/BaseStats/definitions.ts index a2a68734..3248a087 100755 --- a/src/components/CharacterSheet/BaseStats/definitions.ts +++ b/src/components/CharacterSheet/BaseStats/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../definitions"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; export interface BaseStatsProps { characterData: CharacterData; diff --git a/src/components/CharacterSheet/CharacterDescription/definitions.ts b/src/components/CharacterSheet/CharacterDescription/definitions.ts index 8a473b34..a2719317 100755 --- a/src/components/CharacterSheet/CharacterDescription/definitions.ts +++ b/src/components/CharacterSheet/CharacterDescription/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../definitions"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; export type CharacterDescriptionProps = { characterData: CharacterData; diff --git a/src/components/CharacterSheet/CharacterSheetModals/definitions.ts b/src/components/CharacterSheet/CharacterSheetModals/definitions.ts index fffa2753..f9536c86 100644 --- a/src/components/CharacterSheet/CharacterSheetModals/definitions.ts +++ b/src/components/CharacterSheet/CharacterSheetModals/definitions.ts @@ -1,5 +1,8 @@ -import { EquipmentItem } from "../../EquipmentStore/definitions"; -import { CharacterData, SetCharacterData } from "../../definitions"; +import { + CharacterData, + EquipmentItem, + SetCharacterData, +} from "../../../data/definitions"; export type CharacterSheetModalsProps = { characterData: CharacterData; diff --git a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts index 86c322b4..07135439 100755 --- a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts +++ b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../../definitions"; +import { CharacterData } from "../../../../data/definitions"; export interface CharacterSpellListProps { spells: CharacterData["spells"]; diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx index 886fe162..2d9ce61d 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx @@ -5,10 +5,13 @@ import { DeleteOutlined } from "@ant-design/icons"; import WeaponKeys from "../../../WeaponKeys/WeaponKeys"; import ItemWrapper from "./ItemWrapper/ItemWrapper"; import ItemDescription from "./ItemDescription/ItemDescription"; -import { EquipmentItem } from "../../../EquipmentStore/definitions"; import { classes } from "../../../../data/classes"; import { useEffect } from "react"; -import { ClassNames, RaceNames } from "../../../../data/definitions"; +import { + ClassNames, + EquipmentItem, + RaceNames, +} from "../../../../data/definitions"; import { races } from "../../../../data/races"; const punchItem: EquipmentItem = { @@ -43,8 +46,8 @@ export default function EquipmentList({ updateAC, }: EquipmentListProps) { const shownItems = characterData.equipment - .filter((item) => categories.includes(item.category)) - .sort((a, b) => a.name.localeCompare(b.name)); + .filter((item: EquipmentItem) => categories.includes(item.category)) + .sort((a: EquipmentItem, b: EquipmentItem) => a.name.localeCompare(b.name)); const handleUpdateAC = (item: string, type: string) => { const oldArmor = characterData.wearing?.armor; @@ -76,7 +79,7 @@ export default function EquipmentList({ useEffect(() => { // Remove empty items from the equipment array. const remainingEquipment = characterData.equipment.filter( - (item) => item.amount !== 0 + (item: EquipmentItem) => item.amount !== 0 ); if (remainingEquipment.length !== characterData.equipment.length) { setCharacterData({ ...characterData, equipment: remainingEquipment }); @@ -99,7 +102,7 @@ export default function EquipmentList({ > {categories.includes("armor") && } {categories.includes("shields") && } - {shownItems.map((item) => { + {shownItems.map((item: EquipmentItem) => { // Ignore previously existing "NO X" items in characters' equipment. if (item.name === "No Shield" || item.name === "No Armor") return null; return ( @@ -194,7 +197,7 @@ export default function EquipmentList({ ) )} {shownItems.length > 0 ? ( - shownItems.map((item) => ( + shownItems.map((item: EquipmentItem) => ( { const raceModifier = races[characterData.race as RaceNames]?.savingThrows?.[ - titleCaseToCamelCase(title) as keyof SavingThrowsType + titleCaseToCamelCase(title) as keyof SavingThrows ] || 0; const result = roller.roll( `d20${raceModifier > 0 ? `+${raceModifier}` : ""}` @@ -61,7 +57,7 @@ export default function SavingThrows({ }; // Set the default saving throws - let savingThrows: SavingThrowsType = defaultSavingThrows; + let savingThrows: SavingThrows = defaultSavingThrows; // if classType is standard, find saving throws for that class if (classType === "standard") { savingThrows = diff --git a/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts b/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts index 86de9fc7..bbb5154f 100644 --- a/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts +++ b/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../../definitions"; +import { CharacterData } from "../../../../data/definitions"; export type SavingThrowsFootnotesProps = { characterData: CharacterData; diff --git a/src/components/CharacterSheet/SavingThrows/definitions.ts b/src/components/CharacterSheet/SavingThrows/definitions.ts index df3ee68b..ca96e70b 100755 --- a/src/components/CharacterSheet/SavingThrows/definitions.ts +++ b/src/components/CharacterSheet/SavingThrows/definitions.ts @@ -1,16 +1,17 @@ -import { CharacterData } from "../../definitions"; +import { CharacterData, SavingThrows } from "../../../data/definitions"; +// import { CharacterData } from "../../definitions"; -export type SavingThrowsType = { - deathRayOrPoison: number; - magicWands: number; - paralysisOrPetrify: number; - dragonBreath: number; - spells: number; -}; +// export type SavingThrowsType = { +// deathRayOrPoison: number; +// magicWands: number; +// paralysisOrPetrify: number; +// dragonBreath: number; +// spells: number; +// }; export interface SavingThrowsTables { [characterClass: string]: { - [levelRange: string]: SavingThrowsType; + [levelRange: string]: SavingThrows; }; } diff --git a/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts b/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts index 2edea6e5..ad885975 100755 --- a/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts +++ b/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../definitions"; +import { CharacterData } from "../../../data/definitions"; export type SpecialsRestrictionsProps = { characterData: CharacterData; diff --git a/src/components/CharacterSheet/WeightStats/WeightStats.tsx b/src/components/CharacterSheet/WeightStats/WeightStats.tsx index c99730a8..54be9f95 100755 --- a/src/components/CharacterSheet/WeightStats/WeightStats.tsx +++ b/src/components/CharacterSheet/WeightStats/WeightStats.tsx @@ -2,7 +2,7 @@ import { Descriptions, Divider } from "antd"; import { getCarryingCapacity } from "../../../support/formatSupport"; import SimpleNumberStat from "../SimpleNumberStat/SimpleNumberStat"; import { WeightStatsProps } from "./definitions"; -import { RaceNames } from "../../../data/definitions"; +import { EquipmentItem, RaceNames } from "../../../data/definitions"; export default function WeightStats({ characterData, @@ -13,7 +13,7 @@ export default function WeightStats({ characterData.race as RaceNames ); const weight = characterData.equipment.reduce( - (accumulator, currentValue) => + (accumulator: number, currentValue: EquipmentItem) => accumulator + (currentValue.weight ?? 0) * (currentValue.amount ?? 0), 0 ); diff --git a/src/components/CharacterSheet/WeightStats/definitions.ts b/src/components/CharacterSheet/WeightStats/definitions.ts index 699f4f39..d3cd9369 100755 --- a/src/components/CharacterSheet/WeightStats/definitions.ts +++ b/src/components/CharacterSheet/WeightStats/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../definitions"; +import { CharacterData } from "../../../data/definitions"; export interface WeightStatsProps { characterData: CharacterData; diff --git a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx index 13d73736..63b7d7ed 100755 --- a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx +++ b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx @@ -3,13 +3,13 @@ import { EquipmentAccordionProps } from "./definitions"; import { toTitleCase } from "../../../support/stringSupport"; import equipmentItems from "../../../data/equipmentItems.json"; import EquipmentCheckbox from "../EquipmentCheckbox/EquipmentCheckbox"; -import { EquipmentItem } from "../definitions"; import WeaponKeys from "../../WeaponKeys/WeaponKeys"; import { classes } from "../../../data/classes"; import { races } from "../../../data/races"; import { getClassType } from "../../../support/helpers"; -import { EquipmentCategories } from "../../../data/definitions"; +import { EquipmentCategories, EquipmentItem } from "../../../data/definitions"; import { ClassNames, RaceNames } from "../../../data/definitions"; +import classNames from "classnames"; const EquipmentItemDescription = (item: EquipmentItem) => ( <> @@ -137,12 +137,19 @@ export default function EquipmentAccordion({ ); + const equipmentAccordionClassNames = classNames( + className, + "bg-seaBuckthorn", + "h-fit" + ); + return (
- + {/* TODO refactor to use `items` instead of `children` */} + {categories - .sort((a, b) => a.localeCompare(b)) - .map((category: string) => ( + .sort((a: any, b: any) => a.localeCompare(b)) + .map((category: any) => ( { return classNameArray.map( @@ -58,7 +57,7 @@ export default function EquipmentInventory({ > Gold: {characterData.gold.toFixed(2)} | Weight:{" "} {characterData.equipment - .reduce((total, item) => { + .reduce((total: number, item: EquipmentItem) => { return total + (item.weight || 0) * item.amount; }, 0) .toFixed(2)} @@ -74,7 +73,7 @@ export default function EquipmentInventory({
)} {Object.entries(groupedEquipment).map( - ([category, categoryItems]: [string, EquipmentItem[]]) => ( + ([category, categoryItems]: [any, any]) => (
} bordered - dataSource={categoryItems.map((categoryItem) => ({ - name: categoryItem.name, - amount: categoryItem.amount, - }))} - renderItem={(item) => ( + dataSource={categoryItems.map( + (categoryItem: EquipmentItem) => ({ + name: categoryItem.name, + amount: categoryItem.amount, + }) + )} + renderItem={(item: EquipmentItem) => ( {item.name} x{item.amount} diff --git a/src/components/EquipmentStore/EquipmentInventory/definitions.ts b/src/components/EquipmentStore/EquipmentInventory/definitions.ts index 42f43fef..74fa107f 100755 --- a/src/components/EquipmentStore/EquipmentInventory/definitions.ts +++ b/src/components/EquipmentStore/EquipmentInventory/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData } from "../../definitions"; +import { CharacterData } from "../../../data/definitions"; export interface EquipmentInventoryProps { characterData: CharacterData; diff --git a/src/components/EquipmentStore/EquipmentRadio/definitions.ts b/src/components/EquipmentStore/EquipmentRadio/definitions.ts index de2296b8..0a953d6c 100755 --- a/src/components/EquipmentStore/EquipmentRadio/definitions.ts +++ b/src/components/EquipmentStore/EquipmentRadio/definitions.ts @@ -1,5 +1,5 @@ import { ReactElement } from "react"; -import { EquipmentItem } from "../definitions"; +import { EquipmentItem } from "../../../data/definitions"; export interface EquipmentRadioProps { item: EquipmentItem; diff --git a/src/components/EquipmentStore/EquipmentStore.tsx b/src/components/EquipmentStore/EquipmentStore.tsx index bd6e5311..6b4323c0 100755 --- a/src/components/EquipmentStore/EquipmentStore.tsx +++ b/src/components/EquipmentStore/EquipmentStore.tsx @@ -1,4 +1,4 @@ -import { EquipmentItem, EquipmentStoreProps } from "./definitions"; +import { EquipmentStoreProps } from "./definitions"; import EquipmentAccordion from "./EquipmentAccordion/EquipmentAccordion"; import { useEffect, useState } from "react"; import equipmentItems from "../../data/equipmentItems.json"; @@ -9,7 +9,7 @@ import { db } from "../../firebase"; import HomebrewWarning from "../HomebrewWarning/HomebrewWarning"; import { getItemCost } from "../../support/formatSupport"; import GoldRoller from "./GoldRoller/GoldRoller"; -import { ClassNames, RaceNames } from "../../data/definitions"; +import { ClassNames, EquipmentItem, RaceNames } from "../../data/definitions"; export default function EquipmentStore({ characterData, diff --git a/src/components/EquipmentStore/GoldRoller/definitions.ts b/src/components/EquipmentStore/GoldRoller/definitions.ts index a4ad228f..6a2059e6 100755 --- a/src/components/EquipmentStore/GoldRoller/definitions.ts +++ b/src/components/EquipmentStore/GoldRoller/definitions.ts @@ -1,4 +1,4 @@ -import { CharacterData, SetCharacterData } from "../../definitions"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; export type GoldRollerProps = { characterData: CharacterData; diff --git a/src/components/EquipmentStore/definitions.ts b/src/components/EquipmentStore/definitions.ts index 6cf9e340..a98cb78d 100755 --- a/src/components/EquipmentStore/definitions.ts +++ b/src/components/EquipmentStore/definitions.ts @@ -1,5 +1,9 @@ -import { ClassNames } from "../../data/definitions"; -import { CharacterData, SetCharacterData } from "../definitions"; +import { + CharacterData, + ClassNames, + SetCharacterData, +} from "../../data/definitions"; +// import { CharacterData, SetCharacterData } from "../definitions"; export type ClassName = ClassNames; @@ -8,21 +12,3 @@ export interface EquipmentStoreProps { setCharacterData: SetCharacterData; inBuilder?: boolean; } - -export interface EquipmentItem { - name: string; - costValue: number; - costCurrency: string; - category: string; - amount: number; - weight?: number; - size?: string; - damage?: string; - missileAC?: string; - AC?: string | number; - type?: string; - range?: number[]; - ammo?: string[]; - noDelete?: boolean; - minLevel?: number; -} diff --git a/src/components/definitions.ts b/src/components/definitions.ts index f39204b0..3af15cda 100755 --- a/src/components/definitions.ts +++ b/src/components/definitions.ts @@ -1,47 +1,19 @@ import { Spell } from "../data/definitions"; -import { SavingThrowsType } from "./CharacterSheet/SavingThrows/definitions"; -import { Abilities } from "./CharacterCreator/CharacterAbilities/definitions"; -import { EquipmentItem } from "./EquipmentStore/definitions"; - -interface HP { - dice: string; - points: number; - max: number; - desc: string; -} - -interface SpecialRestriction { - race: string[]; - class: string[]; -} - -export type CharacterData = { - abilities: Abilities; - avatar: string; - class: string[]; - desc: string | string[]; - equipment: EquipmentItem[]; - gold: number; - hp: HP; - id?: string; - level: number; - name: string; - race: string; - restrictions: SpecialRestriction; - savingThrows: SavingThrowsType; - specials: SpecialRestriction; - spells: Spell[]; - wearing?: { armor: string; shield: string }; - weight: number; - xp: number; -}; - -export type SetCharacterData = (characterData: CharacterData) => void; - -export interface CharacterDataStatePair { - characterData: CharacterData; - setCharacterData: SetCharacterData; -} +// import { SavingThrowsType } from "./CharacterSheet/SavingThrows/definitions"; +// import { Abilities } from "./CharacterCreator/CharacterAbilities/definitions"; +// import { EquipmentItem } from "./EquipmentStore/definitions"; + +// interface HP { +// dice: string; +// points: number; +// max: number; +// desc: string; +// } + +// interface SpecialRestriction { +// race: string[]; +// class: string[]; +// } export type Capacity = { light: number; heavy: number }; export type CapacityMap = Record; diff --git a/src/data/classes/definitions.ts b/src/data/classes/definitions.ts index d66ff43d..3543dd5b 100755 --- a/src/data/classes/definitions.ts +++ b/src/data/classes/definitions.ts @@ -1,5 +1,5 @@ -import { EquipmentItem } from "../../components/EquipmentStore/definitions"; import { SavingThrows } from "../../components/definitions"; +import { EquipmentItem } from "../definitions"; export type ClassSetup = { attackBonus: number[]; diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 77f026d8..f468b5e0 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -1,3 +1,5 @@ +import { SpecialsRestrictionsProps } from "../components/CharacterSheet/SpecialsRestrictions/definitions"; + export enum EquipmentCategories { GENERAL = "general-equipment", AXES = "axes", @@ -61,6 +63,14 @@ export enum DiceTypes { D100 = "d100", } +export type SavingThrows = { + deathRayOrPoison: number; + magicWands: number; + paralysisOrPetrify: number; + dragonBreath: number; + spells: number; +}; + export interface CollapseItem { key: string; label: string; @@ -74,3 +84,71 @@ export type Spell = { name: string; range: string; }; + +export type Abilities = { + strength: number | string; + intelligence: number | string; + wisdom: number | string; + dexterity: number | string; + constitution: number | string; + charisma: number | string; +}; + +export type EquipmentItem = { + name: string; + costValue: number; + costCurrency: string; + category: string; + amount: number; + weight?: number; + size?: string; + damage?: string; + missileAC?: string; + AC?: string | number; + type?: string; + range?: number[]; + ammo?: string[]; + noDelete?: boolean; + minLevel?: number; +}; + +type SpecialRestriction = { + race: string[]; + class: string[]; +}; + +export type CharacterData = { + abilities: { + scores: Abilities; + modifiers: Abilities; + }; + avatar: string; + class: string[]; + desc: string | string[]; + equipment: EquipmentItem[]; + gold: number; + hp: { + dice: string; + points: number; + max: number; + desc: string; + }; + id?: string; + level: number; + name: string; + race: string; + restrictions: SpecialRestriction; + savingThrows: SavingThrows; + specials: SpecialRestriction; + spells: Spell[]; + wearing?: { armor: string; shield: string }; + weight: number; + xp: number; +}; + +export type SetCharacterData = (characterData: CharacterData) => void; + +export interface CharacterDataStatePair { + characterData: CharacterData; + setCharacterData: SetCharacterData; +} diff --git a/src/data/races/definitions.ts b/src/data/races/definitions.ts index f4a33022..09c1d108 100755 --- a/src/data/races/definitions.ts +++ b/src/data/races/definitions.ts @@ -1,6 +1,5 @@ -import { EquipmentItem } from "../../components/EquipmentStore/definitions"; import { SavingThrows } from "../../components/definitions"; -import { DiceTypes } from "../definitions"; +import { DiceTypes, EquipmentItem } from "../definitions"; import { ClassNames } from "../definitions"; export interface RaceSetup { diff --git a/src/modals/AddCustomEquipmentModal.tsx b/src/modals/AddCustomEquipmentModal.tsx index 77fcd701..01d413ff 100755 --- a/src/modals/AddCustomEquipmentModal.tsx +++ b/src/modals/AddCustomEquipmentModal.tsx @@ -19,8 +19,8 @@ import equipmentItems from "../data/equipmentItems.json"; import { slugToTitleCase } from "../support/stringSupport"; import { getItemCost } from "../support/formatSupport"; import HomebrewWarning from "../components/HomebrewWarning/HomebrewWarning"; -import { EquipmentItem } from "../components/EquipmentStore/definitions"; import DOMPurify from "dompurify"; +import { EquipmentItem } from "../data/definitions"; const initialFormState = { name: undefined, diff --git a/src/modals/LevelUpModal.tsx b/src/modals/LevelUpModal.tsx index 48e247cd..d1c15427 100755 --- a/src/modals/LevelUpModal.tsx +++ b/src/modals/LevelUpModal.tsx @@ -14,7 +14,6 @@ import { marked } from "marked"; import DescriptionBubble from "../components/CharacterCreator/DescriptionBubble/DescriptionBubble"; import { classes } from "../data/classes"; import { ClassNames, Spell } from "../data/definitions"; -import classNames from "classnames"; const roller = new DiceRoller(); @@ -86,7 +85,7 @@ export default function LevelUpModal({ let spellBudget: number[] = []; const newSpells = characterData.spells; const newSpellCounts = newSpells.reduce( - (acc, spell) => { + (acc: number[], spell: Spell) => { // If it is a combination class, just use the magic-user level const spellLevel = getClassType(characterData.class) === "combination" @@ -138,7 +137,7 @@ export default function LevelUpModal({ : characterData.class[0].toLowerCase(); newCheckedSpells = characterData.spells.filter( - (spell) => spell.level[classNameToCheck] !== level + (spell: Spell) => spell.level[classNameToCheck] !== level ); checkedValues.forEach((value) => { @@ -168,7 +167,7 @@ export default function LevelUpModal({ spell.name)} + value={characterData.spells.map((spell: Spell) => spell.name)} onChange={handleSpellChange(index + 1)} > {spellsOfLevel(characterData.class, index + 1) diff --git a/src/modals/definitions.ts b/src/modals/definitions.ts index 3d5c1925..a0603480 100755 --- a/src/modals/definitions.ts +++ b/src/modals/definitions.ts @@ -1,7 +1,5 @@ -import { RadioChangeEvent } from "antd"; -import { EquipmentItem } from "../components/EquipmentStore/definitions"; -import { CharacterData } from "../components/definitions"; import { FormEvent } from "react"; +import { CharacterData } from "../data/definitions"; export type ModalProps = { handleCancel: () => void; diff --git a/src/pages/CharacterCreator/CharacterCreator.tsx b/src/pages/CharacterCreator/CharacterCreator.tsx index 9781bea6..16af4d5c 100755 --- a/src/pages/CharacterCreator/CharacterCreator.tsx +++ b/src/pages/CharacterCreator/CharacterCreator.tsx @@ -1,6 +1,5 @@ import { marked } from "marked"; import { useState } from "react"; -import { CharacterData } from "../../components/definitions"; import { Button, Divider, Steps, Typography, message } from "antd"; import CharacterAbilities from "../../components/CharacterCreator/CharacterAbilities/CharacterAbilities"; import CharacterRace from "../../components/CharacterCreator/CharacterRace/CharacterRace"; @@ -9,11 +8,15 @@ import CharacterHitPoints from "../../components/CharacterCreator/CharacterHitPo import EquipmentStore from "../../components/EquipmentStore/EquipmentStore"; import CharacterName from "../../components/CharacterCreator/CharacterName/CharacterName"; import { useNavigate, useOutletContext } from "react-router-dom"; -import { AbilityTypes } from "../../components/CharacterCreator/CharacterAbilities/definitions"; import { collection, doc, setDoc } from "firebase/firestore"; import { auth, db } from "../../firebase"; import { classes } from "../../data/classes"; -import { ClassNames, Spell } from "../../data/definitions"; +import { + Abilities, + CharacterData, + ClassNames, + Spell, +} from "../../data/definitions"; const abilityDescription = marked( `Roll for your character's Abilities. **You can click the "Roll" buttons or use your own dice and record your scores**. Afterward your character will have a score ranging from 3 to 18 in each of the Abilities below. A bonus (or penalty) Modifier is then associated with each score. Your character's Abilities will begin to determine the options available to them in the next steps as well, so good luck! @@ -204,7 +207,7 @@ export default function CharacterCreator() { title: item.title, })); - function areAllAbilitiesSet(abilities: AbilityTypes) { + function areAllAbilitiesSet(abilities: Abilities) { for (let key in abilities) { const value = +abilities[key as keyof typeof abilities]; if (value <= 0 || isNaN(value)) { diff --git a/src/pages/CharacterList/CharacterList.tsx b/src/pages/CharacterList/CharacterList.tsx index cc44aecc..45d46ba6 100755 --- a/src/pages/CharacterList/CharacterList.tsx +++ b/src/pages/CharacterList/CharacterList.tsx @@ -4,11 +4,11 @@ import { collection, deleteDoc, doc, onSnapshot } from "firebase/firestore"; import { db } from "../../firebase"; import { useEffect, useState } from "react"; import { CharacterListProps } from "./definitions"; -import { CharacterData } from "../../components/definitions"; import classNames from "classnames"; import CharacterCard from "../../components/CharacterCard/CharacterCard"; import { images } from "../../assets/images/faces/imageAssets"; import { extractImageName } from "../../support/stringSupport"; +import { CharacterData } from "../../data/definitions"; export default function CharacterList({ user, diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index 37b550c2..77a355fe 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -8,8 +8,6 @@ import { db } from "../../firebase"; // DEFINITIONS import { User } from "firebase/auth"; import { CharacterSheetProps } from "./definitions"; -import { CharacterData } from "../../components/definitions"; -import { EquipmentItem } from "../../components/EquipmentStore/definitions"; // ANTD COMPONENTS import { Breadcrumb, @@ -45,8 +43,10 @@ import CharacterSheetModals from "../../components/CharacterSheet/CharacterSheet // DATA import { classes } from "../../data/classes"; import { + CharacterData, ClassNames, EquipmentCategories, + EquipmentItem, RaceNames, } from "../../data/definitions"; // SUPPORT @@ -57,6 +57,7 @@ import { getClassType, getHitDice, getMovement, + isStandardClass, } from "../../support/helpers"; import DiceSvg from "../../assets/images/dice.svg"; import classNames from "classnames"; @@ -117,7 +118,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { if (!characterData) return; const newEquipment = characterData.equipment.filter( - (e) => e.name !== item.name + (e: EquipmentItem) => e.name !== item.name ); setCharacterData({ ...characterData, equipment: newEquipment }); }; @@ -168,11 +169,7 @@ export default function CharacterSheet({ user }: CharacterSheetProps) { const newArr = characterData.class[0].split(" "); // Make sure every value in the array is in the ClassNames enum // That way you know if it is a proper combination class and not a custom class with a space. - if ( - newArr.every((className) => - Object.values(ClassNames).includes(className as ClassNames) - ) - ) + if (newArr.every((className) => isStandardClass(className))) characterData.class = newArr; } } diff --git a/src/support/formatSupport.ts b/src/support/formatSupport.ts index 4e027c63..6223cfa6 100755 --- a/src/support/formatSupport.ts +++ b/src/support/formatSupport.ts @@ -1,10 +1,5 @@ -import { EquipmentItem } from "../components/EquipmentStore/definitions"; -import { - Capacity, - CapacityMap, - CharacterData, -} from "../components/definitions"; -import { RaceNames } from "../data/definitions"; +import { Capacity, CapacityMap } from "../components/definitions"; +import { CharacterData, EquipmentItem, RaceNames } from "../data/definitions"; import { races } from "../data/races"; export const getItemCost = (item: EquipmentItem) => { diff --git a/src/support/helpers.test.ts b/src/support/helpers.test.ts index 652c07a0..03c69321 100644 --- a/src/support/helpers.test.ts +++ b/src/support/helpers.test.ts @@ -1,8 +1,8 @@ -import { ClassNames, RaceNames } from "../data/definitions"; +import { CharacterData, ClassNames, RaceNames } from "../data/definitions"; import { getArmorClass, getClassType, - getDisabledClasses, + getEnabledClasses, getHitPointsModifier, getSavingThrows, getSavingThrowsWeight, @@ -12,7 +12,6 @@ import { } from "./helpers"; import React, { useState, useEffect } from "react"; import { renderHook } from "@testing-library/react"; -import { CharacterData } from "../components/definitions"; let characterData: CharacterData = { savingThrows: { @@ -142,39 +141,23 @@ describe("isStandardRace", () => { }); }); -describe("getDisabledClasses", () => { +describe("getEnabledClasses", () => { // This test will break any time a new class is added, so... maybe not the best test. - test("should return a list of disabled classNames based on character race and ability scores", () => { + test("should return a list of enabled classNames based on character race selection and ability scores", () => { expect( - getDisabledClasses(RaceNames.DWARF, { - scores: { - strength: 9, - intelligence: 9, - wisdom: 6, - constitution: 11, - dexterity: 11, - charisma: 8, - }, - modifiers: { - strength: "+0", - intelligence: "+0", - wisdom: "-1", - constitution: "+0", - dexterity: "+0", - charisma: "-1", - }, + getEnabledClasses(RaceNames.DWARF, { + strength: 9, + intelligence: 9, + wisdom: 6, + constitution: 11, + dexterity: 11, + charisma: 8, }) ).toEqual([ - "Assassin", - "Cleric", - "Druid", - "Illusionist", - "Magic-User", - "Necromancer", - "Ranger", - "Paladin", - "Scout", - "Spellcrafter", + ClassNames.BARBARIAN, + ClassNames.FIGHTER, + ClassNames.THIEF, + ClassNames.CUSTOM, ]); }); }); diff --git a/src/support/helpers.ts b/src/support/helpers.ts index cff7aaaa..fe6ed9ea 100755 --- a/src/support/helpers.ts +++ b/src/support/helpers.ts @@ -1,13 +1,20 @@ import { useEffect, useState } from "react"; +// import { +// Abilities, +// AbilityTypes, +// } from "../components/CharacterCreator/CharacterAbilities/definitions"; +import { classes } from "../data/classes"; import { Abilities, - AbilityTypes, -} from "../components/CharacterCreator/CharacterAbilities/definitions"; -import { classes } from "../data/classes"; -import { ClassNames, RaceNames } from "../data/definitions"; + CharacterData, + ClassNames, + RaceNames, + SavingThrows, + SetCharacterData, +} from "../data/definitions"; import { races } from "../data/races"; -import { SavingThrowsType } from "../components/CharacterSheet/SavingThrows/definitions"; -import { CharacterData, SetCharacterData } from "../components/definitions"; +// import { SavingThrowsType } from "../components/CharacterSheet/SavingThrows/definitions"; +// import { CharacterData, SetCharacterData } from "../components/definitions"; import equipmentItems from "../data/equipmentItems.json"; import { getCarryingCapacity } from "./formatSupport"; @@ -54,53 +61,42 @@ export const isStandardClass = (className: string) => export const isStandardRace = (raceName: string) => Object.values(RaceNames).includes(raceName as RaceNames); -export function getDisabledClasses( +export function getEnabledClasses( raceKey: RaceNames, - abilities: Abilities -): ClassNames[] { - const race = races[raceKey]; - const disabledClasses = []; - - // Check if the race is defined - if (!race) return []; - - for (const className of Object.values(ClassNames)) { - const classSetup = classes[className]; - - // Check if the class is allowed for the race - if ( - !race.allowedStandardClasses?.includes(className) && - !race.allowedCombinationClasses?.includes(className) - ) { - disabledClasses.push(className); - continue; - } - - // Check ability requirements - if (classSetup.minimumAbilityRequirements) { - for (const ability of Object.keys( - classSetup.minimumAbilityRequirements - ) as (keyof AbilityTypes)[]) { - const requirement = classSetup.minimumAbilityRequirements[ability]; - if (requirement && +abilities.scores[ability] < requirement) { - disabledClasses.push(className); - break; + abilityScores: Abilities +) { + const race = isStandardRace(raceKey) ? races[raceKey] : undefined; + console.log("race", race); + let classList = Object.values(ClassNames); + if (!race) return classList; + classList = classList + .filter((className) => race.allowedStandardClasses.indexOf(className) > -1) + .filter((className) => { + const classSetup = classes[className]; + if (classSetup.minimumAbilityRequirements) { + for (const ability of Object.keys( + classSetup.minimumAbilityRequirements + ) as (keyof Abilities)[]) { + const requirement = classSetup.minimumAbilityRequirements[ability]; + if (requirement && +abilityScores[ability] < requirement) { + return false; + } } } - } - } - - return disabledClasses; + return true; + }); + console.log("classList2", classList); + return classList; } // Get the saving throws for a class at a given level export const getSavingThrows = (className: string, level: number) => classes[className as ClassNames]?.savingThrows.find( (savingThrow) => (savingThrow[0] as number) >= level - )?.[1] as SavingThrowsType; + )?.[1] as SavingThrows; // Get the total weight of a saving throw object in order to determine "best" -export const getSavingThrowsWeight = (savingThrows: SavingThrowsType) => +export const getSavingThrowsWeight = (savingThrows: SavingThrows) => Object.values(savingThrows).reduce((prev, curr) => prev + curr, 0); export function useDebounce(value: any, delay: number) { From 03fca19f010aee503cff84dfa607c3387c3ce540 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 15:11:06 -0400 Subject: [PATCH 29/70] Equipment refactoring --- .../EquipmentAccordion/EquipmentAccordion.tsx | 136 +++--------------- .../EquipmentCheckboxGroup.tsx | 75 ++++++++++ .../EquipmentItemDescription.tsx | 29 ++++ src/support/helpers.ts | 38 +++++ 4 files changed, 159 insertions(+), 119 deletions(-) create mode 100644 src/components/EquipmentStore/EquipmentCheckboxGroup/EquipmentCheckboxGroup.tsx create mode 100644 src/components/EquipmentStore/EquipmentItemDescription/EquipmentItemDescription.tsx diff --git a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx index 63b7d7ed..24ca3fdc 100755 --- a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx +++ b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx @@ -1,73 +1,13 @@ -import { Collapse, Descriptions, Space, Typography } from "antd"; +import { Collapse } from "antd"; import { EquipmentAccordionProps } from "./definitions"; import { toTitleCase } from "../../../support/stringSupport"; import equipmentItems from "../../../data/equipmentItems.json"; -import EquipmentCheckbox from "../EquipmentCheckbox/EquipmentCheckbox"; import WeaponKeys from "../../WeaponKeys/WeaponKeys"; import { classes } from "../../../data/classes"; -import { races } from "../../../data/races"; -import { getClassType } from "../../../support/helpers"; -import { EquipmentCategories, EquipmentItem } from "../../../data/definitions"; -import { ClassNames, RaceNames } from "../../../data/definitions"; +import { EquipmentCategories } from "../../../data/definitions"; +import { ClassNames } from "../../../data/definitions"; import classNames from "classnames"; - -const EquipmentItemDescription = (item: EquipmentItem) => ( - <> - {item.name} - - - {`${item.costValue}${item.costCurrency}`} - - {item.weight && ( - {item.weight} - )} - {item.size && ( - {item.size} - )} - {item.AC && {item.AC}} - {item.damage && ( - {item.damage} - )} - - -); - -const itemIsDisabled = ( - classNames: ClassNames[], - raceName: RaceNames, - item: EquipmentItem -) => { - // Nothing disabled for custom classes - if (getClassType(classNames) === "custom") return false; - // Races that do not allow large equipment - if (races[raceName]?.noLargeEquipment && item.size === "L") return true; - // Classes that do not allow large equipment - if ( - classNames.some((className) => classes[className].noLargeEquipment) && - item.size === "L" - ) { - return true; - } - let disabled = false; - classNames.forEach((className) => { - if (classes[className].specificEquipmentItems) { - const specificEquipmentItems = classes[className] - .specificEquipmentItems || [[], []]; - - // if the item category is listed in specificEquipmentItems[0] AND the string in specificEquipmentItems[1] is not in the item name - if ( - specificEquipmentItems[0].includes(item.category) && - specificEquipmentItems[1].every( - (string) => !item.name.toLowerCase().includes(string) - ) - ) { - disabled = true; - } - } - }); - - return disabled; -}; +import EquipmentCheckboxGroup from "../EquipmentCheckboxGroup/EquipmentCheckboxGroup"; export default function EquipmentAccordion({ onAmountChange, @@ -84,59 +24,6 @@ export default function EquipmentAccordion({ ? Array.from(new Set(classCategories)) : Object.values(EquipmentCategories); - const generateEquipmentCheckboxes = ( - category: string, - subCategory?: string - ) => ( - - {equipmentItems - .filter( - (categoryItem) => - categoryItem.category === category && - (!subCategory || categoryItem.subCategory === subCategory) - ) - .sort((a, b) => a.name.localeCompare(b.name)) - .map((categoryItem) => { - if ( - !itemIsDisabled( - characterData.class as ClassNames[], - characterData.race as RaceNames, - categoryItem - ) - ) { - return ( - invItem.name === categoryItem.name - )} - equipmentItemDescription={EquipmentItemDescription( - categoryItem - )} - inputDisabled={categoryItem.costValue > characterData.gold} - itemAmount={ - characterData.equipment.filter( - (invItem: EquipmentItem) => - invItem.name === categoryItem.name - )[0]?.amount - } - /> - ); - } else { - return null; - } - })} - - ); - const equipmentAccordionClassNames = classNames( className, "bg-seaBuckthorn", @@ -173,14 +60,25 @@ export default function EquipmentAccordion({ subCategory?.replaceAll("-", " ") )} > - {generateEquipmentCheckboxes(category, subCategory)} + ) ); })} ) : ( - generateEquipmentCheckboxes(category) + )} ))} diff --git a/src/components/EquipmentStore/EquipmentCheckboxGroup/EquipmentCheckboxGroup.tsx b/src/components/EquipmentStore/EquipmentCheckboxGroup/EquipmentCheckboxGroup.tsx new file mode 100644 index 00000000..2510bbf4 --- /dev/null +++ b/src/components/EquipmentStore/EquipmentCheckboxGroup/EquipmentCheckboxGroup.tsx @@ -0,0 +1,75 @@ +import { Space } from "antd"; +import equipmentItems from "../../../data/equipmentItems.json"; +import { equipmentItemIsDisabled } from "../../../support/helpers"; +import { + CharacterData, + ClassNames, + EquipmentItem, + RaceNames, +} from "../../../data/definitions"; +import EquipmentCheckbox from "../EquipmentCheckbox/EquipmentCheckbox"; +import EquipmentItemDescription from "../EquipmentItemDescription/EquipmentItemDescription"; + +export default function EquipmentCheckboxGroup({ + category, + subCategory, + characterData, + onCheckboxCheck, + onAmountChange, +}: { + category: string; + subCategory?: string; + characterData: CharacterData; + onAmountChange: (item?: EquipmentItem) => void; + onCheckboxCheck: (item?: EquipmentItem) => void; +}) { + return ( + + {equipmentItems + .filter( + (categoryItem) => + categoryItem.category === category && + (!subCategory || categoryItem.subCategory === subCategory) + ) + .sort((a, b) => a.name.localeCompare(b.name)) + .map((categoryItem) => { + if ( + !equipmentItemIsDisabled( + characterData.class as ClassNames[], + characterData.race as RaceNames, + categoryItem + ) + ) { + return ( + invItem.name === categoryItem.name + )} + equipmentItemDescription={ + + } + inputDisabled={categoryItem.costValue > characterData.gold} + itemAmount={ + characterData.equipment.filter( + (invItem: EquipmentItem) => + invItem.name === categoryItem.name + )[0]?.amount + } + /> + ); + } else { + return null; + } + })} + + ); +} diff --git a/src/components/EquipmentStore/EquipmentItemDescription/EquipmentItemDescription.tsx b/src/components/EquipmentStore/EquipmentItemDescription/EquipmentItemDescription.tsx new file mode 100644 index 00000000..72c180cf --- /dev/null +++ b/src/components/EquipmentStore/EquipmentItemDescription/EquipmentItemDescription.tsx @@ -0,0 +1,29 @@ +import { Descriptions, Typography } from "antd"; +import { EquipmentItem } from "../../../data/definitions"; + +export default function EquipmentItemDescription({ + item, +}: { + item: EquipmentItem; +}) { + return ( + <> + {item.name} + + + {`${item.costValue}${item.costCurrency}`} + + {item.weight && ( + {item.weight} + )} + {item.size && ( + {item.size} + )} + {item.AC && {item.AC}} + {item.damage && ( + {item.damage} + )} + + + ); +} diff --git a/src/support/helpers.ts b/src/support/helpers.ts index fe6ed9ea..e458d1fd 100755 --- a/src/support/helpers.ts +++ b/src/support/helpers.ts @@ -8,6 +8,7 @@ import { Abilities, CharacterData, ClassNames, + EquipmentItem, RaceNames, SavingThrows, SetCharacterData, @@ -260,3 +261,40 @@ export const getMovement = (characterData: CharacterData) => { return characterData.weight <= carryingCapacity.light ? 20 : 10; } }; + +export const equipmentItemIsDisabled = ( + classNames: ClassNames[], + raceName: RaceNames, + item: EquipmentItem +) => { + // Nothing disabled for custom classes + if (getClassType(classNames) === "custom") return false; + // Races that do not allow large equipment + if (races[raceName]?.noLargeEquipment && item.size === "L") return true; + // Classes that do not allow large equipment + if ( + classNames.some((className) => classes[className].noLargeEquipment) && + item.size === "L" + ) { + return true; + } + let disabled = false; + classNames.forEach((className) => { + if (classes[className].specificEquipmentItems) { + const specificEquipmentItems = classes[className] + .specificEquipmentItems || [[], []]; + + // if the item category is listed in specificEquipmentItems[0] AND the string in specificEquipmentItems[1] is not in the item name + if ( + specificEquipmentItems[0].includes(item.category) && + specificEquipmentItems[1].every( + (string) => !item.name.toLowerCase().includes(string) + ) + ) { + disabled = true; + } + } + }); + + return disabled; +}; From afbfcfc66ca603ccab79280ee051f3052718239f Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 15:19:16 -0400 Subject: [PATCH 30/70] remove component definitions --- src/components/definitions.ts | 31 ------------------------------- src/data/classes/definitions.ts | 3 +-- src/data/classes/index.ts | 3 +-- src/data/races/definitions.ts | 3 +-- src/support/formatSupport.ts | 5 ++++- 5 files changed, 7 insertions(+), 38 deletions(-) delete mode 100755 src/components/definitions.ts diff --git a/src/components/definitions.ts b/src/components/definitions.ts deleted file mode 100755 index 3af15cda..00000000 --- a/src/components/definitions.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Spell } from "../data/definitions"; -// import { SavingThrowsType } from "./CharacterSheet/SavingThrows/definitions"; -// import { Abilities } from "./CharacterCreator/CharacterAbilities/definitions"; -// import { EquipmentItem } from "./EquipmentStore/definitions"; - -// interface HP { -// dice: string; -// points: number; -// max: number; -// desc: string; -// } - -// interface SpecialRestriction { -// race: string[]; -// class: string[]; -// } - -export type Capacity = { light: number; heavy: number }; -export type CapacityMap = Record; - -export type SpellItem = { - name: string; -}; - -export type SavingThrows = { - deathRayOrPoison: number; - magicWands: number; - paralysisOrPetrify: number; - dragonBreath: number; - spells: number; -}; diff --git a/src/data/classes/definitions.ts b/src/data/classes/definitions.ts index 3543dd5b..e4722f4b 100755 --- a/src/data/classes/definitions.ts +++ b/src/data/classes/definitions.ts @@ -1,5 +1,4 @@ -import { SavingThrows } from "../../components/definitions"; -import { EquipmentItem } from "../definitions"; +import { EquipmentItem, SavingThrows } from "../definitions"; export type ClassSetup = { attackBonus: number[]; diff --git a/src/data/classes/index.ts b/src/data/classes/index.ts index b2562bde..b8e59ba9 100755 --- a/src/data/classes/index.ts +++ b/src/data/classes/index.ts @@ -1,4 +1,4 @@ -import { DiceTypes } from "../definitions"; +import { DiceTypes, SavingThrows } from "../definitions"; import { ClassSetup } from "./definitions"; import { fighter } from "./fighter"; import { magicUser } from "./magicUser"; @@ -13,7 +13,6 @@ import { necromancer } from "./necromancer"; import { ranger } from "./ranger"; import { paladin } from "./paladin"; import { scout } from "./scout"; -import { SavingThrows } from "../../components/definitions"; import { spellCrafter } from "./spellcrafter"; const customPlaceholder: ClassSetup = { diff --git a/src/data/races/definitions.ts b/src/data/races/definitions.ts index 09c1d108..c94d85ea 100755 --- a/src/data/races/definitions.ts +++ b/src/data/races/definitions.ts @@ -1,5 +1,4 @@ -import { SavingThrows } from "../../components/definitions"; -import { DiceTypes, EquipmentItem } from "../definitions"; +import { DiceTypes, EquipmentItem, SavingThrows } from "../definitions"; import { ClassNames } from "../definitions"; export interface RaceSetup { diff --git a/src/support/formatSupport.ts b/src/support/formatSupport.ts index 6223cfa6..436e6d6b 100755 --- a/src/support/formatSupport.ts +++ b/src/support/formatSupport.ts @@ -1,7 +1,10 @@ -import { Capacity, CapacityMap } from "../components/definitions"; +// import { Capacity, CapacityMap } from "../components/definitions"; import { CharacterData, EquipmentItem, RaceNames } from "../data/definitions"; import { races } from "../data/races"; +type Capacity = { light: number; heavy: number }; +type CapacityMap = Record; + export const getItemCost = (item: EquipmentItem) => { let cost = item.costValue; if (item.costCurrency === "sp") cost *= 0.1; From 3d7158ee259f34cf8627bfa74b64f549b6baf385 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 15:19:41 -0400 Subject: [PATCH 31/70] cleanup --- src/data/definitions.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/data/definitions.ts b/src/data/definitions.ts index f468b5e0..a662d3d4 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -1,5 +1,3 @@ -import { SpecialsRestrictionsProps } from "../components/CharacterSheet/SpecialsRestrictions/definitions"; - export enum EquipmentCategories { GENERAL = "general-equipment", AXES = "axes", From 30c4bab5f11e721318935631458afe3e5295ca74 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 16:03:09 -0400 Subject: [PATCH 32/70] cleanup --- .../CharacterClass/ClassOptions/ClassOptions.tsx | 1 - .../CharacterSheet/SavingThrows/SavingThrows.tsx | 8 ++++---- src/data/definitions.ts | 2 +- src/support/helpers.ts | 8 +++----- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx index 7db6d999..7d0b6319 100755 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx +++ b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx @@ -18,7 +18,6 @@ export default function ClassOptions({ characterData.race as RaceNames, characterData.abilities.scores ); - console.log("enabledClasses", enabledClasses); const baseClasses = [ ClassNames.FIGHTER, ClassNames.CLERIC, diff --git a/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx b/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx index 9df1de7d..ac77f934 100755 --- a/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx +++ b/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx @@ -12,12 +12,12 @@ import { titleCaseToCamelCase, } from "../../../support/stringSupport"; import { races } from "../../../data/races"; -import { RaceNames, SavingThrows } from "../../../data/definitions"; +import { RaceNames, SavingThrowsType } from "../../../data/definitions"; import SavingThrowsFootnotes from "./SavingThrowsFootnotes/SavingThrowsFootnotes"; const roller = new DiceRoller(); -const defaultSavingThrows: SavingThrows = { +const defaultSavingThrows: SavingThrowsType = { deathRayOrPoison: 0, magicWands: 0, paralysisOrPetrify: 0, @@ -37,7 +37,7 @@ export default function SavingThrows({ const rollSavingThrow = (score: number, title: string) => { const raceModifier = races[characterData.race as RaceNames]?.savingThrows?.[ - titleCaseToCamelCase(title) as keyof SavingThrows + titleCaseToCamelCase(title) as keyof SavingThrowsType ] || 0; const result = roller.roll( `d20${raceModifier > 0 ? `+${raceModifier}` : ""}` @@ -57,7 +57,7 @@ export default function SavingThrows({ }; // Set the default saving throws - let savingThrows: SavingThrows = defaultSavingThrows; + let savingThrows: SavingThrowsType = defaultSavingThrows; // if classType is standard, find saving throws for that class if (classType === "standard") { savingThrows = diff --git a/src/data/definitions.ts b/src/data/definitions.ts index a662d3d4..e1c9d485 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -61,7 +61,7 @@ export enum DiceTypes { D100 = "d100", } -export type SavingThrows = { +export type SavingThrowsType = { deathRayOrPoison: number; magicWands: number; paralysisOrPetrify: number; diff --git a/src/support/helpers.ts b/src/support/helpers.ts index e458d1fd..bf71bc93 100755 --- a/src/support/helpers.ts +++ b/src/support/helpers.ts @@ -10,7 +10,7 @@ import { ClassNames, EquipmentItem, RaceNames, - SavingThrows, + SavingThrowsType, SetCharacterData, } from "../data/definitions"; import { races } from "../data/races"; @@ -67,7 +67,6 @@ export function getEnabledClasses( abilityScores: Abilities ) { const race = isStandardRace(raceKey) ? races[raceKey] : undefined; - console.log("race", race); let classList = Object.values(ClassNames); if (!race) return classList; classList = classList @@ -86,7 +85,6 @@ export function getEnabledClasses( } return true; }); - console.log("classList2", classList); return classList; } @@ -94,10 +92,10 @@ export function getEnabledClasses( export const getSavingThrows = (className: string, level: number) => classes[className as ClassNames]?.savingThrows.find( (savingThrow) => (savingThrow[0] as number) >= level - )?.[1] as SavingThrows; + )?.[1] as SavingThrowsType; // Get the total weight of a saving throw object in order to determine "best" -export const getSavingThrowsWeight = (savingThrows: SavingThrows) => +export const getSavingThrowsWeight = (savingThrows: SavingThrowsType) => Object.values(savingThrows).reduce((prev, curr) => prev + curr, 0); export function useDebounce(value: any, delay: number) { From ad5a3e22d6becb6dc1d106c807da0cda216ad08e Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 16:03:34 -0400 Subject: [PATCH 33/70] better collapse --- .../EquipmentAccordion/EquipmentAccordion.tsx | 113 +++++++++--------- 1 file changed, 58 insertions(+), 55 deletions(-) diff --git a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx index 24ca3fdc..52ad9e93 100755 --- a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx +++ b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx @@ -1,6 +1,6 @@ -import { Collapse } from "antd"; +import { Collapse, CollapseProps } from "antd"; import { EquipmentAccordionProps } from "./definitions"; -import { toTitleCase } from "../../../support/stringSupport"; +import { slugToTitleCase } from "../../../support/stringSupport"; import equipmentItems from "../../../data/equipmentItems.json"; import WeaponKeys from "../../WeaponKeys/WeaponKeys"; import { classes } from "../../../data/classes"; @@ -30,60 +30,63 @@ export default function EquipmentAccordion({ "h-fit" ); + const generalEquipmentName = "general-equipment"; + + const generalEquipmentItems: CollapseProps["items"] = [ + ...new Set( + equipmentItems + .filter((item) => item.category === generalEquipmentName) + .map((item) => item.subCategory) + ), + ].map((subCategory, index) => { + return { + key: index + 1 + "", + label: slugToTitleCase(subCategory || ""), + children: ( + + ), + }; + }); + + const items: CollapseProps["items"] = categories + .sort((a, b) => a.localeCompare(b)) + .map((category, index) => { + return { + key: index + 1 + "", + label: slugToTitleCase(category), + children: + category === "general-equipment" ? ( + + ) : ( + + ), + }; + }); + return ( -
- {/* TODO refactor to use `items` instead of `children` */} - - {categories - .sort((a: any, b: any) => a.localeCompare(b)) - .map((category: any) => ( - - {/* if category === 'general-equipment' Create a sub Collapse */} - {category === "general-equipment" ? ( - - {[ - ...new Set( - equipmentItems - .filter((item) => item.category === category) - .map((item) => item.subCategory) - ), - ].map((subCategory) => { - return ( - subCategory !== undefined && ( - - - - ) - ); - })} - - ) : ( - - )} - - ))} - + <> + -
+ ); } From 9076a565c0348be10b03f3f7989c9d71f49ca0a6 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 16:04:17 -0400 Subject: [PATCH 34/70] cleanup --- src/data/definitions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/definitions.ts b/src/data/definitions.ts index e1c9d485..3368011d 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -136,7 +136,7 @@ export type CharacterData = { name: string; race: string; restrictions: SpecialRestriction; - savingThrows: SavingThrows; + savingThrows: SavingThrowsType; specials: SpecialRestriction; spells: Spell[]; wearing?: { armor: string; shield: string }; From 45f9ea6b1521346cba30ec9d48e3e5145447d419 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 16:05:58 -0400 Subject: [PATCH 35/70] cleanup --- .../CharacterSheet/SavingThrows/definitions.ts | 13 ++----------- src/data/classes/definitions.ts | 4 ++-- src/data/classes/index.ts | 4 ++-- src/data/definitions.ts | 10 +++++----- src/data/races/definitions.ts | 4 ++-- 5 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/components/CharacterSheet/SavingThrows/definitions.ts b/src/components/CharacterSheet/SavingThrows/definitions.ts index ca96e70b..fa09ae9b 100755 --- a/src/components/CharacterSheet/SavingThrows/definitions.ts +++ b/src/components/CharacterSheet/SavingThrows/definitions.ts @@ -1,17 +1,8 @@ -import { CharacterData, SavingThrows } from "../../../data/definitions"; -// import { CharacterData } from "../../definitions"; - -// export type SavingThrowsType = { -// deathRayOrPoison: number; -// magicWands: number; -// paralysisOrPetrify: number; -// dragonBreath: number; -// spells: number; -// }; +import { CharacterData, SavingThrowsType } from "../../../data/definitions"; export interface SavingThrowsTables { [characterClass: string]: { - [levelRange: string]: SavingThrows; + [levelRange: string]: SavingThrowsType; }; } diff --git a/src/data/classes/definitions.ts b/src/data/classes/definitions.ts index e4722f4b..ab17be41 100755 --- a/src/data/classes/definitions.ts +++ b/src/data/classes/definitions.ts @@ -1,4 +1,4 @@ -import { EquipmentItem, SavingThrows } from "../definitions"; +import { EquipmentItem, SavingThrowsType } from "../definitions"; export type ClassSetup = { attackBonus: number[]; @@ -27,7 +27,7 @@ export type ClassSetup = { name: string; noLargeEquipment?: boolean; powers?: EquipmentItem[]; - savingThrows: [number, SavingThrows][]; + savingThrows: [number, SavingThrowsType][]; savingThrowsNotes?: string[]; specialAbilities?: { titles: string[]; diff --git a/src/data/classes/index.ts b/src/data/classes/index.ts index b8e59ba9..0d6ab3e0 100755 --- a/src/data/classes/index.ts +++ b/src/data/classes/index.ts @@ -1,4 +1,4 @@ -import { DiceTypes, SavingThrows } from "../definitions"; +import { DiceTypes, SavingThrowsType } from "../definitions"; import { ClassSetup } from "./definitions"; import { fighter } from "./fighter"; import { magicUser } from "./magicUser"; @@ -60,7 +60,7 @@ const customPlaceholder: ClassSetup = { spells: 16, }, ], - ] as [number, SavingThrows][], + ] as [number, SavingThrowsType][], }; export const classes: { [key in ClassNames]: ClassSetup } = { diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 3368011d..bb87e9e7 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -69,11 +69,11 @@ export type SavingThrowsType = { spells: number; }; -export interface CollapseItem { - key: string; - label: string; - children: React.ReactNode; -} +// export interface CollapseItem { +// key: string; +// label: string; +// children: React.ReactNode; +// } export type Spell = { description: string; diff --git a/src/data/races/definitions.ts b/src/data/races/definitions.ts index c94d85ea..4e8f87b2 100755 --- a/src/data/races/definitions.ts +++ b/src/data/races/definitions.ts @@ -1,4 +1,4 @@ -import { DiceTypes, EquipmentItem, SavingThrows } from "../definitions"; +import { DiceTypes, EquipmentItem, SavingThrowsType } from "../definitions"; import { ClassNames } from "../definitions"; export interface RaceSetup { @@ -19,7 +19,7 @@ export interface RaceSetup { minimumAbilityRequirements?: Record; name: string; noLargeEquipment?: boolean; - savingThrows?: Partial; + savingThrows?: Partial; specialAbilitiesOverride?: any; uniqueAttacks?: EquipmentItem[]; } From d8c4b0a16da3ffe084184295e285732686c22555 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 16:08:33 -0400 Subject: [PATCH 36/70] cleanup --- src/components/CharacterSheet/EquipmentInfo/definitions.ts | 5 +++-- src/data/definitions.ts | 6 ------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/components/CharacterSheet/EquipmentInfo/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/definitions.ts index a886913d..7237b471 100755 --- a/src/components/CharacterSheet/EquipmentInfo/definitions.ts +++ b/src/components/CharacterSheet/EquipmentInfo/definitions.ts @@ -1,9 +1,10 @@ -import { CharacterData, CollapseItem } from "../../../data/definitions"; +import { CollapseProps } from "antd"; +import { CharacterData } from "../../../data/definitions"; export interface EquipmentInfoProps { userIsOwner: boolean; showAddEquipmentModal: () => void; showAddCustomEquipmentModal: () => void; characterData: CharacterData; - collapseItems: CollapseItem[]; + collapseItems: CollapseProps["items"]; } diff --git a/src/data/definitions.ts b/src/data/definitions.ts index bb87e9e7..45378980 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -69,12 +69,6 @@ export type SavingThrowsType = { spells: number; }; -// export interface CollapseItem { -// key: string; -// label: string; -// children: React.ReactNode; -// } - export type Spell = { description: string; duration: string; From 7bca22fa5908f5c3014648510849bc6fe7044ab7 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 21:42:22 -0400 Subject: [PATCH 37/70] tests --- src/data/equipmentItems.json | 2 +- src/data/equipmentItems.test.ts | 67 +++++++++++++++++++++++++++++++++ src/support/helpers.test.ts | 37 ++++++++++++++++-- src/support/helpers.ts | 16 +++----- 4 files changed, 108 insertions(+), 14 deletions(-) create mode 100644 src/data/equipmentItems.test.ts diff --git a/src/data/equipmentItems.json b/src/data/equipmentItems.json index 9b13b579..e2af853c 100755 --- a/src/data/equipmentItems.json +++ b/src/data/equipmentItems.json @@ -1795,7 +1795,7 @@ { "name": "Stone", "costValue": 0, - "costCurrency": "", + "costCurrency": "cp", "weight": 0.1, "damage": "1d3", "category": "ammunition", diff --git a/src/data/equipmentItems.test.ts b/src/data/equipmentItems.test.ts new file mode 100644 index 00000000..05f4f458 --- /dev/null +++ b/src/data/equipmentItems.test.ts @@ -0,0 +1,67 @@ +import equipmentItems from "./equipmentItems.json"; + +describe("equipmentItems", () => { + test("every items has a unique name", () => { + const itemNames = equipmentItems.map((item) => item.name); + const uniqueItemNames = [...new Set(itemNames)]; + expect(itemNames.length).toBe(uniqueItemNames.length); + }); + + test("every item's `costCurrency` is either 'cp', 'sp', or 'gp'", () => { + const currencies = equipmentItems.map((item) => item.costCurrency); + const uniqueCurrencies = [...new Set(currencies)].sort(); + expect(uniqueCurrencies).toEqual(["cp", "gp", "sp"]); + }); + + test("every item's `costValue` are typeof 'number' greater than -1", () => { + const values = equipmentItems.map((item) => item.costValue); + const uniqueValues = [...new Set(values)]; + expect(uniqueValues).toEqual( + expect.arrayContaining( + values.filter((value) => typeof value === "number" && value > -1) + ) + ); + }); + + test("every item's `amount` value is 1", () => { + const amounts = equipmentItems.map((item) => item.amount); + const uniqueAmounts = [...new Set(amounts)]; + expect(uniqueAmounts).toEqual([1]); + }); + + test("every item that has a `category` value of 'general-equipment' also has a `subCategory` property with a string value", () => { + const generalEquipment = equipmentItems.filter( + (item) => item.category === "general-equipment" + ); + const subCategories = generalEquipment.map((item) => item.subCategory); + expect(subCategories.length).toBe(generalEquipment.length); + expect( + subCategories.every((subCategory) => typeof subCategory === "string") + ).toBe(true); + }); + + test("every item that has a `size` property has a value of 'S', 'M', or 'L'", () => { + const sizes = equipmentItems.map((item) => item.size); + const uniqueSizes = [...new Set(sizes)].sort(); + expect(uniqueSizes).toEqual(["L", "M", "S"]); + }); + + test("every item that has a `type` property has a value of 'melee', 'missile', or 'both'", () => { + const types = equipmentItems.map((item) => item.type); + const uniqueTypes = [...new Set(types)].sort(); + expect(uniqueTypes).toEqual(["both", "melee", "missile"]); + }); + + test("every item that has a `weight` property has a value of typeof 'number' greater than -1", () => { + const weights = equipmentItems.map((item) => { + if (item.weight !== undefined) { + return item.weight; + } + return 0; + }); + const uniqueWeights = [...new Set(weights)]; + expect(uniqueWeights.every((weight) => typeof weight === "number")).toBe( + true + ); + }); +}); diff --git a/src/support/helpers.test.ts b/src/support/helpers.test.ts index 03c69321..13823ca7 100644 --- a/src/support/helpers.test.ts +++ b/src/support/helpers.test.ts @@ -1,5 +1,6 @@ import { CharacterData, ClassNames, RaceNames } from "../data/definitions"; import { + equipmentItemIsDisabled, getArmorClass, getClassType, getEnabledClasses, @@ -8,10 +9,11 @@ import { getSavingThrowsWeight, getSpecialAbilityRaceOverrides, isStandardRace, - useDebounce, + // useDebounce, } from "./helpers"; -import React, { useState, useEffect } from "react"; -import { renderHook } from "@testing-library/react"; +// import React, { useState, useEffect } from "react"; +// import { renderHook } from "@testing-library/react"; +import equipmentItems from "../data/equipmentItems.json"; let characterData: CharacterData = { savingThrows: { @@ -268,3 +270,32 @@ describe("getArmorClass", () => { ).toBe(13); }); }); + +describe("equipmentItemIsDisabled", () => { + const longbow = equipmentItems.filter((item) => item.name === "Longbow")[0]; + test("custom class has nothing disabled", () => { + expect(equipmentItemIsDisabled(["foo"], RaceNames.HUMAN, longbow)).toBe( + false + ); + }); + + test("races with `noLargeEquipment`", () => { + expect( + equipmentItemIsDisabled([ClassNames.CLERIC], RaceNames.GNOME, longbow) + ).toBe(true); + }); + + test("classes with `noLargeEquipment`", () => { + expect( + equipmentItemIsDisabled([ClassNames.SCOUT], RaceNames.HUMAN, longbow) + ).toBe(true); + }); + + test("classes with specific items restrictions (`specificEquipmentItems`)", () => { + expect( + equipmentItemIsDisabled([ClassNames.CLERIC], RaceNames.HUMAN, longbow) + ).toBe(true); + }); +}); + +// describe("getMovement", () => {}); diff --git a/src/support/helpers.ts b/src/support/helpers.ts index bf71bc93..2ea9303f 100755 --- a/src/support/helpers.ts +++ b/src/support/helpers.ts @@ -1,8 +1,4 @@ import { useEffect, useState } from "react"; -// import { -// Abilities, -// AbilityTypes, -// } from "../components/CharacterCreator/CharacterAbilities/definitions"; import { classes } from "../data/classes"; import { Abilities, @@ -14,8 +10,6 @@ import { SetCharacterData, } from "../data/definitions"; import { races } from "../data/races"; -// import { SavingThrowsType } from "../components/CharacterSheet/SavingThrows/definitions"; -// import { CharacterData, SetCharacterData } from "../components/definitions"; import equipmentItems from "../data/equipmentItems.json"; import { getCarryingCapacity } from "./formatSupport"; @@ -261,7 +255,7 @@ export const getMovement = (characterData: CharacterData) => { }; export const equipmentItemIsDisabled = ( - classNames: ClassNames[], + classNames: string[], raceName: RaceNames, item: EquipmentItem ) => { @@ -271,15 +265,17 @@ export const equipmentItemIsDisabled = ( if (races[raceName]?.noLargeEquipment && item.size === "L") return true; // Classes that do not allow large equipment if ( - classNames.some((className) => classes[className].noLargeEquipment) && + classNames.some( + (className) => classes[className as ClassNames].noLargeEquipment + ) && item.size === "L" ) { return true; } let disabled = false; classNames.forEach((className) => { - if (classes[className].specificEquipmentItems) { - const specificEquipmentItems = classes[className] + if (classes[className as ClassNames].specificEquipmentItems) { + const specificEquipmentItems = classes[className as ClassNames] .specificEquipmentItems || [[], []]; // if the item category is listed in specificEquipmentItems[0] AND the string in specificEquipmentItems[1] is not in the item name From 08b785f74bc28c101884a91babc3b72f345550cd Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 21:42:32 -0400 Subject: [PATCH 38/70] minimizing definition files --- .../AttackModal/AmmoSelect/AmmoSelect.tsx | 8 ++++++- .../AttackModal/AmmoSelect/definitions.ts | 7 ------ .../AttackButtons/AttackButtons.tsx | 12 +++++++++- .../AttackModal/AttackButtons/definitions.ts | 12 ---------- src/components/AttackModal/AttackModal.tsx | 10 ++++++++- .../RangeRadioGroup/RangeRadioGroup.tsx | 9 ++++++-- .../RangeRadioGroup/definitions.ts | 7 ------ .../WeaponTypeBoth/WeaponTypeBoth.tsx | 22 +++++++++++++++++-- .../AttackModal/WeaponTypeBoth/definitions.ts | 17 -------------- .../WeaponTypeMissile/WeaponTypeMissile.tsx | 21 +++++++++++++++++- .../WeaponTypeMissile/definitions.ts | 17 -------------- src/components/AttackModal/definitions.ts | 11 ---------- src/data/definitions.ts | 2 ++ 13 files changed, 76 insertions(+), 79 deletions(-) delete mode 100755 src/components/AttackModal/AmmoSelect/definitions.ts delete mode 100755 src/components/AttackModal/AttackButtons/definitions.ts delete mode 100755 src/components/AttackModal/RangeRadioGroup/definitions.ts delete mode 100755 src/components/AttackModal/WeaponTypeBoth/definitions.ts delete mode 100755 src/components/AttackModal/WeaponTypeMissile/definitions.ts delete mode 100644 src/components/AttackModal/definitions.ts diff --git a/src/components/AttackModal/AmmoSelect/AmmoSelect.tsx b/src/components/AttackModal/AmmoSelect/AmmoSelect.tsx index a2f5f195..5f85a786 100755 --- a/src/components/AttackModal/AmmoSelect/AmmoSelect.tsx +++ b/src/components/AttackModal/AmmoSelect/AmmoSelect.tsx @@ -1,5 +1,11 @@ import { Select } from "antd"; -import { AmmoSelectProps } from "./definitions"; +import { EquipmentItem } from "../../../data/definitions"; + +type AmmoSelectProps = { + ammo: string[] | undefined; + equipment: EquipmentItem[]; + setAmmo: (ammo: EquipmentItem) => void; +}; export default function AmmoSelect({ ammo, diff --git a/src/components/AttackModal/AmmoSelect/definitions.ts b/src/components/AttackModal/AmmoSelect/definitions.ts deleted file mode 100755 index 527bfe3c..00000000 --- a/src/components/AttackModal/AmmoSelect/definitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { EquipmentItem } from "../../../data/definitions"; - -export type AmmoSelectProps = { - ammo: string[] | undefined; - equipment: EquipmentItem[]; - setAmmo: (ammo: EquipmentItem) => void; -}; diff --git a/src/components/AttackModal/AttackButtons/AttackButtons.tsx b/src/components/AttackModal/AttackButtons/AttackButtons.tsx index 029a59a2..670113d5 100755 --- a/src/components/AttackModal/AttackButtons/AttackButtons.tsx +++ b/src/components/AttackModal/AttackButtons/AttackButtons.tsx @@ -1,6 +1,16 @@ import { Button } from "antd"; -import { AttackButtonsProps } from "./definitions"; import { useState } from "react"; +import { AttackType, EquipmentItem } from "../../../data/definitions"; + +type AttackButtonsProps = { + weapon: EquipmentItem; + damage?: (damage: string) => void; + attack: (attack: AttackType) => void; + type: AttackType; + ammo?: EquipmentItem; + isMissile?: boolean; + handleCancel: () => void; +}; export default function AttackButtons({ weapon, diff --git a/src/components/AttackModal/AttackButtons/definitions.ts b/src/components/AttackModal/AttackButtons/definitions.ts deleted file mode 100755 index 23fcb4ac..00000000 --- a/src/components/AttackModal/AttackButtons/definitions.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { EquipmentItem } from "../../../data/definitions"; -import { AttackType } from "../definitions"; - -export type AttackButtonsProps = { - weapon: EquipmentItem; - damage?: (damage: string) => void; - attack: (attack: AttackType) => void; - type: AttackType; - ammo?: EquipmentItem; - isMissile?: boolean; - handleCancel: () => void; -}; diff --git a/src/components/AttackModal/AttackModal.tsx b/src/components/AttackModal/AttackModal.tsx index 734b4b79..cfe9d251 100755 --- a/src/components/AttackModal/AttackModal.tsx +++ b/src/components/AttackModal/AttackModal.tsx @@ -9,12 +9,20 @@ import WeaponTypeMissile from "./WeaponTypeMissile/WeaponTypeMissile"; import { races } from "../../data/races"; import { classes } from "../../data/classes"; import { + AttackType, CharacterData, ClassNames, EquipmentItem, RaceNames, } from "../../data/definitions"; -import { AttackModalProps, AttackType } from "./definitions"; +import { ModalProps } from "../../modals/definitions"; + +interface AttackModalProps extends ModalProps { + isAttackModalOpen: boolean; + attackBonus: number; + weapon?: EquipmentItem; + setCharacterData: (character: CharacterData) => void; +} const roller = new DiceRoller(); diff --git a/src/components/AttackModal/RangeRadioGroup/RangeRadioGroup.tsx b/src/components/AttackModal/RangeRadioGroup/RangeRadioGroup.tsx index ee26d794..28460be9 100755 --- a/src/components/AttackModal/RangeRadioGroup/RangeRadioGroup.tsx +++ b/src/components/AttackModal/RangeRadioGroup/RangeRadioGroup.tsx @@ -1,5 +1,10 @@ -import { Radio } from "antd"; -import { RangeRadioGroupProps } from "./definitions"; +import { Radio, RadioChangeEvent } from "antd"; + +type RangeRadioGroupProps = { + missileRangeBonus: number; + handleRangeChange: (e: RadioChangeEvent) => void; + missileRangeValues: number[]; +}; export default function RangeRadioGroup({ missileRangeBonus, diff --git a/src/components/AttackModal/RangeRadioGroup/definitions.ts b/src/components/AttackModal/RangeRadioGroup/definitions.ts deleted file mode 100755 index 62dd0a2e..00000000 --- a/src/components/AttackModal/RangeRadioGroup/definitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { RadioChangeEvent } from "antd"; - -export type RangeRadioGroupProps = { - missileRangeBonus: number; - handleRangeChange: (e: RadioChangeEvent) => void; - missileRangeValues: number[]; -}; diff --git a/src/components/AttackModal/WeaponTypeBoth/WeaponTypeBoth.tsx b/src/components/AttackModal/WeaponTypeBoth/WeaponTypeBoth.tsx index 658dad60..83bdb553 100755 --- a/src/components/AttackModal/WeaponTypeBoth/WeaponTypeBoth.tsx +++ b/src/components/AttackModal/WeaponTypeBoth/WeaponTypeBoth.tsx @@ -1,8 +1,26 @@ -import { Switch } from "antd"; +import { RadioChangeEvent, Switch } from "antd"; import RangeRadioGroup from "../RangeRadioGroup/RangeRadioGroup"; -import { WeaponTypeBothProps } from "./definitions"; import AttackButtons from "../AttackButtons/AttackButtons"; import AmmoSelect from "../AmmoSelect/AmmoSelect"; +import { + AttackType, + CharacterData, + EquipmentItem, +} from "../../../data/definitions"; + +type WeaponTypeBothProps = { + handleSwitchChange: (switchChange: boolean) => void; + isMissile: boolean; + missileRangeBonus: number; + handleRangeChange: (e: RadioChangeEvent) => void; + attackingWeapon: EquipmentItem; + characterData: CharacterData | undefined; + damage: (roll: string, ammo?: string) => void; + attack: (type: AttackType) => void; + ammo: EquipmentItem | undefined; + setAmmo: React.Dispatch>; + handleCancel: () => void; +}; export default function WeaponTypeBoth({ handleSwitchChange, diff --git a/src/components/AttackModal/WeaponTypeBoth/definitions.ts b/src/components/AttackModal/WeaponTypeBoth/definitions.ts deleted file mode 100755 index eace844a..00000000 --- a/src/components/AttackModal/WeaponTypeBoth/definitions.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { RadioChangeEvent } from "antd"; -import { AttackType } from "../definitions"; -import { CharacterData, EquipmentItem } from "../../../data/definitions"; - -export type WeaponTypeBothProps = { - handleSwitchChange: (switchChange: boolean) => void; - isMissile: boolean; - missileRangeBonus: number; - handleRangeChange: (e: RadioChangeEvent) => void; - attackingWeapon: EquipmentItem; - characterData: CharacterData | undefined; - damage: (roll: string, ammo?: string) => void; - attack: (type: AttackType) => void; - ammo: EquipmentItem | undefined; - setAmmo: React.Dispatch>; - handleCancel: () => void; -}; diff --git a/src/components/AttackModal/WeaponTypeMissile/WeaponTypeMissile.tsx b/src/components/AttackModal/WeaponTypeMissile/WeaponTypeMissile.tsx index f5a4233a..05cda694 100755 --- a/src/components/AttackModal/WeaponTypeMissile/WeaponTypeMissile.tsx +++ b/src/components/AttackModal/WeaponTypeMissile/WeaponTypeMissile.tsx @@ -1,7 +1,26 @@ +import { RadioChangeEvent } from "antd"; import AmmoSelect from "../AmmoSelect/AmmoSelect"; import AttackButtons from "../AttackButtons/AttackButtons"; import RangeRadioGroup from "../RangeRadioGroup/RangeRadioGroup"; -import { WeaponTypeMissileProps } from "./definitions"; +import { + AttackType, + CharacterData, + EquipmentItem, +} from "../../../data/definitions"; + +type WeaponTypeMissileProps = { + handleSwitchChange: (switchChange: boolean) => void; + isMissile: boolean; + missileRangeBonus: number; + handleRangeChange: (e: RadioChangeEvent) => void; + attackingWeapon: EquipmentItem; + characterData: CharacterData | undefined; + damage: (roll: string, ammo?: string) => void; + attack: (type: AttackType) => void; + ammo: EquipmentItem | undefined; + setAmmo: React.Dispatch>; + handleCancel: () => void; +}; export default function WeaponTypeMissile({ missileRangeBonus, diff --git a/src/components/AttackModal/WeaponTypeMissile/definitions.ts b/src/components/AttackModal/WeaponTypeMissile/definitions.ts deleted file mode 100755 index 9387b598..00000000 --- a/src/components/AttackModal/WeaponTypeMissile/definitions.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { RadioChangeEvent } from "antd"; -import { AttackType } from "../definitions"; -import { CharacterData, EquipmentItem } from "../../../data/definitions"; - -export type WeaponTypeMissileProps = { - handleSwitchChange: (switchChange: boolean) => void; - isMissile: boolean; - missileRangeBonus: number; - handleRangeChange: (e: RadioChangeEvent) => void; - attackingWeapon: EquipmentItem; - characterData: CharacterData | undefined; - damage: (roll: string, ammo?: string) => void; - attack: (type: AttackType) => void; - ammo: EquipmentItem | undefined; - setAmmo: React.Dispatch>; - handleCancel: () => void; -}; diff --git a/src/components/AttackModal/definitions.ts b/src/components/AttackModal/definitions.ts deleted file mode 100644 index 66a656be..00000000 --- a/src/components/AttackModal/definitions.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { CharacterData, EquipmentItem } from "../../data/definitions"; -import { ModalProps } from "../../modals/definitions"; - -export type AttackType = "melee" | "missile"; - -export interface AttackModalProps extends ModalProps { - isAttackModalOpen: boolean; - attackBonus: number; - weapon?: EquipmentItem; - setCharacterData: (character: CharacterData) => void; -} diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 45378980..02e4cdd0 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -144,3 +144,5 @@ export interface CharacterDataStatePair { characterData: CharacterData; setCharacterData: SetCharacterData; } + +export type AttackType = "melee" | "missile"; From 6cddfc022d39a2e6490d47d7f46fca455d44f51b Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 21:58:29 -0400 Subject: [PATCH 39/70] minimizing definition files --- .../CharacterCard/CharacterCard.tsx | 10 ++++++- src/components/CharacterCard/definitions.ts | 9 ------- .../AbilityRoller/AbilityRoller.tsx | 13 +++++++++- .../AbilityRoller/definitions.ts | 12 --------- .../CharacterAbilities/CharacterAbilities.tsx | 10 ++++++- .../CharacterAbilities/definitions.ts | 26 ------------------- .../CharacterClass/CharacterClass.tsx | 16 ++++++++++-- .../ClassOptions/ClassOptions.tsx | 11 ++++++-- .../ClassOptions/definitions.ts | 13 ---------- .../CombinationClassOptions.tsx | 16 ++++++++++-- .../CombinationClassOptions/definitions.ts | 13 ---------- .../CustomClassInput/CustomClassInput.tsx | 8 +++++- .../CustomClassInput/definitions.ts | 8 ------ .../CustomClassStartingSpells.tsx | 5 ++-- .../CustomClassStartingSpells/definitions.ts | 6 ----- .../SpellDescriptionModal.tsx | 8 +++++- .../SpellDescriptionModal/definitions.ts | 6 ----- .../StartingSpells/StartingSpells.tsx | 18 +++++++++++-- .../StartingSpells/definitions.ts | 15 ----------- .../CharacterClass/definitions.ts | 10 ------- .../CharacterHitPoints/CharacterHitPoints.tsx | 9 +++++-- .../CustomHitPointsPicker.tsx | 14 ++++++++-- .../CustomHitPointsPicker/definitions.ts | 8 ------ .../HitPointsRoller/HitPointsRoller.tsx | 13 ++++++++-- .../HitPointsRoller/definitions.ts | 7 ----- .../CharacterHitPoints/definitions.ts | 3 --- .../AvatarPicker/AvatarPicker.tsx | 9 ++++++- .../CharacterName/AvatarPicker/definitions.ts | 8 ------ .../CharacterName/CharacterName.tsx | 3 ++- .../CharacterName/definitions.ts | 3 --- .../CharacterRace/CharacterRace.tsx | 8 ++++-- .../CharacterRace/RaceOptions/RaceOptions.tsx | 16 ++++++++++-- .../CharacterRace/RaceOptions/definitions.ts | 10 ------- .../CharacterRace/definitions.ts | 6 ----- .../DescriptionBubble/DescriptionBubble.tsx | 8 +++--- .../DescriptionBubble/definitions.ts | 4 --- src/data/definitions.ts | 6 +++++ 37 files changed, 171 insertions(+), 197 deletions(-) delete mode 100755 src/components/CharacterCard/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterAbilities/AbilityRoller/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterAbilities/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterClass/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterHitPoints/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterName/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts delete mode 100755 src/components/CharacterCreator/CharacterRace/definitions.ts delete mode 100755 src/components/CharacterCreator/DescriptionBubble/definitions.ts diff --git a/src/components/CharacterCard/CharacterCard.tsx b/src/components/CharacterCard/CharacterCard.tsx index ffde6aec..f957248f 100755 --- a/src/components/CharacterCard/CharacterCard.tsx +++ b/src/components/CharacterCard/CharacterCard.tsx @@ -4,8 +4,16 @@ import { UserOutlined, } from "@ant-design/icons"; import { Avatar, Card, Popconfirm } from "antd"; -import { CharacterCardProps } from "./definitions"; import { useNavigate } from "react-router-dom"; +import { CharacterData } from "../../data/definitions"; +import { User } from "firebase/auth"; + +type CharacterCardProps = { + characterData: CharacterData; + user: User | null; + image: string; + confirm: (characterId: string) => Promise; +}; export default function CharacterCard({ characterData, diff --git a/src/components/CharacterCard/definitions.ts b/src/components/CharacterCard/definitions.ts deleted file mode 100755 index 301db849..00000000 --- a/src/components/CharacterCard/definitions.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { User } from "firebase/auth"; -import { CharacterData } from "../../data/definitions"; - -export type CharacterCardProps = { - characterData: CharacterData; - user: User | null; - image: string; - confirm: (characterId: string) => Promise; -}; diff --git a/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/AbilityRoller.tsx b/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/AbilityRoller.tsx index 02d9cd3f..172ef443 100755 --- a/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/AbilityRoller.tsx +++ b/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/AbilityRoller.tsx @@ -1,5 +1,16 @@ -import { AbilityRollerProps } from "./definitions"; import { Space, InputNumber, Button } from "antd"; +import { AbilityRecord } from "../../../../data/definitions"; + +type AbilityRollerProps = { + rollDice: () => any; + abilityValue: number; + getModifier: (score: number) => string; + updateCharacterData: ( + scores: Record, + modifiers: Record + ) => void; + record: AbilityRecord; +}; export default function AbilityRoller({ rollDice, diff --git a/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/definitions.ts b/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/definitions.ts deleted file mode 100755 index 0d396401..00000000 --- a/src/components/CharacterCreator/CharacterAbilities/AbilityRoller/definitions.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { AbilityRecord } from "../definitions"; - -export type AbilityRollerProps = { - rollDice: () => any; - abilityValue: number; - getModifier: (score: number) => string; - updateCharacterData: ( - scores: Record, - modifiers: Record - ) => void; - record: AbilityRecord; -}; diff --git a/src/components/CharacterCreator/CharacterAbilities/CharacterAbilities.tsx b/src/components/CharacterCreator/CharacterAbilities/CharacterAbilities.tsx index f0cd5fc5..37b44346 100755 --- a/src/components/CharacterCreator/CharacterAbilities/CharacterAbilities.tsx +++ b/src/components/CharacterCreator/CharacterAbilities/CharacterAbilities.tsx @@ -1,7 +1,15 @@ import { Button, Table } from "antd"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; -import { AbilityRecord, CharAbilityScoreStepProps } from "./definitions"; import AbilityRoller from "./AbilityRoller/AbilityRoller"; +import { + AbilityRecord, + CharacterDataStatePair, +} from "../../../data/definitions"; + +interface CharAbilityScoreStepProps extends CharacterDataStatePair { + setComboClass: (comboClass: boolean) => void; + setCheckedClasses: (checkedClasses: string[]) => void; +} const getModifier = (score: number): string => { const modifierMapping: Record = { diff --git a/src/components/CharacterCreator/CharacterAbilities/definitions.ts b/src/components/CharacterCreator/CharacterAbilities/definitions.ts deleted file mode 100755 index f61263fa..00000000 --- a/src/components/CharacterCreator/CharacterAbilities/definitions.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { CharacterDataStatePair } from "../../../data/definitions"; - -export interface CharAbilityScoreStepProps extends CharacterDataStatePair { - setComboClass: (comboClass: boolean) => void; - setCheckedClasses: (checkedClasses: string[]) => void; -} - -export interface AbilityRecord { - key: string; - ability: string; - score: number; -} - -// export interface AbilityTypes { -// strength: number | string; -// intelligence: number | string; -// wisdom: number | string; -// dexterity: number | string; -// constitution: number | string; -// charisma: number | string; -// } - -// export interface Abilities { -// scores: AbilityTypes; -// modifiers: AbilityTypes; -// } diff --git a/src/components/CharacterCreator/CharacterClass/CharacterClass.tsx b/src/components/CharacterCreator/CharacterClass/CharacterClass.tsx index d406ec25..f420d5eb 100755 --- a/src/components/CharacterCreator/CharacterClass/CharacterClass.tsx +++ b/src/components/CharacterCreator/CharacterClass/CharacterClass.tsx @@ -1,6 +1,5 @@ import { useEffect, useState } from "react"; import { Switch } from "antd"; -import { CharacterClassProps } from "./definitions"; import { getClassType } from "../../../support/helpers"; import { races } from "../../../data/races"; import { classes } from "../../../data/classes"; @@ -10,7 +9,20 @@ import CustomClassInput from "./CustomClassInput/CustomClassInput"; import CustomClassStartingSpells from "./CustomClassStartingSpells/CustomClassStartingSpells"; import ClassOptions from "./ClassOptions/ClassOptions"; import CombinationClassOptions from "./CombinationClassOptions/CombinationClassOptions"; -import { ClassNames } from "../../../data/definitions"; +import { + CharacterDataStatePair, + ClassNames, + Spell, +} from "../../../data/definitions"; + +interface CharacterClassProps extends CharacterDataStatePair { + comboClass: boolean; + setComboClass: (comboClass: boolean) => void; + checkedClasses: string[]; + setCheckedClasses: (checkedClasses: string[]) => void; + selectedSpell: Spell | null; + setSelectedSpell: (spell: Spell | null) => void; +} export default function CharacterClass({ characterData, diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx index 7d0b6319..c348d78a 100755 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx +++ b/src/components/CharacterCreator/CharacterClass/ClassOptions/ClassOptions.tsx @@ -1,12 +1,19 @@ import { Radio, RadioChangeEvent, Space } from "antd"; import { classes } from "../../../../data/classes"; -import { ClassOptionsProps } from "./definitions"; import DescriptionBubble from "../../DescriptionBubble/DescriptionBubble"; import { getClassType, getEnabledClasses } from "../../../../support/helpers"; import spellsData from "../../../../data/spells.json"; -import { ClassNames, RaceNames, Spell } from "../../../../data/definitions"; +import { CharacterData, ClassNames, RaceNames, SetCharacterData, Spell } from "../../../../data/definitions"; import classNames from "classnames"; +type ClassOptionsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + customClassInput: string; + setShowCustomClassInput: (showCustomClassInput: boolean) => void; + setSelectedSpell: (spell: Spell | null) => void; +}; + export default function ClassOptions({ characterData, setCharacterData, diff --git a/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts b/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts deleted file mode 100755 index 27399a7f..00000000 --- a/src/components/CharacterCreator/CharacterClass/ClassOptions/definitions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - CharacterData, - SetCharacterData, - Spell, -} from "../../../../data/definitions"; - -export type ClassOptionsProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - customClassInput: string; - setShowCustomClassInput: (showCustomClassInput: boolean) => void; - setSelectedSpell: (spell: Spell | null) => void; -}; diff --git a/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/CombinationClassOptions.tsx b/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/CombinationClassOptions.tsx index b7325a05..90143c3e 100755 --- a/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/CombinationClassOptions.tsx +++ b/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/CombinationClassOptions.tsx @@ -1,9 +1,21 @@ import { Checkbox } from "antd"; import { classes } from "../../../../data/classes"; -import { CombinationClassOptionsProps } from "./definitions"; import { races } from "../../../../data/races"; import { CheckboxChangeEvent } from "antd/es/checkbox"; -import { ClassNames } from "../../../../data/definitions"; +import { + CharacterData, + ClassNames, + RaceNames, + SetCharacterData, +} from "../../../../data/definitions"; + +type CombinationClassOptionsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + checkedClasses: string[]; + setCheckedClasses: (checkedClasses: string[]) => void; + raceKey: RaceNames; +}; export default function CombinationClassOptions({ characterData, diff --git a/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts b/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts deleted file mode 100755 index fefc5dfa..00000000 --- a/src/components/CharacterCreator/CharacterClass/CombinationClassOptions/definitions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - CharacterData, - RaceNames, - SetCharacterData, -} from "../../../../data/definitions"; - -export type CombinationClassOptionsProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - checkedClasses: string[]; - setCheckedClasses: (checkedClasses: string[]) => void; - raceKey: RaceNames; -}; diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassInput/CustomClassInput.tsx b/src/components/CharacterCreator/CharacterClass/CustomClassInput/CustomClassInput.tsx index 7bc8a105..56838d15 100755 --- a/src/components/CharacterCreator/CharacterClass/CustomClassInput/CustomClassInput.tsx +++ b/src/components/CharacterCreator/CharacterClass/CustomClassInput/CustomClassInput.tsx @@ -1,11 +1,17 @@ import { ChangeEvent, MouseEvent, useEffect } from "react"; import HomebrewWarning from "../../../HomebrewWarning/HomebrewWarning"; -import { CustomClassInputProps } from "./definitions"; import DOMPurify from "dompurify"; import { Input } from "antd"; import { useDebounce } from "../../../../support/helpers"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; // TODO: Look into component rerendering as a cause for how long it takes to type in this field +type CustomClassInputProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + customClassInput: string; + setCustomClassInput: (customClassInput: string) => void; +}; export default function CustomClassInput({ characterData, diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts b/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts deleted file mode 100755 index 2c7dfdea..00000000 --- a/src/components/CharacterCreator/CharacterClass/CustomClassInput/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../../data/definitions"; - -export type CustomClassInputProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - customClassInput: string; - setCustomClassInput: (customClassInput: string) => void; -}; diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx index c9411852..43f3eb7c 100755 --- a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx +++ b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/CustomClassStartingSpells.tsx @@ -1,8 +1,9 @@ import { Checkbox, Typography } from "antd"; -import { CustomClassStartingSpellsProps } from "./definitions"; import { CheckboxChangeEvent } from "antd/es/checkbox"; import spellsData from "../../../../data/spells.json"; -import { Spell } from "../../../../data/definitions"; +import { CharacterDataStatePair, Spell } from "../../../../data/definitions"; + +interface CustomClassStartingSpellsProps extends CharacterDataStatePair {} export default function CustomClassStartingSpells({ characterData, diff --git a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts b/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts deleted file mode 100755 index c274ee04..00000000 --- a/src/components/CharacterCreator/CharacterClass/CustomClassStartingSpells/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../../data/definitions"; - -export type CustomClassStartingSpellsProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; -}; diff --git a/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/SpellDescriptionModal.tsx b/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/SpellDescriptionModal.tsx index 53ae16b1..e376b77c 100755 --- a/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/SpellDescriptionModal.tsx +++ b/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/SpellDescriptionModal.tsx @@ -1,7 +1,13 @@ import { Modal } from "antd"; -import { SpellDescriptionModalProps } from "./definitions"; import CloseIcon from "../../../CloseIcon/CloseIcon"; +type SpellDescriptionModalProps = { + title: string; + isModalOpen: boolean; + setIsModalOpen: (isModalOpen: boolean) => void; + description: string; +}; + export default function SpellDescriptionModal({ title, isModalOpen, diff --git a/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/definitions.ts b/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/definitions.ts deleted file mode 100755 index 77d90aee..00000000 --- a/src/components/CharacterCreator/CharacterClass/SpellDescriptionModal/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type SpellDescriptionModalProps = { - title: string; - isModalOpen: boolean; - setIsModalOpen: (isModalOpen: boolean) => void; - description: string; -}; diff --git a/src/components/CharacterCreator/CharacterClass/StartingSpells/StartingSpells.tsx b/src/components/CharacterCreator/CharacterClass/StartingSpells/StartingSpells.tsx index 9f0d68bb..ab600c6f 100755 --- a/src/components/CharacterCreator/CharacterClass/StartingSpells/StartingSpells.tsx +++ b/src/components/CharacterCreator/CharacterClass/StartingSpells/StartingSpells.tsx @@ -1,10 +1,24 @@ import { Button, Radio, RadioChangeEvent, Typography } from "antd"; -import { StartingSpellsProps } from "./definitions"; import { InfoCircleOutlined } from "@ant-design/icons"; import { marked } from "marked"; import spellsJson from "../../../../data/spells.json"; import { classes } from "../../../../data/classes"; -import { ClassNames } from "../../../../data/definitions"; +import { + CharacterData, + ClassNames, + SetCharacterData, + Spell, +} from "../../../../data/definitions"; + +type StartingSpellsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + selectedSpell: Spell | null; + setSelectedSpell: (spell: Spell | null) => void; + setModalName: (modalName: string) => void; + setModalDescription: (modalDescription: string) => void; + setIsModalOpen: (isModalOpen: boolean) => void; +}; const readMagicSpell = spellsJson.filter( (spell) => spell.name === "Read Magic" diff --git a/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts b/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts deleted file mode 100755 index 9549b814..00000000 --- a/src/components/CharacterCreator/CharacterClass/StartingSpells/definitions.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - CharacterData, - SetCharacterData, - Spell, -} from "../../../../data/definitions"; - -export type StartingSpellsProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - selectedSpell: Spell | null; - setSelectedSpell: (spell: Spell | null) => void; - setModalName: (modalName: string) => void; - setModalDescription: (modalDescription: string) => void; - setIsModalOpen: (isModalOpen: boolean) => void; -}; diff --git a/src/components/CharacterCreator/CharacterClass/definitions.ts b/src/components/CharacterCreator/CharacterClass/definitions.ts deleted file mode 100755 index 33b8c034..00000000 --- a/src/components/CharacterCreator/CharacterClass/definitions.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CharacterDataStatePair, Spell } from "../../../data/definitions"; - -export interface CharacterClassProps extends CharacterDataStatePair { - comboClass: boolean; - setComboClass: (comboClass: boolean) => void; - checkedClasses: string[]; - setCheckedClasses: (checkedClasses: string[]) => void; - selectedSpell: Spell | null; - setSelectedSpell: (spell: Spell | null) => void; -} diff --git a/src/components/CharacterCreator/CharacterHitPoints/CharacterHitPoints.tsx b/src/components/CharacterCreator/CharacterHitPoints/CharacterHitPoints.tsx index 8e18a615..5c2e5ee3 100755 --- a/src/components/CharacterCreator/CharacterHitPoints/CharacterHitPoints.tsx +++ b/src/components/CharacterCreator/CharacterHitPoints/CharacterHitPoints.tsx @@ -1,15 +1,20 @@ import { useEffect, useState } from "react"; import { Divider } from "antd"; -import { CharacterHitPointsProps } from "./definitions"; import HomebrewWarning from "../../HomebrewWarning/HomebrewWarning"; import { getClassType } from "../../../support/helpers"; import { classes } from "../../../data/classes"; import { races } from "../../../data/races"; import HitPointsRoller from "./HitPointsRoller/HitPointsRoller"; import CustomHitPointsPicker from "./CustomHitPointsPicker/CustomHitPointsPicker"; -import { ClassNames, RaceNames } from "../../../data/definitions"; +import { + CharacterDataStatePair, + ClassNames, + RaceNames, +} from "../../../data/definitions"; import { DiceTypes } from "../../../data/definitions"; +interface CharacterHitPointsProps extends CharacterDataStatePair {} + export default function CharacterHitPoints({ characterData, setCharacterData, diff --git a/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/CustomHitPointsPicker.tsx b/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/CustomHitPointsPicker.tsx index f5540f93..6fc831b1 100755 --- a/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/CustomHitPointsPicker.tsx +++ b/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/CustomHitPointsPicker.tsx @@ -1,6 +1,16 @@ -import { CustomHitPointsPickerProps } from "./definitions"; import { Radio, RadioChangeEvent } from "antd"; -import { DiceTypes } from "../../../../data/definitions"; +import { + CharacterData, + DiceTypes, + SetCharacterData, +} from "../../../../data/definitions"; + +type CustomHitPointsPickerProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + customHitDice: string; + setCustomHitDice: (customHitDice: string) => void; +}; export default function CustomHitPointsPicker({ characterData, diff --git a/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts b/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts deleted file mode 100755 index 95c6eb29..00000000 --- a/src/components/CharacterCreator/CharacterHitPoints/CustomHitPointsPicker/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../../data/definitions"; - -export type CustomHitPointsPickerProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - customHitDice: string; - setCustomHitDice: (customHitDice: string) => void; -}; diff --git a/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/HitPointsRoller.tsx b/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/HitPointsRoller.tsx index 185942ec..b1823c8f 100755 --- a/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/HitPointsRoller.tsx +++ b/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/HitPointsRoller.tsx @@ -1,8 +1,17 @@ import { useState, useEffect } from "react"; -import { HitPointsRollerProps } from "./definitions"; import { Button, InputNumber, Space } from "antd"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; -import { ClassNames } from "../../../../data/definitions"; +import { + CharacterData, + ClassNames, + SetCharacterData, +} from "../../../../data/definitions"; + +type HitPointsRollerProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + customHitDice: string; +}; const roller = new DiceRoller(); diff --git a/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts b/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts deleted file mode 100755 index bc18d798..00000000 --- a/src/components/CharacterCreator/CharacterHitPoints/HitPointsRoller/definitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../../data/definitions"; - -export type HitPointsRollerProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - customHitDice: string; -}; diff --git a/src/components/CharacterCreator/CharacterHitPoints/definitions.ts b/src/components/CharacterCreator/CharacterHitPoints/definitions.ts deleted file mode 100755 index a3e2dd23..00000000 --- a/src/components/CharacterCreator/CharacterHitPoints/definitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { CharacterDataStatePair } from "../../../data/definitions"; - -export interface CharacterHitPointsProps extends CharacterDataStatePair {} diff --git a/src/components/CharacterCreator/CharacterName/AvatarPicker/AvatarPicker.tsx b/src/components/CharacterCreator/CharacterName/AvatarPicker/AvatarPicker.tsx index 9660e55e..d7ffa908 100755 --- a/src/components/CharacterCreator/CharacterName/AvatarPicker/AvatarPicker.tsx +++ b/src/components/CharacterCreator/CharacterName/AvatarPicker/AvatarPicker.tsx @@ -1,6 +1,13 @@ -import { AvatarPickerProps } from "./definitions"; +import { CharacterData, SetCharacterData } from "../../../../data/definitions"; import { Radio, Typography, RadioChangeEvent } from "antd"; +type AvatarPickerProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + imageSource: number; + setImageSource: (imageSource: number) => void; +}; + export default function AvatarPicker({ characterData, setCharacterData, diff --git a/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts b/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts deleted file mode 100755 index de91cedb..00000000 --- a/src/components/CharacterCreator/CharacterName/AvatarPicker/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../../data/definitions"; - -export type AvatarPickerProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - imageSource: number; - setImageSource: (imageSource: number) => void; -}; diff --git a/src/components/CharacterCreator/CharacterName/CharacterName.tsx b/src/components/CharacterCreator/CharacterName/CharacterName.tsx index d3568bd1..6910c391 100755 --- a/src/components/CharacterCreator/CharacterName/CharacterName.tsx +++ b/src/components/CharacterCreator/CharacterName/CharacterName.tsx @@ -6,11 +6,12 @@ import type { UploadFile } from "antd/es/upload/interface"; import { storage, ref, uploadBytes } from "../../../firebase"; import { getDownloadURL } from "firebase/storage"; import { images } from "../../../assets/images/faces/imageAssets"; -import { CharacterNameProps } from "./definitions"; import DOMPurify from "dompurify"; import AvatarPicker from "./AvatarPicker/AvatarPicker"; import { CharacterDataStatePair } from "../../../data/definitions"; +interface CharacterNameProps extends CharacterDataStatePair {} + const StockAvatars = ({ setCharacterData, characterData, diff --git a/src/components/CharacterCreator/CharacterName/definitions.ts b/src/components/CharacterCreator/CharacterName/definitions.ts deleted file mode 100755 index 3ea2a37a..00000000 --- a/src/components/CharacterCreator/CharacterName/definitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { CharacterDataStatePair } from "../../../data/definitions"; - -export interface CharacterNameProps extends CharacterDataStatePair {} diff --git a/src/components/CharacterCreator/CharacterRace/CharacterRace.tsx b/src/components/CharacterCreator/CharacterRace/CharacterRace.tsx index 76aded33..f404f8ba 100755 --- a/src/components/CharacterCreator/CharacterRace/CharacterRace.tsx +++ b/src/components/CharacterCreator/CharacterRace/CharacterRace.tsx @@ -1,12 +1,16 @@ import { Input } from "antd"; -import { CharacterRaceProps } from "./definitions"; import { ChangeEvent, useState, useEffect, MouseEvent } from "react"; import HomebrewWarning from "../../HomebrewWarning/HomebrewWarning"; import DOMPurify from "dompurify"; import DescriptionBubble from "../DescriptionBubble/DescriptionBubble"; import { races } from "../../../data/races"; import RaceOptions from "./RaceOptions/RaceOptions"; -import { RaceNames } from "../../../data/definitions"; +import { CharacterDataStatePair, RaceNames } from "../../../data/definitions"; + +interface CharacterRaceProps extends CharacterDataStatePair { + setComboClass: (comboxClass: boolean) => void; + setCheckedClasses: (checkedClasses: string[]) => void; +} export default function CharacterRace({ characterData, diff --git a/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx b/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx index 5405f4fa..dd1cf14f 100755 --- a/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx +++ b/src/components/CharacterCreator/CharacterRace/RaceOptions/RaceOptions.tsx @@ -1,11 +1,23 @@ -import { RaceOptionsProps } from "./definitions"; import { isStandardRace } from "../../../../support/helpers"; import type { RadioChangeEvent } from "antd"; import { Radio } from "antd"; import { races } from "../../../../data/races"; -import { RaceNames } from "../../../../data/definitions"; +import { + CharacterData, + RaceNames, + SetCharacterData, +} from "../../../../data/definitions"; import classNames from "classnames"; +type RaceOptionsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + setComboClass: (comboClass: boolean) => void; + setShowCustomRaceInput: (showCustomRaceInput: boolean) => void; + setCheckedClasses: (checkedClasses: string[]) => void; + customRaceInput: string; +}; + export default function RaceOptions({ characterData, setCharacterData, diff --git a/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts b/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts deleted file mode 100755 index a4fa6476..00000000 --- a/src/components/CharacterCreator/CharacterRace/RaceOptions/definitions.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../../data/definitions"; - -export type RaceOptionsProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - setComboClass: (comboClass: boolean) => void; - setShowCustomRaceInput: (showCustomRaceInput: boolean) => void; - setCheckedClasses: (checkedClasses: string[]) => void; - customRaceInput: string; -}; diff --git a/src/components/CharacterCreator/CharacterRace/definitions.ts b/src/components/CharacterCreator/CharacterRace/definitions.ts deleted file mode 100755 index 19afe7b7..00000000 --- a/src/components/CharacterCreator/CharacterRace/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { CharacterDataStatePair } from "../../../data/definitions"; - -export interface CharacterRaceProps extends CharacterDataStatePair { - setComboClass: (comboxClass: boolean) => void; - setCheckedClasses: (checkedClasses: string[]) => void; -} diff --git a/src/components/CharacterCreator/DescriptionBubble/DescriptionBubble.tsx b/src/components/CharacterCreator/DescriptionBubble/DescriptionBubble.tsx index 4a5feb4f..463a9563 100755 --- a/src/components/CharacterCreator/DescriptionBubble/DescriptionBubble.tsx +++ b/src/components/CharacterCreator/DescriptionBubble/DescriptionBubble.tsx @@ -1,10 +1,12 @@ import { Card, Switch, Typography } from "antd"; -import { DescriptionBubbleProps } from "./definitions"; import classNames from "classnames"; import { marked } from "marked"; import { classes } from "../../../data/classes"; -import { CheckOutlined, CloseOutlined } from "@ant-design/icons"; -import HomebrewWarning from "../../HomebrewWarning/HomebrewWarning"; + +type DescriptionBubbleProps = { + description: string; + title?: string; +}; export default function DescriptionBubble({ description, diff --git a/src/components/CharacterCreator/DescriptionBubble/definitions.ts b/src/components/CharacterCreator/DescriptionBubble/definitions.ts deleted file mode 100755 index 635a62e4..00000000 --- a/src/components/CharacterCreator/DescriptionBubble/definitions.ts +++ /dev/null @@ -1,4 +0,0 @@ -export type DescriptionBubbleProps = { - description: string; - title?: string; -}; diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 02e4cdd0..d8a2ab81 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -146,3 +146,9 @@ export interface CharacterDataStatePair { } export type AttackType = "melee" | "missile"; + +export type AbilityRecord = { + key: string; + ability: string; + score: number; +}; From 84b502a38f1d52e991dc994475dba7dfb8824067 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 22:16:36 -0400 Subject: [PATCH 40/70] definition consolidation --- .../CharacterSheet/Abilities/Abilities.tsx | 6 +++++- .../CharacterSheet/Abilities/definitions.ts | 5 ----- .../CharacterSheet/AttackBonus/AttackBonus.tsx | 8 ++++++-- .../CharacterSheet/AttackBonus/definitions.ts | 6 ------ .../CharacterSheet/BaseStats/BaseStats.tsx | 15 +++++++++++++-- .../ExperiencePoints/ExperiencePoints.tsx | 14 ++++++++++++-- .../BaseStats/ExperiencePoints/definitions.ts | 8 -------- .../CharacterSheet/BaseStats/definitions.ts | 8 -------- .../DescriptionFieldButton.tsx | 7 ++++++- .../DescriptionFieldButton/definitions.ts | 6 ------ 10 files changed, 42 insertions(+), 41 deletions(-) delete mode 100755 src/components/CharacterSheet/Abilities/definitions.ts delete mode 100755 src/components/CharacterSheet/AttackBonus/definitions.ts delete mode 100755 src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts delete mode 100755 src/components/CharacterSheet/BaseStats/definitions.ts delete mode 100644 src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/definitions.ts diff --git a/src/components/CharacterSheet/Abilities/Abilities.tsx b/src/components/CharacterSheet/Abilities/Abilities.tsx index c3c67791..10c849f3 100755 --- a/src/components/CharacterSheet/Abilities/Abilities.tsx +++ b/src/components/CharacterSheet/Abilities/Abilities.tsx @@ -1,6 +1,10 @@ import { toTitleCase } from "../../../support/stringSupport"; import { Table, Typography } from "antd"; -import { AbilitiesProps } from "./definitions"; +import { CharacterData } from "../../../data/definitions"; + +type AbilitiesProps = { + characterData: CharacterData; +}; export default function Abilities({ characterData }: AbilitiesProps) { const columns = [ diff --git a/src/components/CharacterSheet/Abilities/definitions.ts b/src/components/CharacterSheet/Abilities/definitions.ts deleted file mode 100755 index b2f13305..00000000 --- a/src/components/CharacterSheet/Abilities/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../data/definitions"; - -export interface AbilitiesProps { - characterData: CharacterData; -} diff --git a/src/components/CharacterSheet/AttackBonus/AttackBonus.tsx b/src/components/CharacterSheet/AttackBonus/AttackBonus.tsx index 8a789335..5eafb553 100755 --- a/src/components/CharacterSheet/AttackBonus/AttackBonus.tsx +++ b/src/components/CharacterSheet/AttackBonus/AttackBonus.tsx @@ -1,8 +1,12 @@ import { Table, Typography } from "antd"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; -import { AttackBonusProps } from "./definitions"; import { getClassType } from "../../../support/helpers"; -import { RaceNames } from "../../../data/definitions"; +import { CharacterData, RaceNames } from "../../../data/definitions"; + +type AttackBonusProps = { + attackBonus: number; + characterData: CharacterData; +}; export default function AttackBonus({ characterData, diff --git a/src/components/CharacterSheet/AttackBonus/definitions.ts b/src/components/CharacterSheet/AttackBonus/definitions.ts deleted file mode 100755 index dde3b441..00000000 --- a/src/components/CharacterSheet/AttackBonus/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { CharacterData } from "../../../data/definitions"; - -export interface AttackBonusProps { - attackBonus: number; - characterData: CharacterData; -} diff --git a/src/components/CharacterSheet/BaseStats/BaseStats.tsx b/src/components/CharacterSheet/BaseStats/BaseStats.tsx index 488cbcc6..fe57dfb3 100755 --- a/src/components/CharacterSheet/BaseStats/BaseStats.tsx +++ b/src/components/CharacterSheet/BaseStats/BaseStats.tsx @@ -1,7 +1,6 @@ import { Avatar, Descriptions, Divider, Modal, Typography } from "antd"; import { UserOutlined } from "@ant-design/icons"; import ExperiencePoints from "./ExperiencePoints/ExperiencePoints"; -import { BaseStatsProps } from "./definitions"; import { extractImageName } from "../../../support/stringSupport"; import { images } from "../../../assets/images/faces/imageAssets"; import classNames from "classnames"; @@ -9,10 +8,22 @@ import { ReactNode, useState } from "react"; import { marked } from "marked"; import { isStandardClass, isStandardRace } from "../../../support/helpers"; import { classes } from "../../../data/classes"; -import { ClassNames, RaceNames } from "../../../data/definitions"; +import { + CharacterData, + ClassNames, + RaceNames, + SetCharacterData, +} from "../../../data/definitions"; import CloseIcon from "../../CloseIcon/CloseIcon"; import { races } from "../../../data/races"; +type BaseStatsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + userIsOwner?: boolean; + showLevelUpModal?: () => void; +}; + export default function BaseStats({ characterData, setCharacterData, diff --git a/src/components/CharacterSheet/BaseStats/ExperiencePoints/ExperiencePoints.tsx b/src/components/CharacterSheet/BaseStats/ExperiencePoints/ExperiencePoints.tsx index 500d9a70..405e2ebe 100755 --- a/src/components/CharacterSheet/BaseStats/ExperiencePoints/ExperiencePoints.tsx +++ b/src/components/CharacterSheet/BaseStats/ExperiencePoints/ExperiencePoints.tsx @@ -4,11 +4,21 @@ import { doc, updateDoc } from "firebase/firestore"; import { db } from "../../../../firebase"; import { useParams } from "react-router-dom"; import HelpTooltip from "../../../HelpTooltip/HelpTooltip"; -import { ExperiencePointsProps } from "./definitions"; import { classes } from "../../../../data/classes"; -import { ClassNames } from "../../../../data/definitions"; +import { + CharacterData, + ClassNames, + SetCharacterData, +} from "../../../../data/definitions"; import classNames from "classnames"; +type ExperiencePointsProps = { + characterData: CharacterData; + setCharacterData?: SetCharacterData; + userIsOwner?: boolean; + showLevelUpModal?: () => void; +}; + export default function ExperiencePoints({ characterData, setCharacterData, diff --git a/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts b/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts deleted file mode 100755 index 85c774f6..00000000 --- a/src/components/CharacterSheet/BaseStats/ExperiencePoints/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData } from "../../../../data/definitions"; - -export interface ExperiencePointsProps { - characterData: CharacterData; - setCharacterData?: (character: CharacterData) => void; - userIsOwner?: boolean; - showLevelUpModal?: () => void; -} diff --git a/src/components/CharacterSheet/BaseStats/definitions.ts b/src/components/CharacterSheet/BaseStats/definitions.ts deleted file mode 100755 index 3248a087..00000000 --- a/src/components/CharacterSheet/BaseStats/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../data/definitions"; - -export interface BaseStatsProps { - characterData: CharacterData; - setCharacterData: SetCharacterData; - userIsOwner?: boolean; - showLevelUpModal?: () => void; -} diff --git a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx index c2b1a6cb..38032086 100644 --- a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx +++ b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/DescriptionFieldButton.tsx @@ -1,6 +1,11 @@ import classNames from "classnames"; -import { DescriptionFieldButtonProps } from "./definitions"; import { Button, Tooltip } from "antd"; +import { ReactNode } from "react"; + +type DescriptionFieldButtonProps = { + handler: (event: React.MouseEvent) => void; + icon: ReactNode; +}; // Button component for adding and deleting text fields export default function DescriptionFieldButton({ diff --git a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/definitions.ts b/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/definitions.ts deleted file mode 100644 index 88a7adb5..00000000 --- a/src/components/CharacterSheet/CharacterDescription/DescriptionFieldButton/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReactNode } from "react"; - -export type DescriptionFieldButtonProps = { - handler: (event: React.MouseEvent) => void; - icon: ReactNode; -}; From a96e6ef1526faa8bafeed4cba71547a261d0a936 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 22:55:06 -0400 Subject: [PATCH 41/70] deps bump --- package-lock.json | 68 +++++++++++++++++++++++------------------------ package.json | 12 ++++----- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 08de112e..d60b9126 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,26 +1,26 @@ { "name": "codex-quest", - "version": "1.15.0.0", + "version": "1.16.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codex-quest", - "version": "1.15.0.0", + "version": "1.16.0.0", "license": "CC BY-SA 4.0", "dependencies": { "@ant-design/icons": "^5.2.6", "@dice-roller/rpg-dice-roller": "^5.4.1", - "antd": "^5.9.3", + "antd": "^5.9.4", "classnames": "^2.3.2", - "dompurify": "^3.0.5", + "dompurify": "^3.0.6", "firebase": "^10.4.0", - "firebase-admin": "^11.10.1", + "firebase-admin": "^11.11.0", "marked": "^9.0.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.16.0", - "web-vitals": "^3.4.0" + "web-vitals": "^3.5.0" }, "devDependencies": { "@testing-library/dom": "^9.3.3", @@ -29,7 +29,7 @@ "@types/dompurify": "^3.0.3", "@types/jest": "^29.5.5", "@types/marked": "^5.0.2", - "@types/node": "^20.7.0", + "@types/node": "^20.7.2", "@types/react": "^18.2.23", "@types/react-dom": "^18.2.8", "@vitejs/plugin-react": "^4.1.0", @@ -37,7 +37,7 @@ "husky": "^8.0.3", "jest": "^29.7.0", "lint-staged": "^14.0.1", - "postcss": "^8.4.30", + "postcss": "^8.4.31", "prettier": "^3.0.3", "tailwindcss": "^3.3.3", "ts-jest": "^29.1.1", @@ -3123,9 +3123,9 @@ "optional": true }, "node_modules/@types/node": { - "version": "20.7.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.0.tgz", - "integrity": "sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==" + "version": "20.8.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", + "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==" }, "node_modules/@types/prop-types": { "version": "15.7.6", @@ -3327,9 +3327,9 @@ } }, "node_modules/antd": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.9.3.tgz", - "integrity": "sha512-a7gY6hfsjoDLOENHKzjXZgmAxi1hDdsuIvYm6YMTctb08EhTEXCZoeFOekwz9S0vrTcdSpUMblRWsiwuYRdPYg==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.9.4.tgz", + "integrity": "sha512-eyNn1C/Q9ESn4ktfTlRIIXBbWT5L/Rr38xP37dIvJ3FeD/a4vaVcMqqLz5ywwMPKxgWnuUxggo1mJwWdPoIdSg==", "dependencies": { "@ant-design/colors": "^7.0.0", "@ant-design/cssinjs": "^1.16.0", @@ -3369,7 +3369,7 @@ "rc-slider": "~10.2.1", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.34.0", + "rc-table": "~7.34.4", "rc-tabs": "~12.12.1", "rc-textarea": "~1.4.0", "rc-tooltip": "~6.0.1", @@ -4354,9 +4354,9 @@ "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==" }, "node_modules/dompurify": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.5.tgz", - "integrity": "sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" }, "node_modules/dot-case": { "version": "3.0.4", @@ -4870,9 +4870,9 @@ } }, "node_modules/firebase-admin": { - "version": "11.10.1", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.10.1.tgz", - "integrity": "sha512-atv1E6GbuvcvWaD3eHwrjeP5dAVs+EaHEJhu9CThMzPY6In8QYDiUR6tq5SwGl4SdA/GcAU0nhwWc/FSJsAzfQ==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.11.0.tgz", + "integrity": "sha512-lp784gXFAJgUEtjSdYNZGTWZqltqjBkoaPSQhDKnmWXJP/MCbWdiDY1hsdkl/6O4O4KFovTjUDLu26sojwdQvw==", "dependencies": { "@fastify/busboy": "^1.2.1", "@firebase/database-compat": "^0.3.4", @@ -8190,9 +8190,9 @@ } }, "node_modules/postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -8969,16 +8969,16 @@ } }, "node_modules/rc-table": { - "version": "7.34.2", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.34.2.tgz", - "integrity": "sha512-btFZOC0ZdtDXoUuFgQkmID9o8XJvpt1PRUKZZ5Nec0lXp6E5rcUZ/+ZDbnXlq17Fwz+8+3wr2O0aZ7kihJd5Nw==", + "version": "7.34.4", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.34.4.tgz", + "integrity": "sha512-os+i88Y2AO/6dNkOgJkKSHgXYaZZGnuOEEe+nyaq5IRgvAQNhLysUjXt2objtBeFDEZR8TqXrajwBNRUwunmdw==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/context": "^1.4.0", "classnames": "^2.2.5", "rc-resize-observer": "^1.1.0", "rc-util": "^5.36.0", - "rc-virtual-list": "^3.10.7" + "rc-virtual-list": "^3.11.1" }, "engines": { "node": ">=8.x" @@ -9107,9 +9107,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/rc-virtual-list": { - "version": "3.10.10", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.10.10.tgz", - "integrity": "sha512-EqNotqqRLzxFYce9JB/aDtP5fShvgwDVIuEKQeq9qfeNiKmsD4zf/UD+i0LppHtObzDUGtRFSf0HIOfb8FGSPA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.2.tgz", + "integrity": "sha512-MTFLL2LOHr3+/+r+WjTIs6j8XmJE6EqdOsJvCH8SWig7qyik3aljCEImUtw5tdWR0tQhXUfbv7P7nZaLY91XPg==", "dependencies": { "@babel/runtime": "^7.20.0", "classnames": "^2.2.6", @@ -10518,9 +10518,9 @@ } }, "node_modules/web-vitals": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.4.0.tgz", - "integrity": "sha512-n9fZ5/bG1oeDkyxLWyep0eahrNcPDF6bFqoyispt7xkW0xhDzpUBTgyDKqWDi1twT0MgH4HvvqzpUyh0ZxZV4A==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.0.tgz", + "integrity": "sha512-f5YnCHVG9Y6uLCePD4tY8bO/Ge15NPEQWtvm3tPzDKygloiqtb4SVqRHBcrIAqo2ztqX5XueqDn97zHF0LdT6w==" }, "node_modules/webidl-conversions": { "version": "3.0.1", diff --git a/package.json b/package.json index 04482ffb..ab744d4a 100755 --- a/package.json +++ b/package.json @@ -9,16 +9,16 @@ "dependencies": { "@ant-design/icons": "^5.2.6", "@dice-roller/rpg-dice-roller": "^5.4.1", - "antd": "^5.9.3", + "antd": "^5.9.4", "classnames": "^2.3.2", - "dompurify": "^3.0.5", + "dompurify": "^3.0.6", "firebase": "^10.4.0", - "firebase-admin": "^11.10.1", + "firebase-admin": "^11.11.0", "marked": "^9.0.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.16.0", - "web-vitals": "^3.4.0" + "web-vitals": "^3.5.0" }, "lint-staged": { "src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [ @@ -63,7 +63,7 @@ "@types/dompurify": "^3.0.3", "@types/jest": "^29.5.5", "@types/marked": "^5.0.2", - "@types/node": "^20.7.0", + "@types/node": "^20.7.2", "@types/react": "^18.2.23", "@types/react-dom": "^18.2.8", "@vitejs/plugin-react": "^4.1.0", @@ -71,7 +71,7 @@ "husky": "^8.0.3", "jest": "^29.7.0", "lint-staged": "^14.0.1", - "postcss": "^8.4.30", + "postcss": "^8.4.31", "prettier": "^3.0.3", "tailwindcss": "^3.3.3", "ts-jest": "^29.1.1", From 40c8255df7c39a8cea31b4b2a7844752ad2be09b Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 22:55:28 -0400 Subject: [PATCH 42/70] dragon icon in title --- .../PageLayout/HeaderContent/HeaderContent.tsx | 13 ++++++++++--- src/pages/Sources/Sources.tsx | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/PageLayout/HeaderContent/HeaderContent.tsx b/src/components/PageLayout/HeaderContent/HeaderContent.tsx index 36d9b89b..0583d2f6 100755 --- a/src/components/PageLayout/HeaderContent/HeaderContent.tsx +++ b/src/components/PageLayout/HeaderContent/HeaderContent.tsx @@ -1,6 +1,5 @@ import { Link, useNavigate } from "react-router-dom"; import { Button, Tooltip, Typography } from "antd"; -import { HeaderContentProps } from "./definitions"; import { LogoutOutlined, ReconciliationOutlined, @@ -10,6 +9,10 @@ import LoginSignupModal from "../../../modals/LoginSignupModal"; import { useState } from "react"; import { title } from "../../../../package.json"; import classNames from "classnames"; +import { PageLayoutProps } from "../definitions"; +import DragonIcon from "../../../assets/images/spiked-dragon-head.png"; + +interface HeaderContentProps extends PageLayoutProps {} export default function HeaderContent({ auth, @@ -28,6 +31,8 @@ export default function HeaderContent({ className ); const buttonTextClassNames = classNames("hidden", "md:inline"); + + const displayTitle = title.split(" "); return (
- {title} + {displayTitle[0]} + Dragon Icon + {displayTitle[1]} {user && ( diff --git a/src/pages/Sources/Sources.tsx b/src/pages/Sources/Sources.tsx index cbe01199..bd842d44 100755 --- a/src/pages/Sources/Sources.tsx +++ b/src/pages/Sources/Sources.tsx @@ -74,6 +74,7 @@ export default function Sources() { Smoot, R. Kevin. "New Races: A Basic Fantasy RPG Supplement." Basic Fantasy Role-Playing Game, 2018, basicfantasy.org/downloads.html. + Spiked dragon head icon by Delapouite
); From dfeedd6bfa4c83ab2afae18ae6cd85cd5be7c1b7 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 22:55:39 -0400 Subject: [PATCH 43/70] spells test --- src/data/spells.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/data/spells.test.ts diff --git a/src/data/spells.test.ts b/src/data/spells.test.ts new file mode 100644 index 00000000..68322819 --- /dev/null +++ b/src/data/spells.test.ts @@ -0,0 +1,9 @@ +import spells from "./spells.json"; + +describe("spells", () => { + test("every spell has a unique name", () => { + const spellNames = spells.map((spell) => spell.name); + const uniqueSpellNames = [...new Set(spellNames)]; + expect(spellNames.length).toBe(uniqueSpellNames.length); + }); +}); From 38c9c13b342866934803eb731a5301bcfe6b5362 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Sun, 1 Oct 2023 23:28:23 -0400 Subject: [PATCH 44/70] definition minimizing --- .../HeaderContent/HeaderContent.tsx | 22 ++++++++++++------- .../PageLayout/HeaderContent/definitions.ts | 3 --- 2 files changed, 14 insertions(+), 11 deletions(-) delete mode 100755 src/components/PageLayout/HeaderContent/definitions.ts diff --git a/src/components/PageLayout/HeaderContent/HeaderContent.tsx b/src/components/PageLayout/HeaderContent/HeaderContent.tsx index 0583d2f6..3f058da2 100755 --- a/src/components/PageLayout/HeaderContent/HeaderContent.tsx +++ b/src/components/PageLayout/HeaderContent/HeaderContent.tsx @@ -31,18 +31,24 @@ export default function HeaderContent({ className ); const buttonTextClassNames = classNames("hidden", "md:inline"); + const titleClassNames = classNames( + "text-white/95", + "font-enchant", + "tracking-wider", + "text-4xl", + "md:text-5xl", + "flex", + "margin-x-auto", + "gap-2", + "justify-center", + "items-center" + ); const displayTitle = title.split(" "); return (
- - + + {displayTitle[0]} Dragon Icon {displayTitle[1]} diff --git a/src/components/PageLayout/HeaderContent/definitions.ts b/src/components/PageLayout/HeaderContent/definitions.ts deleted file mode 100755 index b0fb53cf..00000000 --- a/src/components/PageLayout/HeaderContent/definitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { PageLayoutProps } from "../definitions"; - -export interface HeaderContentProps extends PageLayoutProps {} From 22b33490e3f0bf9f57c992c86ef1e5d9da4d8e4a Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Mon, 2 Oct 2023 09:23:32 -0400 Subject: [PATCH 45/70] remove unneeded definition files --- .../CharacterDescription.tsx | 8 +++++++- .../CharacterDescription/definitions.ts | 7 ------- .../CharacterSheetModals.tsx | 19 ++++++++++++++++++- .../CharacterSheetModals/definitions.ts | 18 ------------------ 4 files changed, 25 insertions(+), 27 deletions(-) delete mode 100755 src/components/CharacterSheet/CharacterDescription/definitions.ts delete mode 100644 src/components/CharacterSheet/CharacterSheetModals/definitions.ts diff --git a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx index 52e90abb..b2f855b7 100755 --- a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx +++ b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx @@ -4,11 +4,17 @@ import { doc, updateDoc } from "firebase/firestore"; import { db } from "../../../firebase"; import { useParams } from "react-router-dom"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; -import { CharacterDescriptionProps } from "./definitions"; import DOMPurify from "dompurify"; import { MinusCircleOutlined, PlusCircleOutlined } from "@ant-design/icons"; import { getClassType } from "../../../support/helpers"; import DescriptionFieldButton from "./DescriptionFieldButton/DescriptionFieldButton"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; + +type CharacterDescriptionProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + userIsOwner: boolean; +}; export default function CharacterDescription({ characterData, diff --git a/src/components/CharacterSheet/CharacterDescription/definitions.ts b/src/components/CharacterSheet/CharacterDescription/definitions.ts deleted file mode 100755 index a2719317..00000000 --- a/src/components/CharacterSheet/CharacterDescription/definitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../data/definitions"; - -export type CharacterDescriptionProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - userIsOwner: boolean; -}; diff --git a/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx b/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx index 71022990..02032d79 100644 --- a/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx +++ b/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx @@ -5,7 +5,24 @@ import DiceRollerModal from "../../../modals/DiceRollerModal"; import LevelUpModal from "../../../modals/LevelUpModal"; import { getAttackBonus, getHitDice } from "../../../support/helpers"; import AttackModal from "../../AttackModal/AttackModal"; -import { CharacterSheetModalsProps } from "./definitions"; +import { + CharacterData, + SetCharacterData, + EquipmentItem, +} from "../../../data/definitions"; + +type CharacterSheetModalsProps = { + characterData: CharacterData; + handleCancel: () => void; + isAddCustomEquipmentModalOpen: boolean; + isAddEquipmentModalOpen: boolean; + isAttackModalOpen: boolean; + isCheatSheetModalOpen: boolean; + isDiceRollerModalOpen: boolean; + isLevelUpModalOpen: boolean; + setCharacterData: SetCharacterData; + weapon: EquipmentItem | undefined; +}; export default function CharacterSheetModals({ characterData, diff --git a/src/components/CharacterSheet/CharacterSheetModals/definitions.ts b/src/components/CharacterSheet/CharacterSheetModals/definitions.ts deleted file mode 100644 index f9536c86..00000000 --- a/src/components/CharacterSheet/CharacterSheetModals/definitions.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { - CharacterData, - EquipmentItem, - SetCharacterData, -} from "../../../data/definitions"; - -export type CharacterSheetModalsProps = { - characterData: CharacterData; - handleCancel: () => void; - isAddCustomEquipmentModalOpen: boolean; - isAddEquipmentModalOpen: boolean; - isAttackModalOpen: boolean; - isCheatSheetModalOpen: boolean; - isDiceRollerModalOpen: boolean; - isLevelUpModalOpen: boolean; - setCharacterData: SetCharacterData; - weapon: EquipmentItem | undefined; -}; From 70aa28f5bff379ab3cfdb259a37fa0b7f617bc6e Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Mon, 2 Oct 2023 11:00:19 -0400 Subject: [PATCH 46/70] minimizing definition files --- .../CharacterSpellList/CharacterSpellList.tsx | 7 +++++-- .../CharacterSpellList/definitions.ts | 5 ----- .../EquipmentInfo/EquipmentInfo.tsx | 12 ++++++++++-- .../EquipmentList/EquipmentList.tsx | 13 ++++++++++++- .../ItemDescription/ItemDescription.tsx | 6 +++++- .../EquipmentList/ItemDescription/definitions.ts | 5 ----- .../EquipmentList/ItemWrapper/ItemWrapper.tsx | 9 ++++++++- .../EquipmentList/ItemWrapper/definitions.ts | 8 -------- .../EquipmentInfo/EquipmentList/definitions.ts | 15 --------------- .../CharacterSheet/EquipmentInfo/definitions.ts | 10 ---------- .../CharacterSheet/HitPoints/HitPoints.tsx | 8 +++++++- .../CharacterSheet/HitPoints/definitions.ts | 7 ------- .../InitiativeRoller/InitiativeRoller.tsx | 8 ++++++-- .../InitiativeRoller/definitions.ts | 6 ------ .../CharacterSheet/MoneyStats/MoneyStats.tsx | 9 ++++++++- .../CharacterSheet/MoneyStats/definitions.ts | 8 -------- .../CharacterSheet/SavingThrows/SavingThrows.tsx | 14 +++++++++++--- .../SavingThrowsFootnotes.tsx | 7 ++++--- .../SavingThrowsFootnotes/definitions.ts | 5 ----- .../CharacterSheet/SavingThrows/definitions.ts | 16 ---------------- .../SimpleNumberStat/SimpleNumberStat.tsx | 8 +++++++- .../SimpleNumberStat/definitions.ts | 6 ------ .../SpecialAbilitiesFootnotes.tsx | 7 ++++++- .../SpecialAbilitiesFootnotes/definitions.ts | 6 ------ .../SpecialAbilitiesTable.tsx | 13 +++++++++++-- .../SpecialAbilitiesTable/definitions.ts | 13 ------------- .../SpecialsRestrictions.tsx | 9 ++++++--- .../SpecialsRestrictions/definitions.ts | 5 ----- .../CharacterSheet/WeightStats/WeightStats.tsx | 9 ++++++--- .../CharacterSheet/WeightStats/definitions.ts | 5 ----- 30 files changed, 112 insertions(+), 147 deletions(-) delete mode 100755 src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts delete mode 100755 src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/definitions.ts delete mode 100755 src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/definitions.ts delete mode 100755 src/components/CharacterSheet/EquipmentInfo/EquipmentList/definitions.ts delete mode 100755 src/components/CharacterSheet/EquipmentInfo/definitions.ts delete mode 100755 src/components/CharacterSheet/HitPoints/definitions.ts delete mode 100755 src/components/CharacterSheet/InitiativeRoller/definitions.ts delete mode 100755 src/components/CharacterSheet/MoneyStats/definitions.ts delete mode 100644 src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts delete mode 100755 src/components/CharacterSheet/SavingThrows/definitions.ts delete mode 100755 src/components/CharacterSheet/SimpleNumberStat/definitions.ts delete mode 100644 src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/definitions.ts delete mode 100755 src/components/CharacterSheet/SpecialAbilitiesTable/definitions.ts delete mode 100755 src/components/CharacterSheet/SpecialsRestrictions/definitions.ts delete mode 100755 src/components/CharacterSheet/WeightStats/definitions.ts diff --git a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx index 3164d5f3..16381f55 100755 --- a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/CharacterSpellList.tsx @@ -1,8 +1,11 @@ import { Button, Descriptions } from "antd"; import { useState } from "react"; -import { CharacterSpellListProps } from "./definitions"; import { marked } from "marked"; -import { Spell } from "../../../../data/definitions"; +import { Spell, CharacterData } from "../../../../data/definitions"; + +type CharacterSpellListProps = { + spells: CharacterData["spells"]; +}; export default function CharacterSpellList({ spells, diff --git a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts deleted file mode 100755 index 07135439..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/CharacterSpellList/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../../data/definitions"; - -export interface CharacterSpellListProps { - spells: CharacterData["spells"]; -} diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx index 35b34af7..2b58cdb4 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentInfo.tsx @@ -1,7 +1,15 @@ -import { Button, Collapse, Typography } from "antd"; +import { Button, Collapse, CollapseProps, Typography } from "antd"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; -import { EquipmentInfoProps } from "./definitions"; import { ExperimentOutlined, ToolOutlined } from "@ant-design/icons"; +import { CharacterData } from "../../../data/definitions"; + +type EquipmentInfoProps = { + userIsOwner: boolean; + showAddEquipmentModal: () => void; + showAddCustomEquipmentModal: () => void; + characterData: CharacterData; + collapseItems: CollapseProps["items"]; +}; export default function EquipmentInfo({ userIsOwner, diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx index 2d9ce61d..5f42094c 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/EquipmentList.tsx @@ -1,4 +1,3 @@ -import { EquipmentListProps } from "./definitions"; import equipmentItems from "../../../../data/equipmentItems.json"; import { Button, Empty, Radio, Typography } from "antd"; import { DeleteOutlined } from "@ant-design/icons"; @@ -8,12 +7,24 @@ import ItemDescription from "./ItemDescription/ItemDescription"; import { classes } from "../../../../data/classes"; import { useEffect } from "react"; import { + CharacterData, ClassNames, EquipmentItem, RaceNames, + SetCharacterData, } from "../../../../data/definitions"; import { races } from "../../../../data/races"; +type EquipmentListProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + categories: string[]; + handleCustomDelete: (item: EquipmentItem) => void; + handleAttack?: boolean; + handleAttackClick?: (item: EquipmentItem) => void; + updateAC?: () => void; +}; + const punchItem: EquipmentItem = { name: "Punch**", costValue: 0, diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/ItemDescription.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/ItemDescription.tsx index 6ea45f6d..c972f776 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/ItemDescription.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/ItemDescription.tsx @@ -1,6 +1,10 @@ import { Descriptions } from "antd"; import { slugToTitleCase } from "../../../../../support/stringSupport"; -import { ItemDescriptionProps } from "./definitions"; +import { EquipmentItem } from "../../../../../data/definitions"; + +type ItemDescriptionProps = { + item: EquipmentItem; +}; export default function ItemDescription({ item }: ItemDescriptionProps) { return ( diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/definitions.ts deleted file mode 100755 index acb6f9c0..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemDescription/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { EquipmentItem } from "../../../../../data/definitions"; - -export type ItemDescriptionProps = { - item: EquipmentItem; -}; diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/ItemWrapper.tsx b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/ItemWrapper.tsx index fc7fe541..297d1ac0 100755 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/ItemWrapper.tsx +++ b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/ItemWrapper.tsx @@ -1,8 +1,15 @@ import { Button, Typography } from "antd"; -import { ItemWrapperProps } from "./definitions"; import ItemDescription from "../ItemDescription/ItemDescription"; import { DeleteOutlined } from "@ant-design/icons"; import equipmentItems from "../../../../../data/equipmentItems.json"; +import { EquipmentItem } from "../../../../../data/definitions"; + +type ItemWrapperProps = { + item: EquipmentItem; + handleAttack?: boolean; + handleAttackClick?: (item: EquipmentItem) => void; + handleCustomDelete: (item: EquipmentItem) => void; +}; export default function ItemWrapper({ item, diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/definitions.ts deleted file mode 100755 index c89ac8a5..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/ItemWrapper/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { EquipmentItem } from "../../../../../data/definitions"; - -export type ItemWrapperProps = { - item: EquipmentItem; - handleAttack?: boolean; - handleAttackClick?: (item: EquipmentItem) => void; - handleCustomDelete: (item: EquipmentItem) => void; -}; diff --git a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/EquipmentList/definitions.ts deleted file mode 100755 index a218ea28..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/EquipmentList/definitions.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - CharacterData, - EquipmentItem, - SetCharacterData, -} from "../../../../data/definitions"; - -export interface EquipmentListProps { - characterData: CharacterData; - setCharacterData: SetCharacterData; - categories: string[]; - handleCustomDelete: (item: EquipmentItem) => void; - handleAttack?: boolean; - handleAttackClick?: (item: EquipmentItem) => void; - updateAC?: () => void; -} diff --git a/src/components/CharacterSheet/EquipmentInfo/definitions.ts b/src/components/CharacterSheet/EquipmentInfo/definitions.ts deleted file mode 100755 index 7237b471..00000000 --- a/src/components/CharacterSheet/EquipmentInfo/definitions.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CollapseProps } from "antd"; -import { CharacterData } from "../../../data/definitions"; - -export interface EquipmentInfoProps { - userIsOwner: boolean; - showAddEquipmentModal: () => void; - showAddCustomEquipmentModal: () => void; - characterData: CharacterData; - collapseItems: CollapseProps["items"]; -} diff --git a/src/components/CharacterSheet/HitPoints/HitPoints.tsx b/src/components/CharacterSheet/HitPoints/HitPoints.tsx index 76419d57..8a74a1db 100755 --- a/src/components/CharacterSheet/HitPoints/HitPoints.tsx +++ b/src/components/CharacterSheet/HitPoints/HitPoints.tsx @@ -3,8 +3,14 @@ import { useEffect, useState } from "react"; import { doc, updateDoc } from "firebase/firestore"; import { db } from "../../../firebase"; import { useParams } from "react-router-dom"; -import { HitPointsProps } from "./definitions"; import DOMPurify from "dompurify"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; + +type HitPointsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + userIsOwner: boolean; +} export default function HitPoints({ characterData, diff --git a/src/components/CharacterSheet/HitPoints/definitions.ts b/src/components/CharacterSheet/HitPoints/definitions.ts deleted file mode 100755 index 307b9654..00000000 --- a/src/components/CharacterSheet/HitPoints/definitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../data/definitions"; - -export interface HitPointsProps { - characterData: CharacterData; - setCharacterData: SetCharacterData; - userIsOwner: boolean; -} diff --git a/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx b/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx index 4942b29f..22686855 100755 --- a/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx +++ b/src/components/CharacterSheet/InitiativeRoller/InitiativeRoller.tsx @@ -1,10 +1,14 @@ import { Button, Tooltip, notification } from "antd"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; -import { InitiativeRollerProps } from "./definitions"; import CloseIcon from "../../CloseIcon/CloseIcon"; -import { RaceNames } from "../../../data/definitions"; +import { CharacterData, RaceNames } from "../../../data/definitions"; import { NodeIndexOutlined } from "@ant-design/icons"; +type InitiativeRollerProps = { + characterData: CharacterData; + buttonTextClassNames: string; +}; + export default function InitiativeRoller({ characterData, buttonTextClassNames, diff --git a/src/components/CharacterSheet/InitiativeRoller/definitions.ts b/src/components/CharacterSheet/InitiativeRoller/definitions.ts deleted file mode 100755 index 4e690475..00000000 --- a/src/components/CharacterSheet/InitiativeRoller/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { CharacterData } from "../../../data/definitions"; - -export interface InitiativeRollerProps { - characterData: CharacterData; - buttonTextClassNames: string; -} diff --git a/src/components/CharacterSheet/MoneyStats/MoneyStats.tsx b/src/components/CharacterSheet/MoneyStats/MoneyStats.tsx index 11ce163b..b6622db7 100755 --- a/src/components/CharacterSheet/MoneyStats/MoneyStats.tsx +++ b/src/components/CharacterSheet/MoneyStats/MoneyStats.tsx @@ -4,7 +4,14 @@ import { doc, updateDoc } from "firebase/firestore"; import { db } from "../../../firebase"; import { useParams } from "react-router-dom"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; -import { MoneyStatsProps } from "./definitions"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; + +type MoneyStatsProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + userIsOwner: boolean; + makeChange: () => { gp: number; sp: number; cp: number }; +}; export default function MoneyStats({ characterData, diff --git a/src/components/CharacterSheet/MoneyStats/definitions.ts b/src/components/CharacterSheet/MoneyStats/definitions.ts deleted file mode 100755 index 912e4d9a..00000000 --- a/src/components/CharacterSheet/MoneyStats/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../data/definitions"; - -export interface MoneyStatsProps { - characterData: CharacterData; - setCharacterData: SetCharacterData; - userIsOwner: boolean; - makeChange: () => { gp: number; sp: number; cp: number }; -} diff --git a/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx b/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx index ac77f934..72b8ed77 100755 --- a/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx +++ b/src/components/CharacterSheet/SavingThrows/SavingThrows.tsx @@ -1,4 +1,3 @@ -import { SavingThrowsProps, TableCellRecord } from "./definitions"; import { getClassType, getSavingThrows, @@ -12,9 +11,18 @@ import { titleCaseToCamelCase, } from "../../../support/stringSupport"; import { races } from "../../../data/races"; -import { RaceNames, SavingThrowsType } from "../../../data/definitions"; +import { + CharacterData, + RaceNames, + SavingThrowsType, +} from "../../../data/definitions"; import SavingThrowsFootnotes from "./SavingThrowsFootnotes/SavingThrowsFootnotes"; +type TableCellRecord = { + score: number; + throw: string; +}; + const roller = new DiceRoller(); const defaultSavingThrows: SavingThrowsType = { @@ -28,7 +36,7 @@ const defaultSavingThrows: SavingThrowsType = { export default function SavingThrows({ characterData, className, -}: SavingThrowsProps & React.ComponentPropsWithRef<"div">) { +}: { characterData: CharacterData } & React.ComponentPropsWithRef<"div">) { const classType = getClassType(characterData.class); const characterLevel = characterData.level; diff --git a/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/SavingThrowsFootnotes.tsx b/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/SavingThrowsFootnotes.tsx index 04b23da8..807dfdda 100644 --- a/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/SavingThrowsFootnotes.tsx +++ b/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/SavingThrowsFootnotes.tsx @@ -1,12 +1,13 @@ import { Typography } from "antd"; -import { SavingThrowsFootnotesProps } from "./definitions"; import { classes } from "../../../../data/classes"; -import { ClassNames } from "../../../../data/definitions"; +import { CharacterData, ClassNames } from "../../../../data/definitions"; import { marked } from "marked"; export default function SavingThrowsFootnotes({ characterData, -}: SavingThrowsFootnotesProps) { +}: { + characterData: CharacterData; +}) { return (
{characterData.abilities.modifiers.constitution !== "+0" && ( diff --git a/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts b/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts deleted file mode 100644 index bbb5154f..00000000 --- a/src/components/CharacterSheet/SavingThrows/SavingThrowsFootnotes/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../../data/definitions"; - -export type SavingThrowsFootnotesProps = { - characterData: CharacterData; -}; diff --git a/src/components/CharacterSheet/SavingThrows/definitions.ts b/src/components/CharacterSheet/SavingThrows/definitions.ts deleted file mode 100755 index fa09ae9b..00000000 --- a/src/components/CharacterSheet/SavingThrows/definitions.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CharacterData, SavingThrowsType } from "../../../data/definitions"; - -export interface SavingThrowsTables { - [characterClass: string]: { - [levelRange: string]: SavingThrowsType; - }; -} - -export interface SavingThrowsProps { - characterData: CharacterData; -} - -export type TableCellRecord = { - score: number; - throw: string; -}; diff --git a/src/components/CharacterSheet/SimpleNumberStat/SimpleNumberStat.tsx b/src/components/CharacterSheet/SimpleNumberStat/SimpleNumberStat.tsx index 97a2a050..580c157b 100755 --- a/src/components/CharacterSheet/SimpleNumberStat/SimpleNumberStat.tsx +++ b/src/components/CharacterSheet/SimpleNumberStat/SimpleNumberStat.tsx @@ -1,7 +1,13 @@ import { Statistic, Typography } from "antd"; -import { SimpleNumberStatProps } from "./definitions"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; +type SimpleNumberStatProps = { + title: string; + value: string | number; + altValue?: string | number; + helpText?: string; +}; + export default function SimpleNumberStat({ title, value, diff --git a/src/components/CharacterSheet/SimpleNumberStat/definitions.ts b/src/components/CharacterSheet/SimpleNumberStat/definitions.ts deleted file mode 100755 index ae0f4943..00000000 --- a/src/components/CharacterSheet/SimpleNumberStat/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface SimpleNumberStatProps { - title: string; - value: string | number; - altValue?: string | number; - helpText?: string; -} diff --git a/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/SpecialAbilitiesFootnotes.tsx b/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/SpecialAbilitiesFootnotes.tsx index ddfed17a..20018e93 100644 --- a/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/SpecialAbilitiesFootnotes.tsx +++ b/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/SpecialAbilitiesFootnotes.tsx @@ -1,7 +1,12 @@ import { Typography } from "antd"; import { getSpecialAbilityRaceOverrides } from "../../../../support/helpers"; -import { SpecialAbilitiesFootnotesProps } from "./definitions"; import { marked } from "marked"; +import { ClassNames, RaceNames } from "../../../../data/definitions"; + +type SpecialAbilitiesFootnotesProps = { + characterRace: RaceNames; + characterClass: ClassNames; +}; export default function SpecialAbilitiesFootnotes({ characterRace, diff --git a/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/definitions.ts b/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/definitions.ts deleted file mode 100644 index 3eea920f..00000000 --- a/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesFootnotes/definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ClassNames, RaceNames } from "../../../../data/definitions"; - -export type SpecialAbilitiesFootnotesProps = { - characterRace: RaceNames; - characterClass: ClassNames; -}; diff --git a/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesTable.tsx b/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesTable.tsx index d9a33128..21de6855 100755 --- a/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesTable.tsx +++ b/src/components/CharacterSheet/SpecialAbilitiesTable/SpecialAbilitiesTable.tsx @@ -1,14 +1,23 @@ import { Table, Typography, notification } from "antd"; import HelpTooltip from "../../HelpTooltip/HelpTooltip"; -import { SpecialAbilitiesTableProps } from "./definitions"; import { toTitleCase } from "../../../support/stringSupport"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; import CloseIcon from "../../CloseIcon/CloseIcon"; import { classes } from "../../../data/classes"; -import { ClassNames } from "../../../data/definitions"; +import { + CharacterData, + ClassNames, + RaceNames, +} from "../../../data/definitions"; import React from "react"; import SpecialAbilitiesFootnotes from "./SpecialAbilitiesFootnotes/SpecialAbilitiesFootnotes"; +type SpecialAbilitiesTableProps = { + characterLevel: CharacterData["level"]; + characterClass: string; + characterRace: RaceNames; +}; + export default function SpecialAbilitiesTable({ characterLevel, characterClass, diff --git a/src/components/CharacterSheet/SpecialAbilitiesTable/definitions.ts b/src/components/CharacterSheet/SpecialAbilitiesTable/definitions.ts deleted file mode 100755 index 38a6d191..00000000 --- a/src/components/CharacterSheet/SpecialAbilitiesTable/definitions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { RaceNames } from "../../../data/definitions"; - -export interface SpecialAbilitiesTableProps { - characterLevel: number; - characterClass: string; - characterRace: RaceNames; -} - -export interface AbilitiesArray { - [key: string]: { [level: string]: number[] }; -} - -export type CharacterClass = "thief" | "assassin"; diff --git a/src/components/CharacterSheet/SpecialsRestrictions/SpecialsRestrictions.tsx b/src/components/CharacterSheet/SpecialsRestrictions/SpecialsRestrictions.tsx index c9a01c61..f94bb747 100755 --- a/src/components/CharacterSheet/SpecialsRestrictions/SpecialsRestrictions.tsx +++ b/src/components/CharacterSheet/SpecialsRestrictions/SpecialsRestrictions.tsx @@ -1,9 +1,12 @@ import { List, Tabs, TabsProps, Typography } from "antd"; import { marked } from "marked"; -import { SpecialsRestrictionsProps } from "./definitions"; import { classes } from "../../../data/classes"; import { races } from "../../../data/races"; -import { ClassNames, RaceNames } from "../../../data/definitions"; +import { + CharacterData, + ClassNames, + RaceNames, +} from "../../../data/definitions"; import { titleCaseToCamelCase } from "../../../support/stringSupport"; // Ant Design's List component treats the input as a string and not as HTML. @@ -31,7 +34,7 @@ const SpecialsRestrictionsList = ({ dataSource }: { dataSource: any[] }) => ( export default function SpecialsRestrictions({ characterData, className, -}: SpecialsRestrictionsProps & React.ComponentPropsWithRef<"div">) { +}: { characterData: CharacterData } & React.ComponentPropsWithRef<"div">) { const items: TabsProps["items"] = [ { key: titleCaseToCamelCase(characterData.race), diff --git a/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts b/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts deleted file mode 100755 index ad885975..00000000 --- a/src/components/CharacterSheet/SpecialsRestrictions/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../data/definitions"; - -export type SpecialsRestrictionsProps = { - characterData: CharacterData; -}; diff --git a/src/components/CharacterSheet/WeightStats/WeightStats.tsx b/src/components/CharacterSheet/WeightStats/WeightStats.tsx index 54be9f95..57d99223 100755 --- a/src/components/CharacterSheet/WeightStats/WeightStats.tsx +++ b/src/components/CharacterSheet/WeightStats/WeightStats.tsx @@ -1,13 +1,16 @@ import { Descriptions, Divider } from "antd"; import { getCarryingCapacity } from "../../../support/formatSupport"; import SimpleNumberStat from "../SimpleNumberStat/SimpleNumberStat"; -import { WeightStatsProps } from "./definitions"; -import { EquipmentItem, RaceNames } from "../../../data/definitions"; +import { + CharacterData, + EquipmentItem, + RaceNames, +} from "../../../data/definitions"; export default function WeightStats({ characterData, className, -}: WeightStatsProps & React.ComponentPropsWithRef<"div">) { +}: { characterData: CharacterData } & React.ComponentPropsWithRef<"div">) { const capacity = getCarryingCapacity( +characterData.abilities.scores.strength, characterData.race as RaceNames diff --git a/src/components/CharacterSheet/WeightStats/definitions.ts b/src/components/CharacterSheet/WeightStats/definitions.ts deleted file mode 100755 index d3cd9369..00000000 --- a/src/components/CharacterSheet/WeightStats/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../data/definitions"; - -export interface WeightStatsProps { - characterData: CharacterData; -} From 44a803cb5f6b01d031847e14446b5c66495d9bd7 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Mon, 2 Oct 2023 11:03:15 -0400 Subject: [PATCH 47/70] min definitions --- .../EquipmentAccordion/EquipmentAccordion.tsx | 14 ++++++++++++-- .../EquipmentAccordion/definitions.ts | 8 -------- .../EquipmentCheckbox/EquipmentCheckbox.tsx | 14 ++++++++++++-- .../EquipmentCheckbox/definitions.ts | 13 ------------- 4 files changed, 24 insertions(+), 25 deletions(-) delete mode 100755 src/components/EquipmentStore/EquipmentAccordion/definitions.ts delete mode 100755 src/components/EquipmentStore/EquipmentCheckbox/definitions.ts diff --git a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx index 52ad9e93..f5cf2dd0 100755 --- a/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx +++ b/src/components/EquipmentStore/EquipmentAccordion/EquipmentAccordion.tsx @@ -1,14 +1,24 @@ import { Collapse, CollapseProps } from "antd"; -import { EquipmentAccordionProps } from "./definitions"; import { slugToTitleCase } from "../../../support/stringSupport"; import equipmentItems from "../../../data/equipmentItems.json"; import WeaponKeys from "../../WeaponKeys/WeaponKeys"; import { classes } from "../../../data/classes"; -import { EquipmentCategories } from "../../../data/definitions"; +import { + CharacterData, + EquipmentCategories, + EquipmentItem, +} from "../../../data/definitions"; import { ClassNames } from "../../../data/definitions"; import classNames from "classnames"; import EquipmentCheckboxGroup from "../EquipmentCheckboxGroup/EquipmentCheckboxGroup"; +type EquipmentAccordionProps = { + characterData: CharacterData; + onAmountChange: (item?: EquipmentItem) => void; + onCheckboxCheck: (item?: EquipmentItem) => void; + onRadioCheck: (item?: EquipmentItem) => void; +}; + export default function EquipmentAccordion({ onAmountChange, onCheckboxCheck, diff --git a/src/components/EquipmentStore/EquipmentAccordion/definitions.ts b/src/components/EquipmentStore/EquipmentAccordion/definitions.ts deleted file mode 100755 index afd66001..00000000 --- a/src/components/EquipmentStore/EquipmentAccordion/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, EquipmentItem } from "../../../data/definitions"; - -export interface EquipmentAccordionProps { - characterData: CharacterData; - onAmountChange: (item?: EquipmentItem) => void; - onCheckboxCheck: (item?: EquipmentItem) => void; - onRadioCheck: (item?: EquipmentItem) => void; -} diff --git a/src/components/EquipmentStore/EquipmentCheckbox/EquipmentCheckbox.tsx b/src/components/EquipmentStore/EquipmentCheckbox/EquipmentCheckbox.tsx index 6931b721..68efb921 100755 --- a/src/components/EquipmentStore/EquipmentCheckbox/EquipmentCheckbox.tsx +++ b/src/components/EquipmentStore/EquipmentCheckbox/EquipmentCheckbox.tsx @@ -1,9 +1,19 @@ import { Checkbox, InputNumber, Space } from "antd"; -import { EquipmentCheckboxProps } from "./definitions"; -import React, { useEffect, useState } from "react"; +import React, { ReactElement, useEffect, useState } from "react"; import { CheckboxChangeEvent } from "antd/es/checkbox"; import { EquipmentItem } from "../../../data/definitions"; +type EquipmentCheckboxProps = { + disabled?: boolean; + item: EquipmentItem; + onCheckboxCheck: (item?: EquipmentItem, checked?: boolean) => void; + onAmountChange: (item?: EquipmentItem) => void; + playerHasItem: boolean; + equipmentItemDescription: ReactElement; + inputDisabled: boolean; + itemAmount: number; +}; + export default function EquipmentCheckbox({ disabled, item, diff --git a/src/components/EquipmentStore/EquipmentCheckbox/definitions.ts b/src/components/EquipmentStore/EquipmentCheckbox/definitions.ts deleted file mode 100755 index 00a64c9b..00000000 --- a/src/components/EquipmentStore/EquipmentCheckbox/definitions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ReactElement } from "react"; -import { EquipmentItem } from "../../../data/definitions"; - -export interface EquipmentCheckboxProps { - disabled?: boolean; - item: EquipmentItem; - onCheckboxCheck: (item?: EquipmentItem, checked?: boolean) => void; - onAmountChange: (item?: EquipmentItem) => void; - playerHasItem: boolean; - equipmentItemDescription: ReactElement; - inputDisabled: boolean; - itemAmount: number; -} From 4c5197c11bef6ff9de76ba02cbba0aaee291fc51 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 2 Oct 2023 21:54:42 -0400 Subject: [PATCH 48/70] minimize definitions --- .../EquipmentInventory/EquipmentInventory.tsx | 45 +++++-------------- .../RenderEquipmentList.tsx | 37 +++++++++++++++ .../EquipmentInventory/definitions.ts | 5 --- .../EquipmentRadio/EquipmentRadio.tsx | 10 ++++- .../EquipmentRadio/definitions.ts | 9 ---- .../EquipmentStore/EquipmentStore.tsx | 15 ++++++- .../EquipmentStore/GoldRoller/GoldRoller.tsx | 10 ++++- .../EquipmentStore/GoldRoller/definitions.ts | 8 ---- src/components/EquipmentStore/definitions.ts | 14 ------ src/components/HelpTooltip/HelpTooltip.tsx | 3 +- src/components/HelpTooltip/definitions.ts | 5 --- .../HomebrewWarning/HomebrewWarning.tsx | 4 +- src/components/HomebrewWarning/definitions.ts | 3 -- 13 files changed, 79 insertions(+), 89 deletions(-) create mode 100644 src/components/EquipmentStore/EquipmentInventory/RenderEquipmentList/RenderEquipmentList.tsx delete mode 100755 src/components/EquipmentStore/EquipmentInventory/definitions.ts delete mode 100755 src/components/EquipmentStore/EquipmentRadio/definitions.ts delete mode 100755 src/components/EquipmentStore/GoldRoller/definitions.ts delete mode 100755 src/components/EquipmentStore/definitions.ts delete mode 100755 src/components/HelpTooltip/definitions.ts delete mode 100755 src/components/HomebrewWarning/definitions.ts diff --git a/src/components/EquipmentStore/EquipmentInventory/EquipmentInventory.tsx b/src/components/EquipmentStore/EquipmentInventory/EquipmentInventory.tsx index 022fc133..d1c0ccf6 100755 --- a/src/components/EquipmentStore/EquipmentInventory/EquipmentInventory.tsx +++ b/src/components/EquipmentStore/EquipmentInventory/EquipmentInventory.tsx @@ -1,45 +1,18 @@ import { Divider, List, Typography } from "antd"; -import { EquipmentInventoryProps } from "./definitions"; import { useMemo } from "react"; import { toTitleCase } from "../../../support/stringSupport"; -import { classes } from "../../../data/classes"; import { getClassType } from "../../../support/helpers"; -import { ClassNames, EquipmentItem } from "../../../data/definitions"; - -const renderEquipmentList = (classNameArray: ClassNames[]) => { - return classNameArray.map( - (classValue: ClassNames) => - classes[classValue].startingEquipment && ( - - Included w/ {classValue} - - } - bordered - dataSource={classes[classValue].startingEquipment?.map( - (item: EquipmentItem) => ({ - name: item.name, - amount: item.amount, - }) - )} - renderItem={(item) => ( - - {item.name} - x{item.amount} - - )} - size="small" - key={classValue} - /> - ) - ); -}; +import { + CharacterData, + ClassNames, + EquipmentItem, +} from "../../../data/definitions"; +import RenderEquipmentList from "./RenderEquipmentList/RenderEquipmentList"; export default function EquipmentInventory({ className, characterData, -}: EquipmentInventoryProps & React.ComponentPropsWithRef<"div">) { +}: { characterData: CharacterData } & React.ComponentPropsWithRef<"div">) { const groupedEquipment = useMemo(() => { return characterData.equipment.reduce( (grouped: Record, item: EquipmentItem) => { @@ -69,7 +42,9 @@ export default function EquipmentInventory({ {getClassType(characterData.class) !== "custom" && (
{/* STARTING EQUIPMENT */} - {renderEquipmentList(characterData.class as ClassNames[])} +
)} {Object.entries(groupedEquipment).map( diff --git a/src/components/EquipmentStore/EquipmentInventory/RenderEquipmentList/RenderEquipmentList.tsx b/src/components/EquipmentStore/EquipmentInventory/RenderEquipmentList/RenderEquipmentList.tsx new file mode 100644 index 00000000..c1819c6c --- /dev/null +++ b/src/components/EquipmentStore/EquipmentInventory/RenderEquipmentList/RenderEquipmentList.tsx @@ -0,0 +1,37 @@ +import { List, Typography } from "antd"; +import { classes } from "../../../../data/classes"; +import { ClassNames, EquipmentItem } from "../../../../data/definitions"; + +export default function RenderEquipmentList({ + classNames, +}: { + classNames: ClassNames[]; +}) { + return classNames.map( + (classValue: ClassNames) => + classes[classValue].startingEquipment && ( + + Included w/ {classValue} + + } + bordered + dataSource={classes[classValue].startingEquipment?.map( + (item: EquipmentItem) => ({ + name: item.name, + amount: item.amount, + }) + )} + renderItem={(item) => ( + + {item.name} + x{item.amount} + + )} + size="small" + key={classValue} + /> + ) + ); +} diff --git a/src/components/EquipmentStore/EquipmentInventory/definitions.ts b/src/components/EquipmentStore/EquipmentInventory/definitions.ts deleted file mode 100755 index 74fa107f..00000000 --- a/src/components/EquipmentStore/EquipmentInventory/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { CharacterData } from "../../../data/definitions"; - -export interface EquipmentInventoryProps { - characterData: CharacterData; -} diff --git a/src/components/EquipmentStore/EquipmentRadio/EquipmentRadio.tsx b/src/components/EquipmentStore/EquipmentRadio/EquipmentRadio.tsx index 1ae99cdf..ea812dc7 100755 --- a/src/components/EquipmentStore/EquipmentRadio/EquipmentRadio.tsx +++ b/src/components/EquipmentStore/EquipmentRadio/EquipmentRadio.tsx @@ -1,5 +1,13 @@ import { Radio } from "antd"; -import { EquipmentRadioProps } from "./definitions"; +import { EquipmentItem } from "../../../data/definitions"; +import { ReactElement } from "react"; + +type EquipmentRadioProps = { + item: EquipmentItem; + equipmentItemDescription: ReactElement; + disabled?: boolean; + inputDisabled: boolean; +}; export default function EquipmentRadio({ item, diff --git a/src/components/EquipmentStore/EquipmentRadio/definitions.ts b/src/components/EquipmentStore/EquipmentRadio/definitions.ts deleted file mode 100755 index 0a953d6c..00000000 --- a/src/components/EquipmentStore/EquipmentRadio/definitions.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ReactElement } from "react"; -import { EquipmentItem } from "../../../data/definitions"; - -export interface EquipmentRadioProps { - item: EquipmentItem; - equipmentItemDescription: ReactElement; - disabled?: boolean; - inputDisabled: boolean; -} diff --git a/src/components/EquipmentStore/EquipmentStore.tsx b/src/components/EquipmentStore/EquipmentStore.tsx index 6b4323c0..7b7a55f4 100755 --- a/src/components/EquipmentStore/EquipmentStore.tsx +++ b/src/components/EquipmentStore/EquipmentStore.tsx @@ -1,4 +1,3 @@ -import { EquipmentStoreProps } from "./definitions"; import EquipmentAccordion from "./EquipmentAccordion/EquipmentAccordion"; import { useEffect, useState } from "react"; import equipmentItems from "../../data/equipmentItems.json"; @@ -9,7 +8,19 @@ import { db } from "../../firebase"; import HomebrewWarning from "../HomebrewWarning/HomebrewWarning"; import { getItemCost } from "../../support/formatSupport"; import GoldRoller from "./GoldRoller/GoldRoller"; -import { ClassNames, EquipmentItem, RaceNames } from "../../data/definitions"; +import { + CharacterData, + ClassNames, + EquipmentItem, + RaceNames, + SetCharacterData, +} from "../../data/definitions"; + +type EquipmentStoreProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + inBuilder?: boolean; +}; export default function EquipmentStore({ characterData, diff --git a/src/components/EquipmentStore/GoldRoller/GoldRoller.tsx b/src/components/EquipmentStore/GoldRoller/GoldRoller.tsx index 1f7042cf..7b56a1ac 100755 --- a/src/components/EquipmentStore/GoldRoller/GoldRoller.tsx +++ b/src/components/EquipmentStore/GoldRoller/GoldRoller.tsx @@ -1,7 +1,13 @@ -import React from "react"; -import { GoldRollerProps } from "./definitions"; import { Button, InputNumber, Space } from "antd"; import { DiceRoller } from "@dice-roller/rpg-dice-roller"; +import { CharacterData, SetCharacterData } from "../../../data/definitions"; + +type GoldRollerProps = { + characterData: CharacterData; + setCharacterData: SetCharacterData; + goldInputValue: number; + setGoldInputValue: (goldInputValue: number) => void; +}; const roller = new DiceRoller(); diff --git a/src/components/EquipmentStore/GoldRoller/definitions.ts b/src/components/EquipmentStore/GoldRoller/definitions.ts deleted file mode 100755 index 6a2059e6..00000000 --- a/src/components/EquipmentStore/GoldRoller/definitions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CharacterData, SetCharacterData } from "../../../data/definitions"; - -export type GoldRollerProps = { - characterData: CharacterData; - setCharacterData: SetCharacterData; - goldInputValue: number; - setGoldInputValue: (goldInputValue: number) => void; -}; diff --git a/src/components/EquipmentStore/definitions.ts b/src/components/EquipmentStore/definitions.ts deleted file mode 100755 index a98cb78d..00000000 --- a/src/components/EquipmentStore/definitions.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - CharacterData, - ClassNames, - SetCharacterData, -} from "../../data/definitions"; -// import { CharacterData, SetCharacterData } from "../definitions"; - -export type ClassName = ClassNames; - -export interface EquipmentStoreProps { - characterData: CharacterData; - setCharacterData: SetCharacterData; - inBuilder?: boolean; -} diff --git a/src/components/HelpTooltip/HelpTooltip.tsx b/src/components/HelpTooltip/HelpTooltip.tsx index 2a460e78..28cdf3e6 100755 --- a/src/components/HelpTooltip/HelpTooltip.tsx +++ b/src/components/HelpTooltip/HelpTooltip.tsx @@ -1,5 +1,4 @@ import { Tooltip } from "antd"; -import { HelpTooltipProps } from "./definitions"; import { QuestionCircleOutlined } from "@ant-design/icons"; import classNames from "classnames"; import { marked } from "marked"; @@ -7,7 +6,7 @@ import { marked } from "marked"; export default function HelpTooltip({ text, className, -}: HelpTooltipProps & React.ComponentPropsWithRef<"div">) { +}: { text: string } & React.ComponentPropsWithRef<"div">) { const tooltipClassNames = classNames( className, "print:hidden", diff --git a/src/components/HelpTooltip/definitions.ts b/src/components/HelpTooltip/definitions.ts deleted file mode 100755 index be14336e..00000000 --- a/src/components/HelpTooltip/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ReactNode } from "react"; - -export interface HelpTooltipProps { - text: string; -} diff --git a/src/components/HomebrewWarning/HomebrewWarning.tsx b/src/components/HomebrewWarning/HomebrewWarning.tsx index b9998d2c..74ef4980 100755 --- a/src/components/HomebrewWarning/HomebrewWarning.tsx +++ b/src/components/HomebrewWarning/HomebrewWarning.tsx @@ -1,15 +1,13 @@ import { Typography } from "antd"; -import { HomebrewWarningProps } from "./definitions"; export default function HomebrewWarning({ homebrew, className, -}: HomebrewWarningProps & React.ComponentPropsWithRef<"div">) { +}: { homebrew: string } & React.ComponentPropsWithRef<"div">) { return ( Work closely with your GM when using a custom {homebrew}. diff --git a/src/components/HomebrewWarning/definitions.ts b/src/components/HomebrewWarning/definitions.ts deleted file mode 100755 index ab6075ef..00000000 --- a/src/components/HomebrewWarning/definitions.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface HomebrewWarningProps { - homebrew: string; -} From 5cc1c11d2b8957ded0f3779217fb7ac9c1bce893 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 2 Oct 2023 22:09:27 -0400 Subject: [PATCH 49/70] more tests --- src/support/helpers.test.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/support/helpers.test.ts b/src/support/helpers.test.ts index 13823ca7..e3a7798c 100644 --- a/src/support/helpers.test.ts +++ b/src/support/helpers.test.ts @@ -4,6 +4,7 @@ import { getArmorClass, getClassType, getEnabledClasses, + getHitDice, getHitPointsModifier, getSavingThrows, getSavingThrowsWeight, @@ -298,4 +299,24 @@ describe("equipmentItemIsDisabled", () => { }); }); -// describe("getMovement", () => {}); +describe("getHitDice", () => { + test("hit dice for level one standard class", () => { + expect(getHitDice(1, [ClassNames.FIGHTER], "d8")).toBe("1d8"); + }); + + test("high level hit dice for class with x2 multiplier suffix", () => { + expect(getHitDice(11, [ClassNames.FIGHTER], "d8")).toBe("9d8+4"); + }); + + test("high level hit dice for class with x1 multiplier suffix", () => { + expect(getHitDice(11, [ClassNames.MAGICUSER], "d4")).toBe("9d4+2"); + }); + + test("get hit dice for custom class", () => { + expect(getHitDice(11, ["foo"], "d8")).toBe("9d8"); + }); +}); + +describe("getAttackBonus", () => {}); + +describe("getMovement", () => {}); From 7c44dd7eb13762f7daa87570c427ca6172dfd7ea Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 2 Oct 2023 22:29:21 -0400 Subject: [PATCH 50/70] gm portal subscription --- src/App.tsx | 2 +- src/pages/GMPortal/GMPortal.tsx | 69 ++++++++++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index a19c2de8..14152b18 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -106,7 +106,7 @@ function App() { /> } /> } /> - } /> + } /> diff --git a/src/pages/GMPortal/GMPortal.tsx b/src/pages/GMPortal/GMPortal.tsx index b490c970..5cfef834 100644 --- a/src/pages/GMPortal/GMPortal.tsx +++ b/src/pages/GMPortal/GMPortal.tsx @@ -1,12 +1,65 @@ import { UsergroupAddOutlined } from "@ant-design/icons"; -import { Button, Typography } from "antd"; +import { Button, Spin, Typography } from "antd"; +import { User } from "firebase/auth"; +import { collection, deleteDoc, doc, onSnapshot } from "firebase/firestore"; +import { useEffect, useState } from "react"; import { useOutletContext } from "react-router-dom"; +import { db } from "../../firebase"; +import { GamesData } from "../../data/definitions"; +import classNames from "classnames"; -export default function GMPortal() { +export default function GMPortal({ + user, + className, +}: { user: User | null } & React.ComponentPropsWithRef<"div">) { const outletContext = useOutletContext() as { className: string }; + const [games, setGames] = useState([]); + const [loading, setLoading] = useState(true); + useEffect(() => { + const fetchGames = async () => { + try { + if (user) { + const uid = user.uid; + const gamesCollectionRef = collection(db, `users/${uid}/games`); + + // Listen to real-time updates + const unsubscribe = onSnapshot(gamesCollectionRef, (snapshot) => { + const userGames = snapshot.docs.map((doc) => { + const data = doc.data() as GamesData; + data.id = doc.id; + return data; + }); + setGames(userGames); + document.title = `CODEX.QUEST | Game List`; + setLoading(false); + }); + } + } catch (error) { + console.error("Failed to fetch games:", error); + } + }; + }, [user]); + + const confirm = async (gameId: string) => { + if (user) { + const gameDoc = doc(db, `users/${user.uid}/games/${gameId}`); + await deleteDoc(gameDoc); + } + }; + + useEffect(() => { + setLoading(false); + }, [games]); + + const gameListClassNames = classNames( + outletContext.className, + className, + "text-shipGray", + "[&>*+*]:mt-4" + ); return ( -
*+*]:mt-4`}> +
-
- {/*} + {loading ? ( + + ) : ( +
+ {/*} */} -
+
+ )}
); } From 941302c18ca45553ce83c54d476d33da7ab5ea26 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 2 Oct 2023 22:37:26 -0400 Subject: [PATCH 51/70] add GamesData --- src/data/definitions.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/data/definitions.ts b/src/data/definitions.ts index d8a2ab81..b02059a1 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -152,3 +152,7 @@ export type AbilityRecord = { ability: string; score: number; }; + +export type GamesData = { + id?: string; +}; From 79c4a76679c40c456f561e4d441ab99d889596da Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 2 Oct 2023 22:37:45 -0400 Subject: [PATCH 52/70] remove unneeded definition files --- src/pages/CharacterList/CharacterList.tsx | 4 ++-- src/pages/CharacterList/definitions.ts | 5 ----- src/pages/CharacterSheet/CharacterSheet.tsx | 5 ++--- src/pages/CharacterSheet/definitions.ts | 5 ----- 4 files changed, 4 insertions(+), 15 deletions(-) delete mode 100755 src/pages/CharacterList/definitions.ts delete mode 100755 src/pages/CharacterSheet/definitions.ts diff --git a/src/pages/CharacterList/CharacterList.tsx b/src/pages/CharacterList/CharacterList.tsx index 45d46ba6..9419933d 100755 --- a/src/pages/CharacterList/CharacterList.tsx +++ b/src/pages/CharacterList/CharacterList.tsx @@ -3,17 +3,17 @@ import { useOutletContext } from "react-router-dom"; import { collection, deleteDoc, doc, onSnapshot } from "firebase/firestore"; import { db } from "../../firebase"; import { useEffect, useState } from "react"; -import { CharacterListProps } from "./definitions"; import classNames from "classnames"; import CharacterCard from "../../components/CharacterCard/CharacterCard"; import { images } from "../../assets/images/faces/imageAssets"; import { extractImageName } from "../../support/stringSupport"; import { CharacterData } from "../../data/definitions"; +import { User } from "firebase/auth"; export default function CharacterList({ user, className, -}: CharacterListProps & React.ComponentPropsWithRef<"div">) { +}: { user: User | null } & React.ComponentPropsWithRef<"div">) { const outletContext = useOutletContext() as { className: string }; const [characters, setCharacters] = useState([]); const [loading, setLoading] = useState(true); diff --git a/src/pages/CharacterList/definitions.ts b/src/pages/CharacterList/definitions.ts deleted file mode 100755 index b521e212..00000000 --- a/src/pages/CharacterList/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { User } from "firebase/auth"; - -export interface CharacterListProps { - user: User | null; -} diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index 77a355fe..01b168fa 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -7,7 +7,6 @@ import { doc, onSnapshot, updateDoc } from "firebase/firestore"; import { db } from "../../firebase"; // DEFINITIONS import { User } from "firebase/auth"; -import { CharacterSheetProps } from "./definitions"; // ANTD COMPONENTS import { Breadcrumb, @@ -50,7 +49,7 @@ import { RaceNames, } from "../../data/definitions"; // SUPPORT -import { getCarryingCapacity, makeChange } from "../../support/formatSupport"; +import { makeChange } from "../../support/formatSupport"; import { getArmorClass, getAttackBonus, @@ -62,7 +61,7 @@ import { import DiceSvg from "../../assets/images/dice.svg"; import classNames from "classnames"; -export default function CharacterSheet({ user }: CharacterSheetProps) { +export default function CharacterSheet({ user }: { user: User | null }) { const { uid, id } = useParams(); const [characterData, setCharacterData] = useState( null diff --git a/src/pages/CharacterSheet/definitions.ts b/src/pages/CharacterSheet/definitions.ts deleted file mode 100755 index e3da4be9..00000000 --- a/src/pages/CharacterSheet/definitions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { User } from "firebase/auth"; - -export interface CharacterSheetProps { - user: User | null; -} From 143169161732ea1fe2d6eb9eed703e81d04ddbba Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 2 Oct 2023 23:33:40 -0400 Subject: [PATCH 53/70] new game modal form --- src/components/NewGameModal/NewGameModal.tsx | 43 ++++++++++++++++++++ src/pages/GMPortal/GMPortal.tsx | 18 +++++++- 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/components/NewGameModal/NewGameModal.tsx diff --git a/src/components/NewGameModal/NewGameModal.tsx b/src/components/NewGameModal/NewGameModal.tsx new file mode 100644 index 00000000..18fa27c3 --- /dev/null +++ b/src/components/NewGameModal/NewGameModal.tsx @@ -0,0 +1,43 @@ +import { Button, Form, Input, Modal } from "antd"; +import CloseIcon from "../CloseIcon/CloseIcon"; + +export default function NewGameModal({ + isNewGameModalOpen, + handleCancel, +}: { + isNewGameModalOpen: boolean; + handleCancel: () => void; +}) { + const onFinish = (values: any) => { + console.log("Received values:", values); + }; + return ( + } + > +
+ + + + + + + +
+
+ ); +} diff --git a/src/pages/GMPortal/GMPortal.tsx b/src/pages/GMPortal/GMPortal.tsx index 5cfef834..c49fcb9f 100644 --- a/src/pages/GMPortal/GMPortal.tsx +++ b/src/pages/GMPortal/GMPortal.tsx @@ -7,6 +7,7 @@ import { useOutletContext } from "react-router-dom"; import { db } from "../../firebase"; import { GamesData } from "../../data/definitions"; import classNames from "classnames"; +import NewGameModal from "../../components/NewGameModal/NewGameModal"; export default function GMPortal({ user, @@ -14,7 +15,12 @@ export default function GMPortal({ }: { user: User | null } & React.ComponentPropsWithRef<"div">) { const outletContext = useOutletContext() as { className: string }; const [games, setGames] = useState([]); - const [loading, setLoading] = useState(true); + const [loading, setLoading] = useState(true); + const [isNewGameModalOpen, setIsNewGameModalOpen] = useState(false); + + const handleCancel = () => { + setIsNewGameModalOpen(false); + }; useEffect(() => { const fetchGames = async () => { @@ -67,7 +73,11 @@ export default function GMPortal({ > GM Portal -
@@ -79,6 +89,10 @@ export default function GMPortal({ */} +
)}
From e741379b6b21bde79fc8f5e77c068ee83ad688c5 Mon Sep 17 00:00:00 2001 From: Garrett Vorbeck Date: Wed, 4 Oct 2023 17:16:37 -0400 Subject: [PATCH 54/70] package bumps --- package-lock.json | 18 +++++++++--------- package.json | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index d60b9126..f3d8c692 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,8 +29,8 @@ "@types/dompurify": "^3.0.3", "@types/jest": "^29.5.5", "@types/marked": "^5.0.2", - "@types/node": "^20.7.2", - "@types/react": "^18.2.23", + "@types/node": "^20.8.0", + "@types/react": "^18.2.24", "@types/react-dom": "^18.2.8", "@vitejs/plugin-react": "^4.1.0", "autoprefixer": "^10.4.15", @@ -43,7 +43,7 @@ "ts-jest": "^29.1.1", "typescript": "5.2.2", "vite": "^4.4.9", - "vite-plugin-svgr": "^4.0.0", + "vite-plugin-svgr": "^4.1.0", "vite-tsconfig-paths": "^4.2.1" } }, @@ -3144,9 +3144,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.2.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.23.tgz", - "integrity": "sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==", + "version": "18.2.24", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz", + "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -10476,9 +10476,9 @@ } }, "node_modules/vite-plugin-svgr": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.0.0.tgz", - "integrity": "sha512-ingW8FEJ4vz9mQumnMDhNysE+YleiaThYmgflhUIVI4iIjVsVA1SswYIKprWVmyFsiIk1DqcwUeTFCnUJA3Vvg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.1.0.tgz", + "integrity": "sha512-v7Qic+FWmCChgQNGSI4V8X63OEYsdUoLt66iqIcHozq9bfK/Dwmr0V+LBy1NE8CE98Y8HouEBJ+pto4AMfN5xw==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.4", diff --git a/package.json b/package.json index ab744d4a..21dd02ef 100755 --- a/package.json +++ b/package.json @@ -63,8 +63,8 @@ "@types/dompurify": "^3.0.3", "@types/jest": "^29.5.5", "@types/marked": "^5.0.2", - "@types/node": "^20.7.2", - "@types/react": "^18.2.23", + "@types/node": "^20.8.0", + "@types/react": "^18.2.24", "@types/react-dom": "^18.2.8", "@vitejs/plugin-react": "^4.1.0", "autoprefixer": "^10.4.15", @@ -77,7 +77,7 @@ "ts-jest": "^29.1.1", "typescript": "5.2.2", "vite": "^4.4.9", - "vite-plugin-svgr": "^4.0.0", + "vite-plugin-svgr": "^4.1.0", "vite-tsconfig-paths": "^4.2.1" } } From 2fe25833532285a9c9a642e5297db0051640ce3b Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 5 Oct 2023 22:00:21 -0400 Subject: [PATCH 55/70] package bumps --- package-lock.json | 1681 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 12 +- 2 files changed, 1614 insertions(+), 79 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3d8c692..4d547685 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,21 +28,22 @@ "@testing-library/user-event": "^14.5.1", "@types/dompurify": "^3.0.3", "@types/jest": "^29.5.5", - "@types/marked": "^5.0.2", - "@types/node": "^20.8.0", + "@types/marked": "^6.0.0", + "@types/node": "^20.8.2", "@types/react": "^18.2.24", - "@types/react-dom": "^18.2.8", + "@types/react-dom": "^18.2.9", "@vitejs/plugin-react": "^4.1.0", "autoprefixer": "^10.4.15", "husky": "^8.0.3", "jest": "^29.7.0", "lint-staged": "^14.0.1", + "plop": "^4.0.0", "postcss": "^8.4.31", "prettier": "^3.0.3", "tailwindcss": "^3.3.3", "ts-jest": "^29.1.1", "typescript": "5.2.2", - "vite": "^4.4.9", + "vite": "^4.4.10", "vite-plugin-svgr": "^4.1.0", "vite-tsconfig-paths": "^4.2.1" } @@ -2338,6 +2339,15 @@ "node": ">=v12.0.0" } }, + "node_modules/@ljharb/through": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.9.tgz", + "integrity": "sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2979,6 +2989,12 @@ "@types/send": "*" } }, + "node_modules/@types/fined": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/fined/-/fined-1.1.3.tgz", + "integrity": "sha512-CWYnSRnun3CGbt6taXeVo2lCbuaj4mchVJ4UF/BdU5TSuIn3AmS13pGMwCsBUoehGbhZrBrpNJZSZI5EVilXww==", + "dev": true + }, "node_modules/@types/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", @@ -3003,6 +3019,16 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" }, + "node_modules/@types/inquirer": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.3.tgz", + "integrity": "sha512-CzNkWqQftcmk2jaCWdBTf9Sm7xSw4rkI1zpU/Udw3HX5//adEZUIm9STtoRP1qgWj0CWQtJ9UTvqmO2NNjhMJw==", + "dev": true, + "dependencies": { + "@types/through": "*", + "rxjs": "^7.2.0" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3077,6 +3103,16 @@ "@types/node": "*" } }, + "node_modules/@types/liftoff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/liftoff/-/liftoff-4.0.1.tgz", + "integrity": "sha512-GUUFIP1wHuB6DEg65hkgJdqqmEeK5Vj+Wy5Tza26F9FuaHhtm4BxN00N3PhVUdCcryY9pn3SkcXGGQDLBisAPQ==", + "dev": true, + "dependencies": { + "@types/fined": "*", + "@types/node": "*" + } + }, "node_modules/@types/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.3.tgz", @@ -3100,10 +3136,14 @@ } }, "node_modules/@types/marked": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-5.0.2.tgz", - "integrity": "sha512-OucS4KMHhFzhz27KxmWg7J+kIYqyqoW5kdIEI319hqARQQUTqhao3M/F+uFnDXD0Rg72iDDZxZNxq5gvctmLlg==", - "dev": true + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-6.0.0.tgz", + "integrity": "sha512-jmjpa4BwUsmhxcfsgUit/7A9KbrC48Q0q8KvnY107ogcjGgTFDlIL3RpihNpx2Mu1hM4mdFQjoVc4O6JoGKHsA==", + "deprecated": "This is a stub types definition. marked provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "marked": "*" + } }, "node_modules/@types/mdurl": { "version": "1.0.2", @@ -3123,9 +3163,9 @@ "optional": true }, "node_modules/@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==" + "version": "20.8.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", + "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==" }, "node_modules/@types/prop-types": { "version": "15.7.6", @@ -3155,9 +3195,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.8.tgz", - "integrity": "sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==", + "version": "18.2.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.10.tgz", + "integrity": "sha512-5VEC5RgXIk1HHdyN1pHlg0cOqnxHzvPGpMMyGAP5qSaDRmyZNDaQ0kkVAkK6NYlDhP6YBID3llaXlmAS/mdgCA==", "dev": true, "dependencies": { "@types/react": "*" @@ -3204,6 +3244,15 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/through": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.31.tgz", + "integrity": "sha512-LpKpmb7FGevYgXnBXYs6HWnmiFyVG07Pt1cnbgM1IhEacITTiUaBXXvOR3Y50ksaJWGSfhbEvQFivQEFGCC55w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/trusted-types": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", @@ -3289,6 +3338,22 @@ "node": ">= 6.0.0" } }, + "node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -3442,6 +3507,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array-tree-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", @@ -3636,6 +3719,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "devOptional": true, "funding": [ { "type": "github", @@ -3649,8 +3733,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "optional": true + ] }, "node_modules/bignumber.js": { "version": "9.1.2", @@ -3670,6 +3753,17 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3750,6 +3844,30 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -3783,6 +3901,16 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -3824,6 +3952,17 @@ } ] }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -3852,6 +3991,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -3861,6 +4020,12 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3926,6 +4091,33 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, + "node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", @@ -3941,6 +4133,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -3957,6 +4161,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -4023,6 +4236,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4105,6 +4327,17 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "devOptional": true }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -4281,6 +4514,18 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", @@ -4312,6 +4557,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/del": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-7.1.0.tgz", + "integrity": "sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==", + "dev": true, + "dependencies": { + "globby": "^13.1.2", + "graceful-fs": "^4.2.10", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^5.5.0", + "rimraf": "^3.0.2", + "slash": "^4.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -4336,6 +4624,18 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -4686,6 +4986,18 @@ "node": ">= 0.8.0" } }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", @@ -4706,7 +5018,33 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true + "devOptional": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -4811,6 +5149,34 @@ "bser": "2.1.1" } }, + "node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -4836,6 +5202,37 @@ "node": ">=8" } }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/fined": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0", + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/firebase": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.4.0.tgz", @@ -4926,15 +5323,45 @@ "@firebase/util": "1.9.3" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/flagged-respawn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", + "dev": true, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { "is-callable": "^1.1.3" } }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fraction.js": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", @@ -5121,6 +5548,48 @@ "node": ">=10.13.0" } }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -5130,6 +5599,37 @@ "node": ">=4" } }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", @@ -5288,6 +5788,27 @@ "node": ">=12.0.0" } }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -5369,6 +5890,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -5431,71 +5974,426 @@ "url": "https://github.com/sponsors/typicode" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "devOptional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "devOptional": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "9.2.11", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.11.tgz", + "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "dev": true, + "dependencies": { + "@ljharb/through": "^2.3.9", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/inquirer/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/import-local": { + "node_modules/inquirer/node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "devOptional": true, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true - }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -5510,6 +6408,28 @@ "node": ">= 0.4" } }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -5667,6 +6587,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -5700,6 +6632,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -5716,6 +6681,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", @@ -5800,6 +6777,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -5822,18 +6823,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/isbinaryfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", + "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", + "dev": true, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -7228,6 +8259,15 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/klaw": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", @@ -7268,6 +8308,25 @@ "node": ">= 0.8.0" } }, + "node_modules/liftoff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-4.0.0.tgz", + "integrity": "sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==", + "dev": true, + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "object.map": "^1.0.1", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -7377,7 +8436,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "optional": true + "devOptional": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -7389,6 +8448,12 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -7430,6 +8495,34 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/log-update": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", @@ -7569,6 +8662,18 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -7578,6 +8683,15 @@ "tmpl": "1.0.5" } }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", @@ -7744,7 +8858,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "optional": true, + "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7766,6 +8880,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -7801,6 +8924,12 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -7835,15 +8964,54 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "engines": { - "node": ">= 6.13.0" + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-plop": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/node-plop/-/node-plop-0.32.0.tgz", + "integrity": "sha512-lKFSRSRuDHhwDKMUobdsvaWCbbDRbV3jMUSMiajQSQux1aNUevAZVxUHc2JERI//W8ABPRbi3ebYuSuIzkNIpQ==", + "dev": true, + "dependencies": { + "@types/inquirer": "^9.0.3", + "change-case": "^4.1.2", + "del": "^7.1.0", + "globby": "^13.2.2", + "handlebars": "^4.7.8", + "inquirer": "^9.2.10", + "isbinaryfile": "^5.0.0", + "lodash.get": "^4.4.2", + "lower-case": "^2.0.2", + "mkdirp": "^3.0.1", + "resolve": "^1.22.4", + "title-case": "^3.0.3", + "upper-case": "^2.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/node-plop/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -7965,6 +9133,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8006,6 +9214,73 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", + "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", + "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", + "dev": true + }, + "node_modules/ora/node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -8048,6 +9323,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -8057,6 +9347,16 @@ "node": ">=6" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8069,6 +9369,20 @@ "node": ">=6" } }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -8087,6 +9401,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8120,6 +9463,27 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8189,6 +9553,40 @@ "node": ">=8" } }, + "node_modules/plop": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/plop/-/plop-4.0.0.tgz", + "integrity": "sha512-6hsuNofd5crnl7upQSRyw+7zVBZqxF9UZoWqsKqtPthpvtgUuYD+atBx7ZD9RT8qXWnylyCt9bpvYLZPexxDMg==", + "dev": true, + "dependencies": { + "@types/liftoff": "^4.0.1", + "chalk": "^5.3.0", + "interpret": "^3.1.1", + "liftoff": "^4.0.0", + "minimist": "^1.2.8", + "node-plop": "^0.32.0", + "ora": "^7.0.1", + "v8flags": "^4.0.1" + }, + "bin": { + "plop": "bin/plop.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/plop/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -9205,7 +10603,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "optional": true, + "devOptional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9227,6 +10625,18 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", @@ -9309,6 +10719,19 @@ "node": ">=8" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -9409,7 +10832,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, + "devOptional": true, "dependencies": { "glob": "^7.1.3" }, @@ -9424,7 +10847,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, + "devOptional": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9434,7 +10857,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "optional": true, + "devOptional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9454,7 +10877,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "optional": true, + "devOptional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9478,6 +10901,15 @@ "fsevents": "~2.3.2" } }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9501,6 +10933,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9520,6 +10961,12 @@ } ] }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -9550,6 +10997,17 @@ "semver": "bin/semver.js" } }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -9704,6 +11162,21 @@ "node": ">=10" } }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", @@ -9735,7 +11208,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "optional": true, + "devOptional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -10124,6 +11597,15 @@ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -10352,6 +11834,15 @@ "node": ">=0.8.0" } }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/underscore": { "version": "1.13.6", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", @@ -10388,6 +11879,24 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -10420,10 +11929,19 @@ "node": ">=10.12.0" } }, + "node_modules/v8flags": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", + "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", + "dev": true, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.10.tgz", + "integrity": "sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -10517,6 +12035,15 @@ "makeerror": "1.0.12" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/web-vitals": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.0.tgz", @@ -10631,6 +12158,12 @@ "node": ">=0.10.0" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", diff --git a/package.json b/package.json index 21dd02ef..78da86db 100755 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ ] }, "scripts": { - "start": "vite", + "start": "vite --logLevel info", + "plop": "plop", "build": "tsc && vite build", "serve": "vite preview", "test": "jest --coverage" @@ -62,21 +63,22 @@ "@testing-library/user-event": "^14.5.1", "@types/dompurify": "^3.0.3", "@types/jest": "^29.5.5", - "@types/marked": "^5.0.2", - "@types/node": "^20.8.0", + "@types/marked": "^6.0.0", + "@types/node": "^20.8.2", "@types/react": "^18.2.24", - "@types/react-dom": "^18.2.8", + "@types/react-dom": "^18.2.9", "@vitejs/plugin-react": "^4.1.0", "autoprefixer": "^10.4.15", "husky": "^8.0.3", "jest": "^29.7.0", "lint-staged": "^14.0.1", + "plop": "^4.0.0", "postcss": "^8.4.31", "prettier": "^3.0.3", "tailwindcss": "^3.3.3", "ts-jest": "^29.1.1", "typescript": "5.2.2", - "vite": "^4.4.9", + "vite": "^4.4.10", "vite-plugin-svgr": "^4.1.0", "vite-tsconfig-paths": "^4.2.1" } From c139fc575329156b36fd622175e6e2ddca8ce606 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 5 Oct 2023 22:00:37 -0400 Subject: [PATCH 56/70] plop --- plop-templates/Component/Component.tsx.hbs | 10 +++++++++ plopfile.js | 24 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 plop-templates/Component/Component.tsx.hbs create mode 100644 plopfile.js diff --git a/plop-templates/Component/Component.tsx.hbs b/plop-templates/Component/Component.tsx.hbs new file mode 100644 index 00000000..dfba7d92 --- /dev/null +++ b/plop-templates/Component/Component.tsx.hbs @@ -0,0 +1,10 @@ +import React from 'react'; + +interface {{pascalCase name}}Props { +// define your prop types here +} + +const {{pascalCase name}}: React.FC<{{pascalCase name}}Props> = ({}) => { + return
{{pascalCase name}}
}; + + export default {{pascalCase name}}; \ No newline at end of file diff --git a/plopfile.js b/plopfile.js new file mode 100644 index 00000000..1e6df045 --- /dev/null +++ b/plopfile.js @@ -0,0 +1,24 @@ +module.exports = function (plop) { + plop.setGenerator("component", { + description: "Create a component dir/file", + prompts: [ + { + type: "input", + name: "name", + message: "What is your component name?", + }, + ], + actions: [ + { + type: "add", + path: "src/components/{{pascalCase name}}/{{pascalCase name}}.tsx", + templateFile: "plop-templates/Component/Component.tsx.hbs", + }, + // { + // type: "add", + // path: "src/components/{{pascalCase name}}/{{pascalCase name}}.test.js", + // templateFile: "plop-templates/Component/Component.test.js.hbs", + // }, + ], + }); +}; From d0f237bbdd5339218a658c03a5059d79d6ac7e66 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 5 Oct 2023 22:01:04 -0400 Subject: [PATCH 57/70] update --- .vscode/settings.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index d1b4edb2..936ed191 100755 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,7 @@ { "editor.formatOnSave": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" -} \ No newline at end of file + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[handlebars]": { + "editor.defaultFormatter": "vscode.html-language-features" + } +} From ab3dbf9100db4fd0650c8b22642c5a7038aa6e7b Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Thu, 5 Oct 2023 22:01:14 -0400 Subject: [PATCH 58/70] gm portal updates --- src/components/GameCard/GameCard.tsx | 12 +++ src/components/NewGameModal/NewGameModal.tsx | 14 ++- src/data/definitions.ts | 3 +- src/pages/GMPortal/GMPortal.tsx | 97 ++++++++++++++++---- 4 files changed, 107 insertions(+), 19 deletions(-) create mode 100644 src/components/GameCard/GameCard.tsx diff --git a/src/components/GameCard/GameCard.tsx b/src/components/GameCard/GameCard.tsx new file mode 100644 index 00000000..95f26302 --- /dev/null +++ b/src/components/GameCard/GameCard.tsx @@ -0,0 +1,12 @@ +import React from "react"; +import { GameData } from "../../data/definitions"; + +interface GameCardProps { + gameData: GameData; +} + +const GameCard: React.FC = ({ gameData }) => { + return
{gameData.name}
; +}; + +export default GameCard; diff --git a/src/components/NewGameModal/NewGameModal.tsx b/src/components/NewGameModal/NewGameModal.tsx index 18fa27c3..6eb9ceb6 100644 --- a/src/components/NewGameModal/NewGameModal.tsx +++ b/src/components/NewGameModal/NewGameModal.tsx @@ -1,24 +1,34 @@ import { Button, Form, Input, Modal } from "antd"; import CloseIcon from "../CloseIcon/CloseIcon"; +import { GameData } from "../../data/definitions"; +import { useEffect } from "react"; export default function NewGameModal({ isNewGameModalOpen, handleCancel, + addGameData, }: { isNewGameModalOpen: boolean; handleCancel: () => void; + addGameData: (gameData: GameData) => Promise; }) { + const [form] = Form.useForm(); + const onFinish = (values: any) => { - console.log("Received values:", values); + addGameData({ name: values.newGameTitle }); + form.resetFields(); + handleCancel(); }; + return ( } + footer={false} > -
+ ) { const outletContext = useOutletContext() as { className: string }; - const [games, setGames] = useState([]); + const [games, setGames] = useState([]); + const [gameData, setGameData] = useState(emptyGame); const [loading, setLoading] = useState(true); const [isNewGameModalOpen, setIsNewGameModalOpen] = useState(false); + const [messageApi, contextHolder] = message.useMessage(); + + const success = (name: string) => { + messageApi.open({ + type: "success", + content: `${name} successfully saved!`, + }); + }; + + const errorMessage = (message: string) => { + messageApi.open({ + type: "error", + content: "This is an error message", + }); + }; + + async function addGameData(gameData: GameData) { + // Check if a user is currently logged in + if (auth.currentUser) { + // Get the current user's UID + const uid = auth.currentUser.uid; + + // Get a reference to the Firestore document + const docRef = doc(collection(db, `users/${uid}/games`)); + + // Set the game data for the current user + try { + await setDoc(docRef, gameData); + success(gameData.name); + // Reset gameData + setGameData(emptyGame); + } catch (error) { + console.error("Error writing document: ", error); + errorMessage(`Error writing document (see console)`); + } + } else { + console.error("No user is currently logged in."); + errorMessage(`No user is currently logged in.`); + } + } const handleCancel = () => { setIsNewGameModalOpen(false); @@ -32,7 +82,7 @@ export default function GMPortal({ // Listen to real-time updates const unsubscribe = onSnapshot(gamesCollectionRef, (snapshot) => { const userGames = snapshot.docs.map((doc) => { - const data = doc.data() as GamesData; + const data = doc.data() as GameData; data.id = doc.id; return data; }); @@ -40,11 +90,17 @@ export default function GMPortal({ document.title = `CODEX.QUEST | Game List`; setLoading(false); }); + + // Return the unsubscribe function to clean up the listener + return () => unsubscribe(); } } catch (error) { console.error("Failed to fetch games:", error); } }; + + // Call the fetchGames function when the component mounts + fetchGames(); }, [user]); const confirm = async (gameId: string) => { @@ -66,6 +122,7 @@ export default function GMPortal({ ); return (
+ {contextHolder}
{loading ? ( + ) : games.length > 0 ? ( + + {games + .sort((a, b) => a.name.localeCompare(b.name)) + .map((gameData) => { + return ( + + + + ); + })} + ) : ( -
- {/*} - - - */} - -
+ )} +
); } From 3982f6d40876369b89b8238cc6c1723a059d5f56 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 9 Oct 2023 23:53:42 -0400 Subject: [PATCH 59/70] more gm stuff --- src/App.tsx | 7 +- src/components/GameCard/GameCard.tsx | 58 +++++++++++- .../GameSheet/AddPlayerForm/AddPlayerForm.tsx | 94 +++++++++++++++++++ .../GameSheet/Clipboard/Clipboard.tsx | 10 ++ .../GameSheet/PlayerList/PlayerList.tsx | 36 +++++++ .../GameSheet/PlayerStats/PlayerStats.tsx | 13 +++ src/data/definitions.ts | 1 + .../GMPortal.tsx => GameList/GameList.tsx} | 6 +- src/pages/GameSheet/GameSheet.tsx | 76 +++++++++++++++ 9 files changed, 294 insertions(+), 7 deletions(-) create mode 100644 src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx create mode 100644 src/components/GameSheet/Clipboard/Clipboard.tsx create mode 100644 src/components/GameSheet/PlayerList/PlayerList.tsx create mode 100644 src/components/GameSheet/PlayerStats/PlayerStats.tsx rename src/pages/{GMPortal/GMPortal.tsx => GameList/GameList.tsx} (96%) create mode 100644 src/pages/GameSheet/GameSheet.tsx diff --git a/src/App.tsx b/src/App.tsx index 14152b18..2ba40e9f 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -12,6 +12,8 @@ import { Suspense, lazy, useEffect, useState } from "react"; import { doc, setDoc } from "firebase/firestore"; import { db } from "./firebase.js"; import { ConfigProvider, Spin } from "antd"; +import GameSheet from "./pages/GameSheet/GameSheet"; +import GameList from "./pages/GameList/GameList"; // import Welcome from "./pages/Welcome/Welcome"; // import CharacterCreator from "./pages/CharacterCreator/CharacterCreator"; // import Sources from "./pages/Sources/Sources"; @@ -26,7 +28,7 @@ const Sources = lazy(() => import("./pages/Sources/Sources")); const CharacterSheet = lazy( () => import("./pages/CharacterSheet/CharacterSheet") ); -const GMPortal = lazy(() => import("./pages/GMPortal/GMPortal")); +const GMPortal = lazy(() => import("./pages/GameList/GameList")); function App() { const [user, setUser] = useState(null); @@ -106,7 +108,8 @@ function App() { /> } /> } /> - } /> + } /> + } /> diff --git a/src/components/GameCard/GameCard.tsx b/src/components/GameCard/GameCard.tsx index 95f26302..b8257c51 100644 --- a/src/components/GameCard/GameCard.tsx +++ b/src/components/GameCard/GameCard.tsx @@ -1,12 +1,66 @@ import React from "react"; import { GameData } from "../../data/definitions"; +import { Card, Popconfirm } from "antd"; +import { DeleteOutlined, SolutionOutlined } from "@ant-design/icons"; +import { useNavigate } from "react-router-dom"; +import { User } from "firebase/auth"; interface GameCardProps { gameData: GameData; + user: User | null; + confirm: (gameId: string) => Promise; } -const GameCard: React.FC = ({ gameData }) => { - return
{gameData.name}
; +const commonCardStyles = { + backgroundColor: "#e2e8f0", + border: "1px solid rgba(62,53,67, 0.15)", + borderBottomWidth: "2px", +}; + +const GameCard: React.FC = ({ gameData, user }) => { + const navigate = useNavigate(); + return ( + + {gameData.name} + + } + headStyle={{ + ...commonCardStyles, + borderRadius: "0.5rem 0.5rem 0 0", + }} + bodyStyle={{ + ...commonCardStyles, + borderTop: "none", + borderBottom: "none", + borderRadius: "0", + }} + actions={[ + navigate(`/u/${user?.uid}/g/${gameData.id}`)} + title="Go to GM Screen" + aria-label="Go to GM Screen" + />, + gameData?.id && confirm(gameData.id)} + okText="Yes" + cancelText="No" + > + + , + ]} + > + Players: {gameData.players?.length || 0} + + ); }; export default GameCard; diff --git a/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx b/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx new file mode 100644 index 00000000..7d5ce29e --- /dev/null +++ b/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx @@ -0,0 +1,94 @@ +import React, { useEffect } from "react"; +import { Form, Input, Button, message } from "antd"; +import DOMPurify from "dompurify"; +import { doc, getDoc, setDoc } from "firebase/firestore"; +import { auth, db } from "../../../firebase"; +import { CharacterData } from "../../../data/definitions"; + +interface AddPlayerFormProps { + players: CharacterData[]; + setPlayers: (players: CharacterData[]) => void; + gmId: string; + gameId: string; +} + +async function updateGameWithNewPlayer( + gameId: string, + userId: string, + newPlayer: CharacterData +) { + const gameDocRef = doc(db, `users/${userId}/games/${gameId}`); + const gameDoc = await getDoc(gameDocRef); + + if (gameDoc.exists()) { + const gameData = gameDoc.data(); + const updatedPlayers = [...(gameData?.players || []), newPlayer]; + await setDoc(gameDocRef, { ...gameData, players: updatedPlayers }); + } else { + console.error("Game does not exist"); + } +} + +const AddPlayerForm: React.FC = ({ + players = [], + setPlayers, + gmId, + gameId, +}) => { + const [form] = Form.useForm(); + + const onFinish = async (values: any) => { + const sanitizedURL = DOMPurify.sanitize(values.url); + const regex = /\/u\/([a-zA-Z0-9]+)\/c\/([a-zA-Z0-9]+)/; + const match = sanitizedURL.match(regex); + + if (match) { + const userId = match[1]; + const characterId = match[2]; + + const docRef = doc(db, `users/${userId}/characters/${characterId}`); + const docSnap = await getDoc(docRef); + + if (docSnap.exists()) { + const characterData = docSnap.data() as CharacterData; + if (Array.isArray(players)) { + setPlayers([...players, characterData]); + // Assuming you have the gameId + updateGameWithNewPlayer(gameId, gmId, characterData); + } else { + console.error("Players is not an array:", players); + } + message.success("Character added successfully."); + form.resetFields(); + } else { + message.error("No such character exists."); + } + } else { + message.error("Invalid URL format."); + } + }; + + return ( + + + + + + + + + + ); +}; + +export default AddPlayerForm; diff --git a/src/components/GameSheet/Clipboard/Clipboard.tsx b/src/components/GameSheet/Clipboard/Clipboard.tsx new file mode 100644 index 00000000..affbdb37 --- /dev/null +++ b/src/components/GameSheet/Clipboard/Clipboard.tsx @@ -0,0 +1,10 @@ +import React from 'react'; + +interface ClipboardProps { +// define your prop types here +} + +const Clipboard: React.FC = ({}) => { + return
Clipboard
}; + + export default Clipboard; \ No newline at end of file diff --git a/src/components/GameSheet/PlayerList/PlayerList.tsx b/src/components/GameSheet/PlayerList/PlayerList.tsx new file mode 100644 index 00000000..05535de2 --- /dev/null +++ b/src/components/GameSheet/PlayerList/PlayerList.tsx @@ -0,0 +1,36 @@ +import React, { useEffect } from "react"; +import { CharacterData } from "../../../data/definitions"; +import PlayerStats from "../PlayerStats/PlayerStats"; +import AddPlayerForm from "../AddPlayerForm/AddPlayerForm"; + +interface PlayerListProps { + players: CharacterData[]; + setPlayers: (players: CharacterData[]) => void; + gameId: string; + userId: string; +} + +const PlayerList: React.FC = ({ + players, + setPlayers, + gameId, + userId, +}) => { + return ( +
+
+ {players?.map((player: CharacterData) => ( + + ))} +
+ +
+ ); +}; + +export default PlayerList; diff --git a/src/components/GameSheet/PlayerStats/PlayerStats.tsx b/src/components/GameSheet/PlayerStats/PlayerStats.tsx new file mode 100644 index 00000000..8de0b5fa --- /dev/null +++ b/src/components/GameSheet/PlayerStats/PlayerStats.tsx @@ -0,0 +1,13 @@ +import React from "react"; +import { CharacterData } from "../../../data/definitions"; + +interface PlayerStatsProps { + player: CharacterData; +} + +const PlayerStats: React.FC = ({ player }) => { + console.log("player", player); + return
{player.name}
; +}; + +export default PlayerStats; diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 3eaa975e..810ea608 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -156,4 +156,5 @@ export type AbilityRecord = { export type GameData = { name: string; id?: string; + players: CharacterData[]; }; diff --git a/src/pages/GMPortal/GMPortal.tsx b/src/pages/GameList/GameList.tsx similarity index 96% rename from src/pages/GMPortal/GMPortal.tsx rename to src/pages/GameList/GameList.tsx index 8b7223ce..bfeef232 100644 --- a/src/pages/GMPortal/GMPortal.tsx +++ b/src/pages/GameList/GameList.tsx @@ -16,9 +16,9 @@ import classNames from "classnames"; import NewGameModal from "../../components/NewGameModal/NewGameModal"; import GameCard from "../../components/GameCard/GameCard"; -const emptyGame: GameData = { name: "", id: "" }; +const emptyGame: GameData = { name: "", id: "", players: [] }; -export default function GMPortal({ +export default function GameList({ user, className, }: { user: User | null } & React.ComponentPropsWithRef<"div">) { @@ -147,7 +147,7 @@ export default function GMPortal({ .map((gameData) => { return ( - + ); })} diff --git a/src/pages/GameSheet/GameSheet.tsx b/src/pages/GameSheet/GameSheet.tsx new file mode 100644 index 00000000..a850cc69 --- /dev/null +++ b/src/pages/GameSheet/GameSheet.tsx @@ -0,0 +1,76 @@ +import { User } from "firebase/auth"; +import { useParams } from "react-router-dom"; +import PlayerList from "../../components/GameSheet/PlayerList/PlayerList"; +import Clipboard from "../../components/GameSheet/Clipboard/Clipboard"; +import classNames from "classnames"; +import { Skeleton, Typography, message } from "antd"; +import { useEffect, useState } from "react"; +import { doc, onSnapshot } from "firebase/firestore"; +import { db } from "../../firebase"; +import { GameData } from "../../data/definitions"; + +type GameSheetProps = { user: User | null }; + +export default function GameSheet({ user }: GameSheetProps) { + const [gameData, setGameData] = useState(null); + const [players, setPlayers] = useState([]); + const [messageApi, contextHolder] = message.useMessage(); + + useEffect(() => { + setPlayers(gameData?.players || []); + }, [gameData]); + + const { uid, id } = useParams(); + + const gameSheetClassNames = classNames( + "flex", + "flex-col", + "lg:flex-row", + "gap-4", + "[&>div]:flex-[1_0_0%]", + "[&>div]:p-4" + ); + + // GET GameDATA + useEffect(() => { + const gameDocRef = doc(db, `users/${uid}/games/${id}`); + + // Listen to real-time updates + const unsubscribe = onSnapshot(gameDocRef, (snapshot) => { + if (snapshot.exists()) { + let gameData = snapshot.data() as GameData; + setGameData(gameData); + document.title = `${gameData.name} | CODEX.QUEST`; + } else { + console.error("Game not found"); + } + }); + + // Return the unsubscribe function to clean up the listener + return () => unsubscribe(); + }, [uid, id]); + + return ( +
+ {contextHolder} +
+ + {gameData ? gameData.name : } + +
+
+ {gameData && id && uid ? ( + + ) : ( + + )} + {gameData ? : } +
+
+ ); +} From 98d92d53a9c00b0d2ff01cbe9a450cce020c2908 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Mon, 9 Oct 2023 23:55:33 -0400 Subject: [PATCH 60/70] todo --- src/pages/GameSheet/GameSheet.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/GameSheet/GameSheet.tsx b/src/pages/GameSheet/GameSheet.tsx index a850cc69..18489327 100644 --- a/src/pages/GameSheet/GameSheet.tsx +++ b/src/pages/GameSheet/GameSheet.tsx @@ -22,6 +22,8 @@ export default function GameSheet({ user }: GameSheetProps) { const { uid, id } = useParams(); + // TODO: NOTE TO SELF: shouldn't be storing copies of the characters' data in the game data as it wont change when the players change their characters. instead should be storing the user/character id and then getting the character data from the character document. + const gameSheetClassNames = classNames( "flex", "flex-col", From 756ba8bb0fb7a22e60da4b3c089e82e98026f983 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Tue, 10 Oct 2023 20:43:34 -0400 Subject: [PATCH 61/70] better data handling for characters in game --- .../GameSheet/AddPlayerForm/AddPlayerForm.tsx | 14 +++--- .../GameSheet/PlayerList/PlayerList.tsx | 49 ++++++++++++++++--- .../GameSheet/PlayerStats/PlayerStats.tsx | 5 +- src/data/definitions.ts | 4 +- 4 files changed, 53 insertions(+), 19 deletions(-) diff --git a/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx b/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx index 7d5ce29e..12b7759d 100644 --- a/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx +++ b/src/components/GameSheet/AddPlayerForm/AddPlayerForm.tsx @@ -1,13 +1,13 @@ -import React, { useEffect } from "react"; +import React from "react"; import { Form, Input, Button, message } from "antd"; import DOMPurify from "dompurify"; import { doc, getDoc, setDoc } from "firebase/firestore"; -import { auth, db } from "../../../firebase"; -import { CharacterData } from "../../../data/definitions"; +import { db } from "../../../firebase"; +import { PlayerListObject } from "../../../data/definitions"; interface AddPlayerFormProps { - players: CharacterData[]; - setPlayers: (players: CharacterData[]) => void; + players: PlayerListObject[]; + setPlayers: (players: PlayerListObject[]) => void; gmId: string; gameId: string; } @@ -15,7 +15,7 @@ interface AddPlayerFormProps { async function updateGameWithNewPlayer( gameId: string, userId: string, - newPlayer: CharacterData + newPlayer: PlayerListObject ) { const gameDocRef = doc(db, `users/${userId}/games/${gameId}`); const gameDoc = await getDoc(gameDocRef); @@ -50,7 +50,7 @@ const AddPlayerForm: React.FC = ({ const docSnap = await getDoc(docRef); if (docSnap.exists()) { - const characterData = docSnap.data() as CharacterData; + const characterData = { user: userId, character: characterId }; if (Array.isArray(players)) { setPlayers([...players, characterData]); // Assuming you have the gameId diff --git a/src/components/GameSheet/PlayerList/PlayerList.tsx b/src/components/GameSheet/PlayerList/PlayerList.tsx index 05535de2..0810c764 100644 --- a/src/components/GameSheet/PlayerList/PlayerList.tsx +++ b/src/components/GameSheet/PlayerList/PlayerList.tsx @@ -1,14 +1,28 @@ -import React, { useEffect } from "react"; -import { CharacterData } from "../../../data/definitions"; +import React, { useEffect, useState } from "react"; +import { CharacterData, PlayerListObject } from "../../../data/definitions"; import PlayerStats from "../PlayerStats/PlayerStats"; import AddPlayerForm from "../AddPlayerForm/AddPlayerForm"; +import { db } from "../../../firebase"; +import { doc, getDoc } from "firebase/firestore"; +import { get } from "http"; -interface PlayerListProps { - players: CharacterData[]; - setPlayers: (players: CharacterData[]) => void; +type PlayerListProps = { + players: PlayerListObject[]; + setPlayers: (players: PlayerListObject[]) => void; gameId: string; userId: string; -} +}; + +const getCharacterData = async (userId: string, characterId: string) => { + const docRef = doc(db, `users/${userId}/characters/${characterId}`); + const docSnap = await getDoc(docRef); + + if (docSnap.exists()) { + return docSnap.data() as CharacterData; + } else { + console.error("No such document!"); + } +}; const PlayerList: React.FC = ({ players, @@ -16,11 +30,30 @@ const PlayerList: React.FC = ({ gameId, userId, }) => { + const [characterDataList, setCharacterDataList] = useState( + [] + ); + + useEffect(() => { + const fetchAllCharacterData = async () => { + const fetchedData: CharacterData[] = []; + for (const player of players) { + const data = await getCharacterData(player.user, player.character); + if (data) { + fetchedData.push(data); + } + } + setCharacterDataList(fetchedData); + }; + + fetchAllCharacterData(); + }, [players]); + return (
- {players?.map((player: CharacterData) => ( - + {characterDataList.map((characterData, index) => ( + ))}
= ({ player }) => { - console.log("player", player); - return
{player.name}
; + return <>{player &&
{player.name}
}; }; export default PlayerStats; diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 810ea608..40622561 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -156,5 +156,7 @@ export type AbilityRecord = { export type GameData = { name: string; id?: string; - players: CharacterData[]; + players: PlayerListObject[]; }; + +export type PlayerListObject = { user: string; character: string }; From b8fea6ed56cd4ca4dbc67ec876032146ad05b59f Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Tue, 10 Oct 2023 20:46:23 -0400 Subject: [PATCH 62/70] feature tease --- src/components/GameSheet/Clipboard/Clipboard.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/GameSheet/Clipboard/Clipboard.tsx b/src/components/GameSheet/Clipboard/Clipboard.tsx index affbdb37..1b64ea50 100644 --- a/src/components/GameSheet/Clipboard/Clipboard.tsx +++ b/src/components/GameSheet/Clipboard/Clipboard.tsx @@ -1,10 +1,11 @@ -import React from 'react'; +import React from "react"; interface ClipboardProps { -// define your prop types here + // define your prop types here } const Clipboard: React.FC = ({}) => { - return
Clipboard
}; + return
Clipboard: All the data a GM will need! coming soon!
; +}; - export default Clipboard; \ No newline at end of file +export default Clipboard; From aa0777bf67b843e5f4f930f234a1d8fb0dd6ada1 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Tue, 10 Oct 2023 23:04:11 -0400 Subject: [PATCH 63/70] player stats --- .../GameSheet/PlayerList/PlayerList.tsx | 9 +++- .../GameSheet/PlayerStats/PlayerStats.tsx | 53 +++++++++++++++++-- src/support/helpers.ts | 5 ++ 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/src/components/GameSheet/PlayerList/PlayerList.tsx b/src/components/GameSheet/PlayerList/PlayerList.tsx index 0810c764..c52ec7c0 100644 --- a/src/components/GameSheet/PlayerList/PlayerList.tsx +++ b/src/components/GameSheet/PlayerList/PlayerList.tsx @@ -51,9 +51,14 @@ const PlayerList: React.FC = ({ return (
-
+
{characterDataList.map((characterData, index) => ( - + ))}
= ({ player }) => { - return <>{player &&
{player.name}
}; +const PlayerStats: React.FC = ({ + player, + userId, + characterId, +}) => { + return ( + <> + {player && ( + openInNewTab(`/u/${userId}/c/${characterId}`)} + > + Sheet + + } + > + +
+ {Object.entries(player.abilities.scores).map((ability) => { + const key = ability[0] as keyof Abilities; + return ( +
+ + {key.slice(0, 3)} + + + {ability[1]} + + + {player.abilities.modifiers[key]} + +
+ ); + })} +
+
+ )} + + ); }; export default PlayerStats; diff --git a/src/support/helpers.ts b/src/support/helpers.ts index 2ea9303f..4177991b 100755 --- a/src/support/helpers.ts +++ b/src/support/helpers.ts @@ -292,3 +292,8 @@ export const equipmentItemIsDisabled = ( return disabled; }; + +export const openInNewTab = (url: string) => { + const newWindow = window.open(url, "_blank", "noopener,noreferrer"); + if (newWindow) newWindow.opener = null; +}; From 113d946fe38ea8354bba9ba197349f8bbf2462e9 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Tue, 10 Oct 2023 23:40:45 -0400 Subject: [PATCH 64/70] new navigation --- src/App.tsx | 19 ++++++-- .../HeaderContent/HeaderContent.tsx | 47 ++++++++++++++----- src/components/PageLayout/PageLayout.tsx | 15 +++++- src/components/PageLayout/definitions.ts | 7 --- src/data/definitions.ts | 6 +++ src/pages/CharacterList/CharacterList.tsx | 26 ++++++++-- src/pages/GameList/GameList.tsx | 2 +- 7 files changed, 95 insertions(+), 27 deletions(-) delete mode 100755 src/components/PageLayout/definitions.ts diff --git a/src/App.tsx b/src/App.tsx index 2ba40e9f..239ba53c 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -14,6 +14,7 @@ import { db } from "./firebase.js"; import { ConfigProvider, Spin } from "antd"; import GameSheet from "./pages/GameSheet/GameSheet"; import GameList from "./pages/GameList/GameList"; +import { MODE, ModeType } from "./data/definitions"; // import Welcome from "./pages/Welcome/Welcome"; // import CharacterCreator from "./pages/CharacterCreator/CharacterCreator"; // import Sources from "./pages/Sources/Sources"; @@ -33,6 +34,9 @@ const GMPortal = lazy(() => import("./pages/GameList/GameList")); function App() { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); + const [mode, setMode] = useState(MODE.PLAYER); + useEffect(() => console.log(mode), [mode]); + const auth = getAuth(); useEffect(() => { @@ -87,7 +91,13 @@ function App() { + } > ) : user ? ( - + mode === MODE.PLAYER ? ( + + ) : ( + + ) ) : ( ) @@ -108,7 +122,6 @@ function App() { /> } /> } /> - } /> } /> diff --git a/src/components/PageLayout/HeaderContent/HeaderContent.tsx b/src/components/PageLayout/HeaderContent/HeaderContent.tsx index 3f058da2..a009f90e 100755 --- a/src/components/PageLayout/HeaderContent/HeaderContent.tsx +++ b/src/components/PageLayout/HeaderContent/HeaderContent.tsx @@ -1,28 +1,41 @@ -import { Link, useNavigate } from "react-router-dom"; -import { Button, Tooltip, Typography } from "antd"; -import { - LogoutOutlined, - ReconciliationOutlined, - UserAddOutlined, -} from "@ant-design/icons"; +import { Link } from "react-router-dom"; +import { Button, Switch, Tooltip, Typography } from "antd"; +import { LogoutOutlined } from "@ant-design/icons"; import LoginSignupModal from "../../../modals/LoginSignupModal"; import { useState } from "react"; import { title } from "../../../../package.json"; import classNames from "classnames"; -import { PageLayoutProps } from "../definitions"; import DragonIcon from "../../../assets/images/spiked-dragon-head.png"; +import { Auth, User } from "firebase/auth"; +import { MODE, ModeType } from "../../../data/definitions"; -interface HeaderContentProps extends PageLayoutProps {} +type HeaderContentProps = { + user: User | null; + handleLogin: () => Promise; + auth: Auth; + mode: ModeType; + setMode: (mode: ModeType) => void; +}; export default function HeaderContent({ auth, handleLogin, user, className, + mode, + setMode, }: HeaderContentProps & React.ComponentPropsWithRef<"div">) { - const navigate = useNavigate(); const [isLoginSignupModalOpen, setIsLoginSignupModalOpen] = useState(false); + const handleCancel = () => setIsLoginSignupModalOpen(false); + const handleModeSwitchChange = (checked: boolean) => { + if (checked) { + setMode(MODE.PLAYER); + } else { + setMode(MODE.GM); + } + }; + const headerContentClassNames = classNames( "gap-y-2", "grid", @@ -56,14 +69,24 @@ export default function HeaderContent({ {user && (
- + */}
)} <> diff --git a/src/components/PageLayout/PageLayout.tsx b/src/components/PageLayout/PageLayout.tsx index bdf95dee..656fea82 100755 --- a/src/components/PageLayout/PageLayout.tsx +++ b/src/components/PageLayout/PageLayout.tsx @@ -2,13 +2,24 @@ import { Layout } from "antd"; import FooterContent from "./FooterContent/FooterContent"; import { Outlet } from "react-router-dom"; import HeaderContent from "./HeaderContent/HeaderContent"; -import { PageLayoutProps } from "./definitions"; import classNames from "classnames"; +import { User, Auth } from "firebase/auth"; +import { ModeType } from "../../data/definitions"; + +type PageLayoutProps = { + user: User | null; + handleLogin: () => Promise; + auth: Auth; + mode: ModeType; + setMode: (mode: ModeType) => void; +}; export default function PageLayout({ auth, handleLogin, user, + mode, + setMode, }: PageLayoutProps) { const headerClassNames = classNames( "bg-shipGray", @@ -43,6 +54,8 @@ export default function PageLayout({ handleLogin={handleLogin} auth={auth} className="max-w-[1200px] mx-auto" + mode={mode} + setMode={setMode} /> diff --git a/src/components/PageLayout/definitions.ts b/src/components/PageLayout/definitions.ts deleted file mode 100755 index 1b102e0f..00000000 --- a/src/components/PageLayout/definitions.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Auth, User } from "firebase/auth"; - -export interface PageLayoutProps { - user: User | null; - handleLogin: () => Promise; - auth: Auth; -} diff --git a/src/data/definitions.ts b/src/data/definitions.ts index 40622561..a2037ffa 100755 --- a/src/data/definitions.ts +++ b/src/data/definitions.ts @@ -160,3 +160,9 @@ export type GameData = { }; export type PlayerListObject = { user: string; character: string }; + +export enum MODE { + PLAYER = "Player Mode", + GM = "GM Mode", +} +export type ModeType = MODE.PLAYER | MODE.GM; diff --git a/src/pages/CharacterList/CharacterList.tsx b/src/pages/CharacterList/CharacterList.tsx index 9419933d..d1f04f68 100755 --- a/src/pages/CharacterList/CharacterList.tsx +++ b/src/pages/CharacterList/CharacterList.tsx @@ -1,5 +1,5 @@ -import { Col, Empty, Row, Spin } from "antd"; -import { useOutletContext } from "react-router-dom"; +import { Button, Col, Empty, Row, Spin, Typography } from "antd"; +import { useNavigate, useOutletContext } from "react-router-dom"; import { collection, deleteDoc, doc, onSnapshot } from "firebase/firestore"; import { db } from "../../firebase"; import { useEffect, useState } from "react"; @@ -9,6 +9,7 @@ import { images } from "../../assets/images/faces/imageAssets"; import { extractImageName } from "../../support/stringSupport"; import { CharacterData } from "../../data/definitions"; import { User } from "firebase/auth"; +import { UserAddOutlined } from "@ant-design/icons"; export default function CharacterList({ user, @@ -18,6 +19,8 @@ export default function CharacterList({ const [characters, setCharacters] = useState([]); const [loading, setLoading] = useState(true); + const navigate = useNavigate(); + useEffect(() => { const fetchCharacters = async () => { try { @@ -71,11 +74,28 @@ export default function CharacterList({ const characterListClassNames = classNames( outletContext.className, - className + className, + "text-shipGray", + "[&>*+*]:mt-4" ); return (
+
+ + Characters + + +
{loading ? ( ) : characters.length > 0 ? ( diff --git a/src/pages/GameList/GameList.tsx b/src/pages/GameList/GameList.tsx index bfeef232..8c704c16 100644 --- a/src/pages/GameList/GameList.tsx +++ b/src/pages/GameList/GameList.tsx @@ -128,7 +128,7 @@ export default function GameList({ level={2} className="m-0 font-enchant text-5xl tracking-wider text-shipGray" > - GM Portal + Games - */}
)} <> From 85c454e12459e44d0e0b1b1eb604fff074fd6759 Mon Sep 17 00:00:00 2001 From: gvorbeck Date: Wed, 11 Oct 2023 00:15:01 -0400 Subject: [PATCH 66/70] open and add unowned characters to games --- src/App.tsx | 1 - .../CharacterDescription/CharacterDescription.tsx | 7 +++++++ .../CharacterSheetModals/CharacterSheetModals.tsx | 5 +++++ .../GameSheet/AddPlayerForm/AddPlayerForm.tsx | 9 +++++++-- src/modals/AddCustomEquipmentModal.tsx | 5 +++++ src/modals/AddEquipmentModal.tsx | 6 ++++++ src/modals/definitions.ts | 3 +++ src/pages/CharacterSheet/CharacterSheet.tsx | 11 ++++++++++- src/pages/GameList/GameList.tsx | 2 +- 9 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 239ba53c..c07f9194 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -35,7 +35,6 @@ function App() { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const [mode, setMode] = useState(MODE.PLAYER); - useEffect(() => console.log(mode), [mode]); const auth = getAuth(); diff --git a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx index b2f855b7..5477bf5a 100755 --- a/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx +++ b/src/components/CharacterSheet/CharacterDescription/CharacterDescription.tsx @@ -9,17 +9,20 @@ import { MinusCircleOutlined, PlusCircleOutlined } from "@ant-design/icons"; import { getClassType } from "../../../support/helpers"; import DescriptionFieldButton from "./DescriptionFieldButton/DescriptionFieldButton"; import { CharacterData, SetCharacterData } from "../../../data/definitions"; +import { User } from "firebase/auth"; type CharacterDescriptionProps = { characterData: CharacterData; setCharacterData: SetCharacterData; userIsOwner: boolean; + user: User | null; }; export default function CharacterDescription({ characterData, setCharacterData, userIsOwner, + user, }: CharacterDescriptionProps) { // Hooks and state variables const { uid, id } = useParams(); @@ -36,6 +39,10 @@ export default function CharacterDescription({ console.error("User ID or Character ID is undefined"); return; } + if (user?.uid !== uid) { + console.log("Not the owner of the character sheet."); + return; + } const sanitizedValues = textAreaValues.map((value) => DOMPurify.sanitize(value) ); diff --git a/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx b/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx index 02032d79..3182a875 100644 --- a/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx +++ b/src/components/CharacterSheet/CharacterSheetModals/CharacterSheetModals.tsx @@ -10,6 +10,7 @@ import { SetCharacterData, EquipmentItem, } from "../../../data/definitions"; +import { User } from "firebase/auth"; type CharacterSheetModalsProps = { characterData: CharacterData; @@ -22,6 +23,7 @@ type CharacterSheetModalsProps = { isLevelUpModalOpen: boolean; setCharacterData: SetCharacterData; weapon: EquipmentItem | undefined; + user: User | null; }; export default function CharacterSheetModals({ @@ -35,6 +37,7 @@ export default function CharacterSheetModals({ isLevelUpModalOpen, setCharacterData, weapon, + user, }: CharacterSheetModalsProps) { return ( <> @@ -54,12 +57,14 @@ export default function CharacterSheetModals({ handleCancel={handleCancel} characterData={characterData} setCharacterData={setCharacterData} + user={user} /> = ({ }, ]} > - +
+ + + Enter a codex.quest character URL to add a player's character. + +
diff --git a/src/modals/AddCustomEquipmentModal.tsx b/src/modals/AddCustomEquipmentModal.tsx index 01d413ff..29a5f597 100755 --- a/src/modals/AddCustomEquipmentModal.tsx +++ b/src/modals/AddCustomEquipmentModal.tsx @@ -55,6 +55,7 @@ export default function AddCustomEquipmentModal({ handleCancel, characterData, setCharacterData, + user, }: AddCustomEquipmentModalProps) { const [formState, setFormState] = useState(initialFormState); const [prevValue, setPrevValue] = useState(characterData.equipment); @@ -69,6 +70,10 @@ export default function AddCustomEquipmentModal({ console.error("User ID or Character ID is undefined"); return; } + if (user?.uid !== uid) { + console.log("Not the owner of the character sheet."); + return; + } if (characterData.equipment !== prevValue) { const docRef = doc(db, "users", uid, "characters", id); diff --git a/src/modals/AddEquipmentModal.tsx b/src/modals/AddEquipmentModal.tsx index 2e4a979a..9a6b3111 100755 --- a/src/modals/AddEquipmentModal.tsx +++ b/src/modals/AddEquipmentModal.tsx @@ -12,6 +12,7 @@ export default function AddEquipmentModal({ handleCancel, isAddEquipmentModalOpen, setCharacterData, + user, }: AddEquipmentModalProps) { const [prevValue, setPrevValue] = useState(characterData?.equipment); const { uid, id } = useParams(); @@ -22,6 +23,11 @@ export default function AddEquipmentModal({ return; } + if (user?.uid !== uid) { + console.log("Not the owner of the character sheet."); + return; + } + if (characterData && characterData.equipment !== prevValue) { const docRef = doc(db, "users", uid, "characters", id); diff --git a/src/modals/definitions.ts b/src/modals/definitions.ts index a0603480..466cf7c1 100755 --- a/src/modals/definitions.ts +++ b/src/modals/definitions.ts @@ -1,5 +1,6 @@ import { FormEvent } from "react"; import { CharacterData } from "../data/definitions"; +import { User } from "firebase/auth"; export type ModalProps = { handleCancel: () => void; @@ -20,6 +21,7 @@ export interface DiceRollerModalProps extends ModalProps { export interface AddEquipmentModalProps extends ModalProps { isAddEquipmentModalOpen: boolean; setCharacterData: (character: CharacterData) => void; + user: User | null; } export interface CheatSheetModalProps extends ModalProps { @@ -30,6 +32,7 @@ export interface AddCustomEquipmentModalProps extends ModalProps { isAddCustomEquipmentModalOpen: boolean; setCharacterData: (character: CharacterData) => void; characterData: CharacterData; + user: User | null; } export interface LoginSignupModalProps extends ModalProps { diff --git a/src/pages/CharacterSheet/CharacterSheet.tsx b/src/pages/CharacterSheet/CharacterSheet.tsx index 01b168fa..421f9098 100755 --- a/src/pages/CharacterSheet/CharacterSheet.tsx +++ b/src/pages/CharacterSheet/CharacterSheet.tsx @@ -127,7 +127,14 @@ export default function CharacterSheet({ user }: { user: User | null }) { console.error("User ID or Character ID is undefined"); return; } - if (!characterData || !characterData.wearing) return; + if (user?.uid !== uid) { + console.log("Not the owner of the character sheet."); + return; + } + if (!characterData || !characterData.wearing) { + console.error("Character data or wearing is undefined"); + return; + } const docRef = doc(db, "users", uid, "characters", id); @@ -485,6 +492,7 @@ export default function CharacterSheet({ user }: { user: User | null }) { characterData={characterData} setCharacterData={setCharacterData} userIsOwner={userIsOwner} + user={user} /> {/* MODALS */}
) : ( diff --git a/src/pages/GameList/GameList.tsx b/src/pages/GameList/GameList.tsx index 8c704c16..970526fc 100644 --- a/src/pages/GameList/GameList.tsx +++ b/src/pages/GameList/GameList.tsx @@ -128,7 +128,7 @@ export default function GameList({ level={2} className="m-0 font-enchant text-5xl tracking-wider text-shipGray" > - Games + Games (beta)