import { useNodes } from "@xyflow/react";
import { AppNode, useEnv } from "./lib/state";
import { generateDodoConfig } from "./lib/config";
import { useEffect, useMemo, useState } from "react";

export function Config() {
    const env = useEnv();
    const [nodes, setNodes] = useState<AppNode[]>([]);
    const n = useNodes<AppNode>();
    useEffect(() => {
        console.log(n);
        if (n && n.length > 0) {
            setNodes(n);
        }
    }, [n, setNodes]);
    const config = useMemo(() => generateDodoConfig(nodes, env), [nodes, env]);
    const configS = useMemo(() => JSON.stringify(config, undefined, 4), [config]);
    return (
        <div className="px-5">
            <pre>{configS}</pre>
        </div>
    )
}