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