diff --git a/package.json b/package.json index ca043ac..d6a6ee7 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@flexiformal/ftml": "^0.0.22", "@flexiformal/ftml-backend": "^0.0.7", + "@flexiformal/ftml-react": "^0.0.25", "@mantine/core": "^8.3.10", "@mantine/hooks": "^8.3.10", "@prisma/adapter-pg": "^7.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a1d55d..858bed6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@flexiformal/ftml-backend': specifier: ^0.0.7 version: 0.0.7 + '@flexiformal/ftml-react': + specifier: ^0.0.25 + version: 0.0.25 '@mantine/core': specifier: ^8.3.10 version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -490,9 +493,15 @@ packages: '@flexiformal/ftml-backend@0.0.7': resolution: {integrity: sha512-C90rlfSvBzxfwrCbAzDTLmsoNvPi1WVCUEbU+rjPhiaJCFt3bblzTxk7gGFC+iXWrtwyH+KxlOIsxDthbLtcEA==} + '@flexiformal/ftml-react@0.0.25': + resolution: {integrity: sha512-f0eQPmghKW8NF2X8x84NVffQWOpPZOj1pn20IV5hCdI3BpTZns/h+ZiBmkoLls7aC1MU+KdKTQgy4va3GZzQBA==} + '@flexiformal/ftml@0.0.22': resolution: {integrity: sha512-DcNc2lrcVHS0kjl1LmjK8sTLNS/TLzR/egKqTIMUYMTuyJmdW2lbtDl8/BCUVT30ktlEgnIUptV7ktVTsQj2vw==} + '@flexiformal/ftml@0.0.24': + resolution: {integrity: sha512-UHzPhub8PDI8ss2jWT4wY9Bryvo0enlpnGGFsQxTgudIN5YtXZH1s1W+dwMlZDydCZj8vwbDZqL0Oys/OIPJMQ==} + '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} @@ -3403,8 +3412,16 @@ snapshots: '@flexiformal/ftml-backend@0.0.7': {} + '@flexiformal/ftml-react@0.0.25': + dependencies: + '@flexiformal/ftml': 0.0.24 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + '@flexiformal/ftml@0.0.22': {} + '@flexiformal/ftml@0.0.24': {} + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 diff --git a/src/components/DuplicateDefinitionDialog.tsx b/src/components/DuplicateDefinitionDialog.tsx deleted file mode 100644 index 3db7d86..0000000 --- a/src/components/DuplicateDefinitionDialog.tsx +++ /dev/null @@ -1,199 +0,0 @@ -import { queryClient } from "@/queryClient"; -import { searchForDuplicateDefinition } from "@/server/ftml/searchForDuplicateDef"; -import { ExtractedItem } from "@/server/text-selection"; -import { updateDefinitionsStatusByIdentity } from "@/serverFns/definitionStatus.server"; -import { FileIdentity } from "@/serverFns/latex.server"; -import { - Box, - Button, - Group, - Loader, - Modal, - Paper, - ScrollArea, - TextInput, -} from "@mantine/core"; -import { useState } from "react"; -import { RenderSymbolicUri } from "./RenderUri"; - -interface Props { - opened: boolean; - onClose: () => void; - extracts: ExtractedItem[]; - identity: FileIdentity; - onConfirm: (duplicates: string[]) => void; -} - -function normalizeUri(uri: string) { - try { - if (uri.includes("stexmmt.mathhub.info/:sTeX")) { - uri = uri.replace("stexmmt.mathhub.info/:sTeX", "https://mathhub.info"); - } - const url = new URL(uri); - if (url.protocol !== "https:") url.protocol = "https:"; - return url.toString(); - } catch { - return uri; - } -} - -export function DuplicateDefinitionDialog({ - opened, - onClose, - identity, -}: Props) { - const [input, setInput] = useState(""); - const [search, setSearch] = useState(""); - const [duplicates, setDuplicates] = useState([]); - - const { results, loading } = searchForDuplicateDefinition(search); - - return ( - { - setDuplicates([]); - onClose(); - }} - size="90%" - padding="lg" - title="Duplicate Definition Check" - > - - - - - - - - setInput(e.currentTarget.value)} - style={{ flex: 1 }} - /> - - - - - - {loading && ( - - - - )} - - {results.map((uri) => { - const marked = duplicates.includes(uri); - - return ( - - - - - - - -