import React from 'react'; import { Lang, Router, TocData } from '../../models'; import { TocItem as Item } from '../TocItem'; import { TocItemRegistry } from './TocItemRegistry'; import './Toc.scss'; export interface TocProps extends TocData { router: Router; headerHeight?: number; tocTitleIcon?: React.ReactNode; hideTocHeader?: boolean; lang: Lang; singlePage?: boolean; onChangeSinglePage?: (value: boolean) => void; pdfLink?: string; } interface TocState { activeId: string | null | undefined; fixedById: Record; contentScrolled: boolean; registry: TocItemRegistry; } declare class Toc extends React.Component { contentRef: React.RefObject; rootRef: React.RefObject; activeRef: React.RefObject; containerEl: HTMLElement | null; footerEl: HTMLElement | null; constructor(props: TocProps); getInitialState(): { registry: TocItemRegistry; fixedById: {}; activeId: null; contentScrolled: boolean; }; componentDidMount(): void; componentDidUpdate(prevProps: TocProps, prevState: TocState): void; componentWillUnmount(): void; render(): JSX.Element; computeState(prevState: TocState): { activeId: string | null | undefined; fixedById: Record; contentScrolled: boolean; registry: TocItemRegistry; }; private normalizeUrl; private renderList; private renderEmpty; private renderTop; private renderBottom; private setTocHeight; private handleScroll; private handleResize; private scrollToActiveItem; private handleContentScroll; private openItem; private closeItem; private toggleItem; } export default Toc;