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}
),
},
];
// Find the panel to display
const metadataPanel = find(metadataContentPanel, {
name: objectReference,
});
return (
-
{metadataPanel.content()}
);
};
export default MetadataPanel;