Files
outline/shared/utils/collections.ts
2024-06-23 06:31:18 -07:00

44 lines
909 B
TypeScript

import type { NavigationNode } from "../types";
import naturalSort from "./naturalSort";
type Sort = {
field: string;
direction: "asc" | "desc";
};
export const sortNavigationNodes = (
nodes: NavigationNode[],
sort: Sort,
sortChildren = true
): NavigationNode[] => {
// "index" field is manually sorted and is represented by the documentStructure
// already saved in the database, no further sort is needed
if (sort.field === "index") {
return nodes;
}
const orderedDocs = naturalSort(nodes, sort.field, {
direction: sort.direction,
});
return orderedDocs.map((node) => ({
...node,
children: sortChildren
? sortNavigationNodes(node.children, sort, sortChildren)
: node.children,
}));
};
export const colorPalette = [
"#4E5C6E",
"#0366D6",
"#9E5CF7",
"#FF825C",
"#FF5C80",
"#FFBE0B",
"#42DED1",
"#00D084",
"#FF4DFA",
"#2F362F",
];