import type { Manual, ManualGroup } from "@/lib/manuals-types" export function groupManuals(manuals: Manual[]): ManualGroup[] { const grouped: Record> = {} for (const manual of manuals) { if (!grouped[manual.manufacturer]) { grouped[manual.manufacturer] = {} } if (!grouped[manual.manufacturer][manual.category]) { grouped[manual.manufacturer][manual.category] = [] } grouped[manual.manufacturer][manual.category].push(manual) } return Object.entries(grouped) .map(([manufacturer, categories]) => ({ manufacturer, categories: Object.fromEntries( Object.entries(categories).sort(([left], [right]) => left.localeCompare(right) ) ), })) .sort((left, right) => left.manufacturer.localeCompare(right.manufacturer)) } export function getManufacturers(manuals: Manual[]): string[] { return Array.from( new Set(manuals.map((manual) => manual.manufacturer)) ).sort() } export function getCategories(manuals: Manual[]): string[] { return Array.from(new Set(manuals.map((manual) => manual.category))).sort() }