UNPKG

@alauda/doom

Version:

Doctor Doom making docs.

20 lines (19 loc) 1.06 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import BananaSlug from '@rspress/shared/github-slugger'; import { Children, useMemo } from 'react'; import { X } from './_X.js'; // TODO: use context to simplify the usage of `slugger` export const HeadingTitle = ({ slug, slugger, level, children, }) => { const HeadingComponents = useMemo(() => { return [null, X.h1, X.h2, X.h3, X.h4, X.h5, X.h6]; }, []); const HeadingComponent = HeadingComponents[level]; const slugFromChildren = useMemo(() => // eslint-disable-next-line @eslint-react/no-children-to-array Children.toArray(children) .filter((it) => typeof it === 'string' && !!it.trim()) .join(''), [children]); const id = useMemo(() => [slug || slugger?.slug(slugFromChildren)].filter(Boolean).join('-') || undefined, [slug, slugger, slugFromChildren]); return (_jsxs(HeadingComponent, { id: id, children: [_jsx(X.a, { className: "rp-header-anchor", href: `#${id}`, "aria-hidden": true, children: "#" }), children] })); };