import type { FileCategory } from '../api' export interface CategoryOption { value: string label: string } export function findCategory(categories: FileCategory[], id: string): FileCategory | undefined { for (const category of categories) { if (category.id === id) return category const nested = findCategory(category.children, id) if (nested) return nested } return undefined } export function categoryContains(category: FileCategory, id: string): boolean { return category.id === id || category.children.some((child) => categoryContains(child, id)) } export function getCategoryPath(categories: FileCategory[], id: string): string[] { for (const category of categories) { if (category.id === id) return [category.name] const nestedPath = getCategoryPath(category.children, id) if (nestedPath.length > 0) return [category.name, ...nestedPath] } return [] } export function flattenCategoryOptions( categories: FileCategory[], depth = 0, ): CategoryOption[] { return categories.flatMap((category) => [ { value: category.id, label: `${' '.repeat(depth)}${depth > 0 ? '└ ' : ''}${category.name}`, }, ...flattenCategoryOptions(category.children, depth + 1), ]) }