import { memo, useCallback, useEffect, useMemo, useState } from "react"; import { Button, Classes, Icon, Tab, Tabs } from "@blueprintjs/core"; import AuxiliaryDialog from "Components/AuxiliaryDialog"; import { ErrorBoundary } from "Components/Errors"; import SemanticPagination, { SemanticPaginationProps } from "./SemanticPagination"; import SidePanel from "./SidePanel"; import { useMulti } from "@hooks"; import { sortElems } from "../helpers"; import { ShowTypeSemantic } from "../types"; import { CustomClasses } from "../../../constants"; import { pluralize } from "../../../utils"; import { SEnrichedItem, SRelatedEntries } from "Types/transforms"; import "./_index.sass"; const labelId = "zr-semantic-panel-label"; type SemanticTabListProps = { defaultTab: ShowTypeSemantic, items: SRelatedEntries, onClose: () => void, selectProps: SemanticPaginationProps["selectProps"], title: string }; const SemanticTabList = memo(function SemanticTabList(props) { const { defaultTab, items, onClose, selectProps, title } = props; const [isActiveTab, setActiveTab] = useState(defaultTab); useEffect(() => { setActiveTab(defaultTab); }, [defaultTab]); const selectTab = useCallback((newtab, _prevtab, _event) => setActiveTab(newtab), []); const references = useMemo(() => sortElems(items.references, "year"), [items.references]); const citations = useMemo(() => sortElems(items.citations, "year"), [items.citations]); const references_title = useMemo(() => { return ( <> {pluralize(references.length, "reference")} ); }, [references.length]); const citations_title = useMemo(() => { return ( <> {pluralize(citations.length, "citing paper")} ); }, [citations.length]); return ( } disabled={references.length == 0} title={references_title} /> } disabled={citations.length == 0} title={citations_title} /> {title}