docusaurus-plugin-typedoc-api
Version:
Docusaurus plugin that provides source code API documentation powered by TypeDoc.
99 lines (96 loc) • 4.14 kB
JavaScript
'use strict';
const react = require('react');
const Link = require('@docusaurus/Link');
const client = require('@docusaurus/plugin-content-docs/client');
const Heading = require('@theme/Heading');
const links = require('../utils/links.js');
const Footer = require('./Footer.js');
const VersionBanner = require('./VersionBanner.js');
const jsxRuntime = require('react/jsx-runtime');
const _interopDefault = e => e && e.__esModule ? e : {
default: e
};
const Link__default = /*#__PURE__*/_interopDefault(Link);
const Heading__default = /*#__PURE__*/_interopDefault(Heading);
function addVersionToUrl(url, latestVersion, preferredVersion) {
if (!url.match(/api\/([\d.]+)/) && !url.includes('api/next') && preferredVersion && preferredVersion.name !== latestVersion.version) {
const version = preferredVersion.name === 'current' ? 'next' : preferredVersion.name;
if (url.endsWith('/api')) {
return `${url}/${version}`;
}
return url.replace('/api/', `/api/${version}/`);
}
return url;
}
function ApiIndex({
options,
packages,
history
}) {
const latestVersion = client.useDocsVersion();
const _client$useDocsPrefer = client.useDocsPreferredVersion(latestVersion.pluginId),
preferredVersion = _client$useDocsPrefer.preferredVersion;
react.useEffect(() => {
// Redirect to package when only 1
if (packages.length === 1) {
history.replace(addVersionToUrl(packages[0].entryPoints[0].reflection.permalink, latestVersion, preferredVersion));
// Redirect to preferred version
} else if (preferredVersion) {
history.replace(addVersionToUrl(history.location.pathname, latestVersion, preferredVersion));
}
}, [packages, history, latestVersion, preferredVersion]);
return /*#__PURE__*/jsxRuntime.jsx("div", {
className: "row",
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
className: "col apiItemCol",
children: [options.banner && /*#__PURE__*/jsxRuntime.jsx("div", {
className: "alert alert--info margin-bottom--md",
role: "alert",
children: /*#__PURE__*/jsxRuntime.jsx("div", {
dangerouslySetInnerHTML: {
__html: options.banner
}
})
}), /*#__PURE__*/jsxRuntime.jsx(VersionBanner.VersionBanner, {}), /*#__PURE__*/jsxRuntime.jsx("div", {
className: "apiItemContainer",
children: /*#__PURE__*/jsxRuntime.jsxs("article", {
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
className: "markdown",
children: [/*#__PURE__*/jsxRuntime.jsx("header", {
children: /*#__PURE__*/jsxRuntime.jsx(Heading__default.default, {
as: "h1",
children: "API"
})
}), /*#__PURE__*/jsxRuntime.jsxs("section", {
className: "tsd-panel",
children: [/*#__PURE__*/jsxRuntime.jsx("h3", {
className: "tsd-panel-header",
children: "Packages"
}), /*#__PURE__*/jsxRuntime.jsx("div", {
className: "tsd-panel-content",
children: /*#__PURE__*/jsxRuntime.jsx("ul", {
className: "tsd-index-list",
children: packages.map(pkg => /*#__PURE__*/jsxRuntime.jsx("li", {
className: "tsd-truncate",
children: /*#__PURE__*/jsxRuntime.jsxs(Link__default.default, {
className: "tsd-kind-icon",
to: pkg.entryPoints[0].reflection.permalink,
children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
className: "tsd-signature-symbol",
children: ["v", pkg.packageVersion]
}), ' ', /*#__PURE__*/jsxRuntime.jsx("span", {
children: links.removeScopes(pkg.packageName, options.scopes)
})]
})
}, pkg.packageName))
})
})]
})]
}), /*#__PURE__*/jsxRuntime.jsx(Footer.Footer, {})]
})
})]
})
});
}
module.exports = ApiIndex;
//# sourceMappingURL=ApiIndex.js.map