import React, { ReactElement } from "react"; import ellipsize from "ellipsize"; import prettyBytes from "pretty-bytes"; import { Card } from "../shared/Carda"; import { convert } from "html-to-text"; import { determineCoverFile } from "../../shared/utils/metadata.utils"; import { find, isUndefined } from "lodash"; /** * Props for the MetadataPanel component. */ interface MetadataPanelProps { /** * Comic metadata object passed into the panel. */ data: any; /** * Optional custom styling for the cover image. */ imageStyle?: React.CSSProperties; /** * Optional custom styling for the title section. */ titleStyle?: React.CSSProperties; } /** * MetadataPanel component * * Displays structured comic metadata based on the best available source * (raw file data, ComicVine, or League of Comic Geeks). * * @component * @param {MetadataPanelProps} props * @returns {ReactElement} */ export const MetadataPanel = (props: MetadataPanelProps): ReactElement => { const { rawFileDetails, inferredMetadata, sourcedMetadata: { comicvine, locg }, } = props.data; const { issueName, url, objectReference } = determineCoverFile({ comicvine, locg, rawFileDetails, }); const metadataContentPanel = [ { name: "rawFileDetails", content: () => (
{issueName}