{"version":3,"file":"initialization.es.min.js","sources":["../../../packages/coveo-search/src/search-bar/initialization.ts"],"sourcesContent":["import {\n COVEO_ACCESS_TOKEN,\n COVEO_ORGANIZATION_ID,\n COVEO_PLATFORM_URL,\n COVEO_API_KEY_RECS,\n COVEO_API_KEY_CART_RECS,\n COVEO_CLIENT_ORIGIN_ANALYTICS_FETCH,\n COVEO_CLIENT_ORIGIN_SEARCH_API_FETCH\n} from \"./constants\";\nimport type { SearchResponseSuccess } from \"@coveo/headless/dist/definitions/api/search/search/search-response\";\nimport { SearchContext } from \"./search-bar\";\nimport { selfCleaningLocalStorage } from \"../tools/self-cleaning-local-storage\";\n\nconst ResultOverrides = {\n /**\n @description\n Removes automatically generated recipe titles\n this is not necesary on the recomendation blocks\n */\n removeRecipeTitles: (result: {\n excerpt: string | null;\n raw: { commontab: string };\n }) => {\n if (result.raw.commontab !== \"Articles\") {\n return;\n }\n result.excerpt = null;\n },\n injectResultPosition: (result: {\n position: number;\n }, i: number) => {\n result.position = i;\n },\n injectStrikethroughPrices: ({\n raw,\n childResults\n }: {\n childResults?: {\n raw: { nes_prd_strikethrough_price: number; nes_prd_sku: string };\n }[];\n raw: { nes_prd_strikethrough_price: number; nes_prd_sku: string };\n }, ctx: SearchContext) => {\n raw.nes_prd_strikethrough_price =\n ctx.skuToStrikethroughPrice[raw.nes_prd_sku] ??\n raw.nes_prd_strikethrough_price;\n childResults?.forEach((res) => ResultOverrides.injectStrikethroughPrices(res, ctx));\n },\n injectNewPrices: ({\n raw,\n childResults\n }: {\n childResults?: { raw: { nes_prd_price: number; nes_prd_sku: string } }[];\n raw: { nes_prd_price: number; nes_prd_sku: string };\n }, ctx: SearchContext) => {\n raw.nes_prd_price = ctx.skuToNewPrice[raw.nes_prd_sku] ?? raw.nes_prd_price;\n childResults?.forEach((res) => ResultOverrides.injectNewPrices(res, ctx));\n },\n injectCapsuleNetWeightG: ({\n raw\n }: {\n raw: { nes_prd_capsule_net_weight_g?: number; nes_prd_sku: string };\n }, ctx: SearchContext) => {\n if (!(raw.nes_prd_sku in ctx.skuToCapsuleNetWeightG)) {\n return;\n }\n raw.nes_prd_capsule_net_weight_g =\n ctx.skuToCapsuleNetWeightG[raw.nes_prd_sku];\n },\n injectSleevesPerBundle: ({\n raw\n }: {\n raw: { nes_prd_bundled: \"true\" | \"false\"; nes_prd_sleeves?: number, nes_prd_unit_quantity: number };\n }) => {\n if (raw.nes_prd_bundled === \"true\") {\n raw.nes_prd_sleeves = Math.ceil(raw.nes_prd_unit_quantity / 10);\n }\n },\n /**\n @description\n Adds tracking information the the links on the instant search results on the search bar,\n this is not necesary on the recomendation blocks\n */\n addTrackingToInstantResultLink: (result: {\n clickUri: string;\n raw: { commontab: string, nes_instant_results_link: string };\n }, responseBody: {\n basicExpression: string\n groupByResults: {\n field: string;\n values: {\n value: string;\n numberOfResults: number;\n }[];\n }[];\n }) => {\n const numberOfResultByTab = Object.fromEntries(\n responseBody.groupByResults\n ?.find((f) => f.field === \"commontab\")\n ?.values.map(({ value, numberOfResults }) => [value, numberOfResults])\n ?? [])\n\n const queryInputText = document\n .querySelector(\"atomic-search-box\")\n ?.shadowRoot?.querySelector(\"input\")?.value;\n\n if (result.raw.commontab !== \"FAQs\") {\n const search = new URLSearchParams(\n [\n [\"q\", queryInputText],\n [\"search_category\", result.raw.commontab],\n [\"selected_term\", responseBody.basicExpression],\n [\"searchProductResults\", numberOfResultByTab[\"Products\"]],\n [\"searchArticlesResults\", numberOfResultByTab[\"Articles\"]],\n [\"searchFaqResults\", numberOfResultByTab[\"FAQs\"]],\n ].filter(\n (entry): entry is [string, string] => entry[1] !== undefined\n )\n );\n\n result.raw.nes_instant_results_link = Object.assign(\n new URL(result.clickUri),\n { search }\n ).toString();\n }\n },\n fixCasingForTechnologies: ({\n raw\n }: {\n raw: { nes_prd_technology?: string[]; nes_prd_sleeves?: number, nes_prd_unit_quantity: number };\n }, ctx: SearchContext) => {\n if (raw.nes_prd_technology) {\n raw.nes_prd_technology = raw.nes_prd_technology.map((tech) => {\n const overridenTech = caseInsensitiveGetNew(tech,\n ctx.facet_filters_overrides?.nes_prd_technology,\n );\n return overridenTech ?? tech;\n });\n }\n },\n /**\n @description\n Decodes the links for pdf files\n this is not necesary on the recomendation blocks\n */\n decodePdfTitle: (result: {\n title: string;\n raw: { filetype: string; nes_prd_sleeves?: number, nes_prd_unit_quantity: number };\n }) => {\n if (result.raw.filetype === \"pdf\") {\n result.title = decodeURI(result.title);\n }\n },\n storeCoveoMetadata: (result: {\n title: string;\n clickUri: string;\n rankingModifier?: string;\n raw: { urihash: string; source: string; nes_prd_sku: string; };\n }, ctx: { search_hub: string, position: number, searchUid: string }) => {\n const key = `sku_coveo_metadata:${result.raw.nes_prd_sku}`;\n const payload = {\n documentPosition: ctx.position,\n searchUid: ctx.searchUid,\n rankingModifier: result.rankingModifier,\n documentUriHash: result.raw.urihash,\n documentUrl: result.clickUri,\n documentTitle: result.title,\n sourcename: result.raw.source,\n originlevel1: ctx.search_hub\n }\n /** @deprecated this is for migration purposes only, it will be removed soon feb 10 2024 */\n sessionStorage.setItem(key, JSON.stringify(payload))\n\n const sevenDaysMs = 1000 * 60 * 60 * 24 * 7\n selfCleaningLocalStorage.setItem(key, payload, new Date().getTime() + sevenDaysMs)\n }\n}\n\nexport type NespressoCoveoResult = typeof ResultOverrides extends Record<string, (res: infer R, ...args: any[]) => any> ? R : never\n\nconst facetWeights = Object.fromEntries([\n \"nes_prd_categories\",\n \"nes_prd_technology\",\n \"nes_prd_price\",\n \"nes_prd_color\",\n \"nes_prd_cup_size\",\n \"nes_prd_intensity\",\n \"nes_prd_roast\",\n \"nes_prd_tasting_notes\",\n \"nes_prd_usage\",\n \"nes_prd_price_input_range\",\n \"nes_prd_price_input\",\n].map((facet, i) => [facet, i] as const));\n\nconst makeCoveoContext = (ctx: SearchContext, context: Record<string, string> = {}) => Object.assign(context ?? {}, {\n website: ctx.website,\n sitename: ctx.sitename,\n context_website: ctx.context_website,\n context_sitename: ctx.context_sitename,\n language: ctx.lang,\n locale: ctx.locale,\n country: ctx.country\n})\n\nconst fieldsToInclude = [\n \"commontab\",\n \"nes_prd_sku\",\n \"nes_prd_image_url\",\n \"nes_prd_categories\",\n \"nes_prd_sleeve_main_price\",\n \"nes_prd_name\",\n \"nes_prd_price\",\n \"nes_prd_technology\",\n \"faq_question\",\n \"faq_answer\",\n \"nes_prd_cup_size_oz\",\n \"nes_prd_sales_multiple\",\n \"nes_prd_cup_size\",\n \"nes_prd_unit_quantity\",\n \"nes_article_category\",\n \"nes_prd_color\",\n \"nes_prd_color_css\",\n \"nes_prd_usage\",\n \"nes_prd_intensity\",\n \"nes_prd_quantities\",\n \"nes_prd_bundled\",\n \"nes_prd_strikethrough_price\",\n \"filetype\"\n]\n\nconst caseInsensitiveGet = <T>(record: Record<string, T>, key: string) => {\n const [, result] =\n Object.entries(record).find(\n ([rKey]) => rKey.toLowerCase() === key.toLowerCase()\n ) ?? [];\n return result;\n};\n\nconst caseInsensitiveGetNew = <T>(key: string, record?: Record<string, T>,) => {\n if (!record) { return }\n const [, result] =\n Object.entries(record).find(\n ([rKey]) => rKey.toLowerCase() === key.toLowerCase()\n ) ?? [];\n return result;\n};\n\nconst CoveoAnaliticts = {\n getResponse: (\n searchInterface: HTMLAtomicSearchInterfaceElement,\n body: { documentUriHash: string; customData: { contentIDValue: string } }\n ) => {\n const res = searchInterface.engine?.state.search.results.find(\n (r) => r.raw.urihash === body.documentUriHash\n );\n if (res) {\n return res;\n }\n return Object.values(searchInterface.engine?.state.instantResults!)\n .flatMap((ir) => Object.values(ir.cache))\n .flatMap((r) => r.results)\n .find((r) => r.raw.nes_prd_sku === body.customData.contentIDValue);\n },\n getAnaliticsCategory: ({\n nes_prd_categories,\n nes_prd_technology\n }: { nes_prd_categories?: string; nes_prd_technology?: string[] } = {}) => {\n const technology = nes_prd_technology?.join(\"|\").toLowerCase();\n if (nes_prd_categories === \"Capsule\") {\n return \"capsules_\" + technology;\n } else if (nes_prd_categories === \"Machine\") {\n return \"machines_\" + technology;\n } else if (nes_prd_categories === \"Accessory\") {\n return \"accessories\";\n }\n return nes_prd_categories;\n }\n};\n\nconst handleTranslations = async (\n { i18n }: Pick<HTMLAtomicSearchInterfaceElement, \"i18n\">,\n {\n lang,\n coveo_copywriting\n }: { lang: string; coveo_copywriting: Record<string, string> }\n) => {\n await new Promise<void>((resolve) => {\n if (i18n.isInitialized) return resolve();\n const handler = () => {\n i18n.off(\"initialized\", handler);\n resolve();\n };\n i18n.on(\"initialized\", handler);\n });\n\n i18n.removeResourceBundle(lang, \"translation\");\n i18n.addResourceBundle(lang, \"translation\", coveo_copywriting, true, true);\n await i18n.changeLanguage(lang);\n};\n\nexport const initPopularRecommendationsInterface = async (ctx: SearchContext, recsInterface: HTMLAtomicSearchInterfaceElement) => {\n await recsInterface.initialize({\n accessToken: COVEO_API_KEY_RECS,\n organizationId: COVEO_ORGANIZATION_ID,\n platformUrl: COVEO_PLATFORM_URL,\n preprocessRequest: (request, clientOrigin) => {\n if (clientOrigin === COVEO_CLIENT_ORIGIN_SEARCH_API_FETCH) {\n const body = JSON.parse(request.body!.toString());\n body.context = makeCoveoContext(ctx, body.context)\n body.fieldsToInclude = (body.fieldsToInclude ?? []).concat(fieldsToInclude);\n body.recommendation = \"Recommendation\";\n request.body = JSON.stringify(body);\n }\n if (clientOrigin === COVEO_CLIENT_ORIGIN_ANALYTICS_FETCH) {\n const body = JSON.parse(request.body!.toString());\n body.customData = makeCoveoContext(ctx, body.customData)\n if (body.actionCause == \"documentOpen\") {\n const res = recsInterface.engine?.state.search.results.find(\n (r) => r.raw.urihash == body.documentUriHash\n );\n Object.assign(body.customData, {\n category: CoveoAnaliticts.getAnaliticsCategory(\n res?.raw as {\n nes_prd_categories?: string;\n nes_prd_technology?: string[];\n }\n ),\n brand: \"Nespresso\",\n name: res?.raw.nes_prd_name,\n price: res?.raw.nes_prd_price\n });\n }\n request.body = JSON.stringify(body);\n }\n return request;\n },\n search: {\n preprocessSearchResponseMiddleware: (response) => {\n response.body.results.forEach((res, i) => {\n const result = res as unknown as NespressoCoveoResult\n ResultOverrides.storeCoveoMetadata(result, { ...ctx, position: i, searchUid: response.body.searchUid })\n ResultOverrides.injectResultPosition(result, i)\n ResultOverrides.injectNewPrices(result, ctx);\n ResultOverrides.injectStrikethroughPrices(result, ctx);\n ResultOverrides.injectCapsuleNetWeightG(result, ctx);\n ResultOverrides.injectSleevesPerBundle(result)\n ResultOverrides.fixCasingForTechnologies(result, ctx)\n return result;\n });\n\n if (response.body.totalCountFiltered > 3) {\n response.body.results = response.body.results.slice(0, 3);\n }\n return response;\n }\n }\n });\n handleTranslations(recsInterface, ctx);\n await recsInterface.executeFirstSearch();\n};\n\nexport const initCartRecInterface = async (ctx: SearchContext, cartRecsInterface: HTMLAtomicSearchInterfaceElement, parentSearchInterface: HTMLAtomicSearchInterfaceElement) => {\n await cartRecsInterface.initialize({\n accessToken: COVEO_API_KEY_CART_RECS,\n organizationId: COVEO_ORGANIZATION_ID,\n platformUrl: COVEO_PLATFORM_URL,\n preprocessRequest: (request, clientOrigin) => {\n if (clientOrigin === COVEO_CLIENT_ORIGIN_SEARCH_API_FETCH) {\n const body = JSON.parse(request.body!.toString());\n body.context = makeCoveoContext(ctx, body.context)\n body.fieldsToInclude = (body.fieldsToInclude ?? []).concat(fieldsToInclude);\n body.recommendation = \"Recommendation\";\n const totalCountFiltered =\n parentSearchInterface.engine?.state.search.response.totalCountFiltered;\n const inProducts =\n parentSearchInterface.engine?.state.tabSet?.Products?.isActive;\n\n if (\n totalCountFiltered !== undefined &&\n totalCountFiltered > 0 &&\n totalCountFiltered < 4 &&\n inProducts\n ) {\n body.mlParameters = {\n itemIds: parentSearchInterface.engine?.state.search.results.map(\n (r) => r.raw.nes_prd_sku\n )\n };\n }\n\n request.body = JSON.stringify(body);\n }\n if (clientOrigin === COVEO_CLIENT_ORIGIN_ANALYTICS_FETCH) {\n const body = JSON.parse(request.body!.toString());\n body.customData = makeCoveoContext(ctx, body.customData)\n if (body.actionCause == \"documentOpen\") {\n const res = cartRecsInterface.engine?.state.search.results.find(\n (r) => r.raw.urihash == body.documentUriHash\n );\n Object.assign(body.customData, {\n category: CoveoAnaliticts.getAnaliticsCategory(\n res?.raw as {\n nes_prd_categories?: string;\n nes_prd_technology?: string[];\n }\n ),\n brand: \"Nespresso\",\n name: res?.raw.nes_prd_name,\n price: res?.raw.nes_prd_price\n });\n }\n request.body = JSON.stringify(body);\n }\n return request;\n },\n search: {\n preprocessSearchResponseMiddleware: (response) => {\n response.body.results.forEach((res, i) => {\n const result = res as unknown as NespressoCoveoResult\n ResultOverrides.storeCoveoMetadata(result, { ...ctx, position: i, searchUid: response.body.searchUid })\n ResultOverrides.injectResultPosition(result, i)\n ResultOverrides.injectNewPrices(result, ctx);\n ResultOverrides.injectStrikethroughPrices(result, ctx);\n ResultOverrides.injectCapsuleNetWeightG(result, ctx);\n ResultOverrides.injectSleevesPerBundle(result)\n ResultOverrides.fixCasingForTechnologies(result, ctx)\n return result;\n });\n if (response.body.totalCountFiltered > 3) {\n response.body.results = response.body.results.slice(0, 3);\n }\n return response;\n }\n }\n });\n handleTranslations(cartRecsInterface, ctx);\n};\n\nexport const initRootInterface = async (ctx: SearchContext, searchInterface: HTMLAtomicSearchInterfaceElement) => {\n\n const shadeToColors = Object.entries(ctx.colors_to_shades).reduce(\n (shadeColor, [color, shade]) => {\n shadeColor[shade] ??= [];\n shadeColor[shade].push(color);\n return shadeColor;\n },\n {} as Record<string, string[]>\n );\n const pluckColor = <V extends { value: string }>(\n values: V[],\n color: string\n ) => {\n const i = values.findIndex(({ value }) => value === color);\n if (i < 0) {\n return;\n }\n return values.splice(i, 1)[0];\n };\n\n const transformShadesToColors = (mutableBody: {\n facets?: {\n field: string;\n isFieldExpanded: boolean;\n currentValues: { value: string; state: \"selected\" | \"idle\" }[];\n }[];\n }) => {\n if (!mutableBody.facets) {\n return;\n }\n\n const colorFacet = mutableBody.facets.find(\n ({ field }) => field === \"nes_prd_color\"\n );\n if (!colorFacet) {\n return;\n }\n colorFacet.isFieldExpanded = true;\n\n for (const shade in shadeToColors) {\n const shadeValue = pluckColor(colorFacet.currentValues, shade);\n if (!shadeValue) {\n continue;\n }\n for (const targetColor of shadeToColors[shade]) {\n colorFacet.currentValues.unshift({\n value: targetColor,\n state: shadeValue.state\n });\n }\n }\n };\n const sortIntensity = (mutableBody: {\n facets?: {\n field: string;\n values: {\n value: string;\n }[];\n }[];\n }) => {\n if (!mutableBody.facets) {\n return;\n }\n const colorFacet = mutableBody.facets.find(\n ({ field }) => field === \"nes_prd_intensity\"\n );\n if (!colorFacet) {\n return;\n }\n colorFacet.values.sort((a, b) => Number(a.value) - Number(b.value))\n }\n const transformColorsToShades = (mutableBody: {\n facets?: {\n field: string;\n moreValuesAvailable: boolean;\n values: {\n value: string;\n state: \"selected\" | \"idle\";\n numberOfResults: number;\n }[];\n }[];\n }) => {\n if (!mutableBody.facets) {\n return;\n }\n const colorFacet = mutableBody.facets.find(\n ({ field }) => field === \"nes_prd_color\"\n );\n if (!colorFacet) {\n return;\n }\n colorFacet.moreValuesAvailable = false;\n\n for (const shade in shadeToColors) {\n const shadeValue = pluckColor(colorFacet.values, shade) ?? {\n value: shade,\n numberOfResults: 0,\n state: \"idle\"\n };\n for (const targetColor of shadeToColors[shade]) {\n const color = pluckColor(colorFacet.values, targetColor);\n if (!color) {\n continue;\n }\n shadeValue.state =\n shadeValue.state === \"selected\" || color.state === \"selected\"\n ? \"selected\"\n : \"idle\";\n shadeValue.numberOfResults += color.numberOfResults;\n }\n if (shadeValue.numberOfResults > 0) {\n colorFacet.values.unshift(shadeValue);\n }\n }\n };\n\n const getFacetFiltersOverrides = (): {\n nes_prd_technology: Record<string, string>;\n nes_prd_categories: Record<string, string>;\n } => {\n const facetFiltersOverridesProps = ctx.facet_filters_overrides;\n if (!facetFiltersOverridesProps) {\n return { nes_prd_technology: {}, nes_prd_categories: {} };\n }\n const { nes_prd_technology, nes_prd_categories } =\n facetFiltersOverridesProps;\n return {\n nes_prd_technology: {\n Vertuo: nes_prd_technology.vertuo,\n Original: nes_prd_technology.original,\n pro: nes_prd_technology.pro\n },\n nes_prd_categories: {\n Machine: nes_prd_categories.machine,\n Accessory: nes_prd_categories.accessory,\n Capsule: nes_prd_categories.capsule\n }\n };\n };\n const getFacetFiltersRestores = (): {\n nes_prd_technology: Record<string, string>;\n nes_prd_categories: Record<string, string>;\n } => {\n const facetFiltersOverridesProps = ctx.facet_filters_overrides;\n if (!facetFiltersOverridesProps) {\n return { nes_prd_technology: {}, nes_prd_categories: {} };\n }\n const { nes_prd_technology, nes_prd_categories } =\n facetFiltersOverridesProps;\n return {\n nes_prd_technology: {\n [nes_prd_technology.vertuo]: \"Vertuo\",\n [nes_prd_technology.original]: \"Original\",\n [nes_prd_technology.pro]: \"Pro\"\n },\n nes_prd_categories: {\n [nes_prd_categories.machine]: \"Machine\",\n [nes_prd_categories.accessory]: \"Accessory\",\n [nes_prd_categories.capsule]: \"Capsule\"\n }\n };\n };\n const facetFiltersOverrides = getFacetFiltersOverrides();\n const facetFiltersRestores = getFacetFiltersRestores();\n\n const translateFacetFilters = (\n mutableBody: {\n facets?: { field: string; values: { value: string }[] }[];\n },\n fieldName: keyof typeof facetFiltersOverrides\n ) => {\n if (!mutableBody.facets) {\n return;\n }\n const targetFacet = mutableBody.facets.find(\n ({ field }) => field === fieldName\n );\n if (!targetFacet) return;\n for (const facetValue of targetFacet.values) {\n const overridenValue = caseInsensitiveGet(\n facetFiltersOverrides[fieldName],\n facetValue.value\n );\n if (overridenValue) {\n facetValue.value = overridenValue;\n }\n }\n };\n const restoreFacetFilters = (\n mutableBody: {\n facets?: { field: string; currentValues: { value: string }[] }[];\n },\n fieldName: keyof typeof facetFiltersOverrides\n ) => {\n if (!mutableBody.facets) {\n return;\n }\n const targetFacet = mutableBody.facets.find(\n ({ field }) => field === fieldName\n );\n if (!targetFacet) return;\n for (const facetValue of targetFacet.currentValues) {\n const restoredValue = caseInsensitiveGet(\n facetFiltersRestores[fieldName],\n facetValue.value\n );\n if (restoredValue) {\n facetValue.value = restoredValue;\n }\n }\n };\n /**\n * DIGEX-9369\n * For coveo's search engine the \"+\" is used for a special match, but we have products with that character, so we have to escape it.\n */\n const escapePlusFromQuery = (body: { q: string }) => {\n if (!body.q) { return }\n try {\n // Some browsers do not support Lookbehind\n body.q = body.q.replace(new RegExp(`(?<!\")\\\\+(?!\")`, \"g\"), '\"+\"')\n } catch (e) {\n console.error(e)\n }\n }\n const normalizeAnomalousWhiteSpaces = (body: { q: string }) => {\n if (!body.q) { return }\n body.q = body.q.replaceAll(\"\\u3000\", \"\\u0020\")\n }\n\n const escapeSymbolsFromGroupQuery = (q?: string) => {\n if (!q) { return }\n return q.replace(/[#&$@,+]/, '')\n }\n\n await searchInterface.initialize({\n accessToken: COVEO_ACCESS_TOKEN,\n organizationId: COVEO_ORGANIZATION_ID,\n platformUrl: COVEO_PLATFORM_URL,\n preprocessRequest: (request, clientOrigin) => {\n if (clientOrigin === COVEO_CLIENT_ORIGIN_SEARCH_API_FETCH) {\n const body = JSON.parse(request.body!.toString());\n escapePlusFromQuery(body);\n normalizeAnomalousWhiteSpaces(body);\n transformShadesToColors(body);\n restoreFacetFilters(body, \"nes_prd_technology\");\n restoreFacetFilters(body, \"nes_prd_categories\");\n body.context = makeCoveoContext(ctx, body.context)\n body.groupBy = [\n {\n field: \"@commontab\",\n queryOverride: \"$q()\",\n disjunctionQueryOverride: \"$q()\"\n }\n ];\n body.fieldsToInclude = (body.fieldsToInclude ?? []).concat(fieldsToInclude);\n\n if (body.facetOptions) {\n body.facetOptions.freezeFacetOrder = true\n }\n\n if (body.facets) {\n (body.facets as ({ facetId: keyof typeof facetWeights })[])\n .sort((a, b) => facetWeights[a.facetId] - facetWeights[b.facetId])\n }\n\n request.body = JSON.stringify(body);\n }\n if (clientOrigin === COVEO_CLIENT_ORIGIN_ANALYTICS_FETCH) {\n const body = JSON.parse(request.body!.toString());\n body.customData = makeCoveoContext(ctx, body.customData)\n if (body.actionCause == \"documentOpen\") {\n const res = CoveoAnaliticts.getResponse(searchInterface, body);\n Object.assign(body.customData, {\n category: CoveoAnaliticts.getAnaliticsCategory(\n res?.raw as {\n nes_prd_categories?: string;\n nes_prd_technology?: string[];\n }\n ),\n brand: \"Nespresso\",\n name: res?.raw.nes_prd_name,\n price: res?.raw.nes_prd_price\n });\n }\n request.body = JSON.stringify(body);\n }\n return request;\n },\n analytics: {\n analyticsClientMiddleware: (_, payload) => {\n try {\n if (searchInterface.engine!.state.search.isLoading) {\n return payload\n }\n\n const searchState = searchInterface.engine?.state.search.response as\n | undefined\n | (SearchResponseSuccess & { basicExpression: string });\n\n const tabResults = (tab: string) =>\n (\n searchState as\n | undefined\n | {\n groupByResults: {\n field: string;\n values: {\n value: string;\n numberOfResults: number;\n }[];\n }[];\n }\n )?.groupByResults\n .find((g) => g.field == \"commontab\")\n ?.values?.find((v) => v.value == tab)?.numberOfResults ?? 0;\n\n const commonAttributes = {\n event: \"view_search_results\",\n search_product_results: tabResults(\"Products\"),\n search_articles_results: tabResults(\"Articles\"),\n search_faq_results: tabResults(\"FAQs\"),\n search_category: payload.originLevel2\n };\n if (\n [\"searchboxSubmit\", \"interfaceLoad\", \"interfaceChange\"].includes(payload.actionCause)\n ) {\n window.gtmDataObject.push({\n ...commonAttributes,\n search_type: \"free text\",\n search_term: payload.queryText,\n search_display_term: searchState?.basicExpression\n });\n } else if (\n [\"omniboxAnalytics\", \"omniboxFromLink\"].includes(\n payload.actionCause\n )\n ) {\n window.gtmDataObject.push({\n ...commonAttributes,\n search_type: \"suggested\",\n search_term: payload.customData?.partialQuery,\n selected_term: searchState?.basicExpression\n });\n } else if (\n [\"recentQueriesClick\", \"searchFromLink\"].includes(\n payload.actionCause\n )\n ) {\n window.gtmDataObject.push({\n ...commonAttributes,\n search_type: \"history\",\n search_term: payload.customData?.partialQuery,\n selected_term: searchState?.basicExpression\n });\n }\n } catch (error) {\n return payload;\n }\n return payload;\n }\n },\n search: {\n preprocessSearchResponseMiddleware: (response) => {\n sortIntensity(response.body as Parameters<typeof sortIntensity>[0]);\n\n transformColorsToShades(\n response.body as Parameters<typeof transformColorsToShades>[0]\n );\n translateFacetFilters(\n response.body as Parameters<typeof translateFacetFilters>[0],\n \"nes_prd_technology\"\n );\n translateFacetFilters(\n response.body as Parameters<typeof translateFacetFilters>[0],\n \"nes_prd_categories\"\n );\n\n response.body.results.forEach((res, i) => {\n const result = res as unknown as NespressoCoveoResult\n\n ResultOverrides.storeCoveoMetadata(result, { ...ctx, position: i, searchUid: response.body.searchUid })\n ResultOverrides.injectResultPosition(result, i)\n ResultOverrides.removeRecipeTitles(result);\n ResultOverrides.injectNewPrices(result, ctx);\n ResultOverrides.injectStrikethroughPrices(result, ctx);\n ResultOverrides.injectCapsuleNetWeightG(result, ctx);\n ResultOverrides.injectSleevesPerBundle(result)\n ResultOverrides.fixCasingForTechnologies(result, ctx)\n ResultOverrides.decodePdfTitle(result)\n ResultOverrides.addTrackingToInstantResultLink(result, response.body as unknown as {\n basicExpression: string\n groupByResults: {\n field: string;\n values: {\n value: string;\n numberOfResults: number;\n }[];\n }[];\n })\n return result;\n });\n return response;\n }\n }\n });\n\n handleTranslations(searchInterface, ctx);\n if (ctx.facet_filters_overrides?.nes_prd_roast) {\n searchInterface.i18n.addResourceBundle(ctx.lang, 'caption-nes_prd_roast', ctx.facet_filters_overrides.nes_prd_roast);\n }\n};\n"],"names":["ResultOverrides","removeRecipeTitles","result","raw","commontab","excerpt","injectResultPosition","i","position","injectStrikethroughPrices","childResults","ctx","nes_prd_strikethrough_price","skuToStrikethroughPrice","nes_prd_sku","forEach","res","injectNewPrices","nes_prd_price","skuToNewPrice","injectCapsuleNetWeightG","skuToCapsuleNetWeightG","nes_prd_capsule_net_weight_g","injectSleevesPerBundle","nes_prd_bundled","nes_prd_sleeves","Math","ceil","nes_prd_unit_quantity","addTrackingToInstantResultLink","responseBody","numberOfResultByTab","Object","fromEntries","groupByResults","find","f","field","values","map","value","numberOfResults","queryInputText","document","querySelector","shadowRoot","search","URLSearchParams","basicExpression","filter","entry","undefined","nes_instant_results_link","assign","URL","clickUri","toString","fixCasingForTechnologies","nes_prd_technology","tech","caseInsensitiveGetNew","facet_filters_overrides","decodePdfTitle","filetype","title","decodeURI","storeCoveoMetadata","key","payload","documentPosition","searchUid","rankingModifier","documentUriHash","urihash","documentUrl","documentTitle","sourcename","source","originlevel1","search_hub","sessionStorage","setItem","JSON","stringify","sevenDaysMs","Date","getTime","facetWeights","facet","makeCoveoContext","context","website","sitename","context_website","context_sitename","language","lang","locale","country","fieldsToInclude","caseInsensitiveGet","record","entries","rKey","toLowerCase","CoveoAnaliticts","getResponse","searchInterface","body","engine","state","results","r","instantResults","flatMap","ir","cache","customData","contentIDValue","getAnaliticsCategory","nes_prd_categories","technology","join","handleTranslations","i18n","coveo_copywriting","Promise","resolve","isInitialized","handler","off","on","removeResourceBundle","addResourceBundle","changeLanguage","initPopularRecommendationsInterface","recsInterface","initialize","accessToken","COVEO_API_KEY_RECS","organizationId","COVEO_ORGANIZATION_ID","platformUrl","COVEO_PLATFORM_URL","preprocessRequest","request","clientOrigin","COVEO_CLIENT_ORIGIN_SEARCH_API_FETCH","parse","concat","recommendation","COVEO_CLIENT_ORIGIN_ANALYTICS_FETCH","actionCause","category","brand","name","nes_prd_name","price","preprocessSearchResponseMiddleware","response","totalCountFiltered","slice","executeFirstSearch","initCartRecInterface","cartRecsInterface","parentSearchInterface","COVEO_API_KEY_CART_RECS","inProducts","tabSet","Products","isActive","mlParameters","itemIds","initRootInterface","shadeToColors","colors_to_shades","reduce","shadeColor","color","shade","push","pluckColor","findIndex","splice","transformShadesToColors","mutableBody","facets","colorFacet","isFieldExpanded","shadeValue","currentValues","targetColor","unshift","sortIntensity","sort","a","b","Number","transformColorsToShades","moreValuesAvailable","getFacetFiltersOverrides","facetFiltersOverridesProps","Vertuo","vertuo","Original","original","pro","Machine","machine","Accessory","accessory","Capsule","capsule","getFacetFiltersRestores","facetFiltersOverrides","facetFiltersRestores","translateFacetFilters","fieldName","targetFacet","facetValue","overridenValue","restoreFacetFilters","restoredValue","escapePlusFromQuery","q","replace","RegExp","e","console","error","normalizeAnomalousWhiteSpaces","replaceAll","COVEO_ACCESS_TOKEN","groupBy","queryOverride","disjunctionQueryOverride","facetOptions","freezeFacetOrder","facetId","analytics","analyticsClientMiddleware","_","isLoading","searchState","tabResults","tab","g","v","commonAttributes","event","search_product_results","search_articles_results","search_faq_results","search_category","originLevel2","includes","window","gtmDataObject","search_type","search_term","queryText","search_display_term","partialQuery","selected_term","nes_prd_roast"],"mappings":"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"}