import ContentPanel, { ContentPanelWidthSizes, } from "components/Panels/ContentPanel"; import { GetStaticPaths, GetStaticProps } from "next"; import { getLibraryItem, getLibraryItemsSlugs, getWebsiteInterface, } from "graphql/operations"; import { Enum_Componentmetadatabooks_Binding_Type, Enum_Componentmetadatabooks_Page_Order, GetLibraryItemQuery, GetWebsiteInterfaceQuery, } from "graphql/operations-types"; import { convertMmToInch, prettyDate, prettyinlineTitle, prettyItemType, prettyItemSubType, prettyPrice, prettySlug, } from "queries/helpers"; import SubPanel from "components/Panels/SubPanel"; import ReturnButton from "components/PanelComponents/ReturnButton"; import NavOption from "components/PanelComponents/NavOption"; import Chip from "components/Chip"; import Button from "components/Button"; import HorizontalLine from "components/HorizontalLine"; import AppLayout from "components/AppLayout"; import LibraryItemsPreview from "components/Library/LibraryItemsPreview"; import InsetBox from "components/InsetBox"; import { setSubPanelOpen } from "redux/appLayoutSlice"; import { useDispatch } from "react-redux"; import Img, { ImageQuality } from "components/Img"; type LibrarySlugProps = { libraryItem: GetLibraryItemQuery; langui: GetWebsiteInterfaceQuery; }; export default function LibrarySlug(props: LibrarySlugProps): JSX.Element { const item = props.libraryItem.libraryItems.data[0].attributes; const langui = props.langui.websiteInterfaces.data[0].attributes; const dispatch = useDispatch(); const isVariantSet = item.metadata.length > 0 && item.metadata[0].__typename === "ComponentMetadataOther" && item.metadata[0].subtype.data.attributes.slug === "variant-set"; const subPanel = (
dispatch(setSubPanelOpen(false))} /> {item.gallery.data.length > 0 ? ( dispatch(setSubPanelOpen(false))} /> ) : ( "" )} dispatch(setSubPanelOpen(false))} /> {item.subitems.data.length > 0 ? ( dispatch(setSubPanelOpen(false))} /> ) : ( "" )} {item.contents.data.length > 0 ? ( ) : ( "" )}
); const contentPanel = (
{item.thumbnail.data ? ( ) : (
)}
{item.subitem_of.data.length > 0 ? (

{langui.global_subitem_of}

) : ( "" )}

{item.title}

{item.subtitle ? (

{item.subtitle}

) : ( "" )}
{item.descriptions.length > 0 ? (

{item.descriptions[0].description}

) : ( "" )}
{item.gallery.data.length > 0 ? ( ) : ( "" )}

{langui.library_item_details}

{item.metadata.length > 0 ? (

{langui.global_type}

{prettyItemType(item.metadata[0], langui)} {"›"} {prettyItemSubType(item.metadata[0])}
) : ( "" )} {item.release_date ? (

{langui.global_release_date}

{prettyDate(item.release_date)}

) : ( "" )} {item.price ? (

{langui.global_price}

{prettyPrice(item.price)}

) : ( "" )}
{item.size ? ( <>

{langui.library_item_physical_size}

{langui.global_width}:

{item.size.width} mm

{convertMmToInch(item.size.width)} in

{langui.global_height}:

{item.size.height} mm

{convertMmToInch(item.size.height)} in

{item.size.thickness ? (

{langui.global_thickness}:

{item.size.thickness} mm

{convertMmToInch(item.size.thickness)} in

) : ( "" )}
) : ( "" )} {item.metadata.length > 0 ? ( <>

{langui.library_item_type_information}

{item.metadata[0].__typename === "ComponentMetadataBooks" ? ( <>

{langui.global_pages}:

{item.metadata[0].page_count}

{langui.global_binding}:

{item.metadata[0].binding_type === Enum_Componentmetadatabooks_Binding_Type.Paperback ? langui.global_paperback : item.metadata[0].binding_type === Enum_Componentmetadatabooks_Binding_Type.Hardcover ? langui.global_hardcover : ""}

{langui.global_page_order}:

{item.metadata[0].page_order === Enum_Componentmetadatabooks_Page_Order.LeftToRight ? langui.global_left_to_right : item.metadata[0].page_order === Enum_Componentmetadatabooks_Page_Order.RightToLeft ? langui.global_right_to_left : ""}

{langui.global_languages}:

{item.metadata[0].languages.data.map((lang) => (

{lang.attributes.name}

))}
) : item.metadata[0].__typename === "ComponentMetadataAudio" ? ( <> ) : item.metadata[0].__typename === "ComponentMetadataVideo" ? ( <> ) : item.metadata[0].__typename === "ComponentMetadataGame" ? ( <> ) : item.metadata[0].__typename === "ComponentMetadataOther" ? ( <>

{langui.global_type}:

{item.metadata[0].subtype.data.attributes.titles .length > 0 ? item.metadata[0].subtype.data.attributes.titles[0] .title : prettySlug( item.metadata[0].subtype.data.attributes.slug )}
) : ( "" )}
) : ( "" )}
{item.subitems.data.length > 0 ? (

{isVariantSet ? langui.library_item_variants : langui.library_item_subitems}

{item.subitems.data.map((subitem) => ( ))}
) : ( "" )} {item.contents.data.length > 0 ? (

{langui.library_item_content}

{item.contents.data.map((content) => (

{content.attributes.content.data && content.attributes.content.data.attributes.titles .length > 0 ? prettyinlineTitle( content.attributes.content.data.attributes .titles[0].pre_title, content.attributes.content.data.attributes .titles[0].title, content.attributes.content.data.attributes .titles[0].subtitle ) : prettySlug(content.attributes.slug, item.slug)}

{content.attributes.content.data?.attributes.categories.data.map( (category) => ( {category.attributes.short} ) )}

{content.attributes.range[0].__typename === "ComponentRangePageRange" ? content.attributes.range[0].starting_page : ""}

{content.attributes.content.data ? ( {content.attributes.content.data.attributes.type.data .attributes.titles.length > 0 ? content.attributes.content.data.attributes.type.data .attributes.titles[0].title : prettySlug( content.attributes.content.data.attributes.type .data.attributes.slug )} ) : ( "" )}
subdirectory_arrow_right {content.attributes.scan_set.length > 0 ? ( ) : ( "" )} {content.attributes.content.data ? ( ) : ( "" )} {content.attributes.scan_set.length === 0 && !content.attributes.content.data ? "The content is not available" : ""}
))}
) : ( "" )}
); // Sort content by range item.contents.data.sort((a, b) => { if ( a.attributes.range[0].__typename === "ComponentRangePageRange" && b.attributes.range[0].__typename === "ComponentRangePageRange" ) { return ( a.attributes.range[0].starting_page - b.attributes.range[0].starting_page ); } return 0; }); return ( ); } export const getStaticProps: GetStaticProps = async (context) => { if (context.params) { if (context.params.slug && context.locale) { if (context.params.slug instanceof Array) context.params.slug = context.params.slug.join(""); const props: LibrarySlugProps = { libraryItem: await getLibraryItem({ slug: context.params.slug, language_code: context.locale, }), langui: await getWebsiteInterface({ language_code: context.locale, }), }; return { props: props, }; } } return { props: {} }; }; export const getStaticPaths: GetStaticPaths = async (context) => { type Path = { params: { slug: string; }; locale: string; }; const data = await getLibraryItemsSlugs({}); const paths: Path[] = []; data.libraryItems.data.map((item) => { context.locales?.map((local) => { paths.push({ params: { slug: item.attributes.slug }, locale: local }); }); }); return { paths, fallback: false, }; };