import React from "react"; import { ConfigData, translate } from "../../config"; import { useMessages } from "../../context/MessagesContext"; import { Item, groupByQuadrants } from "../../model"; import Badge from "../Badge/Badge"; import EditButton from "../EditButton/EditButton"; import FooterEnd from "../FooterEnd/FooterEnd"; import ItemList from "../ItemList/ItemList"; import ItemRevisions from "../ItemRevisions/ItemRevisions"; import ItemTags from "../ItemTags/ItemTags"; import Link from "../Link/Link"; import SetTitle from "../SetTitle"; import "./item-page.scss"; import { useAnimations } from "./useAnimations"; const getItem = (pageName: string, items: Item[]) => { const [quadrantName, itemName] = pageName.split("/"); return items.filter( (item) => item.quadrant === quadrantName && item.name === itemName )[0]; }; const getItemsInRing = (pageName: string, items: Item[]) => { const item = getItem(pageName, items); return groupByQuadrants(items)[item.quadrant][item.ring]; }; type Props = { pageName: string; items: Item[]; config: ConfigData; leaving: boolean; onLeave: () => void; }; const PageItem: React.FC = ({ pageName, items, config, leaving, onLeave, }) => { const { pageItem } = useMessages(); const quadrantOverview = pageItem?.quadrantOverview || "Quadrant Overview"; const itemsInRing = getItemsInRing(pageName, items); const { getAnimationState, getAnimationStates } = useAnimations({ itemsInRing, onLeave, leaving, }); const item = getItem(pageName, items); const editButton = config.editLink ? ( ) : null; return ( <>

{translate(config, item.quadrant)}

{item.ring}
{quadrantOverview}

{item.title}

{editButton}
{item.ring}
{item.revisions.length > 1 && ( )}
); }; export default PageItem;