{"version":3,"file":"coopse.script.9108.eaebb69c.chunk.js","mappings":"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","sources":["webpack:///./src/microApps/common/components/atoms/Image.tsx","webpack:///./src/microApps/common/hooks/useUserProfile.ts","webpack:///./src/microApps/common/selectors/userProfileSelectors.ts","webpack:///./src/microApps/search/api/searchApi.ts","webpack:///./src/microApps/search/flow/mapSearchRequest.ts","webpack:///./src/microApps/search/flow/searchFlow.ts"],"sourcesContent":["import classNames from 'classnames';\nimport type { FC } from 'react';\nimport { Img } from 'react-image';\n\ninterface ImageProps {\n    src: string;\n    alt?: string;\n    title?: string;\n    cssClass?: string;\n    wrapperClassName?: string;\n    lazy?: boolean;\n    srcSet?: string;\n    unloader?: JSX.Element;\n    loader?: JSX.Element;\n    width?: string | number;\n    height?: string | number;\n    onClick?: React.MouseEventHandler<HTMLImageElement>;\n    ariaLabel?: string;\n}\n\nconst FallbackImg = (props: ImageProps) => {\n    return <img className={props.cssClass} alt=\"\" />;\n};\n\nconst Image: FC<ImageProps> = (props: ImageProps) => {\n    if (window.isPrerenderCrawler) {\n        return (\n            <div className={classNames('u-heightAll', props.wrapperClassName)}>\n                <img\n                    className={props.cssClass}\n                    src={props.src}\n                    alt={props.alt || ''}\n                    srcSet={props.srcSet}\n                    draggable=\"false\"\n                    aria-label={props.ariaLabel}\n                />\n            </div>\n        );\n    }\n\n    return (\n        <Img\n            onClick={props.onClick}\n            alt={props.alt}\n            title={props.title}\n            src={props.src}\n            srcSet={props.srcSet}\n            decode={false}\n            draggable=\"false\"\n            className={props.cssClass}\n            width={props.width}\n            height={props.height}\n            loading={props.lazy ? 'lazy' : undefined}\n            unloader={props.unloader || FallbackImg(props)}\n            loader={props.loader || FallbackImg(props)}\n        />\n    );\n};\n\nexport default Image;\n","import { userProfileSelectors } from '../selectors/userProfileSelectors';\nimport { useAppSelector } from './useThunkDispatch';\n\nexport const useUserProfile = () => {\n    const state = useAppSelector(userProfileSelectors.profile);\n    return state;\n};\n\nexport const useIsUserAuthenticated = () => {\n    const state = useAppSelector(userProfileSelectors.isAuthenticated);\n    return state;\n};\n\nexport const useIsUserAMember = () => {\n    const state = useAppSelector(userProfileSelectors.isMember);\n    return state;\n};\n\nexport const useIsUserCompany = () => {\n    const state = useAppSelector(userProfileSelectors.isCompany);\n    return state;\n};\n\nexport const useHasUserAKimCustomerId = () => {\n    const state = useAppSelector(userProfileSelectors.hasKimCustomerId);\n    return state;\n};\n\nexport const useShoppingUserId = () => {\n    const state = useAppSelector(userProfileSelectors.shoppingUserId);\n    return state;\n};\n\nexport const useUserId = () => {\n    const state = useAppSelector(userProfileSelectors.id);\n    return state;\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\n\nconst selectProfile = (state: RootState) => state.user.profile;\nconst selectFirstName = createSelector(selectProfile, (state) => state?.firstName);\nconst selectLastName = createSelector(selectProfile, (state) => state?.lastName);\nconst selectIsAuthenticated = createSelector(selectProfile, (state) => !!state?.isAuthenticated);\nconst selectIsCompany = createSelector(selectProfile, (state) => !!state?.isCompany);\nconst selectIsMember = createSelector(selectProfile, (state) => !!state?.medmeraId);\nconst selectHasKimCustomerId = createSelector(selectProfile, (state) => !!state?.hasKimCustomerId);\nconst selectShoppingUserId = createSelector(selectProfile, (state) => state?.shoppingUserId);\nconst selectUserId = createSelector(selectProfile, (state) => state?.id);\nconst selectIsEpiUser = createSelector(selectProfile, (state) => state?.isEpiUser);\n\nconst selectFullName = createSelector(selectFirstName, selectLastName, (first, last) => {\n    if (!first || !last) {\n        return undefined;\n    }\n    return `${first} ${last}`;\n});\n\nconst selectInitials = createSelector(selectFirstName, selectLastName, (first, last) => {\n    if (!first || !last) {\n        return undefined;\n    }\n\n    return `${first.charAt(0)}${last.charAt(0)}`;\n});\n\nexport const userProfileSelectors = {\n    profile: selectProfile,\n    fullName: selectFullName,\n    initials: selectInitials,\n    isAuthenticated: selectIsAuthenticated,\n    isMember: selectIsMember,\n    isCompany: selectIsCompany,\n    hasKimCustomerId: selectHasKimCustomerId,\n    shoppingUserId: selectShoppingUserId,\n    id: selectUserId,\n    isEpiUser: selectIsEpiUser,\n};\n","import { getCancellationToken } from '../../common/api/utils';\nimport getDirectPersonalizationSearchAxiosClient, {\n    prepareRequestParams,\n} from './directPersonalizationAxiosClient';\nimport type {\n    ApiLoopAutocompleteRequest,\n    ApiLoopGlobalSearchRequest,\n    ApiLoopSearchByAttributeRequest,\n    ApiLoopSearchRequest,\n} from './searchRequests';\n\nconst searchLoyaltyProducts = async ({\n    loopSearchRequest,\n}: {\n    loopSearchRequest: ApiLoopSearchRequest;\n}): Promise<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>> => {\n    const client = getDirectPersonalizationSearchAxiosClient();\n\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>>(\n        '/search/pointshop',\n        loopSearchRequest,\n        {\n            params: {\n                channel: 'Coopse',\n            },\n        },\n    );\n    return response.data;\n};\n\nconst searchRecipes = async ({\n    loopSearchRequest,\n}: {\n    loopSearchRequest: ApiLoopSearchRequest;\n}): Promise<ApiLoopRecipeSearchResponse> => {\n    const client = getDirectPersonalizationSearchAxiosClient();\n\n    const response = await client.post<ApiLoopRecipeSearchResponse>(\n        '/search/recipes',\n        loopSearchRequest,\n    );\n    return response.data;\n};\n\nconst searchProducts = async (\n    loopSearchRequest: ApiLoopSearchRequest,\n    storeId: string,\n    abortSignal: AbortSignal | undefined,\n    searchService: string | null,\n    customerGroups?: string[],\n    device?: string,\n    quickSearch?: boolean,\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n    const token = getCancellationToken(abortSignal);\n    const client = getDirectPersonalizationSearchAxiosClient();\n\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n        '/search/products',\n        loopSearchRequest,\n        {\n            cancelToken: token,\n            params: prepareRequestParams(\n                storeId,\n                customerGroups,\n                device,\n                quickSearch,\n                searchService,\n            ),\n        },\n    );\n    return response.data;\n};\n\nconst searchArticles = async (\n    loopSearchRequest: ApiLoopSearchRequest,\n    abortSignal?: AbortSignal,\n): Promise<ApiLoopSearchResponse<ApiLoopSearchArticle>> => {\n    const token = getCancellationToken(abortSignal);\n    const client = getDirectPersonalizationSearchAxiosClient();\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopSearchArticle>>(\n        '/search/articles',\n        loopSearchRequest,\n        { cancelToken: token },\n    );\n    return response.data;\n};\nconst searchPointshop = async (\n    loopSearchRequest: ApiLoopSearchRequest,\n    abortSignal?: AbortSignal,\n): Promise<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>> => {\n    const token = getCancellationToken(abortSignal);\n    const client = getDirectPersonalizationSearchAxiosClient();\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>>(\n        '/search/pointshop',\n        loopSearchRequest,\n        { cancelToken: token },\n    );\n    return response.data;\n};\n\nconst getLoyaltyProductsById = async (\n    ids: number[],\n): Promise<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>> => {\n    const client = getDirectPersonalizationSearchAxiosClient(false);\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopLoyaltyProduct>>(\n        '/search/pointshops/by-id',\n        ids,\n    );\n    return response.data;\n};\n\nconst searchStores = async (\n    loopSearchRequest: ApiLoopSearchRequest,\n    abortSignal?: AbortSignal,\n): Promise<ApiLoopSearchResponse<ApiLoopSearchStore>> => {\n    const token = getCancellationToken(abortSignal);\n    const client = getDirectPersonalizationSearchAxiosClient();\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopSearchStore>>(\n        '/search/stores',\n        loopSearchRequest,\n        { cancelToken: token },\n    );\n    return response.data;\n};\n\nconst searchGlobal = async (\n    loopGlobalSearchRequest: ApiLoopGlobalSearchRequest,\n    storeId: string,\n    abortSignal?: AbortSignal,\n    customerGroups?: string[],\n    device?: string,\n    quickSearch?: boolean,\n): Promise<ApiLoopGlobalSearchResponse> => {\n    const token = getCancellationToken(abortSignal);\n    const client = getDirectPersonalizationSearchAxiosClient();\n\n    const response = await client.post<ApiLoopGlobalSearchResponse>(\n        '/search/global',\n        loopGlobalSearchRequest,\n        {\n            cancelToken: token,\n            params: prepareRequestParams(storeId, customerGroups, device, quickSearch),\n        },\n    );\n    return response.data;\n};\n\nconst searchByAttribute = async (\n    loopSearchRequest: ApiLoopSearchByAttributeRequest,\n    storeId: string,\n    customerGroups?: string[],\n    device?: string,\n): Promise<ApiLoopSearchResponse<ApiLoopProduct>> => {\n    const client = getDirectPersonalizationSearchAxiosClient();\n\n    const response = await client.post<ApiLoopSearchResponse<ApiLoopProduct>>(\n        '/search/entities/by-attribute',\n        loopSearchRequest,\n        { params: prepareRequestParams(storeId, customerGroups, device, false) },\n    );\n    return response.data;\n};\n\nconst autoComplete = async (\n    loopAutocompleteRequest: ApiLoopAutocompleteRequest,\n    abortSignal: AbortSignal | undefined,\n    storeId: string,\n    searchService: string | null,\n    customerGroups?: string[],\n    device?: string,\n) => {\n    const token = getCancellationToken(abortSignal);\n    const client = getDirectPersonalizationSearchAxiosClient();\n    const response = await client.post<ApiLoopAutocompleteResponse>(\n        '/search/auto-complete',\n        loopAutocompleteRequest,\n        {\n            cancelToken: token,\n            params: prepareRequestParams(storeId, customerGroups, device, false, searchService),\n        },\n    );\n    return response.data;\n};\n\nexport const searchDirectApi = {\n    getLoyaltyProductsById,\n    searchRecipes,\n    searchLoyaltyProducts,\n    searchProducts,\n    searchArticles,\n    searchPointshop,\n    searchStores,\n    searchGlobal,\n    searchByAttribute,\n    autoComplete,\n};\n","import type {\n    ApiLoopDistinctFacet,\n    ApiLoopSearchAndFilter,\n    ApiLoopSearchFilter,\n    ApiLoopSearchOrFilter,\n    ApiLoopSort,\n} from '../api/searchRequests';\nimport type {\n    SearchRequestAndFilter,\n    SearchRequestFacet,\n    SearchRequestFilter,\n    SearchRequestOrFilter,\n    SortOrderType,\n} from '../models/models';\nimport { SearchFacetType } from '../models/models';\n\nconst sortOrderMap: Readonly<Record<SortOrderType, ApiLoopSort<string>>> = {\n    popular: { order: 'desc', type: 'popularity' },\n    'product_name+asc': {\n        order: 'asc',\n        attributeName: 'name',\n        type: 'attribute',\n    },\n    'product_effectiveprice_cents+asc': {\n        order: 'asc',\n        attributeName: 'piecePrice',\n        type: 'attribute',\n    },\n    'product_effectiveprice_cents+desc': {\n        order: 'desc',\n        attributeName: 'piecePrice',\n        type: 'attribute',\n    },\n    'product_effectiveprice_with_promo+asc': {\n        order: 'asc',\n        attributeName: 'lowestOnlineSinglePiecePrice',\n        type: 'attribute',\n    },\n    'product_effectiveprice_with_promo+desc': {\n        order: 'desc',\n        attributeName: 'lowestOnlineSinglePiecePrice',\n        type: 'attribute',\n    },\n};\n\nconst facetMap: Record<SearchFacetType, ApiLoopDistinctFacet> = {\n    categories: {\n        attributeName: 'categories',\n        type: 'distinct',\n        operator: 'AND',\n        name: SearchFacetType.RecipeCategories,\n        selected: [],\n    },\n    brand: {\n        attributeName: 'manufacturerName',\n        type: 'distinct',\n        operator: 'OR',\n        name: SearchFacetType.Brand,\n        selected: [],\n    },\n    loyaltybrand: {\n        attributeName: 'brand',\n        type: 'distinct',\n        operator: 'AND',\n        name: SearchFacetType.Loyaltybrand,\n        selected: [],\n    },\n    loyaltyCategory: {\n        attributeName: 'category',\n        type: 'distinct',\n        operator: 'AND',\n        name: SearchFacetType.LoyaltyCategory,\n        selected: [],\n    },\n    categoryIds: {\n        attributeName: 'categoryIds',\n        type: 'distinct',\n        operator: 'OR',\n        name: SearchFacetType.CategoryIds,\n        selected: [],\n    },\n    environmentalLabels: {\n        attributeName: 'filterLabels',\n        type: 'distinct',\n        operator: 'AND',\n        name: SearchFacetType.EnvironmentalLabels,\n        selected: [],\n    },\n    topCategory: {\n        attributeName: 'topCategory',\n        type: 'distinct',\n        operator: 'OR',\n        name: SearchFacetType.TopCategory,\n        selected: [],\n    },\n};\n\nexport const mapSortOrder = (sortOrders: string[]) => {\n    const sortBy: ApiLoopSort<string>[] = [];\n    if (sortOrders) {\n        sortOrders.forEach((sort) => {\n            if (sort === 'default') {\n                sortBy.push(sortOrderMap.popular);\n                return;\n            }\n\n            const sortOrder = sortOrderMap[sort as SortOrderType];\n            if (sortOrder) {\n                sortBy.push(sortOrder);\n            } else {\n                // eslint-disable-next-line no-console\n                console.warn(\n                    `mapping for sortOrder: ${sort} not found, possible sort orders: ${Object.keys(\n                        sortOrderMap,\n                    ).join(',')}`,\n                );\n            }\n        });\n    }\n\n    return sortBy;\n};\n\nexport const mapFacets = (facets: SearchRequestFacet[]) => {\n    const loopFacets: ApiLoopDistinctFacet[] = [];\n    if (facets) {\n        facets.forEach((facet) => {\n            const loopFacet = facetMap[facet.type];\n            const selectedFacets = facet.selected ? [...facet.selected] : [];\n            if (loopFacet) {\n                loopFacet.selected = selectedFacets;\n                if (facet.operator) {\n                    loopFacet.operator = facet.operator;\n                }\n                loopFacets.push(loopFacet);\n            } else {\n                // eslint-disable-next-line no-console\n                console.warn(\n                    `mapping for facet: ${facet.type} not found, possible facets: ${Object.keys(\n                        facetMap,\n                    ).join(',')}`,\n                );\n            }\n        });\n    }\n\n    return loopFacets;\n};\n\nexport const mapFilter = (filter: SearchRequestFilter) => {\n    const activeFilter: ApiLoopSearchFilter = {\n        type: filter.type,\n        attributeName: filter.attributeName,\n        comparisonMode: filter.comparisonMode,\n        value: filter.value,\n    };\n\n    return activeFilter;\n};\n\nexport const mapAndFilter = (filter: SearchRequestAndFilter) => {\n    const activeFilterAnd: ApiLoopSearchAndFilter = {\n        and: filter.and,\n    };\n    return activeFilterAnd;\n};\n\nexport const mapAndOrFilter = (filter: SearchRequestAndFilter | SearchRequestOrFilter) => {\n    if (isAnd(filter)) {\n        const activeFilterAnd: ApiLoopSearchAndFilter = {\n            and: filter.and,\n        };\n        return activeFilterAnd;\n    }\n\n    const activeFilterOr: ApiLoopSearchOrFilter = {\n        or: filter.or,\n    };\n    return activeFilterOr;\n};\n\ntype Z = SearchRequestAndFilter | SearchRequestOrFilter;\n\nexport const isAnd = (obj: Z): obj is SearchRequestAndFilter => {\n    return obj.type === 'And';\n};\n","import { Browser } from '../../../utility/browser';\nimport { productApi } from '../../common/api/products/productApi';\nimport { DirectProductProvider } from '../../common/flow/product/directProductProvider';\nimport userFlow from '../../common/flow/userFlow';\nimport { searchDirectApi } from '../api/searchApi';\nimport type {\n    ApiLoopAutocompleteRequest,\n    ApiLoopCurrentOffersRequest,\n    ApiLoopGlobalSearchRequest,\n    ApiLoopRangeFacet,\n    ApiLoopResultOptions,\n    ApiLoopSearchByAttributeRequest,\n    ApiLoopSearchRequest,\n} from '../api/searchRequests';\nimport type {\n    BaseSearchRequest,\n    GlobalSearchRequest,\n    GlobalSearchResults,\n    LoopNoQueryProductResults,\n    LoopSearchProductResults,\n    PointshopSearchAndRequest,\n    PointshopSearchRequest,\n    ProductOfferSearchRequest,\n    ProductSearchRequest,\n    RecipeSearchRequest,\n    SearchArticleResults,\n    SearchByAttributeRequest,\n    SearchPointshop,\n    SearchRecipeResult,\n    SearchRequest,\n    SearchRequestAlias,\n    SearchStoreResults,\n} from '../models/models';\nimport { SearchFacetType } from '../models/models';\nimport { mapAndFilter, mapAndOrFilter, mapFacets, mapSortOrder } from './mapSearchRequest';\nimport {\n    mapLoopArticleSearchResponse,\n    mapLoopAutocompleteResponse,\n    mapLoopGlobalSearchResponse,\n    mapLoopProductNoQuerySearchResponse,\n    mapLoopProductSearchResponse,\n    mapLoopSearchPointshop,\n    mapLoopSearchRecipe,\n    mapLoopStoreSearchResponse,\n} from './mapSearchResponse';\n\nconst searchRecipesLoop = async ({\n    searchRequest,\n}: {\n    searchRequest: RecipeSearchRequest;\n}): Promise<SearchRecipeResult> => {\n    let loopSearchRequest: ApiLoopSearchRequest = {\n        query: searchRequest.searchQuery,\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: searchRequest.sortBy,\n            facets: mapFacets(searchRequest.facets),\n        },\n    };\n\n    // if sortby is null, dont send it.\n    if (searchRequest.sortBy === null) {\n        loopSearchRequest = {\n            query: searchRequest.searchQuery,\n            resultsOptions: {\n                skip: searchRequest.page * searchRequest.resultsPerPage,\n                take: searchRequest.resultsPerPage,\n                facets: mapFacets(searchRequest.facets),\n            },\n        };\n    }\n\n    const response = await searchDirectApi.searchRecipes({ loopSearchRequest });\n\n    return {\n        count: response.results.count,\n        items: response.results.items.map(mapLoopSearchRecipe),\n        facets: response.results.facets,\n        queryUsed: response.queryUsed,\n    };\n};\n\nconst searchProductsLoop = async (\n    searchRequest: ProductSearchRequest,\n    abortSignal: AbortSignal | undefined,\n    searchService: SearchService | null,\n    quickSearch: boolean, // used by loop to indicate if the search was used when you type, they need it for something....\n): Promise<LoopSearchProductResults> => {\n    const loopSearchRequest: ApiLoopSearchRequest = {\n        query: searchRequest.searchTerm,\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: mapSortOrder(searchRequest.sortBy),\n            facets: mapFacets(searchRequest.facets),\n        },\n        relatedResultsOptions: {\n            skip: 0,\n            take: 16,\n        },\n    };\n\n    const customerGroups = await userFlow.getB2BContextCustomerGroups();\n    const device = Browser.platformType();\n    const response = await searchDirectApi.searchProducts(\n        loopSearchRequest,\n        searchRequest.storeId,\n        abortSignal,\n        searchService,\n        customerGroups,\n        device,\n        quickSearch,\n    );\n    const mappedResponse = mapLoopProductSearchResponse(response, searchRequest);\n    return mappedResponse;\n};\n\nconst searchProductOffersLoop = async (\n    searchRequest: ProductOfferSearchRequest,\n    abortSignal?: AbortSignal,\n    groupOffers?: boolean,\n    overwritePersonalizeCampaigns?: boolean,\n) => {\n    const loopSearchRequest: ApiLoopCurrentOffersRequest = {\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: mapSortOrder(searchRequest.sortBy),\n            facets: mapFacets(searchRequest.facets),\n        },\n        customData: {\n            personalizeCampaigns: !!overwritePersonalizeCampaigns,\n        },\n    };\n\n    const customerGroups = await userFlow.getB2BContextCustomerGroups();\n    const response = await productApi.getCurrentProductOffersLoop(\n        loopSearchRequest,\n        searchRequest.storeId,\n        abortSignal,\n        customerGroups,\n        groupOffers,\n    );\n\n    const mappedResponse = mapLoopProductNoQuerySearchResponse(response);\n    return mappedResponse;\n};\n\nconst searchArticlesLoop = async (\n    searchRequest: SearchRequest,\n    abortSignal: AbortSignal,\n): Promise<SearchArticleResults> => {\n    const loopSearchRequest: ApiLoopSearchRequest = {\n        query: searchRequest.searchTerm,\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: mapSortOrder(searchRequest.sortBy),\n            facets: mapFacets(searchRequest.facets),\n        },\n    };\n\n    const response = await searchDirectApi.searchArticles(loopSearchRequest, abortSignal);\n    const mappedResponse = mapLoopArticleSearchResponse(response, searchRequest);\n    return mappedResponse;\n};\n\nconst searchStoresLoop = async (\n    searchRequest: SearchRequest,\n    abortSignal: AbortSignal,\n): Promise<SearchStoreResults> => {\n    const loopSearchRequest: ApiLoopSearchRequest = {\n        query: searchRequest.searchTerm,\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: mapSortOrder(searchRequest.sortBy),\n            facets: mapFacets(searchRequest.facets),\n        },\n    };\n\n    const response = await searchDirectApi.searchStores(loopSearchRequest, abortSignal);\n    const mappedResponse = mapLoopStoreSearchResponse(response, searchRequest);\n    return mappedResponse;\n};\n\nconst searchLoyaltyProductsById = async (ids: number[]): Promise<SearchPointshop[]> => {\n    if (!ids || !ids.length) {\n        return [];\n    }\n    const distinctIds = ids.filter((id, index, result) => id && index === result.indexOf(id));\n    const response = await searchDirectApi.getLoyaltyProductsById(distinctIds);\n\n    const mappedResponse = response.results.items\n        .filter((x) => x.type === 'PartneroffersEntity' || x.type === 'PointshopEntity')\n        .map(mapLoopSearchPointshop);\n    return mappedResponse;\n};\n\nconst searchLoyaltyProducts = async (\n    searchRequest: PointshopSearchAndRequest,\n): Promise<SearchPointshop[]> => {\n    const loopSearchRequest: ApiLoopSearchRequest = {\n        query: '',\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: mapSortOrder(searchRequest.sortBy),\n            facets: mapFacets(searchRequest.facets),\n            filter: searchRequest.filter && mapAndFilter(searchRequest.filter),\n        },\n    };\n    const response = await searchDirectApi.searchLoyaltyProducts({ loopSearchRequest });\n\n    const mappedResponse = response.results.items\n        .filter((x) => x.type === 'PartneroffersEntity' || x.type === 'PointshopEntity')\n        .map(mapLoopSearchPointshop);\n    return mappedResponse;\n};\n\nconst mapResultOptions = (searchRequest: BaseSearchRequest): ApiLoopResultOptions => ({\n    skip: searchRequest.page * searchRequest.resultsPerPage,\n    take: searchRequest.resultsPerPage,\n    sortBy: mapSortOrder(searchRequest.sortBy), // this will probably be different per document type, if we ever use it\n    facets: mapFacets(searchRequest.facets), // this will probably be different per document type, if we ever use it\n});\n\nconst mapResultFilterOptions = (searchRequest: PointshopSearchRequest): ApiLoopResultOptions => ({\n    skip: searchRequest.page * searchRequest.resultsPerPage,\n    take: searchRequest.resultsPerPage,\n    sortBy: mapSortOrder(searchRequest.sortBy), // this will probably be different per document type, if we ever use it\n    facets: mapFacets(searchRequest.facets), // this will probably be different per document type, if we ever use it\n    filter: searchRequest.filter && mapAndOrFilter(searchRequest.filter),\n});\n\nconst searchGlobalLoop = async (\n    searchRequest: GlobalSearchRequest,\n    quickSearch: boolean,\n    abortSignal?: AbortSignal,\n): Promise<GlobalSearchResults> => {\n    const loopGlobalSearchRequest: ApiLoopGlobalSearchRequest = {\n        query: searchRequest.searchTerm,\n    };\n\n    if (searchRequest.productSearchRequest) {\n        loopGlobalSearchRequest.resultsOptions = mapResultOptions(\n            searchRequest.productSearchRequest,\n        );\n    } else {\n        // we dont want products data when no productSearchRequest is provided\n        loopGlobalSearchRequest.resultsOptions = {\n            skip: 0,\n            take: 0,\n        };\n    }\n\n    if (searchRequest.storeSearchRequest) {\n        loopGlobalSearchRequest.storesResultsOptions = mapResultOptions(\n            searchRequest.storeSearchRequest,\n        );\n    }\n\n    if (searchRequest.articleSearchRequest) {\n        loopGlobalSearchRequest.editorialContentResultsOptions = mapResultOptions(\n            searchRequest.articleSearchRequest,\n        );\n    }\n\n    if (searchRequest.pointshopSearchRequest) {\n        loopGlobalSearchRequest.pointshopResultsOptions = mapResultFilterOptions(\n            searchRequest.pointshopSearchRequest,\n        );\n    }\n\n    if (searchRequest.recipeSearchRequest) {\n        loopGlobalSearchRequest.recipesResultsOptions = mapResultOptions(\n            searchRequest.recipeSearchRequest,\n        );\n    }\n\n    if (searchRequest.recipeCategoriesSearchRequest) {\n        loopGlobalSearchRequest.recipeCategoriesResultsOptions = mapResultOptions(\n            searchRequest.recipeCategoriesSearchRequest,\n        );\n    }\n\n    const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n    const device = Browser.platformType();\n    const response = await searchDirectApi.searchGlobal(\n        loopGlobalSearchRequest,\n        searchRequest.storeId,\n        abortSignal,\n        customerGroups,\n        device,\n        quickSearch,\n    );\n    const mappedResponse = mapLoopGlobalSearchResponse(response, searchRequest.searchTerm);\n    return mappedResponse;\n};\n\nconst searchByAttribute = async (\n    searchRequest: SearchByAttributeRequest,\n): Promise<LoopNoQueryProductResults> => {\n    const loopSearchRequest: ApiLoopSearchByAttributeRequest = {\n        attribute: searchRequest.attribute,\n        requestAlias: searchRequest.requestAlias\n            ? {\n                  name: searchRequest.requestAlias.name,\n                  value: searchRequest.requestAlias.value,\n                  details: searchRequest.requestAlias.details,\n              }\n            : undefined,\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            sortBy: mapSortOrder(searchRequest.sortBy),\n            facets: mapFacets(searchRequest.facets),\n        },\n        customData: {\n            getEntitiesByAttributeABTest:\n                searchRequest.customData?.getEntitiesByAttributeABTest || false,\n        },\n    };\n\n    const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n    const device = Browser.platformType();\n    const response = await searchDirectApi.searchByAttribute(\n        loopSearchRequest,\n        searchRequest.storeId,\n        customerGroups,\n        device,\n    );\n\n    DirectProductProvider.instance.insertItems(response.results.items, searchRequest.storeId);\n    const mappedResponse = mapLoopProductNoQuerySearchResponse(response);\n\n    return mappedResponse;\n};\n\nconst searchByAttributeLoop = async (\n    attribute: {\n        name: string;\n        value: string;\n    },\n    resultsPerPage: number,\n    selectedPage: number,\n    selectedBrand: string[] | null,\n    selectedSortOrder: string | null,\n    selectedEnvironmentalLabels: string[] | null,\n    storeId: string,\n    personalizeProductsByAttribute: boolean | null,\n    requestAlias?: SearchRequestAlias,\n) => {\n    const sortBy = selectedSortOrder ? [selectedSortOrder] : [];\n    const facets = [\n        {\n            type: SearchFacetType.Brand,\n            selected: selectedBrand || [],\n        },\n        {\n            type: SearchFacetType.EnvironmentalLabels,\n            selected: selectedEnvironmentalLabels || [],\n        },\n    ];\n\n    const currentPage = selectedPage > 0 ? selectedPage - 1 : 0;\n\n    return searchByAttribute({\n        attribute,\n        sortBy,\n        resultsPerPage,\n        facets,\n        page: currentPage,\n        storeId,\n        customData: {\n            getEntitiesByAttributeABTest: personalizeProductsByAttribute || false,\n        },\n        requestAlias,\n    });\n};\n\nconst autocomplete = async (\n    searchTerm: string,\n    // eslint-disable-next-line @typescript-eslint/default-param-last\n    skip: number = 0,\n    // eslint-disable-next-line @typescript-eslint/default-param-last\n    take: number = 5,\n    abortSignal: AbortSignal | undefined,\n    searchService: SearchService | null,\n    storeId: string,\n) => {\n    const loopAutocompleteRequest: ApiLoopAutocompleteRequest = {\n        query: searchTerm,\n        queriesOptions: { skip, take },\n    };\n\n    const customerGroups = await userFlow.getB2BContextCustomerGroups();\n\n    const device = Browser.platformType();\n\n    const response = await searchDirectApi.autoComplete(\n        loopAutocompleteRequest,\n        abortSignal,\n        storeId,\n        searchService,\n        customerGroups,\n        device,\n    );\n\n    const mappedResponse = mapLoopAutocompleteResponse(response, searchTerm);\n    return mappedResponse;\n};\n\nconst searchProductsInSection = async (\n    attribute: {\n        name: string;\n        value: string;\n    },\n    resultsPerPage: number,\n    selectedPage: number,\n    selectedBrand: string[],\n    selectedSortOrder: string | null,\n    selectedEnvironmentalLabels: string[],\n    storeId: string,\n    personalizeProductsByAttribute: boolean | null,\n    requestAlias?: SearchRequestAlias,\n): Promise<LoopNoQueryProductResults> => {\n    const loopResults = await searchByAttributeLoop(\n        attribute,\n        resultsPerPage,\n        selectedPage,\n        selectedBrand,\n        selectedSortOrder,\n        selectedEnvironmentalLabels,\n        storeId,\n        personalizeProductsByAttribute,\n        requestAlias,\n    );\n\n    return loopResults;\n};\n\nconst searchPointshopProductsInPointRange = async (\n    minPointsValue: number,\n    maxPointsValue: number,\n    searchRequest: {\n        page: number;\n        resultsPerPage: number;\n    },\n) => {\n    const rangeFacet: ApiLoopRangeFacet = {\n        attributeName: 'pointPrice',\n        type: 'range',\n        selected: {\n            min: minPointsValue,\n            max: maxPointsValue,\n        },\n    };\n\n    const loopSearchRequest: ApiLoopSearchRequest = {\n        query: '',\n        resultsOptions: {\n            skip: searchRequest.page * searchRequest.resultsPerPage,\n            take: searchRequest.resultsPerPage,\n            facets: [rangeFacet],\n        },\n    };\n\n    const response = await searchDirectApi.searchLoyaltyProducts({ loopSearchRequest });\n    const mapped = response.results.items\n        .filter((x) => x.type === 'PointshopEntity')\n        .map(mapLoopSearchPointshop);\n\n    return mapped;\n};\n\nexport type SearchService = 'aiSearchService' | 'loop54SearchService_v1';\n\nconst searchFlow = {\n    searchProductsLoop,\n    searchProductOffersLoop,\n    searchArticlesLoop,\n    searchStoresLoop,\n    searchGlobalLoop,\n    searchByAttribute,\n    autocomplete,\n    searchProductsInSection,\n    searchByAttributeLoop,\n    searchRecipesLoop,\n    searchLoyaltyProductsById,\n    searchLoyaltyProducts,\n    searchPointshopProductsInPointRange,\n};\n\nexport default searchFlow;\n"],"names":["FallbackImg","props","className","cssClass","alt","window","isPrerenderCrawler","wrapperClassName","src","srcSet","draggable","ariaLabel","Img","onClick","title","decode","width","height","loading","lazy","undefined","unloader","loader","useUserProfile","profile","useIsUserAuthenticated","isAuthenticated","useIsUserAMember","isMember","useIsUserCompany","isCompany","useHasUserAKimCustomerId","hasKimCustomerId","useShoppingUserId","shoppingUserId","selectProfile","state","user","selectFirstName","firstName","selectLastName","lastName","selectIsAuthenticated","selectIsCompany","selectIsMember","medmeraId","selectHasKimCustomerId","selectShoppingUserId","selectUserId","id","selectIsEpiUser","isEpiUser","userProfileSelectors","fullName","first","last","initials","charAt","searchDirectApi","loopSearchRequest","client","post","params","channel","data","sortOrderMap","popular","order","type","attributeName","facetMap","categories","operator","name","RecipeCategories","selected","brand","Brand","loyaltybrand","Loyaltybrand","loyaltyCategory","LoyaltyCategory","categoryIds","CategoryIds","environmentalLabels","EnvironmentalLabels","topCategory","TopCategory","mapSortOrder","sortOrders","sortBy","forEach","sort","push","sortOrder","console","warn","Object","keys","join","mapFacets","facets","loopFacets","facet","loopFacet","selectedFacets","isAnd","obj","mapResultOptions","searchRequest","skip","page","resultsPerPage","take","attribute","requestAlias","value","details","resultsOptions","customData","getEntitiesByAttributeABTest","customerGroups","userFlow","getB2BContextCustomerGroups","device","platformType","response","storeId","instance","insertItems","results","items","searchByAttributeLoop","selectedPage","selectedBrand","selectedSortOrder","selectedEnvironmentalLabels","personalizeProductsByAttribute","searchProductsLoop","abortSignal","searchService","quickSearch","query","searchTerm","relatedResultsOptions","token","cancelToken","searchProductOffersLoop","groupOffers","overwritePersonalizeCampaigns","personalizeCampaigns","productApi","getCurrentProductOffersLoop","searchArticlesLoop","searchStoresLoop","searchGlobalLoop","loopGlobalSearchRequest","productSearchRequest","storeSearchRequest","storesResultsOptions","articleSearchRequest","editorialContentResultsOptions","pointshopSearchRequest","pointshopResultsOptions","filter","and","or","mapResultFilterOptions","recipeSearchRequest","recipesResultsOptions","recipeCategoriesSearchRequest","recipeCategoriesResultsOptions","searchByAttribute","autocomplete","loopAutocompleteRequest","queriesOptions","searchProductsInSection","searchRecipesLoop","searchQuery","count","map","queryUsed","searchLoyaltyProductsById","ids","length","distinctIds","index","result","indexOf","x","searchLoyaltyProducts","searchPointshopProductsInPointRange","minPointsValue","maxPointsValue","rangeFacet","min","max"],"sourceRoot":""}