| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 1 | import { useNodes } from "@xyflow/react"; |
| gio | 7d81370 | 2025-05-08 18:29:52 +0000 | [diff] [blame] | 2 | import { AppNode, useEnv, useProjectId } from "./lib/state"; |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 3 | import { generateDodoConfig } from "./lib/config"; |
| 4 | import { useEffect, useMemo, useState } from "react"; |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 5 | import { Card, CardContent } from "./components/ui/card"; |
| 6 | import JSONView from "@microlink/react-json-view"; |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 7 | |
| 8 | export function Config() { |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 9 | const env = useEnv(); |
| gio | 7d81370 | 2025-05-08 18:29:52 +0000 | [diff] [blame] | 10 | const projectId = useProjectId(); |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 11 | const [nodes, setNodes] = useState<AppNode[]>([]); |
| 12 | const n = useNodes<AppNode>(); |
| 13 | useEffect(() => { |
| 14 | console.log(n); |
| 15 | if (n && n.length > 0) { |
| 16 | setNodes(n); |
| 17 | } |
| 18 | }, [n, setNodes]); |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 19 | const config = useMemo(() => generateDodoConfig(projectId, nodes, env) || {}, [projectId, nodes, env]); |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 20 | return ( |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 21 | <Card className="h-full flex flex-col"> |
| 22 | <CardContent className="flex-1 min-h-0 p-4"> |
| 23 | <div className="h-full p-4 bg-muted rounded-lg overflow-auto"> |
| 24 | <JSONView |
| 25 | src={config as object} |
| 26 | theme="rjv-default" |
| 27 | name={false} |
| 28 | displayDataTypes={false} |
| 29 | enableClipboard={true} |
| 30 | style={{ fontFamily: "JetBrains Mono" }} |
| 31 | /> |
| 32 | </div> |
| 33 | </CardContent> |
| 34 | </Card> |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 35 | ); |
| 36 | } |