54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
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<ProxyFontsParams> {
|
|
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,
|
|
};
|
|
}
|