mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-02 19:57:25 +02:00
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
/**
|
|
* 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.
|
|
*/
|
|
|
|
import type {
|
|
CategoryGeneratedIndexMetadata,
|
|
DocMetadataBase,
|
|
} from '@docusaurus/plugin-content-docs';
|
|
import type {SidebarItemCategoryWithGeneratedIndex} from './sidebars/types';
|
|
import {type SidebarsUtils, toNavigationLink} from './sidebars/utils';
|
|
import {createDocsByIdIndex} from './docs';
|
|
|
|
function getCategoryGeneratedIndexMetadata({
|
|
category,
|
|
sidebarsUtils,
|
|
docsById,
|
|
}: {
|
|
category: SidebarItemCategoryWithGeneratedIndex;
|
|
sidebarsUtils: SidebarsUtils;
|
|
docsById: {[docId: string]: DocMetadataBase};
|
|
}): CategoryGeneratedIndexMetadata {
|
|
const {sidebarName, previous, next} =
|
|
sidebarsUtils.getCategoryGeneratedIndexNavigation(category.link.permalink);
|
|
return {
|
|
title: category.link.title ?? category.label,
|
|
description: category.link.description,
|
|
image: category.link.image,
|
|
keywords: category.link.keywords,
|
|
slug: category.link.slug,
|
|
permalink: category.link.permalink,
|
|
sidebar: sidebarName!,
|
|
navigation: {
|
|
previous: toNavigationLink(previous, docsById),
|
|
next: toNavigationLink(next, docsById),
|
|
},
|
|
};
|
|
}
|
|
|
|
export function getCategoryGeneratedIndexMetadataList({
|
|
docs,
|
|
sidebarsUtils,
|
|
}: {
|
|
sidebarsUtils: SidebarsUtils;
|
|
docs: DocMetadataBase[];
|
|
}): CategoryGeneratedIndexMetadata[] {
|
|
const docsById = createDocsByIdIndex(docs);
|
|
|
|
const categoryGeneratedIndexItems =
|
|
sidebarsUtils.getCategoryGeneratedIndexList();
|
|
return categoryGeneratedIndexItems.map((category) =>
|
|
getCategoryGeneratedIndexMetadata({
|
|
category,
|
|
sidebarsUtils,
|
|
docsById,
|
|
}),
|
|
);
|
|
}
|