import type { NextPage } from 'next' import Head from 'next/head' import {useGroups} from "../../components/contexts/GroupProvider"; import {useFactories} from "../../src/hooks/useFactories"; import {ProducingGraph} from "../../components/shared/ProducingGraph/ProducingGraph"; import {useMemo} from "react"; import {calculateInputs} from "../../src/calculateInputs"; import {NodeOverview, OverviewGraphNode} from "../../components/visualize/NodeOverview/NodeOverview"; const Page: NextPage = () => { const { exportedFactories, ignoredFactories, baseFactories, groups } = useGroups() const { findFactory } = useFactories() const producingNodes: OverviewGraphNode[] = useMemo(() => { return Object.values(groups).map(group => ({ inputs: calculateInputs( [...group.exports, ...group.malls], ignoredFactories, baseFactories, exportedFactories, findFactory )[0], outputs: group.exports, name: group.name, icons: [...group.exports, ...group.malls], linkOut: `./visualize/${fixedEncodeURIComponent(group.name)}` })) }, [baseFactories, exportedFactories, findFactory, groups, ignoredFactories]) return ( <> Factorio Microservices

Factorio Microservices

) } export async function getStaticProps() { return { props: { bodyClassName: 'scroll' } }; } function fixedEncodeURIComponent(str: string): string { return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16)); } export default Page