{"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":""}