Bilibili-Evolved/registry/lib/components/style/custom-navbar/settings/orders.ts
2022-10-12 23:27:58 +08:00

24 lines
780 B
TypeScript

import { CustomNavbarItem } from '../custom-navbar-item'
const regenerateOrder = (items: CustomNavbarItem[]) => {
items.forEach((item, index) => {
if (item.order === index) {
return
}
item.order = index
})
const orderMap = Object.fromEntries(items.map(it => [it.name, it.order]))
CustomNavbarItem.navbarOptions.order = orderMap
}
export const checkSequentialOrder = (items: CustomNavbarItem[]) => {
const isSequentialOrder = items.every((item, index) => item.order === index)
if (!isSequentialOrder) {
regenerateOrder(items)
}
}
export const sortItems = (items: CustomNavbarItem[], orderMap: Record<string, number>) => {
const sortedItems = lodash.sortBy(items, it => orderMap[it.name])
regenerateOrder(sortedItems)
return sortedItems
}