"use client" import { useScrollController, useSidebar, H2 as UiH2 } from "docs-ui" import { useEffect, useMemo, useRef, useState } from "react" import getSectionId from "../../../utils/get-section-id" type H2Props = React.HTMLAttributes const H2 = ({ children, ...props }: H2Props) => { const headingRef = useRef(null) const { activePath, addItems } = useSidebar() const { scrollableElement, scrollToElement } = useScrollController() const [scrolledFirstTime, setScrolledFirstTime] = useState(false) const id = useMemo(() => getSectionId([children as string]), [children]) useEffect(() => { if (!scrollableElement || !headingRef.current || scrolledFirstTime) { return } if (id === (activePath || location.hash.replace("#", ""))) { scrollToElement( (headingRef.current.offsetParent as HTMLElement) || headingRef.current ) } setScrolledFirstTime(scrolledFirstTime) }, [scrollableElement, headingRef, id]) useEffect(() => { addItems([ { type: "link", path: `${id}`, title: children as string, loaded: true, }, ]) }, [id]) return ( {children} ) } export default H2