import React, { ReactElement } from "react"; import PropTypes from "prop-types"; 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"; interface IMetadatPanelProps { value: any; children: any; imageStyle: any; titleStyle: any; tagsStyle: any; containerStyle: any; } export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => { const { rawFileDetails, inferredMetadata, sourcedMetadata: { comicvine, locg }, } = props.data; const { issueName, url, objectReference } = determineCoverFile({ comicvine, locg, rawFileDetails, }); const metadataContentPanel = [ { name: "rawFileDetails", content: () => (
{issueName}
Is a part of{" "} {inferredMetadata.issue.name}
{rawFileDetails.extension} {rawFileDetails.mimeType} {prettyBytes(rawFileDetails.fileSize)}
{inferredMetadata.issue.number && (
Issue # {inferredMetadata.issue.number}
)}
), }, { name: "comicvine", content: () => !isUndefined(comicvine) && !isUndefined(comicvine.volumeInformation) && (
{ellipsize(issueName, 18)}
Is a part of{" "} {comicvine.volumeInformation.name}
{ellipsize( convert(comicvine.description, { baseElements: { selectors: ["p"], }, }), 120, )}
{comicvine.volumeInformation.start_year} {comicvine.volumeInformation.count_of_issues}
ComicVine ID {comicvine.id}
), }, { name: "locg", content: () => (
{ellipsize(issueName, 28)}
{ellipsize(locg.description, 120)}
{locg.price} {locg.pulls}
rating {locg.rating}
), }, ]; // Find the panel to display const metadataPanel = find(metadataContentPanel, { name: objectReference, }); return (
{metadataPanel.content()}
); }; export default MetadataPanel;