import type { ProxyFontsParams } from '$entities/Font/api'; import type { FilterManager } from '../filterManager/filterManager.svelte'; /** * Maps filter manager to proxy API parameters. * * Updated to support multiple filter values (arrays) * * @param manager - Filter manager instance with reactive state * @returns - Partial proxy API parameters ready for API call * * @example * ```ts * // Example filter manager state: * // { * // queryValue: 'roboto', * // providers: ['google', 'fontshare'], * // categories: ['sans-serif', 'serif'], * // subsets: ['latin'] * // } * * const params = mapManagerToParams(manager); * // Returns: { * // providers: ['google', 'fontshare'], * // categories: ['sans-serif', 'serif'], * // subsets: ['latin'], * // q: 'roboto' * // } * ``` */ export function mapManagerToParams(manager: FilterManager): Partial { const providers = manager.getGroup('providers')?.instance.selectedProperties.map(p => p.value); const categories = manager.getGroup('categories')?.instance.selectedProperties.map(p => p.value); const subsets = manager.getGroup('subsets')?.instance.selectedProperties.map(p => p.value); return { // Search query (debounced) q: manager.debouncedQueryValue || undefined, // NEW: Support arrays - send all selected values providers: providers && providers.length > 0 ? providers as string[] : undefined, categories: categories && categories.length > 0 ? categories as string[] : undefined, subsets: subsets && subsets.length > 0 ? subsets as string[] : undefined, }; }