import { Box, Flex, SkeletonText, Badge, VStack } from '@chakra-ui/react'; import ReactFlow, { Background, ReactFlowProvider, Handle, Position } from 'react-flow-renderer'; import { useConfig } from '~/context'; import { useASNDetail, useColorValue, useColorToken } from '~/hooks'; import { Controls } from './controls'; import { useElements } from './useElements'; import type { NodeProps as ReactFlowNodeProps } from 'react-flow-renderer'; interface ChartProps { data: StructuredResponse; } interface NodeProps extends Omit { data: D; } interface NodeData { asn: string; name: string; hasChildren: boolean; hasParents?: boolean; } export const Chart = (props: ChartProps): JSX.Element => { const { data } = props; const { primaryAsn, orgName } = useConfig(); const dots = useColorToken('colors', 'blackAlpha.500', 'whiteAlpha.400'); const elements = useElements({ asn: primaryAsn, name: orgName }, data); return ( setTimeout(() => inst.fitView(), 0)} > ); }; const ASNode = (props: NodeProps): JSX.Element => { const { data } = props; const { asn, name, hasChildren, hasParents } = data; const color = useColorValue('black', 'white'); const bg = useColorValue('white', 'whiteAlpha.100'); const { data: asnData, isError, isLoading } = useASNDetail(String(asn)); return ( <> {hasChildren && } {isLoading ? ( ) : !isError && asnData?.data?.asn.organization?.orgName ? ( asnData.data.asn.organization.orgName ) : ( name )} {asn} {hasParents && } ); };