Files
rfc.vac.dev/docusaurus-utils/sidebar/modifiers.js
Filip Pajic 32f0947064 chore: Routing Refactor (#3)
* scrape with 1:1 mapping to origin repo

* exclude .md extension from file path in URLs inside MDs

* removed legacy static files

* remove image path manipulation

* move scrapper to new folder

* sidebar custom ordering implemented
2024-04-25 09:29:22 +02:00

89 lines
2.2 KiB
JavaScript

const { isNumber } = require('./utils')
const {
isIndexDocument
} = require("./helpers")
function orderAlphabeticallyAndByNumber(sidebarItems) {
let newSidebarItems = [...sidebarItems]
for (let i = 0; i < newSidebarItems.length; i++) {
const sidebarItem = newSidebarItems[i];
if (sidebarItem.type === 'category' && sidebarItem.items && sidebarItem.items.length > 1) {
newSidebarItems[i] = {
...sidebarItem,
items: orderAlphabeticallyAndByNumber(sidebarItem.items)
}
}
}
const collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'});
const compareFunction = (a, b) => {
return collator.compare(a.label, b.label)
}
return newSidebarItems.sort(compareFunction)
}
function removeRFCNumberedDirectories(sidebarItems) {
let newSidebarItems = []
sidebarItems.forEach(sidebarItem => {
if (sidebarItem.type === 'category') {
const isRFCNumberedCategory = isNumber(sidebarItem.label);
if (isRFCNumberedCategory) {
newSidebarItems = [...newSidebarItems, ...sidebarItem.items]
} else {
const newSidebarItem = {
...sidebarItem,
items: removeRFCNumberedDirectories(sidebarItem.items)
}
newSidebarItems = [...newSidebarItems, newSidebarItem]
}
} else {
newSidebarItems = [...newSidebarItems, sidebarItem]
}
})
return newSidebarItems
}
function separateFoldersAndFilesOrder(sidebarItems) {
let categories = [];
let pages = [];
sidebarItems.forEach(sidebarItem => {
if (sidebarItem.type === 'category') {
categories = [...categories, sidebarItem]
} else {
pages = [...pages, sidebarItem]
}
})
return [
...categories,
...pages
]
}
function positionDefaultReadmeToTop(sidebarItems) {
let newSidebarItems = []
sidebarItems.forEach(sidebarItem => {
if (sidebarItem.type === "doc" && isIndexDocument(sidebarItem.id)) {
newSidebarItems = [sidebarItem, ...newSidebarItems]
} else {
newSidebarItems = [...newSidebarItems, sidebarItem]
}
})
return newSidebarItems
}
module.exports = {
orderAlphabeticallyAndByNumber,
removeRFCNumberedDirectories,
separateFoldersAndFilesOrder,
positionDefaultReadmeToTop,
}