mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-10 19:54:57 +02:00
81 lines
3.2 KiB
JavaScript
81 lines
3.2 KiB
JavaScript
"use strict";
|
|
/**
|
|
* 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.
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.postProcessSidebars = void 0;
|
|
const tslib_1 = require("tslib");
|
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
const utils_1 = require("@docusaurus/utils");
|
|
function normalizeCategoryLink(category, params) {
|
|
if (category.link?.type === 'doc' && params.draftIds.has(category.link.id)) {
|
|
return undefined;
|
|
}
|
|
if (category.link?.type === 'generated-index') {
|
|
// Default slug logic can be improved
|
|
const getDefaultSlug = () => `/category/${params.categoryLabelSlugger.slug(category.label)}`;
|
|
const slug = category.link.slug ?? getDefaultSlug();
|
|
const permalink = (0, utils_1.normalizeUrl)([params.version.path, slug]);
|
|
return {
|
|
...category.link,
|
|
slug,
|
|
permalink,
|
|
};
|
|
}
|
|
return category.link;
|
|
}
|
|
function postProcessSidebarItem(item, params) {
|
|
if (item.type === 'category') {
|
|
// Fail-fast if there's actually no subitems, no because all subitems are
|
|
// drafts. This is likely a configuration mistake.
|
|
if (item.items.length === 0 && !item.link) {
|
|
throw new Error(`Sidebar category ${item.label} has neither any subitem nor a link. This makes this item not able to link to anything.`);
|
|
}
|
|
const category = {
|
|
...item,
|
|
collapsed: item.collapsed ?? params.sidebarOptions.sidebarCollapsed,
|
|
collapsible: item.collapsible ?? params.sidebarOptions.sidebarCollapsible,
|
|
link: normalizeCategoryLink(item, params),
|
|
items: item.items
|
|
.map((subItem) => postProcessSidebarItem(subItem, params))
|
|
.filter((v) => Boolean(v)),
|
|
};
|
|
// If the current category doesn't have subitems, we render a normal link
|
|
// instead.
|
|
if (category.items.length === 0) {
|
|
// Doesn't make sense to render an empty generated index page, so we
|
|
// filter the entire category out as well.
|
|
if (!category.link ||
|
|
category.link.type === 'generated-index' ||
|
|
params.draftIds.has(category.link.id)) {
|
|
return null;
|
|
}
|
|
return {
|
|
type: 'doc',
|
|
label: category.label,
|
|
id: category.link.id,
|
|
};
|
|
}
|
|
// A non-collapsible category can't be collapsed!
|
|
if (!category.collapsible) {
|
|
category.collapsed = false;
|
|
}
|
|
return category;
|
|
}
|
|
if ((item.type === 'doc' || item.type === 'ref') &&
|
|
params.draftIds.has(item.id)) {
|
|
return null;
|
|
}
|
|
return item;
|
|
}
|
|
function postProcessSidebars(sidebars, params) {
|
|
const draftIds = new Set(params.drafts.map((d) => d.id));
|
|
return lodash_1.default.mapValues(sidebars, (sidebar) => sidebar
|
|
.map((item) => postProcessSidebarItem(item, { ...params, draftIds }))
|
|
.filter((v) => Boolean(v)));
|
|
}
|
|
exports.postProcessSidebars = postProcessSidebars;
|