import { isLocation, isMonster, isNpc, isScene, isSecret, isSession, isTreasure, type AnyDocument, } from "@/lib/types"; import { LocationEditForm } from "./location/LocationEditForm"; import { MonsterEditForm } from "./monsters/MonsterEditForm"; import { NpcEditForm } from "./npc/NpcEditForm"; import { SceneEditForm } from "./scene/SceneEditForm"; import { SecretEditForm } from "./secret/SecretEditForm"; import { SessionEditForm } from "./session/SessionEditForm"; import { TreasureEditForm } from "./treasure/TreasureEditForm"; function assertUnreachable(_x: never): never { throw new Error("DocumentForm switch is not exhaustive"); } /** * Renders a form for any document type depending on the relationship. */ export const DocumentEditForm = ({ document }: { document: AnyDocument }) => { if (isLocation(document)) { return ; } if (isMonster(document)) { return ; } if (isNpc(document)) { return ; } if (isScene(document)) { return ; } if (isSecret(document)) { return ; } if (isSession(document)) { return ; } if (isTreasure(document)) { return ; } return assertUnreachable(document); };