import { Category, Service } from '@usercentrics/cmp-browser-sdk'; export type Navigation = { categorySlug?: string; serviceId?: string; }; export type ContentData = { service?: Service; category?: Category; categories?: Category[]; }; export const getContentDataByNavigation = (categories: Category[], navigation: Navigation): ContentData => { if (navigation?.serviceId) { return { service: categories?.reduce((acc: Service | undefined, current: Category) => { return ( acc || current.services.find((service: Service) => { return service.id === navigation.serviceId; }) ); }, undefined), }; } // Return category and all services on navigation to category. if (navigation?.categorySlug) { return { category: categories.find((category: Category) => { return category.slug === navigation.categorySlug; }), }; } return { categories }; }; export const getCategoriesBySearch = (categories: Category[], search: string): Category[] => { if (!categories) { return []; } return categories.reduce((acc: Category[], current: Category) => { const filteredServices = current.services.filter((service: Service) => { return JSON.stringify(service).toLowerCase().includes(search.toLowerCase()); }); return filteredServices.length > 0 ? [...acc, { ...current, services: filteredServices }] : [...acc]; }, []); };