import { Loader2 } from "lucide-react"; import { useId, useState } from "react"; import { useAdapters } from "../contexts/adapter-context.js"; import { useBestiaryContext } from "../contexts/bestiary-context.js"; import { useBulkImportContext } from "../contexts/bulk-import-context.js"; import { useRulesEditionContext } from "../contexts/rules-edition-context.js"; import { useSidePanelContext } from "../contexts/side-panel-context.js"; import { Button } from "./ui/button.js"; import { Input } from "./ui/input.js"; const DND_BASE_URL = "https://raw.githubusercontent.com/5etools-mirror-3/5etools-src/main/data/bestiary/"; const PF2E_BASE_URL = "https://raw.githubusercontent.com/Pf2eToolsOrg/Pf2eTools/dev/data/bestiary/"; export function BulkImportPrompt() { const { bestiaryIndex, pf2eBestiaryIndex } = useAdapters(); const { fetchAndCacheSource, isSourceCached, refreshCache } = useBestiaryContext(); const { state: importState, startImport, reset } = useBulkImportContext(); const { dismissPanel } = useSidePanelContext(); const { edition } = useRulesEditionContext(); const indexPort = edition === "pf2e" ? pf2eBestiaryIndex : bestiaryIndex; const defaultUrl = edition === "pf2e" ? PF2E_BASE_URL : DND_BASE_URL; const [baseUrl, setBaseUrl] = useState(defaultUrl); const baseUrlId = useId(); const totalSources = indexPort.getAllSourceCodes().length; const handleStart = (url: string) => { startImport(url, fetchAndCacheSource, isSourceCached, refreshCache); }; const handleDone = () => { dismissPanel(); reset(); }; if (importState.status === "complete") { return (
Load stat block data for all {totalSources} sources at once.