import {Button, Flex, Modal, Space, Typography} from 'antd' import {t} from 'ttag' import React, {useEffect, useState} from 'react' import {ApartmentOutlined} from '@ant-design/icons' import '@xyflow/react/dist/style.css' import type { Edge, Node} from '@xyflow/react' import {Background, Controls, MiniMap, ReactFlow, useEdgesState, useNodesState} from '@xyflow/react' import {getWatchlist} from '../../../../utils/api' import {getLayoutedElements} from './getLayoutedElements' import {watchlistToNodes} from './watchlistToNodes' import {watchlistToEdges} from './watchlistToEdges' export function ViewDiagramWatchlistButton({token}: { token: string }) { const [open, setOpen] = useState(false) const [loading, setLoading] = useState(false) const [nodes, setNodes, onNodesChange] = useNodesState([]) const [edges, setEdges, onEdgesChange] = useEdgesState([]) useEffect(() => { setEdges([]) setNodes([]) }, []) useEffect(() => { if (!open) return setLoading(true) getWatchlist(token).then(w => { const e = getLayoutedElements(watchlistToNodes(w, true), watchlistToEdges(w, true)) setNodes(e.nodes) setEdges(e.edges) }).catch(() => setOpen(false)).finally(() => setLoading(false)) }, [open]) return ( <> setOpen(true)} /> } onOk={() => setOpen(false)} onCancel={() => setOpen(false)} width='90vw' height='100%' > ) }