import { Component, NodeTypes } from 'myst-util-to-react';
import { useState } from 'react';
import { useReferences } from '../ReferencesProvider';
import { ClickPopover } from './ClickPopover';
function CiteChild({ label }: { label: string }) {
const references = useReferences();
const { html } = references?.cite.data[label] ?? {};
return
;
}
export const CiteGroup: Component = (node, children) => {
return (
{children}
);
};
export const Cite: Component = (node, children) => {
return (
}>
{children}
);
};
const HIDE_OVER_N_REFERENCES = 5;
export function Bibliography() {
const references = useReferences();
const { order, data } = references?.cite ?? {};
const filtered = order?.filter((l) => l);
const [hidden, setHidden] = useState(true);
if (!filtered || !data || filtered.length === 0) return null;
const refs = hidden ? filtered.slice(0, HIDE_OVER_N_REFERENCES) : filtered;
return (
{filtered.length > HIDE_OVER_N_REFERENCES && (
)}
{refs.map((label) => {
const { html } = data[label];
return (
);
})}
{filtered.length > HIDE_OVER_N_REFERENCES && (
-
)}
);
}
export const citeRenderers: NodeTypes = {
citeGroup: CiteGroup,
cite: Cite,
bibliography: (node) => ,
};