import { useStateStore } from "./lib/state";
import { generateDodoConfig } from "./lib/config";
import JSONView from "@microlink/react-json-view";
import { useMemo } from "react";

export function Config(): React.ReactNode {
	const store = useStateStore();
	const config = useMemo(
		() => generateDodoConfig(store.projectId, store.nodes, store.env),
		[store.projectId, store.nodes, store.env],
	);
	const cleaned = useMemo(() => {
		if (config == null) {
			return null;
		}
		const { input: _, ...rest } = config;
		return rest;
	}, [config]);
	return (
		<div className="h-full p-4 bg-muted overflow-auto text-xs">
			<JSONView
				src={cleaned as object}
				theme="rjv-default"
				name={false}
				displayDataTypes={false}
				enableClipboard={true}
				style={{ fontFamily: "JetBrains Mono" }}
			/>
		</div>
	);
}
