import classNames from 'classnames';
import { useReferences } from '@curvenote/ui-providers';
import type { NodeRenderer } from './types';
import { useState } from 'react';
import { ClickPopover } from './components/ClickPopover';
import { InlineError } from './inlineError';
function CiteChild({ label }: { label: string }) {
const references = useReferences();
const { html } = references?.cite?.data[label] ?? {};
return
;
}
export const CiteGroup: NodeRenderer = (node, children) => {
return (
{children}
);
};
export const Cite: NodeRenderer = (node, children) => {
if (node.error) {
return ;
}
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 && (
-
)}
);
}
const CITE_RENDERERS: Record = {
citeGroup: CiteGroup,
cite: Cite,
bibliography: (node) => ,
};
export default CITE_RENDERERS;