type QueryParam = string | (string | null)[] | null | undefined; type QueryRecord = Record; /** * Собирает плоский список всех активных значений фильтра (категории + `duration` + `added`) * из query — используется для подсчёта количества применённых фильтров. * @param query - query роута */ export function getActiveFilterValues(query: QueryRecord): string[] { const result: string[] = []; const categoriesRaw = query['categories']; if (categoriesRaw) { if (Array.isArray(categoriesRaw)) { categoriesRaw.forEach(item => { if (typeof item === 'string') { result.push(...item.split(',').filter(Boolean)); } }); } else if (typeof categoriesRaw === 'string') { result.push(...categoriesRaw.split(',').filter(Boolean)); } } ['duration', 'added'].forEach(key => { const val = query[key]; if (typeof val === 'string' && val.length > 0) { result.push(val); } }); return result; }