25 lines
741 B
JavaScript
25 lines
741 B
JavaScript
/**
|
|
*
|
|
* @param {import("@/types").SidebarItemType[]} sidebarItems - The items to add numbers to their titles
|
|
* @param {number[]} numbering - The current numbering level
|
|
* @returns {import("@/types").SidebarItemType[]} The modified sidebar items
|
|
*/
|
|
export default function numberSidebarItems(sidebarItems, numbering = [1]) {
|
|
if (!numbering.length) {
|
|
numbering.push(1)
|
|
}
|
|
sidebarItems.forEach((item) => {
|
|
// append current number to the item's title
|
|
item.number = `${numbering.join(".")}.`
|
|
item.title = `${item.number} ${item.title.trim()}`
|
|
|
|
if (item.children) {
|
|
item.children = numberSidebarItems(item.children, [...numbering, 1])
|
|
}
|
|
|
|
numbering[numbering.length - 1]++
|
|
})
|
|
|
|
return sidebarItems
|
|
}
|