53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
/* eslint-disable jsx-a11y/anchor-has-content, jsx-a11y/anchor-is-valid */
|
|
import React from 'react';
|
|
import clsx from 'clsx';
|
|
import {translate} from '@docusaurus/Translate';
|
|
import {useThemeConfig} from '@docusaurus/theme-common';
|
|
import './styles.css';
|
|
import styles from './styles.module.css';
|
|
import AnchorIcon from "./anchor.svg"
|
|
|
|
const Heading = (Tag) =>
|
|
function TargetComponent({id, ...props}) {
|
|
const {
|
|
navbar: {hideOnScroll},
|
|
} = useThemeConfig();
|
|
|
|
if (!id) {
|
|
return <Tag {...props} />;
|
|
}
|
|
|
|
return (
|
|
<Tag {...props}>
|
|
<a
|
|
aria-hidden="true"
|
|
tabIndex={-1}
|
|
className={clsx('anchor', {
|
|
[styles.enhancedAnchor]: !hideOnScroll,
|
|
})}
|
|
id={id}
|
|
/>
|
|
{props.children}
|
|
<a
|
|
className="hash-link"
|
|
href={`#${id}`}
|
|
title={translate({
|
|
id: 'theme.common.headingLinkTitle',
|
|
message: 'Direct link to heading',
|
|
description: 'Title for link to heading',
|
|
})}>
|
|
<AnchorIcon />
|
|
</a>
|
|
</Tag>
|
|
);
|
|
};
|
|
|
|
export default Heading;
|