import { LinksByNodeId, NodeByCite, NodeById } from '../../pages/index' import { GraphData, NodeObject, LinkObject } from 'force-graph' import { normalizeLinkEnds } from '../../pages/index' import { VStack, Box, Button, Heading, StackDivider } from '@chakra-ui/react' import React from 'react' import { ProcessedOrg } from '../../util/processOrg' export interface BacklinksProps { previewNode: NodeObject | OrgRoamNode setPreviewNode: any nodeById: NodeById linksByNodeId: LinksByNodeId nodeByCite: NodeByCite setSidebarHighlightedNode: OrgRoamNode openContextMenu: any outline: boolean attachDir: string useInheritance: boolean macros: { [key: string]: string } } import { PreviewLink } from './Link' import { OrgRoamNode } from '../../api' import { Section } from './Section' export const Backlinks = (props: BacklinksProps) => { const { previewNode, setPreviewNode, setSidebarHighlightedNode, nodeById, linksByNodeId, nodeByCite, openContextMenu, outline, macros, attachDir, useInheritance, } = props const links = linksByNodeId[(previewNode as OrgRoamNode)?.id] ?? [] const backLinks = links .filter((link: LinkObject) => { const [source, target] = normalizeLinkEnds(link) return source !== previewNode?.id }) .map((l) => l.source) return (

{`Linked references (${backLinks.length})`}

} align="stretch" color="gray.800" > {previewNode?.id && backLinks.map((link) => { const title = nodeById[link as string]?.title ?? '' return ( {nodeById[link as string]?.title} ) })}
) }