blob: 7a936343d109962593ae247521214b62dfe5924d [file] [log] [blame]
gio5f2f1002025-03-20 18:38:48 +04001import { useNodes } from "@xyflow/react";
gio7d813702025-05-08 18:29:52 +00002import { AppNode, useEnv, useProjectId } from "./lib/state";
gio5f2f1002025-03-20 18:38:48 +04003import { generateDodoConfig } from "./lib/config";
4import { useEffect, useMemo, useState } from "react";
gio880de162025-05-11 07:26:00 +00005import { Card, CardContent } from "./components/ui/card";
6import JSONView from "@microlink/react-json-view";
gio5f2f1002025-03-20 18:38:48 +04007
8export function Config() {
giod0026612025-05-08 13:00:36 +00009 const env = useEnv();
gio7d813702025-05-08 18:29:52 +000010 const projectId = useProjectId();
giod0026612025-05-08 13:00:36 +000011 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]);
gio880de162025-05-11 07:26:00 +000019 const config = useMemo(() => generateDodoConfig(projectId, nodes, env) || {}, [projectId, nodes, env]);
giod0026612025-05-08 13:00:36 +000020 return (
gio880de162025-05-11 07:26:00 +000021 <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>
giod0026612025-05-08 13:00:36 +000035 );
36}