import { q } from "@thorium/context/AppContext"; import { toast } from "@thorium/context/ToastContext"; import { InterpolateInfo } from "@thorium/routes/config/reports/InterpolateInfo"; import { useConfirm } from "@thorium/ui/AlertDialog"; import Button from "@thorium/ui/Button"; import { Icon } from "@thorium/ui/Icon"; import Input from "@thorium/ui/Input"; import throttle from "lodash.throttle"; import { startTransition, Suspense, useCallback, useState } from "react"; import { useNavigate, Navigate, href } from "react-router"; import type { Route } from "./+types/textPattern"; export default function TextPatternDetail({ params: { textPatternId, pluginId }, }: Route.ComponentProps) { const navigate = useNavigate(); const confirm = useConfirm(); const [item] = q.plugin.textPattern.get.useNetRequest({ pluginId, textPatternId, }); const [error, setError] = useState(false); const setTextPattern = useCallback( throttle((textPattern: string) => { q.plugin.textPattern.update.netSend({ pluginId, textPatternId, textPattern, }); }, 100), [], ); if (!textPatternId || !item) return ; return (
setError(false)} onBlur={async (e: any) => { if (!e.target.value) return setError(true); try { const result = await q.plugin.textPattern.update.netSend({ pluginId, textPatternId, name: e.target.value, }); void navigate( href("/config/:pluginId/textPatterns/:textPatternId", { pluginId, textPatternId: result.textPatternId, }), ); } catch (err) { if (err instanceof Error) { toast({ title: "Error renaming text pattern", body: err.message, color: "error", }); } } }} /> setError(false)} onBlur={async (e: any) => { await q.plugin.textPattern.update.netSend({ pluginId, textPatternId, category: e.target.value, }); }} />
q.plugin.textPattern.update.netSend({ pluginId, textPatternId, description: e.target.value, }) } />
Text Pattern } defaultValue={item.textPattern} onChange={(e) => setTextPattern(e.target.value)} />
); } function TextPatternOutputField({ textPatternId, pluginId, }: { textPatternId: string; pluginId: string; }) { const [randomSeed, setRandomSeed] = useState("thorium"); const [stringOutput] = q.textPattern.evaluate.useNetRequest({ textPatternId, pluginId, randomSeed, }); return (
); }