import type { NodeRenderer } from './types'; import { HoverPopover } from './components/HoverPopover'; import useSWR from 'swr'; import { ExternalLinkIcon } from '@heroicons/react/outline'; import { LinkCard } from './components/LinkCard'; const WikiTextMark = () => ( ); const fetcher = (...args: Parameters) => fetch(...args).then((res) => { if (res.status === 200) return res.json(); throw new Error(`Content returned with status ${res.status}.`); }); function createWikiUrl(name: string): string { return `https://en.wikipedia.org/wiki/${name}`; } function WikiChild({ name, open }: { name: string; open: boolean }) { const { data, error } = useSWR( open ? `https://en.wikipedia.org/api/rest_v1/page/summary/${name}` : null, fetcher, ); const { thumbnail, extract, content_urls } = data ?? {}; const url = content_urls?.desktop?.page ?? createWikiUrl(name); const image = thumbnail?.source; if (error) { return ( Error loading "{name}" from wikipedia. ); } return ( } thumbnail={image} description={extract} /> ); } export const Wiki: NodeRenderer = (node) => { return ( } > {node.title} ); }; const WIKI_RENDERERS: Record = { wiki: Wiki, }; export default WIKI_RENDERERS;