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