{"version":3,"file":"index.es.min3.js","sources":["../../../packages/coveo-search/src/experimental/ui/page/query-summary.tsx","../../../packages/coveo-search/src/experimental/ui/page/pagination.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/context.ts","../../../packages/coveo-search/src/experimental/ui/page/products/filters/commons.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/category.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/technology.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/price.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/machine-color.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/cup-size.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/intensity.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/roasting.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/tasting-notes.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/usage.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/product-filters.tsx","../../../packages/coveo-search/src/experimental/ui/page/no-results.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/breadcrumbs.tsx","../../../packages/coveo-search/src/experimental/ui/page/notifications.tsx","../../../packages/components/src/constants.mjs","../../../packages/helpers/src/assets/js/eventDispatch.js","../../../packages/coveo-search/src/experimental/ui/page/products/products.tsx","../../../packages/coveo-search/src/experimental/ui/page/articles.tsx","../../../packages/coveo-search/src/experimental/ui/page/faqs.tsx","../../../packages/coveo-search/src/experimental/ui/page/search-page.tsx","../../../packages/coveo-search/src/experimental/page-builder-host/search-page/props.ts","../../../packages/coveo-search/src/experimental/page-builder-host/search-page/custom-element.tsx"],"sourcesContent":["import { Fragment } from \"preact\";\nimport createMicroMarkup from \"../../../tools/micro-markup\";\nimport cssModule from \"./query-summary.module.css\"\nimport { usePageContext } from \".\";\nimport { useRef } from \"preact/hooks\";\nimport { useSignalEffect } from \"@preact/signals\";\n\nconst interpolation = {\n escape: createMicroMarkup({\n strong: []\n })\n}\n\nconst QuerySummary = () => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n const htmlRef = useRef<HTMLDivElement>(null)\n\n useSignalEffect(()=> {\n searchCtx.state.value;\n htmlRef.current!.scrollIntoView({ behavior: \"smooth\", block: \"end\" })\n })\n\n return (\n <div ref={htmlRef} class={cssModule[\"query-summary\"]}>\n <div>\n {searchCtx.i18n.t(\n searchCtx.store.q.value.query ? \"query-result-summary\" : \"result-summary\",\n { count: searchResult.status === \"fulfilled\" ? searchResult.value.totalCount : '⋯' as unknown as number }\n )}\n </div>\n {searchCtx.store.q.value.query ? (\n <div class={cssModule[\"query-term\"]}>\n {searchCtx.i18n.t(\"between-quotations\", { text: searchCtx.store.q.value.query })}\n </div>\n ) : null}\n {searchResult.status === \"fulfilled\" && searchResult.value.queryCorrectedFrom ? (\n <Fragment>\n <div dangerouslySetInnerHTML={{\n __html: searchCtx.i18n.t(\"no-results-for\", {\n query: `<strong>${searchResult.value.queryCorrectedFrom}</strong>`,\n interpolation\n })\n }} />\n <div dangerouslySetInnerHTML={{\n __html: searchCtx.i18n.t(\"query-auto-corrected-to\", {\n query: `<strong>${searchCtx.store.q.value.query}</strong>`,\n interpolation\n })\n }} />\n </Fragment>\n ) : null}\n </div>\n );\n}\n\nexport default QuerySummary\n","import cn from \"classnames\";\nimport cssModule from \"./pagination.module.css\"\nimport { LeftArrowIcon, RightArrowIcon } from \"../shared/icons\";\nimport { usePageContext } from \".\";\nimport { Signal, useComputed, useSignal, useSignalEffect } from \"@preact/signals\";\n\nconst buildPages = (totalPages: number, currentPage: number) => {\n\n const result = [currentPage] as number[]\n\n for (let i = currentPage + 1; i <= currentPage + 3 && i <= totalPages; i++) {\n result.push(i)\n }\n\n for (let i = currentPage - 1; i >= 1 && i >= currentPage - 3; i--) {\n result.unshift(i)\n }\n\n for (let i = result[0] - 1; i >= 1 && result.length < 7; i--) {\n result.unshift(i)\n }\n\n for (let i = result[result.length - 1] + 1; i < totalPages && result.length < 7; i++) {\n result.push(i)\n }\n\n const nullableResults = result as (null | number)[]\n\n if (totalPages > nullableResults.length) {\n const first = 0\n const last = nullableResults.length - 1;\n\n if (nullableResults[first] !== 1) {\n nullableResults[first] = 1\n nullableResults[first + 1] = null\n }\n\n if (nullableResults[last] !== totalPages) {\n nullableResults[last] = totalPages\n nullableResults[last - 1] = null\n }\n }\n\n return nullableResults\n}\n\nconst PageEllipsis = () => {\n return <div aria-hidden className={cn(cssModule[\"page-ellipsis\"])}>... </div>\n}\nconst NumPage = (props: { page: number | null, totalPages: number }) => {\n const { i18n, useInternalLink, store, searchResults } = usePageContext()\n const link = useInternalLink((s) => ({ ...s, page: props.page ?? 1 , action: \"pageChange\"}))\n const currentPage = store.page.value === props.page\n\n if (searchResults.value.status !== \"fulfilled\" || props.page === null) {\n return <PageEllipsis />\n }\n\n return <a\n className={cn(cssModule[\"page-number\"])}\n href={currentPage ? undefined : link.value.url}\n aria-disabled={currentPage}\n onClick={currentPage ? undefined : link.value.handleClick}\n aria-current={currentPage ? \"page\" : undefined}\n aria-label={i18n.t(\"page-number\", { page: props.page })}\n >\n {props.page}\n </a>\n}\n\n\nconst PrevArrow = () => {\n const { i18n, useInternalLink, store, searchResults } = usePageContext()\n const link = useInternalLink((s) => ({ ...s, page: Math.max(s.page - 1, 1), action: \"pageChange\" }))\n const disabled = store.page.value <= 1\n if (searchResults.value.status !== \"fulfilled\") {\n return <a class={cssModule[\"page-arrow\"]}><LeftArrowIcon /></a>\n }\n return <a\n href={disabled ? undefined : link.value.url}\n aria-disabled={disabled}\n onClick={disabled ? undefined : link.value.handleClick}\n aria-label={i18n.t(\"previous\")}\n class={cssModule[\"page-arrow\"]}\n role=\"navigation\"\n >\n <LeftArrowIcon />\n </a>\n}\n\nconst NextArrow = (props: { totalPages: number }) => {\n const { i18n, useInternalLink, store, searchResults } = usePageContext()\n const link = useInternalLink((s) => ({ ...s, page: Math.min(s.page + 1, props.totalPages), action: \"pageChange\" }))\n const disabled = store.page.value >= props.totalPages\n\n if (searchResults.value.status !== \"fulfilled\") {\n return <a class={cssModule[\"page-arrow\"]}><RightArrowIcon /></a>\n }\n\n return <a\n href={disabled ? undefined : link.value.url}\n aria-disabled={disabled}\n onClick={disabled ? undefined : link.value.handleClick}\n aria-label={i18n.t(\"next\")}\n class={cssModule[\"page-arrow\"]}\n role=\"navigation\"\n >\n <RightArrowIcon />\n </a>\n}\n\nconst Pagination = (props: { class?: string }) => {\n const { i18n, store, searchResults } = usePageContext()\n\n const totalPagesSig = useSignal(1);\n\n useSignalEffect(() => {\n if (searchResults.value.status !== \"fulfilled\") { return }\n totalPagesSig.value = searchResults.value.value.totalPages;\n })\n\n if (searchResults.value.status === \"fulfilled\" && searchResults.value.value.results.length === 0) {\n return null\n }\n return <nav\n aria-busy={searchResults.value.status === \"pending\"}\n className={cn(cssModule[\"pagination\"], props.class)}\n aria-label={i18n.t(\"pagination\")}\n role=\"navigation\"\n >\n <PrevArrow />\n {buildPages(totalPagesSig.value, store.page.value).map((i) => <NumPage page={i} totalPages={totalPagesSig.value} />)}\n <NextArrow totalPages={totalPagesSig.value} />\n </nav>\n}\n\nexport default Pagination;\n","\nimport { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ReadonlySignal } from \"@preact/signals\";\nimport { type PageEngine } from \"../../../engine\";\nimport { AsyncValue, Fulfilled, Fulfills } from \"../../../shared/async-value\";\n\n\n\ntype ProductSearchResult = PageEngine[\"searchResults\"] extends ReadonlySignal<infer S> ? S extends Fulfilled<infer V> ? (V & { tab: \"Products\" }) : never: never\nexport type ProductPageEngine = PageEngine & { searchResults: ReadonlySignal<AsyncValue<ProductSearchResult>> }\n\nconst PreactContext = createContext<ProductPageEngine>(undefined as any as ProductPageEngine);\n\nexport const ProductPageContextProvider = PreactContext.Provider\nexport const ProductPageContextConsumer = PreactContext.Consumer;\nexport const useProductPageContext = () => useContext(PreactContext)\n","import { ComponentChildren } from \"preact\";\nimport { useCallback, useId, useMemo, useState } from \"preact/hooks\";\nimport { Signal, useComputed, useSignal } from \"@preact/signals\";\nimport cn from \"classnames\";\n\nimport cssModule from \"./products-filters.module.css\"\nimport { PageEngine, SearchResults } from \"../../../../engine\";\nimport { useProductPageContext } from \"../context\";\nimport { ChevronDownIcon, ChevronUpIcon, CloseIcon, FilterIcon } from \"../../../shared/icons\";\n\nexport type ChipOptionEntry<T> = {\n value: T;\n selected: boolean;\n results?: number;\n}\n\nexport const isSelectedOrHasResults = <T extends any>(entry: Required<ChipOptionEntry<T>>) => {\n return entry.selected || entry.results > 0\n}\n\nexport const isSelected = <T extends any>(entry: ChipOptionEntry<T>) => {\n return entry.selected\n}\n\ntype ProductFilters = (SearchResults & { tab: \"Products\" })[\"filters\"]\n\nexport const useFilterCount = <F extends keyof ProductFilters>(field: F) => {\n const { searchResults } = useProductPageContext()\n return useComputed(() => {\n if (searchResults.value.status !== \"fulfilled\") { return; }\n return searchResults.value.value.filters[field].filter(({ selected }) => selected).length\n })\n\n}\nexport const useVanillaConsolidated = <F extends keyof ProductFilters>(field: F) => {\n const { searchResults, store } = useProductPageContext()\n return useComputed((): ChipOptionEntry<ProductFilters[F][number][\"value\"]>[] => {\n const searchResult = searchResults.value\n const urlValues = store[field].value\n if (searchResult.status !== \"fulfilled\") {\n return urlValues.map((size) => ({ value: size, selected: true }))\n }\n\n return searchResult.value.filters[field].filter(isSelectedOrHasResults)\n })\n}\n\nexport const useClearedLink = <F extends keyof ProductFilters>(field: F) => {\n const { useInternalLink } = useProductPageContext()\n return useInternalLink((state) => ({ ...state, [field]: [], page: 1, action: \"facetDeselectAll\" }))\n}\n\nexport const useToggleLink = <F extends keyof ProductFilters>(field: F, value: ProductFilters[F][number][\"value\"], selected: boolean) => {\n const { useInternalLink } = useProductPageContext()\n return useInternalLink((state) => {\n const rest = state[field].filter(v => v !== value);\n const nextValues = (state[field] as any[]).includes(value) ? rest : [...rest, value];\n return ({ ...state, [field]: nextValues, page: 1, action: selected ? \"facetDeselect\" : \"facetSelect\" })\n })\n}\n\nexport const useRemoveLink = <F extends keyof ProductFilters>(field: F, value: ProductFilters[F][number][\"value\"]) => {\n const { useInternalLink } = useProductPageContext()\n return useInternalLink((state) => {\n const rest = state[field].filter(v => v !== value);\n return ({ ...state, [field]: rest, page: 1, action: \"facetBreadcrumbDeselect\" })\n })\n}\n\nexport type ChipOptionProps<T> = ChipOptionEntry<T> & {\n label: string,\n toggleLink: ReturnType<PageEngine[\"useInternalLink\"]>\n}\n\nexport const countSelected = <T extends { selected: boolean }>(list: T[]) => list.reduce((sum, { selected }) => sum + +selected, 0)\n\nexport const OptionChip = <F extends keyof ProductFilters, T extends any>(props: ChipOptionProps<T>) => {\n const { searchResults, i18n } = useProductPageContext()\n const searchResult = searchResults.value;\n\n const busy = searchResult.status !== \"fulfilled\";\n\n return <a\n aria-label={props.results ? i18n.t(\"facet-value\", { value: props.label, count: props.results }) : undefined}\n aria-busy={busy}\n aria-pressed={props.selected}\n role='button'\n class={cssModule[\"filter-chip\"]}\n href={busy ? undefined : props.toggleLink.value.url}\n onClick={busy ? undefined : props.toggleLink.value.handleClick}\n >\n <span>{props.label}</span>\n <span class={cssModule[\"count\"]}>({props.results ?? `...`})</span>\n </a>\n}\n\nexport const BreadcrumbChip = <T extends any>(props: ChipOptionEntry<T> & {\n label: string,\n clearLink: ReturnType<PageEngine[\"useInternalLink\"]>,\n}) => {\n const { searchResults, i18n } = useProductPageContext()\n const searchResult = searchResults.value;\n const busy = searchResult.status !== \"fulfilled\";\n\n return <a\n aria-label={i18n.t(\"remove-filter-on\", { value: props.label })}\n aria-busy={busy}\n aria-pressed\n role='button'\n class={cssModule[\"breadcrumb-chip\"]}\n href={busy ? undefined : props.clearLink.value.url}\n onClick={busy ? undefined : props.clearLink.value.handleClick}\n >\n <span>{props.label}</span>\n <CloseIcon aria-hidden />\n </a>\n}\n\nexport type ClearFacetButtonProps = {\n count: Signal<number | undefined>\n facetTitle: string,\n clearedLink: ReturnType<PageEngine[\"useInternalLink\"]>,\n}\n\nexport const ClearFacetButton = (props: ClearFacetButtonProps) => {\n const { i18n, } = useProductPageContext()\n const count = props.count.value\n\n if (count === undefined || count === 0) { return <a aria-hidden class={cssModule[\"clear-facet-filter\"]} /> }\n\n const clearFacetLabel = i18n.t(\"clear-filters-for-facet\", { label: props.facetTitle, count })\n\n return <a\n class={cssModule[\"clear-facet-filter\"]}\n href={props.clearedLink.value.url}\n onClick={props.clearedLink.value.handleClick}\n aria-label={clearFacetLabel}\n >\n <CloseIcon aria-hidden />\n <span>{i18n.t(\"clear-filters\")}</span>\n </a>\n}\n\nexport const FilterTrigger = (props: {\n class?: string,\n open: Signal<boolean>,\n panelId: string,\n triggerId: string,\n filterCounter: Signal<{\n available: number;\n selected: number;\n }>\n}) => {\n const { i18n } = useProductPageContext()\n if (props.filterCounter.value.available === 0) { return null }\n return <button\n class={cssModule[\"filters-trigger\"]}\n id={props.triggerId}\n aria-expanded={props.open.value}\n aria-controls={props.panelId}\n onClick={() => props.open.value = !props.open.peek()}\n >\n <FilterIcon />\n <span>{i18n.t(\"filters\")}</span>\n {props.filterCounter.value.selected > 0 &&\n <span>{i18n.t(\"between-parentheses\", { text: props.filterCounter.value.selected })}</span>\n }\n </button>\n\n}\n\nexport const ClearAllButton = (props: {\n filterCounter: Signal<{\n available: number;\n selected: number;\n }>\n}) => {\n const { i18n, useInternalLink } = useProductPageContext()\n const link = useInternalLink(({ q, tab }, blankState) => ({ ...blankState, q, tab, page: 1, action: \"facetBreadcrumbsDeselectAll\" })).value\n if (props.filterCounter.value.selected === 0) { return null }\n\n return <a\n class={cssModule[\"clear-facet-filter\"]}\n href={link.url}\n onClick={link.handleClick}\n aria-label={i18n.t(\"clear-all-filters\")}\n title={i18n.t(\"clear-all-filters\")}\n >\n <CloseIcon aria-hidden />\n <span>{i18n.t(\"clear\")}</span>\n </a>\n}\n\nexport type FacetFilterProps = ClearFacetButtonProps & { facetTitle: string, children: ComponentChildren, contentClass?: string, defaultExpanded?: boolean, hidden: boolean }\nexport const FacetFilter = (props: FacetFilterProps) => {\n const { i18n } = useProductPageContext()\n const { facetTitle, children, count, clearedLink } = props\n const expanded = useSignal(props.defaultExpanded ?? false)\n const triggerId = useId()\n const contentId = useId()\n\n const expandLabel = i18n.t(\"collapse-facet\", { label: facetTitle })\n if (props.hidden) { return null }\n return <div class={cssModule[\"filter-facet\"]}>\n <button\n onClick={() => expanded.value = !expanded.value}\n class={cssModule[\"filter-title-button\"]}\n id={triggerId}\n aria-expanded={expanded}\n aria-controls={contentId}\n title={expandLabel}\n >\n {facetTitle}\n {expanded.value ? <ChevronUpIcon aria-hidden /> : <ChevronDownIcon aria-hidden />}\n </button>\n <ClearFacetButton clearedLink={clearedLink} count={count} facetTitle={facetTitle} />\n <div\n class={cn(cssModule[\"filter-content\"], props.contentClass, !expanded.value && cssModule[\"filter-collapsed\"])}\n id={contentId}\n role=\"region\"\n aria-labelledby={triggerId}\n >\n {children}\n </div>\n </div>\n}\n","import { Signal, useComputed, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, isSelected, isSelectedOrHasResults, useClearedLink, useFilterCount, useRemoveLink, useToggleLink } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\nimport { ProductCategories, ProductCategory } from \"../../../../engine\";\n\n\nconst CategoryChip = (props: ChipOptionEntry<ProductCategory>) => {\n const { copywriting } = useProductPageContext()\n const toggleLink = useToggleLink(\"prdCategories\", props.value, props.selected)\n\n return <OptionChip\n {...props}\n label={copywriting.productCategories[props.value]}\n toggleLink={toggleLink}\n />\n}\n\nconst useCategoryFilterValues = () => {\n const { searchResults, store } = useProductPageContext()\n const consolidated = useComputed((): ChipOptionEntry<ProductCategory>[] => {\n const searchResult = searchResults.value\n const urlPrdCategories = store.prdCategories.value\n if (searchResult.status !== \"fulfilled\") {\n return ProductCategories.map((cat) => ({ value: cat, selected: urlPrdCategories.includes(cat) }))\n }\n\n return searchResult.value.filters.prdCategories.filter(isSelectedOrHasResults)\n })\n return consolidated\n}\n\nexport const CategoryFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n\n const consolidated = useCategoryFilterValues()\n\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n\n const count = useFilterCount(\"prdCategories\")\n\n const clearedLink = useClearedLink(\"prdCategories\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n defaultExpanded\n facetTitle={copywriting.productFiltersTitles.prdCategories}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <CategoryChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nCategoryFacet.field = \"prdCategories\" as const \n\nconst CategoryBreadcrumbChip = (props: ChipOptionEntry<ProductCategory>) => {\n const { copywriting } = useProductPageContext()\n const clearLink = useRemoveLink(\"prdCategories\", props.value)\n return <BreadcrumbChip {...props} label={copywriting.productCategories[props.value]} clearLink={clearLink} />\n}\n\nexport const CategoryBreadcrumb = () => {\n const values = useCategoryFilterValues().value.filter(isSelected)\n return <>{values.map(entry => <CategoryBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\n\nCategoryBreadcrumb.field = \"prdCategories\" as const ","import { useComputed, Signal, useSignalEffect } from \"@preact/signals\";\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, isSelectedOrHasResults, useClearedLink, useFilterCount, useToggleLink, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\nimport { ProductTechnologies, ProductTechnology } from \"../../../../engine\";\n\n\nconst TechnologyChip = (props: ChipOptionEntry<ProductTechnology>) => {\n const { copywriting } = useProductPageContext()\n const toggleLink = useToggleLink(\"prdTechnologies\", props.value, props.selected)\n\n return <OptionChip\n {...props}\n label={copywriting.productTechnologies[props.value]}\n toggleLink={toggleLink}\n />\n}\n\nconst useTechnologyFilterValues = () => {\n const { searchResults, store } = useProductPageContext()\n const consolidated = useComputed((): ChipOptionEntry<ProductTechnology>[] => {\n const searchResult = searchResults.value\n const urlPrdTechnologies = store.prdTechnologies.value\n if (searchResult.status !== \"fulfilled\") {\n return ProductTechnologies.map((tech) => ({ value: tech, selected: urlPrdTechnologies.includes(tech) }))\n }\n\n return searchResult.value.filters.prdTechnologies.filter(isSelectedOrHasResults)\n })\n return consolidated\n}\n\nexport const TechnologyFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n const consolidated = useTechnologyFilterValues()\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const count = useFilterCount(\"prdTechnologies\")\n const clearedLink = useClearedLink(\"prdTechnologies\")\n\n return <FacetFilter\n defaultExpanded\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdTechnologies}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <TechnologyChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nTechnologyFacet.field = \"prdTechnologies\" as const\n\nconst TechnologyBreadcrumbChip = (props: ChipOptionEntry<ProductTechnology>) => {\n const { copywriting } = useProductPageContext()\n const clearLink = useRemoveLink(\"prdTechnologies\", props.value)\n\n return <BreadcrumbChip\n {...props}\n label={copywriting.productTechnologies[props.value]}\n clearLink={clearLink}\n />\n}\n\nexport const TechnologyBreadcrumb = () => {\n const consolidated = useTechnologyFilterValues()\n return <>{\n consolidated.value.filter(isSelected).map(entry => <TechnologyBreadcrumbChip key={entry.value} {...entry} />)\n }</>\n}\nTechnologyBreadcrumb.field = \"prdTechnologies\" as const\n","import { useComputed, Signal, useSignalEffect } from \"@preact/signals\";\nimport cn from \"classnames\";\n\nimport cssModule from \"./products-filters.module.css\"\nimport { ChipOptionEntry, FacetFilter, countSelected, isSelectedOrHasResults, useClearedLink, useFilterCount, useToggleLink, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\nimport { PriceRange } from \"../../../../engine\";\nimport { CheckIcon } from \"../../../shared/icons\";\n\nconst PriceLine = (props: ChipOptionEntry<PriceRange>) => {\n const { priceRangeFilterOptions, searchResults, i18n } = useProductPageContext()\n\n const searchResult = searchResults.value;\n\n const link = useToggleLink(\"prdPriceRanges\", props.value, props.selected);\n\n const label = priceRangeFilterOptions.find(({ range }) => range === props.value)!.label\n const busy = searchResult.status !== \"fulfilled\";\n return <a\n class={cssModule[\"facet-list-item\"]}\n aria-label={props.results ? i18n.t(\"facet-value\", { value: label, count: props.results }) : undefined}\n aria-busy={busy}\n aria-pressed={props.selected}\n role='button'\n href={busy ? undefined : link.value.url}\n onClick={busy ? undefined : link.value.handleClick}\n >\n <span aria-hidden class={cn(cssModule[\"facet-list-item-check\"], props.selected && cssModule[\"selected\"])} >\n {props.selected && <CheckIcon class={cssModule[\"facet-list-item-check-icon\"]} />}\n </span>\n <span>{label}</span>\n <span class={cssModule[\"count\"]}>({props.results ?? `...`})</span>\n </a>\n}\n\nconst usePriceFilterValues = () => {\n const { searchResults, store, priceRangeFilterOptions } = useProductPageContext()\n const consolidated = useComputed((): ChipOptionEntry<PriceRange>[] => {\n const searchResult = searchResults.value\n const prdPriceRanges = store.prdPriceRanges.value\n\n if (searchResult.status !== \"fulfilled\") {\n return priceRangeFilterOptions.map(({ range }) => ({ value: range, selected: prdPriceRanges.includes(range) }))\n }\n\n return searchResult.value.filters.prdPriceRanges.filter(isSelectedOrHasResults)\n\n })\n return consolidated\n}\n\nexport const PriceFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting, searchResults, store, priceRangeFilterOptions } = useProductPageContext()\n\n const consolidated = useComputed((): ChipOptionEntry<PriceRange>[] => {\n const searchResult = searchResults.value\n const prdPriceRanges = store.prdPriceRanges.value\n\n if (searchResult.status !== \"fulfilled\") {\n return priceRangeFilterOptions.map(({ range }) => ({ value: range, selected: prdPriceRanges.includes(range) }))\n }\n\n return searchResult.value.filters.prdPriceRanges.filter(isSelectedOrHasResults)\n\n })\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const count = useFilterCount(\"prdPriceRanges\")\n\n const clearedLink = useClearedLink(\"prdPriceRanges\")\n\n return <FacetFilter\n defaultExpanded\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdPrice}\n clearedLink={clearedLink}\n contentClass={cssModule[\"facet-list\"]}\n count={count}\n >\n {consolidated.value.map(entry => <PriceLine {...entry} />)}\n </FacetFilter>\n}\nPriceFacet.field = \"prdPriceRanges\" as const\n\nconst PriceBreadcrumbChip = (props: ChipOptionEntry<PriceRange>) => {\n const { priceRangeFilterOptions } = useProductPageContext()\n const clearLink = useRemoveLink(\"prdPriceRanges\", props.value)\n const label = priceRangeFilterOptions.find(({ range }) => range === props.value)!.label\n return <BreadcrumbChip {...props} label={label} clearLink={clearLink} />\n}\n\nexport const PriceBreadcrumb = () => {\n const consolidated = usePriceFilterValues()\n return <>{\n consolidated.value.filter(isSelected).map(entry => <PriceBreadcrumbChip key={entry.value} {...entry} />)\n }</>\n}\nPriceBreadcrumb.field = \"prdPriceRanges\" as const\n","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, useRemoveLink, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\n\n\nconst MachineColorChip = (props: ChipOptionEntry<string>) => {\n const toggleLink = useToggleLink(\"prdMachineColors\", props.value, props.selected)\n return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const MachineColorFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n const consolidated = useVanillaConsolidated(\"prdMachineColors\")\n const count = useFilterCount(\"prdMachineColors\")\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const clearedLink = useClearedLink(\"prdMachineColors\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdMachineColors}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <MachineColorChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nMachineColorFacet.field = \"prdMachineColors\" as const \n\nconst MachineColorBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n const clearLink = useRemoveLink(\"prdMachineColors\", props.value)\n return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const MachineColorBreadcrumb = () => {\n const values = useVanillaConsolidated(\"prdMachineColors\").value.filter(isSelected)\n return <>{values.map(entry => <MachineColorBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nMachineColorBreadcrumb.field = \"prdMachineColors\" as const \n","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, useRemoveLink, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\nconst CupSizeChip = (props: ChipOptionEntry<string>) => {\n const toggleLink = useToggleLink(\"prdCupSizes\", props.value, props.selected)\n return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const CupSizeFacet = (props: { counter: Signal<{ available: number, selected: number}> }) => {\n const { copywriting } = useProductPageContext()\n const consolidated = useVanillaConsolidated(\"prdCupSizes\")\n const count = useFilterCount(\"prdCupSizes\")\n useSignalEffect(()=> {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const clearedLink = useClearedLink(\"prdCupSizes\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdCupSizes}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <CupSizeChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nCupSizeFacet.field = \"prdCupSizes\" as const \n\nconst CupSizeBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n const clearLink = useRemoveLink(\"prdCupSizes\", props.value)\n return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const CupSizeBreadcrumb = () => {\n const values = useVanillaConsolidated(\"prdCupSizes\").value.filter(isSelected)\n return <>{values.map(entry => <CupSizeBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\n\nCupSizeBreadcrumb.field = \"prdCupSizes\" as const ","import { useComputed, Signal, useSignalEffect } from \"@preact/signals\";\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, isSelected, useClearedLink, useFilterCount, useToggleLink,useRemoveLink, useVanillaConsolidated } from \"./commons\";;\nimport { useProductPageContext } from \"../context\";\n\n\nconst IntensityChip = (props: ChipOptionEntry<`${number}`>) => {\n const toggleLink = useToggleLink(\"prdIntensities\", props.value, props.selected)\n return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const IntensityFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n const unsortedConsolidated = useVanillaConsolidated(\"prdIntensities\")\n const consolidated = useComputed(() => {\n return unsortedConsolidated.value.sort((a, b) => Number(a.value) - Number(b.value))\n })\n const count = useFilterCount(\"prdIntensities\")\n\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n\n const clearedLink = useClearedLink(\"prdIntensities\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdIntensity}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <IntensityChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nIntensityFacet.field = \"prdIntensities\" as const \n\nconst IntensityBreadcrumbChip = (props: ChipOptionEntry<`${number}`>) => {\n const clearLink = useRemoveLink(\"prdIntensities\", props.value)\n return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const IntensityBreadcrumb = () => {\n const values = useVanillaConsolidated(\"prdIntensities\").value.filter(isSelected)\n return <>{values.map(entry => <IntensityBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nIntensityBreadcrumb.field = \"prdIntensities\" as const \n","import { Signal, useSignalEffect } from \"@preact/signals\";\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, useRemoveLink, isSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\nconst RoastingChip = (props: ChipOptionEntry<string>) => {\n const { copywriting } = useProductPageContext()\n const toggleLink = useToggleLink(\"prdRoasting\", props.value, props.selected)\n return <OptionChip\n {...props}\n label={copywriting.productRoasting[props.value] ?? props.value}\n toggleLink={toggleLink} />\n}\n\nexport const RoastingFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n\n if (!copywriting.productFiltersTitles.prdRoasting) { return null }\n const consolidated = useVanillaConsolidated(\"prdRoasting\")\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const count = useFilterCount(\"prdRoasting\")\n const clearedLink = useClearedLink(\"prdRoasting\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdRoasting}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <RoastingChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nRoastingFacet.field = \"prdRoasting\" as const\n\nconst RoastingBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n const clearLink = useRemoveLink(\"prdRoasting\", props.value)\n return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const RoastingBreadcrumb = () => {\n const values = useVanillaConsolidated(\"prdRoasting\").value.filter(isSelected)\n return <>{values.map(entry => <RoastingBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nRoastingBreadcrumb.field = \"prdRoasting\" as const\n","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\n\nconst TastingNotesChip = (props: ChipOptionEntry<string>) => {\n const toggleLink = useToggleLink(\"prdTastingNotes\", props.value, props.selected)\n\n return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const TastingNotesFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n\n if (!copywriting.productFiltersTitles.prdTastingNotes) { return null }\n const consolidated = useVanillaConsolidated(\"prdTastingNotes\")\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const count = useFilterCount(\"prdTastingNotes\")\n const clearedLink = useClearedLink(\"prdTastingNotes\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdTastingNotes}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <TastingNotesChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nTastingNotesFacet.field = \"prdTastingNotes\" as const\n\nconst TastingBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n const clearLink = useRemoveLink(\"prdTastingNotes\", props.value)\n return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const TastingBreadcrumb = () => {\n const values = useVanillaConsolidated(\"prdTastingNotes\").value.filter(isSelected)\n return <>{values.map(entry => <TastingBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nTastingBreadcrumb.field = \"prdTastingNotes\" as const","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\n\nconst UsagesChip = (props: ChipOptionEntry<string>) => {\n const toggleLink = useToggleLink(\"prdTastingNotes\", props.value, props.selected)\n\n return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const UsagesFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n const { copywriting } = useProductPageContext()\n\n if (!copywriting.productFiltersTitles.prdUsages) { return null }\n const consolidated = useVanillaConsolidated(\"prdUsages\")\n useSignalEffect(() => {\n props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n })\n const count = useFilterCount(\"prdUsages\")\n const clearedLink = useClearedLink(\"prdUsages\")\n\n return <FacetFilter\n hidden={consolidated.value.length === 0}\n facetTitle={copywriting.productFiltersTitles.prdUsages}\n clearedLink={clearedLink}\n count={count}\n >\n {consolidated.value.map(entry => <UsagesChip key={entry.value} {...entry} />)}\n </FacetFilter>\n}\nUsagesFacet.field = \"prdUsages\" as const\n\nconst UsageBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n const clearLink = useRemoveLink(\"prdUsages\", props.value)\n return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const UsageBreadcrumb = () => {\n const values = useVanillaConsolidated(\"prdUsages\").value.filter(isSelected)\n return <>{values.map(entry => <UsageBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nUsageBreadcrumb.field = \"prdUsages\" as const","import { Signal, useComputed, useSignal, useSignalEffect } from \"@preact/signals\";\nimport type { JSXInternal } from \"preact/src/jsx\";\nimport cn from \"classnames\";\nimport cssModule from \"./products-filters.module.css\"\n\nimport { CloseIcon } from \"../../../shared/icons\";\nimport { useProductPageContext } from \"../context\";\nimport { CategoryFacet } from \"./category\";\nimport { TechnologyFacet } from \"./technology\";\nimport { PriceFacet } from \"./price\";\nimport { MachineColorFacet } from \"./machine-color\";\nimport { CupSizeFacet } from \"./cup-size\";\nimport { IntensityFacet } from \"./intensity\";\nimport { RoastingFacet } from \"./roasting\";\nimport { TastingNotesFacet } from \"./tasting-notes\";\nimport { FacetOrdering } from \"../../../../engine\";\nimport { UsagesFacet } from \"./usage\";\n\ntype FacetConstructor<F> = {\n (props: { counter: Signal<{ available: number; selected: number; }> }): JSXInternal.Element | null;\n field: F;\n}\n\ntype MapIntoConstructors<D> = { [K in keyof D]: FacetConstructor<D[K]> }\n\nconst facetConstructors = [\n CategoryFacet,\n TechnologyFacet,\n PriceFacet,\n MachineColorFacet,\n CupSizeFacet,\n IntensityFacet,\n RoastingFacet,\n TastingNotesFacet,\n UsagesFacet,\n] as const satisfies MapIntoConstructors<FacetOrdering>\n\nconst ProductFilters = (props: {\n class?: string,\n open: Signal<boolean>,\n panelId: string,\n triggerId: string,\n filterCounter: Signal<{ available: number; selected: number; }>\n}) => {\n const { i18n } = useProductPageContext()\n const counters = facetConstructors.map(() => useSignal({ available: 0, selected: 0 }))\n\n useSignalEffect(() => {\n props.filterCounter.value = {\n available: counters.reduce((sum, sig) => sum + sig.value.available, 0),\n selected: counters.reduce((sum, sig) => sum + sig.value.selected, 0),\n }\n\n return () => {\n props.filterCounter.value = { available: 0, selected: 0 }\n }\n })\n\n return <div\n id={props.panelId}\n aria-labelledby={props.triggerId}\n class={cn(cssModule[\"product-filters\"], props.class, props.open.value && props.filterCounter.value.available > 0 && cssModule[\"filters-open\"])}\n >\n <div class={cssModule[\"mobile-bar\"]}>\n <h2 class={cssModule[\"mobile-title\"]}>{i18n.t(\"sort-and-filter\")}</h2>\n <button\n aria-expanded={props.open}\n aria-controls={props.panelId}\n onClick={() => props.open.value = !props.open.peek()}\n aria-label={i18n.t(\"close\")}\n class={cn(cssModule[\"mobile-close\"])}\n >\n <CloseIcon />\n </button>\n </div>\n {facetConstructors.map((Facet, i) => <Facet counter={counters[i]} />)}\n </div>\n}\n\nexport default ProductFilters","\nimport { usePageContext } from \"./context\"\nimport cssModule from \"./no-results.module.css\"\nimport createMicroMarkup from \"../../../tools/micro-markup\";\n\nconst microMarkup = createMicroMarkup({\n strong: []\n});\n\nconst NoResults = () => {\n const { i18n, store } = usePageContext()\n\n return <>\n {store.q.value ?\n <h2\n class={cssModule[\"no-results\"]}\n dangerouslySetInnerHTML={{\n __html: i18n.t(\"no-results-for\", {\n query: `<strong>${i18n.t(\"between-quotations\", { text: store.q.value.query })}</strong>`,\n interpolation: { escape: microMarkup }\n })\n }} />\n : <h2 class={cssModule[\"no-results\"]}>{i18n.t(\"no-results\")}</h2>\n }\n <div class={cssModule[\"no-results-tips\"]}>\n {i18n.t(\"search-tips\")}\n </div>\n </>\n}\n\nexport default NoResults;\n","\nimport cn from \"classnames\";\nimport type { JSXInternal } from \"preact/src/jsx\";\nimport cssModule from \"./products-filters.module.css\"\nimport { CategoryBreadcrumb } from \"./category\";\nimport { TechnologyBreadcrumb } from \"./technology\";\nimport { PriceBreadcrumb } from \"./price\";\nimport { MachineColorBreadcrumb } from \"./machine-color\";\nimport { CupSizeBreadcrumb } from \"./cup-size\";\nimport { IntensityBreadcrumb } from \"./intensity\";\nimport { RoastingBreadcrumb } from \"./roasting\";\nimport { TastingBreadcrumb } from \"./tasting-notes\";\nimport { UsageBreadcrumb } from \"./usage\";\n\nimport { FacetOrdering } from \"../../../../engine\";\n\ntype BreadCrumbConstructor<F> = {\n (): JSXInternal.Element | null;\n field: F;\n}\n\ntype MapIntoConstructors<D> = { [K in keyof D]: BreadCrumbConstructor<D[K]> }\n\nconst breadcrumbConstructors = [\n CategoryBreadcrumb,\n TechnologyBreadcrumb,\n PriceBreadcrumb,\n MachineColorBreadcrumb,\n CupSizeBreadcrumb,\n IntensityBreadcrumb,\n RoastingBreadcrumb,\n TastingBreadcrumb,\n UsageBreadcrumb,\n] as const satisfies MapIntoConstructors<FacetOrdering>\n\nconst FilterBreadcrumbs = (props: { class?: string }) => {\n return <div class={cn(props.class, cssModule[\"breadcrumb-section\"])}>\n {breadcrumbConstructors.map(Breadcrumb => <Breadcrumb />)}\n </div>\n}\n\nexport default FilterBreadcrumbs","\nimport cn from \"classnames\";\nimport cssModule from \"./notifications.module.css\"\n\nimport { usePageContext } from \".\";\nimport { escapeForFaq } from \"../../shared/escape-for-faqs\";\n\nconst Notifications = (props: { class?: string }) => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n\n if (searchResult.status !== \"fulfilled\") { return null }\n const notifications = searchResult.value.notifications\n return <div class={cn(props.class)}>\n {notifications.map(message => <div\n class={cssModule[\"notification\"]}\n dangerouslySetInnerHTML={{ __html: escapeForFaq(message) }}\n />)}\n </div>\n}\n\nexport default Notifications\n","export const MAX_WIDTH_CONTAINER = 1160\n\nexport const BREAKPOINT_XL = 1920\nexport const BREAKPOINT_TABLET = 1024\nexport const BREAKPOINT_L = 996\nexport const BREAKPOINT_M = 768\nexport const BREAKPOINT_S = 750\nexport const BREAKPOINT_XS = 375\n\nexport const CTA_PRIMARY = 'primary'\nexport const CTA_PRIMARY_TRANSPARENT = 'primary_transparent'\nexport const CTA_SUBTLE = 'subtle'\nexport const CTA_LINK = 'link'\nexport const CTA_LINK_UNDERLINE = 'link-underline'\nexport const CTA_LINK_GOLD = 'link-gold'\nexport const CTA_LINK_ADD_TO_CART_SMALL = 'AddToCart_small'\nexport const CTA_LINK_ADD_TO_CART_LARGE = 'AddToCart_large'\n\nexport const EVENT_TAB_CHANGE = 'EVENT_TAB_CHANGE'\n\nexport const EVENT_VIDEO = 'WEB_COMPONENT_VIDEO'\nexport const EVENT_POPIN_OPEN = 'WEB_COMPONENT_POPIN_OPEN'\nexport const EVENT_POPIN_OPENED = 'WEB_COMPONENT_POPIN_OPENED'\nexport const EVENT_POPIN_CLOSE = 'WEB_COMPONENT_POPIN_CLOSE'\nexport const EVENT_POPIN_CLOSED = 'WEB_COMPONENT_POPIN_CLOSED'\nexport const EVENT_POPIN_CLOSE_CLICK = 'WEB_COMPONENT_POPIN_CLOSE_CLICK'\nexport const EVENT_POPIN_KEY_DOWN = 'keydown'\nexport const EVENT_POPIN_FORM_TOGGLE_TITLE = 'WEB_COMPONENT_POPIN_FORM_TOGGLE_TITLE'\nexport const EVENT_CTA_CLICK = 'WEB_COMPONENT_CTA_CLICK'\nexport const EVENT_HERO_REORDER_OPEN = 'WEB_COMPONENT_HERO_REORDER_OPEN'\nexport const EVENT_HERO_REORDER_CLOSE = 'WEB_COMPONENT_HERO_REORDER_CLOSE'\nexport const EVENT_QUICKVIEW_OPEN = 'WEB_COMPONENT_QUICKVIEW_OPEN'\nexport const EVENT_QS_OPEN = 'WEB_COMPONENT_QS_OPEN'\nexport const EVENT_QS_OPENED = 'WEB_COMPONENT_QS_OPENED'\nexport const EVENT_QS_CLOSE = 'WEB_COMPONENT_QS_CLOSE'\nexport const EVENT_QS_CLOSED = 'WEB_COMPONENT_QS_CLOSED'\nexport const EVENT_QS_CLOSE_CLICK = 'WEB_COMPONENT_QS_CLOSE_CLICK'\nexport const EVENT_QS_KEY_DOWN = 'keydown'\nexport const EVENT_ADD_TO_CART = 'WEB_COMPONENT_ADD_TO_CART'\nexport const EVENT_CART_UPDATED = 'WEB_COMPONENT_CART_UPDATED'\nexport const EVENT_VIDEO_TOGGLE = 'WEB_COMPONENT_VIDEO_TOGGLE'\nexport const VIDEO_ON_HOVER = 'VIDEO_ON_HOVER'\nexport const VIDEO_ON_OUT = 'VIDEO_ON_OUT'\nexport const EVENT_DETAIL_OPEN = 'WEB_COMPONENT_DETAIL_OPEN'\nexport const EVENT_SLIDER_READY = 'WEB_COMPONENT_SLIDER_READY'\nexport const EVENT_SLIDE_CHANGE = 'WEB_COMPONENT_SLIDE_CHANGE'\nexport const EVENT_OVERLAY_OPEN = 'WEB_COMPONENT_OVERLAY_OPEN'\nexport const EVENT_OVERLAY_CLOSE = 'WEB_COMPONENT_OVERLAY_CLOSE'\nexport const EVENT_OVERLAY_CLICKED = 'WEB_COMPONENT_OVERLAY_CLICKED'\nexport const EVENT_OPEN_PRODUCT_AR_CLICKED = 'OPEN_PRODUCT_AR_CLICKED'\nexport const EVENT_SORT_BY_CHANGE = 'WEB_COMPONENT_SORT_BY_CHANGE'\n\nexport const EVENT_BUBBLE_SELECTED = 'EVENT_BUBBLE_SELECTED'\nexport const EVENT_RECO_TOOL_OPTION_CLICKED = 'EVENT_RECO_TOOL_OPTION_CLICKED'\nexport const WEB_COMPONENT_PROJECTS_LOADED = 'WEB_COMPONENT_PROJECTS_LOADED'\nexport const WEB_COMPONENT_ANCHOR_LOADED = 'WEB_COMPONENT_ANCHOR_LOADED'\n\nexport const EVENT_SWIPED_UP = 'swiped-up'\nexport const EVENT_SWIPED_DOWN = 'swiped-down'\nexport const EVENT_SWIPED_LEFT = 'swiped-left'\nexport const EVENT_SWIPED_RIGHT = 'swiped-right'\n\nexport const EVENT_HEADER_POSITION_CHANGED = 'EVENT_HEADER_POSITION_CHANGED'\n\nexport const keys = { ESC: 'Escape' }\n\nexport const ADD_TO_CART_MODIFIER_MINI = 'mini'\nexport const ADD_TO_CART_MODIFIER_DEFAULT = ADD_TO_CART_MODIFIER_MINI\n\nexport const COFFEE_ORIGINAL = 'original'\nexport const COFFEE_VERTUO = 'vertuo'\nexport const COFFEE_PRO = 'pro'\nexport const COFFEE_OL = 'OL'\nexport const COFFEE_VL = 'VL'\nexport const INTENSITY_MAX_OL = 14\nexport const INTENSITY_MAX_VL = 12\nexport const DEFAULT_BUBBLE_ICON = ''\n\nexport const NUMBER_PRODUCTS_SLIDER = 8\nexport const NUMBER_FEATURES_PDP = 8\n\nexport const ALIGNMENT = ['center', 'left', 'right']\nexport const POSITION = ['top', 'right', 'bottom', 'left']\nexport const TRANSLATION_ADD_TO_CART = 'Add to cart'\nexport const TRANSLATION_UPDATE_BASKET = 'Update basket'\n\nexport const TIME_INSTANT = 1\nexport const TIME_FAST = 300\nexport const TIME_MEDIUM = 600\nexport const TIME_SLOW = 1200\n\nexport const APP_APPLE_LINK = {\n default: 'https://apps.apple.com/us/app/nespresso/id342879434',\n us: 'https://apps.apple.com/us/app/nespresso-new/id1609639566',\n uk: 'https://apps.apple.com/gb/app/nespresso-new/id1609639566',\n kr: 'https://apps.apple.com/kr/app/%EB%84%A4%EC%8A%A4%ED%94%84%EB%A0%88%EC%86%8C-%EB%B6%80%ED%8B%B0%ED%81%AC/id1609639566'\n}\nexport const APP_ANDROID_LINK =\n 'https://play.google.com/store/apps/details?id=com.nespresso.activities'\nexport const APP_HUAWEI_LINK = 'https://appgallery.huawei.com/app/C102571517'\n\nexport const SRC_PAGE_PLP = 'plp'\nexport const SRC_PAGE_PDP = 'pdp'\n\nexport const PLP_TYPE_COFFEE = 'coffee'\nexport const PLP_TYPE_MACHINE = 'machine'\nexport const PLP_TYPE_ACCESSORY = 'accessory'\nexport const CALLEO_API_DOMAIN = 'https://www.contact.nespresso.com/'\n\n// SCSS RELATED\n// Todo : should be shared by JS and SCSS\nexport const BROWSER_CONTEXT = 16 // 1rem = 16px\nexport const COLOR_WHITE_1000 = '#FFFFFF' // Do not change for #FFF shortcut, it will break slider-natural gradients !\n\nexport const CONTRAST_DARK = 'dark'\nexport const CONTRAST_LIGHT = 'light'\n\nexport const B2B_CONTACT_FORM_POPIN_ID = 'b2b-contact-form-popin-id'\nexport const B2B_CONTACT_FORM_POPIN_SRC_SEARCH = 'coveo-search'\n\nexport const B2B_CONTACT_FORM_POPIN_SRC_SKU_MAIN_INFO = 'sku-main-info'\n\nexport const B2B_CONTACT_FORM_POPIN_SRC_SKU_MAIN_INFO_AUTO = 'sku-main-info-auto'\n\nexport const ASPECT_RATIO_16_9 = '16/9'\nexport const ASPECT_RATIO_1_1 = '1/1'\n\nexport const NESPRESSO_PRODUCTION_DOMAIN = 'https://www.nespresso.com'\nexport const NESPRESSO_ROLLOUT_DOMAIN = 'https://nc2-env-rollout.nespresso.com'\n\nexport const EVENT_QUIZ_ON_GO_BACK = 'WEB_COMPONENT_EVENT_QUIZ_ON_GO_BACK'\nexport const EVENT_QUIZ_SUBMIT = 'WEB_COMPONENT_EVENT_QUIZ_SUBMIT'\n","export const dispatchEvent = ({ eventName, args, element }) => {\n // Use the provided element or fallback to window if available\n if (!element) {\n if (typeof window !== 'undefined') {\n element = window\n } else {\n throw new Error(\n '`element` is not provided and `window` is unavailable. Provide a valid element to dispatch the event.'\n )\n }\n }\n\n let event\n if (args) {\n event = new CustomEvent(eventName, { detail: args, bubbles: true })\n } else {\n if (typeof Event === 'function') {\n event = new Event(eventName)\n } else {\n event = document.createEvent('Event')\n event.initEvent(eventName, true, true)\n }\n }\n element.dispatchEvent(event)\n}\n\nexport const readEvent = e => {\n if (!e.detail) {\n return\n }\n return e.detail\n}\n","import { useErrorBoundary, useId, useMemo, useState } from 'preact/hooks'\nimport { Signal, useComputed, useSignal, useSignalEffect } from '@preact/signals'\nimport cn from 'classnames'\nimport cssModule from './products.module.css'\nimport createMicroMarkup from '../../../../tools/micro-markup'\nimport Pagination from '../pagination'\nimport ProductFilters from './filters/product-filters'\nimport { PageEngine, ProductResult, useProductImpressionTracking } from '../../../engine'\nimport { usePageContext } from '..'\nimport { ProductPageContextProvider, ProductPageEngine, useProductPageContext } from './context'\nimport NoResults from '../no-results'\nimport { ClearAllButton, FilterTrigger } from './filters/commons'\nimport FilterBreadcrumb from './filters/breadcrumbs'\nimport Notifications from '../notifications'\nimport { breakpoint } from '../../../shared/breakpoints'\nimport { CAPSULE_TECHNOLOGY_B2B } from '../../../../search-bar/constants'\nimport { displayPrice, showPriceSection } from '../../../../config'\nimport createImPolicyQuery from '@kissui/helpers/src/createImPolicyQuery'\n\nimport {\n B2B_CONTACT_FORM_POPIN_ID,\n B2B_CONTACT_FORM_POPIN_SRC_SEARCH,\n EVENT_POPIN_OPEN\n} from '@kissui/components/src/constants.mjs'\nimport { dispatchEvent } from '@kissui/helpers/src/assets/js/eventDispatch'\n\nconst microMarkup = createMicroMarkup({\n strong: []\n})\n\ntype OptProps = {\n useProductClickTracking: (result: ProductResult) => () => void\n conjunctionFormatter: Intl.ListFormat\n i18n: PageEngine['i18n']\n priceFormatter: PageEngine['priceFormatter']\n displaySleevePrice: boolean\n buttonShape: 'square' | 'round'\n}\n\ntype Props = OptProps & { result: ProductResult }\n\nconst CupSize = (props: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n const cupSizesWithVolume = props.result.cupSizes.map(({ label, volume }) => {\n if (!volume) {\n return label\n }\n return props.i18n.t('cup-volume-format', {\n volume: volume,\n cup_size: label,\n defaultValue: `${label} (${volume})`\n })\n })\n\n return (\n <div class={cssModule['metadata-section']}>\n <div>{props.conjunctionFormatter.format(cupSizesWithVolume)}</div>\n </div>\n )\n}\n\nconst ImageSection = ({ result }: Props) => {\n const width = 112\n\n const imageUrl = useMemo(() => {\n const imPolicyQuery = createImPolicyQuery(Math.ceil(width))\n return `${result.imageUrl}${imPolicyQuery}`\n }, [width, result.imageUrl])\n\n return (\n <div class={cssModule['image-section']}>\n <img\n key={result.imageUrl}\n src={imageUrl}\n alt={result.title}\n loading={'lazy'}\n width={width}\n />\n </div>\n )\n}\n\nconst TypeSection = ({ result, conjunctionFormatter }: Props) => {\n return (\n <div class={cssModule['type-section']}>\n {result.prdTechnologies.length === 1\n ? `${conjunctionFormatter.format(result.prdTechnologies)} - ${result.category}`\n : result.category}\n </div>\n )\n}\n\nconst TitleSection = ({ result, trackProductClick }: Props & { trackProductClick: () => void }) => {\n return (\n <a onClick={trackProductClick} href={result.url} class={cssModule['title-section']}>\n {result.title}\n </a>\n )\n}\n\nconst PreviousPrice = ({ result, priceFormatter, i18n }: Props) => {\n if (!result.previousPrice) {\n return null\n }\n\n return (\n <span\n class={cssModule['text']}\n dangerouslySetInnerHTML={{\n __html: i18n.t('previous_price', {\n previous_price: `<span class=\"${cn(\n cssModule['text'],\n cssModule['strikethrough-price']\n )}\">${priceFormatter.short(result.previousPrice)}</span>`\n })\n }}\n />\n )\n}\n\nconst Price = ({ priceFormatter, result }: Props) => {\n return <div class={cssModule['price']}>{priceFormatter.short(result.price)}</div>\n}\n\nconst SleevePrice = ({\n result,\n i18n,\n priceFormatter,\n displaySleevePrice\n}: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n let price_per_sleeve_text = 'price_per_sleeve'\n if (result.prdTechnologies[0] === CAPSULE_TECHNOLOGY_B2B) {\n price_per_sleeve_text = 'price_per_sleeve_b2b'\n }\n\n if (!displaySleevePrice || result.sleeveMainPrice) {\n return null\n }\n return (\n <div\n class={cssModule['price-meta-data']}\n dangerouslySetInnerHTML={{\n __html: i18n.t(price_per_sleeve_text, {\n sleeve_price: priceFormatter.short(result.price * result.salesMultiple),\n sleeve_size: result.salesMultiple,\n interpolation: { escape: microMarkup }\n })\n }}\n />\n )\n}\n\nconst SleevePricePerWeight = ({\n result,\n i18n,\n priceFormatter\n}: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n if (!result.capsuleNetWeightG) {\n return null\n }\n const netWeightKg = result.capsuleNetWeightG / 1000\n const pricePerKG = result.price / netWeightKg\n\n return (\n <div\n class={cssModule['price-meta-data']}\n dangerouslySetInnerHTML={{\n __html: i18n.t('price_per_kilo', {\n price_per_kilo: priceFormatter.short(pricePerKG),\n interpolation: { escape: microMarkup }\n })\n }}\n />\n )\n}\n\nconst SleeveBundlePricePerWeight = ({\n result,\n i18n,\n priceFormatter\n}: Props & { result: { categoryId: 'Capsule'; bundled: true } }) => {\n if (!result.capsuleNetWeightG) {\n return null\n }\n const netWeightKg = result.capsuleNetWeightG / 1000\n const pricePerCapsule = result.price / result.capsules\n const pricePerKG = pricePerCapsule / netWeightKg\n\n return (\n <div\n class={cssModule['price-meta-data']}\n dangerouslySetInnerHTML={{\n __html: i18n.t('price_per_kilo', {\n price_per_kilo: priceFormatter.short(pricePerKG),\n interpolation: { escape: microMarkup }\n })\n }}\n />\n )\n}\n\nconst SleeveDescription = ({\n result,\n i18n\n}: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n if (!result.sleeveMainPrice) {\n return null\n }\n return (\n <div\n class={cssModule['price-meta-data']}\n dangerouslySetInnerHTML={{\n __html: i18n.t('sleeve_description', {\n sleeves: i18n.t('sleeves', { count: 1 }),\n capsules: i18n.t('capsules', { count: result.salesMultiple })\n })\n }}\n />\n )\n}\n\nconst estimatedSleeves = (capsules: number) => {\n if (capsules % 10 === 0) {\n return capsules / 10\n }\n return Math.floor(capsules / 7)\n}\n\nconst SleeveBundleDescription = ({\n result,\n i18n\n}: Props & { result: { categoryId: 'Capsule'; bundled: true } }) => {\n if (!result.sleeveMainPrice) {\n return null\n }\n\n return (\n <div\n class={cssModule['price-meta-data']}\n dangerouslySetInnerHTML={{\n __html: i18n.t('sleeve_description', {\n sleeves: i18n.t('sleeves', { count: estimatedSleeves(result.capsules) }),\n capsules: i18n.t('capsules', { count: result.capsules })\n })\n }}\n />\n )\n}\n\nconst SleevePricingSection = (\n props: Props & { result: { categoryId: 'Capsule'; bundled: false } }\n) => {\n return (\n <div class={cssModule['price-section']}>\n <PreviousPrice {...props} />\n <Price {...props} />\n <SleevePrice {...props} />\n <SleeveDescription {...props} />\n <SleevePricePerWeight {...props} />\n </div>\n )\n}\n\nconst SleeveBundlePricingSection = (\n props: Props & { result: { categoryId: 'Capsule'; bundled: true } }\n) => {\n return (\n <div class={cssModule['price-section']}>\n <PreviousPrice {...props} />\n <Price {...props} />\n <SleeveBundleDescription {...props} />\n <SleeveBundlePricePerWeight {...props} />\n </div>\n )\n}\n\nconst PricingSection = (props: Props) => {\n return (\n <div class={cssModule['price-section']}>\n <PreviousPrice {...props} />\n <Price {...props} />\n </div>\n )\n}\n\nconst CTASection = ({ result, i18n, buttonShape }: Props) => {\n const buttonId = 'coveo_add_to_cart_' + result.sku\n const addToCartData = JSON.stringify({\n sku: result.sku,\n size: 'small',\n label_add_to_cart: i18n.t('cta_add_to_cart'),\n label_update_cart: i18n.t('cta_update_cart'),\n quantity_selector: {\n a11y_qs_label: i18n.t('qs_label'),\n a11y_qs_description: i18n.t('qs_description'),\n a11y_predefined_quantity: i18n.t('qs_predefined_quantity'),\n a11y_predefined_description: i18n.t('qs_predefined_description'),\n a11y_add_label: i18n.t('qs_add'),\n a11y_custom_quantity: i18n.t('qs_custom_quantity'),\n a11y_custom_description: i18n.t('qs_custom_description'),\n label_choose_quantity: i18n.t('qs_choose_quantity'),\n label_button_ok: i18n.t('qs_button_ok'),\n quantities: result.quantities,\n step: result.salesMultiple,\n max: 9990\n }\n })\n\n return (\n <div class={cssModule['actions-section']}>\n <nb-add-to-cart-standalone\n onClick={(evt: Event) => {\n evt.stopPropagation()\n evt.preventDefault()\n }}\n key={buttonId}\n class={cssModule[`cta-${buttonShape}`]}\n data={addToCartData}\n />\n </div>\n )\n}\n\nconst CTAContactSection = ({ result, i18n }: Props) => {\n const ctaData = JSON.stringify({\n variation: 'primary',\n size: '32'\n })\n\n const handleContactUsClick = (event: any) => {\n const skuArgs = {\n id: B2B_CONTACT_FORM_POPIN_ID,\n srcComponent: B2B_CONTACT_FORM_POPIN_SRC_SEARCH,\n productName: result.title\n }\n\n dispatchEvent({ eventName: EVENT_POPIN_OPEN, args: skuArgs, element: event.target })\n }\n\n return (\n <div class={cssModule['actions-section']}>\n <nb-cta class={cssModule['contact']} data={ctaData} onClick={handleContactUsClick}>\n {i18n.t('contact-us')}\n </nb-cta>\n </div>\n )\n}\n\nconst CTAViewDetails = ({ result, i18n }: Props) => {\n const ctaData = JSON.stringify({\n variation: 'primary',\n size: '32',\n link: result.url\n })\n\n return (\n <div class={cssModule['actions-section']}>\n <nb-cta class={cssModule['view-details']} data={ctaData}>\n {i18n.t('view-details')}\n </nb-cta>\n </div>\n )\n}\n\nconst CapsuleItem = (props: Props & { result: { categoryId: 'Capsule' } }) => {\n const { country } = useProductPageContext()\n const trackedNode = useProductImpressionTracking<HTMLDivElement>(props.result)\n const trackProductClick = props.useProductClickTracking(props.result)\n return (\n <div ref={trackedNode} class={cssModule['product-item']}>\n <ImageSection {...props} />\n <TypeSection {...props} />\n <TitleSection trackProductClick={trackProductClick} {...props} />\n {!props.result.bundled && (\n <CupSize {...(props as typeof props & { result: { bundled: false } })} />\n )}\n\n {showPriceSection(props.result) && displayPrice(props.result) ? (\n props.result.bundled ? (\n <SleeveBundlePricingSection\n {...(props as typeof props & { result: { bundled: true } })}\n />\n ) : (\n <SleevePricingSection\n {...(props as typeof props & { result: { bundled: false } })}\n />\n )\n ) : null}\n {isCountryInListToEnableViewDetailsCTA(country) ? (\n <CTAViewDetails {...props} />\n ) : showPriceSection(props.result) && displayPrice(props.result) ? (\n <CTASection {...props} />\n ) : (\n <CTAContactSection {...props} />\n )}\n </div>\n )\n}\n\nfunction isCountryInListToEnableViewDetailsCTA(country: string) {\n const countryList = ['mx', 'pro_mx']\n return countryList.includes(country)\n}\nconst MachineColorsBubble = ({\n activeMachineSku,\n sku,\n colorCss\n}: {\n sku: string\n colorCss: string\n activeMachineSku: Signal<string>\n}) => {\n const selected = sku === activeMachineSku.value\n return (\n <button\n onClick={() => {\n activeMachineSku.value = sku\n }}\n class={cn(\n cssModule['color'],\n selected && cssModule['selected'],\n colorCss === '#ffffff' && cssModule['white']\n )}\n style={{ 'background-color': colorCss }}>\n {selected ? <div class={cssModule['white-circle']} /> : null}\n </button>\n )\n}\n\nconst MachineColorsSection = ({\n result,\n activeMachineSku\n}: Props & { result: { categoryId: 'Machine' }; activeMachineSku: Signal<string> }) => {\n return (\n <div>\n <div class={cssModule['machine-colors']}>\n {result.machineGroup.map(subProps => (\n <MachineColorsBubble\n sku={subProps.sku}\n colorCss={subProps.colorCss}\n activeMachineSku={activeMachineSku}\n />\n ))}\n </div>\n </div>\n )\n}\n\nconst MachineItem = ({\n buttonShape,\n displaySleevePrice,\n priceFormatter,\n conjunctionFormatter,\n i18n,\n result,\n useProductClickTracking,\n ...props\n}: Props & { result: { categoryId: 'Machine' } }) => {\n const activeMachineSku = useSignal(result.machineGroup[0].sku)\n const { country } = useProductPageContext()\n const forwardProps = {\n useProductClickTracking,\n result: {\n ...result.machineGroup.find(d => d.sku === activeMachineSku.value)!,\n machineGroup: result.machineGroup\n },\n buttonShape,\n displaySleevePrice,\n priceFormatter,\n conjunctionFormatter,\n i18n\n }\n const trackProductClick = useProductClickTracking(forwardProps.result)\n const trackedNode = useProductImpressionTracking<HTMLDivElement>(forwardProps.result)\n\n const handleContactUsClick = (event: any) => {\n const skuArgs = {\n id: B2B_CONTACT_FORM_POPIN_ID,\n srcComponent: B2B_CONTACT_FORM_POPIN_SRC_SEARCH,\n productName: result.title\n }\n\n dispatchEvent({ eventName: EVENT_POPIN_OPEN, args: skuArgs, element: event.target })\n }\n\n return (\n <div ref={trackedNode} class={cssModule['product-item']}>\n <ImageSection {...forwardProps} />\n <TypeSection {...forwardProps} />\n <TitleSection trackProductClick={trackProductClick} {...forwardProps} />\n <MachineColorsSection {...forwardProps} activeMachineSku={activeMachineSku} />\n {showPriceSection(forwardProps.result) && displayPrice(forwardProps.result) ? (\n <PricingSection {...forwardProps} />\n ) : null}\n\n {isCountryInListToEnableViewDetailsCTA(country) ? (\n <CTAViewDetails\n result={result}\n useProductClickTracking={useProductClickTracking}\n conjunctionFormatter={conjunctionFormatter}\n i18n={i18n}\n priceFormatter={priceFormatter}\n displaySleevePrice={displaySleevePrice}\n buttonShape={buttonShape}\n />\n ) : showPriceSection(forwardProps.result) && displayPrice(forwardProps.result) ? (\n <CTASection {...forwardProps} />\n ) : (\n <CTAContactSection {...forwardProps} />\n )}\n </div>\n )\n}\n\nconst AccessoryItem = (props: Props & { result: { categoryId: 'Accessory' } }) => {\n const trackedNode = useProductImpressionTracking<HTMLDivElement>(props.result)\n const trackProductClick = props.useProductClickTracking(props.result)\n const { country } = useProductPageContext()\n return (\n <div ref={trackedNode} class={cssModule['product-item']}>\n <ImageSection {...props} />\n <TypeSection {...props} />\n <TitleSection trackProductClick={trackProductClick} {...props} />\n {showPriceSection(props.result) && displayPrice(props.result) ? (\n <PricingSection {...props} />\n ) : null}\n {isCountryInListToEnableViewDetailsCTA(country) ? (\n <CTAViewDetails {...props} />\n ) : showPriceSection(props.result) && displayPrice(props.result) ? (\n <CTASection {...props} />\n ) : (\n <CTAContactSection {...props} />\n )}\n </div>\n )\n}\n\nconst ProductItem = ({ result, ...props }: OptProps & { result: ProductResult | Error }) => {\n const [error, setError] = useState<unknown>(undefined)\n useErrorBoundary(setError)\n if (error || result instanceof Error) {\n console.error(error || result)\n return <div class={cssModule['product-item']}></div>\n }\n if (result.categoryId === 'Capsule') {\n return <CapsuleItem {...props} result={result} />\n }\n if (result.categoryId === 'Machine') {\n return <MachineItem {...props} result={result} />\n }\n return <AccessoryItem {...props} result={result} />\n}\nconst ProductPlaceholder = () => (\n <div class={cn(cssModule['product-item'], cssModule['product-placeholder'])}></div>\n)\n\nconst Products = (props: {\n products: (ProductResult | Error)[]\n useProductClickTracking: Props['useProductClickTracking']\n}) => {\n const searchCtx = useProductPageContext()\n const conjunctionFormatter = useMemo(\n () => new Intl.ListFormat(searchCtx.locale, { style: 'short', type: 'conjunction' }),\n [searchCtx.locale]\n )\n const buttonShape = searchCtx.addToCartShape\n return (\n <>\n {props.products.map(result => (\n <ProductItem\n result={result}\n useProductClickTracking={props.useProductClickTracking}\n buttonShape={buttonShape}\n displaySleevePrice={searchCtx.displaySleevePrice}\n priceFormatter={searchCtx.priceFormatter}\n i18n={searchCtx.i18n}\n conjunctionFormatter={conjunctionFormatter}\n />\n ))}\n </>\n )\n}\n\nconst ProductsContainer = (props: { class: string }) => {\n const { i18n, store, buildUseProductTracking, ...searchCtx } = useProductPageContext()\n const searchResult = searchCtx.searchResults.value\n\n if (searchResult.status === 'rejected') {\n return null\n }\n\n if (searchResult.status === 'pending') {\n return (\n <div class={cn(props.class, cssModule['product-list'])}>\n {Array.from({ length: 15 }, () => (\n <ProductPlaceholder />\n ))}\n </div>\n )\n }\n\n if (searchResult.value.results.length === 0) {\n return (\n <div class={props.class}>\n <NoResults />\n </div>\n )\n }\n\n return (\n <div class={cn(props.class, cssModule['product-list'])}>\n <Products\n useProductClickTracking={buildUseProductTracking(searchResult.value)}\n products={searchResult.value.results}\n />\n </div>\n )\n}\n\nconst Recommendations = () => {\n const { buildUseProductTracking, searchResults, copywriting } = useProductPageContext()\n const searchResult = searchResults.value\n const titleId = useId()\n if (searchResult.status !== 'fulfilled') {\n return null\n }\n\n if (\n !searchResult.value.recommendation ||\n searchResult.value.recommendation.results.length === 0\n ) {\n return null\n }\n\n return (\n <div class={cssModule['recommendation-results']}>\n <h2 id={titleId} class={cssModule['recommendation-label']}>\n {copywriting.recommendationLabel}\n </h2>\n <div aria-labelledby={titleId} class={cn(cssModule['product-list'])}>\n <Products\n useProductClickTracking={buildUseProductTracking(\n searchResult.value.recommendation\n )}\n products={searchResult.value.recommendation.results}\n />\n </div>\n </div>\n )\n}\n\nconst ProductsPanel = () => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n const filterOpen = useSignal(breakpoint.peek() === 'desktop')\n\n useSignalEffect(() => {\n if (breakpoint.value !== 'mobile') {\n return\n }\n filterOpen.value = false\n })\n\n const filterPanelId = useId()\n const filterTriggerId = useId()\n const filterCounter = useSignal({ selected: 0, available: 0 })\n const filtersAvailable = useComputed(() => filterCounter.value.available > 0)\n const filtersCollapsed = useComputed(() => !filterOpen.value || !filtersAvailable.value)\n if (searchCtx.store.tab.value !== 'Products') {\n return null\n }\n\n return (\n <ProductPageContextProvider value={searchCtx as ProductPageEngine}>\n <div\n aria-busy={searchResult.status === 'pending'}\n class={cn(\n cssModule['product-panel'],\n filtersCollapsed.value && cssModule['expanded']\n )}>\n <Notifications class={cssModule['notifications-section']} />\n <div\n class={cn(\n cssModule['filters-trigger-section'],\n !filtersAvailable.value && cssModule['hidden']\n )}>\n <FilterTrigger\n filterCounter={filterCounter}\n panelId={filterPanelId}\n triggerId={filterTriggerId}\n open={filterOpen}\n />\n </div>\n <div\n class={cn(\n cssModule['filters-breadcrumbs-section'],\n !filtersAvailable.value && cssModule['hidden']\n )}>\n <ClearAllButton filterCounter={filterCounter} />\n <FilterBreadcrumb class={cssModule['filters-breadcrumb']} />\n </div>\n <ProductFilters\n filterCounter={filterCounter}\n panelId={filterPanelId}\n triggerId={filterTriggerId}\n open={filterOpen}\n class={cn(cssModule['filters'])}\n />\n <ProductsContainer class={cn(cssModule['product-results'])} />\n <Recommendations />\n <Pagination class={cssModule['pagination']} />\n </div>\n </ProductPageContextProvider>\n )\n}\n\nexport default ProductsPanel\n","import { useErrorBoundary, useId, useState } from 'preact/hooks'\nimport cn from 'classnames'\n\nimport cssModule from './articles.module.css'\nimport { ArticleThumbnailIcon } from '../shared/icons'\nimport { ArticleResult } from '../../engine'\nimport Pagination from './pagination'\nimport { usePageContext } from '.'\nimport NoResults from './no-results'\nimport Notifications from './notifications'\n\nconst ArticleItem = ({\n useArticleTracking,\n result\n}: {\n result: ArticleResult | Error\n useArticleTracking: (result: ArticleResult) => () => void\n}) => {\n const [error, setError] = useState<unknown>(undefined)\n useErrorBoundary(setError)\n if (error || result instanceof Error) {\n console.error(error || result)\n return <div class={cssModule['article-item']}></div>\n }\n const titleId = useId()\n const handleArticleTracking = useArticleTracking(result)\n return (\n <a\n onClick={handleArticleTracking}\n href={result.url}\n rel=\"noopener noreferrer\"\n class={cssModule['article-item']}\n aria-labelledby={titleId}>\n {result.imageUrl ? (\n <div class={cssModule['article-image']}>\n <div class={cssModule['container']}>\n <img src={result.imageUrl} alt={result.title} />\n </div>\n </div>\n ) : (\n <div class={cssModule['article-thumbnail']}>\n <ArticleThumbnailIcon width=\"80\" height=\"81\" />\n </div>\n )}\n <div class={cssModule['article-title-section']}>\n {result.category ? (\n <p class={cssModule['article-category']}>{result.category}</p>\n ) : null}\n <p id={titleId} class={cssModule['article-title']}>\n {result.title}\n </p>\n </div>\n </a>\n )\n}\n\nconst ArticlePlaceholder = () => {\n return (\n <div aria-hidden class={cn(cssModule['article-item'], cssModule['article-placeholder'])} />\n )\n}\n\nconst Articles = () => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n\n if (searchResult.status !== 'fulfilled') {\n return (\n <div class={cn(cssModule['article-list'])}>\n {Array.from({ length: 15 }, () => (\n <ArticlePlaceholder />\n ))}\n </div>\n )\n }\n\n const articleResults = searchResult.value.results as (ArticleResult | Error)[]\n const useArticleTracking = searchCtx.buildUseArticleTracking(searchResult.value)\n if (articleResults.length === 0) {\n return (\n <div>\n <NoResults />\n </div>\n )\n }\n\n return (\n <div class={cn(cssModule['article-list'])}>\n {articleResults.map(result => (\n <ArticleItem useArticleTracking={useArticleTracking} result={result} />\n ))}\n </div>\n )\n}\n\nconst ArticlesPanel = () => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n if (searchCtx.store.tab.value !== 'Articles') {\n return null\n }\n return (\n <div aria-busy={searchResult.status === 'pending'} class={cssModule['article-container']}>\n <Notifications />\n <Articles />\n <Pagination />\n </div>\n )\n}\n\nexport default ArticlesPanel\n","import { useErrorBoundary, useId, useMemo, useState } from 'preact/hooks'\nimport cn from 'classnames'\nimport cssModule from './faqs.module.css'\nimport { escapeForFaq } from '../../shared/escape-for-faqs'\nimport { ChevronDownIcon, ChevronUpIcon } from '../shared/icons'\nimport { FAQResult } from '../../engine'\nimport Pagination from './pagination'\nimport { usePageContext } from '.'\nimport NoResults from './no-results'\nimport Notifications from './notifications'\n\nconst FaqItem = (props: FAQResult | Error) => {\n const [error, setError] = useState<unknown>(undefined)\n useErrorBoundary(setError)\n if (error || props instanceof Error) {\n console.error(error || props)\n return <div class={cssModule['faq-item']}></div>\n }\n const [expanded, setExpanded] = useState(false)\n const triggerId = useId()\n const contentId = useId()\n return (\n <div class={cssModule['faq-item']}>\n <button\n type=\"button\"\n onClick={() => setExpanded(e => !e)}\n id={triggerId}\n aria-expanded={expanded}\n aria-controls={contentId}\n class={cssModule['faq-question']}>\n <span>{props.faqQuestion}</span>\n {expanded ? <ChevronDownIcon aria-hidden /> : <ChevronUpIcon aria-hidden />}\n </button>\n <div\n id={contentId}\n role=\"region\"\n aria-labelledby={triggerId}\n class={cn(cssModule['faq-answer'], !expanded && cssModule['faq-answer-collapsed'])}\n dangerouslySetInnerHTML={{ __html: escapeForFaq(props.faqAnswer) }}\n />\n </div>\n )\n}\n\nconst FaqPlaceholder = () => {\n const filler = useMemo(() => ' '.repeat(20 + 80 * Math.random()), [])\n return (\n <div aria-hidden class={cssModule['faq-item']}>\n <div class={cn(cssModule['faq-question'], cssModule['faq-item-placeholder'])}>\n <span>{filler}</span>\n </div>\n </div>\n )\n}\n\nconst FAQs = () => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n\n if (searchResult.status !== 'fulfilled') {\n return (\n <>\n {Array.from({ length: 15 }, () => (\n <FaqPlaceholder />\n ))}\n </>\n )\n }\n\n const faqResults = searchResult.value.results as (FAQResult | Error)[]\n if (faqResults.length === 0) {\n return <NoResults />\n }\n return (\n <>\n {faqResults.map(props => (\n <FaqItem {...props} />\n ))}\n </>\n )\n}\n\nconst FAQsPanel = () => {\n const searchCtx = usePageContext()\n const searchResult = searchCtx.searchResults.value\n if (searchCtx.store.tab.value !== 'FAQs') {\n return null\n }\n return (\n <div\n class={cssModule['faq-container']}\n aria-busy={searchResult.status === 'pending'}>\n <Notifications />\n <div class={cssModule['faq-list']}>\n <FAQs />\n </div>\n <Pagination />\n </div>\n )\n}\n\nexport default FAQsPanel\n","import cn from 'classnames'\nimport { useId } from 'preact/hooks'\nimport cssModule from './search-page.module.css'\nimport QueryBreadcrumb from './query-summary'\nimport Products from './products/products'\nimport Articles from './articles'\nimport FAQs from './faqs'\nimport { Tab } from '../../engine/shared/types'\nimport { usePageContext } from '.'\n\nconst TabElement = (props: { tab: Tab; panelId: string; id: string }) => {\n const {\n searchResults,\n useInternalLink,\n store,\n copywriting: { tabTitles }\n } = usePageContext()\n const searchResult = searchResults.value\n const link = useInternalLink((s, blankState) => ({\n ...blankState,\n q: s.q,\n tab: props.tab,\n action: 'tabChange'\n }))\n const selected = store.tab.value === props.tab\n return (\n <div class={cssModule['tab']}>\n <a\n id={props.id}\n aria-current={selected}\n role=\"tab\"\n href={selected ? undefined : link.value.url}\n aria-disabled={!selected}\n onClick={selected ? undefined : link.value.handleClick}\n class={cn(cssModule['tab-link'], selected && cssModule['selected'])}>\n {`${tabTitles[props.tab.toLocaleLowerCase() as Lowercase<typeof props.tab>]} `}\n {searchResult.status === 'fulfilled' ? (\n <span>({searchResult.value.tabGroup[props.tab]})</span>\n ) : null}\n </a>\n </div>\n )\n}\n\nconst SearchPage = () => {\n const tabs = [\n { label: 'Products' as Tab, content: <Products /> },\n { label: 'Articles' as Tab, content: <Articles /> },\n { label: 'FAQs' as Tab, content: <FAQs /> }\n ]\n\n return (\n <>\n <div class={cssModule['search-header']}>\n <QueryBreadcrumb />\n <div role=\"tablist\" class={cssModule['tabs']}>\n {tabs.map((tab, index) => {\n const tabId = `tab-${index}`\n const panelId = `panel-${index}`\n return (\n <TabElement key={tabId} tab={tab.label} id={tabId} panelId={panelId} />\n )\n })}\n </div>\n </div>\n\n {tabs.map((tab, index) => {\n const tabId = `tab-${index}`\n const panelId = `panel-${index}`\n return (\n <section key={panelId} aria-labelledby={tabId} role=\"tabpanel\">\n {tab.content}\n </section>\n )\n })}\n </>\n )\n}\n\nexport default SearchPage\n","import createProps from \"@kissui/helpers/src/props.helpers\";\nimport { BarProps, PageProps, anomalousUSMikDevices } from \"../../engine\";\n\nexport type HostProps = {\n copywriting: {\n cup_sizes_volumes: { cup_size: string; volume: string }[];\n recs_label: string;\n facet_titles: {\n nes_prd_roast?: string;\n nes_prd_categories: string;\n nes_prd_technology: string;\n nes_prd_price: string;\n nes_prd_color: string;\n nes_prd_cup_size: string;\n nes_prd_intensity: string;\n nes_prd_tasting_notes: string;\n nes_prd_usage: string;\n };\n tabs_titles: {\n products: string;\n articles: string;\n faqs: string;\n };\n facet_filters_overrides: {\n nes_article_category: {\n recipes: string;\n machine_assistance: string;\n };\n nes_prd_categories: {\n machine: string;\n accessory: string;\n capsule: string;\n };\n nes_prd_technology: {\n vertuo: string;\n original: string;\n pro: string;\n };\n nes_prd_roast?: {\n 1: string,\n 2: string,\n 3: string,\n 4: string,\n 5: string,\n }\n };\n };\n options: {\n add_to_cart_shape: \"square\" | \"round\";\n display_recommendations: boolean;\n display_sleeve_price: boolean;\n /**\n * This is now handled by coveo, as per market request\n * @deprecated\n */\n sleeve_main_price: boolean;\n colors_to_shades: string; // JSON<Record<string, string>>;\n price_ranges: Array<{\n /**\n * @example\n * ```\n * \"0:1000\"\n * ```\n */\n range: `${number}:${number}`;\n label: string\n }>;\n };\n};\n\nexport const initPageProps = (pageAttr: NamedNodeMap) => {\n const pageProps = createProps<HostProps>(pageAttr);\n\n const colorToShade = JSON.parse(\n pageProps.options?.colors_to_shades ?? \"{}\"\n ) as Record<string, string>;\n\n const shadeToColors = Object.entries(colorToShade)\n .reduce((shadeColor, [color, shade]) => {\n shadeColor[shade] ??= [];\n shadeColor[shade].push(color);\n return shadeColor;\n }, {} as Record<string, string[]>);\n\n const { nes_article_category, nes_prd_categories, nes_prd_technology, nes_prd_roast } = pageProps.copywriting.facet_filters_overrides\n\n return {\n shadeToColors,\n displayRecommendations: pageProps.options.display_recommendations,\n displaySleevePrice: pageProps.options.display_sleeve_price,\n sleeveMainPrice: pageProps.options.sleeve_main_price,\n addToCartShape: pageProps.options.add_to_cart_shape,\n cupSizesVolumes: Object.freeze(pageProps.copywriting.cup_sizes_volumes.map(({ cup_size, volume }) => Object.freeze({ cupSize: cup_size, volume }))),\n priceRangeFilterOptions: Object.freeze(pageProps.options.price_ranges.map(v => Object.freeze(v))),\n copywriting: {\n tabTitles: pageProps.copywriting.tabs_titles,\n recommendationLabel: pageProps.copywriting.recs_label,\n articleCategories: {\n \"Recipes\": nes_article_category.recipes,\n \"Machine Assistance\": nes_article_category.machine_assistance\n },\n productTechnologies: {\n \"Vertuo\": nes_prd_technology.vertuo,\n \"Original\": nes_prd_technology.original,\n \"Pro\": nes_prd_technology.pro,\n [anomalousUSMikDevices]: anomalousUSMikDevices,\n },\n productCategories: {\n \"Capsule\": nes_prd_categories.capsule,\n \"Machine\": nes_prd_categories.machine,\n \"Accessory\": nes_prd_categories.accessory,\n },\n productRoasting: nes_prd_roast || {},\n productFiltersTitles: {\n prdCategories: pageProps.copywriting.facet_titles.nes_prd_categories,\n prdTechnologies: pageProps.copywriting.facet_titles.nes_prd_technology,\n prdPrice: pageProps.copywriting.facet_titles.nes_prd_price,\n prdMachineColors: pageProps.copywriting.facet_titles.nes_prd_color,\n prdCupSizes: pageProps.copywriting.facet_titles.nes_prd_cup_size,\n prdIntensity: pageProps.copywriting.facet_titles.nes_prd_intensity,\n prdRoasting: pageProps.copywriting.facet_titles.nes_prd_roast,\n prdTastingNotes: pageProps.copywriting.facet_titles.nes_prd_tasting_notes,\n prdUsages: pageProps.copywriting.facet_titles.nes_prd_usage,\n } as const\n },\n } as const satisfies Omit<PageProps, keyof BarProps>\n}\n","import SearchPage from '../../ui/page/search-page';\nimport { SearchBarHost } from '../search-bar';\nimport { initPageProps } from './props';\n\nexport class SearchPageHost extends HTMLElement {\n private static rendered = false\n connectedCallback() {\n if (SearchPageHost.rendered) { return }\n\n const mountPoint = document.createElement(\"div\")\n\n this.parentElement!.parentElement!.appendChild(mountPoint)\n\n SearchBarHost.renderSearchPage(SearchPage, mountPoint, initPageProps(this.attributes))\n\n SearchPageHost.rendered = true\n }\n}\n\ncustomElements.get(\"nb-search-page\") || customElements.define(\"nb-search-page\", SearchPageHost)\n"],"names":["interpolation","escape","createMicroMarkup","strong","QuerySummary","searchCtx","usePageContext","searchResult","searchResults","value","htmlRef","useRef","useSignalEffect","state","current","scrollIntoView","behavior","block","_jsxs","ref","class","cssModule","children","_jsx","i18n","t","store","q","query","count","status","totalCount","text","queryCorrectedFrom","Fragment","dangerouslySetInnerHTML","__html","buildPages","totalPages","currentPage","result","i","push","unshift","length","nullableResults","last","first","PageEllipsis","className","cn","NumPage","props","useInternalLink","link","s","page","action","href","undefined","url","onClick","handleClick","PrevArrow","Math","max","disabled","LeftArrowIcon","role","NextArrow","min","RightArrowIcon","Pagination","totalPagesSig","useSignal","results","map","PreactContext","createContext","ProductPageContextProvider","Provider","Consumer","useProductPageContext","useContext","isSelectedOrHasResults","entry","selected","isSelected","useFilterCount","field","useComputed","filters","filter","useVanillaConsolidated","urlValues","size","useClearedLink","useToggleLink","rest","v","nextValues","includes","useRemoveLink","countSelected","list","reduce","sum","OptionChip","busy","label","toggleLink","BreadcrumbChip","clearLink","CloseIcon","ClearFacetButton","clearFacetLabel","facetTitle","clearedLink","FilterTrigger","filterCounter","available","id","triggerId","open","panelId","peek","FilterIcon","ClearAllButton","tab","blankState","title","FacetFilter","expanded","defaultExpanded","useId","contentId","expandLabel","hidden","ChevronUpIcon","ChevronDownIcon","contentClass","CategoryChip","copywriting","productCategories","useCategoryFilterValues","consolidated","urlPrdCategories","prdCategories","ProductCategories","cat","CategoryFacet","counter","productFiltersTitles","CategoryBreadcrumbChip","CategoryBreadcrumb","values","_Fragment","TechnologyChip","productTechnologies","useTechnologyFilterValues","urlPrdTechnologies","prdTechnologies","ProductTechnologies","tech","TechnologyFacet","TechnologyBreadcrumbChip","TechnologyBreadcrumb","PriceLine","priceRangeFilterOptions","find","range","CheckIcon","usePriceFilterValues","prdPriceRanges","PriceFacet","prdPrice","PriceBreadcrumbChip","PriceBreadcrumb","MachineColorChip","MachineColorFacet","prdMachineColors","MachineColorBreadcrumbChip","MachineColorBreadcrumb","CupSizeChip","CupSizeFacet","prdCupSizes","CupSizeBreadcrumbChip","CupSizeBreadcrumb","IntensityChip","IntensityFacet","unsortedConsolidated","sort","a","b","Number","prdIntensity","IntensityBreadcrumbChip","IntensityBreadcrumb","RoastingChip","productRoasting","RoastingFacet","prdRoasting","RoastingBreadcrumbChip","RoastingBreadcrumb","TastingNotesChip","TastingNotesFacet","prdTastingNotes","TastingBreadcrumbChip","TastingBreadcrumb","UsagesChip","UsagesFacet","prdUsages","UsageBreadcrumbChip","UsageBreadcrumb","facetConstructors","ProductFilters","counters","sig","Facet","microMarkup","NoResults","breadcrumbConstructors","FilterBreadcrumbs","Breadcrumb","Notifications","notifications","message","escapeForFaq","EVENT_POPIN_OPEN","B2B_CONTACT_FORM_POPIN_ID","B2B_CONTACT_FORM_POPIN_SRC_SEARCH","dispatchEvent","eventName","args","element","window","Error","event","CustomEvent","detail","bubbles","Event","document","createEvent","initEvent","CupSize","cupSizesWithVolume","cupSizes","volume","cup_size","defaultValue","conjunctionFormatter","format","ImageSection","imageUrl","useMemo","imPolicyQuery","createImPolicyQuery","ceil","width","src","alt","loading","TypeSection","category","TitleSection","trackProductClick","PreviousPrice","priceFormatter","previousPrice","previous_price","short","Price","price","SleevePrice","displaySleevePrice","price_per_sleeve_text","CAPSULE_TECHNOLOGY_B2B","sleeveMainPrice","sleeve_price","salesMultiple","sleeve_size","SleevePricePerWeight","capsuleNetWeightG","netWeightKg","pricePerKG","price_per_kilo","SleeveBundlePricePerWeight","capsules","SleeveDescription","sleeves","estimatedSleeves","floor","SleeveBundleDescription","SleevePricingSection","SleeveBundlePricingSection","PricingSection","CTASection","buttonShape","buttonId","sku","addToCartData","JSON","stringify","label_add_to_cart","label_update_cart","quantity_selector","a11y_qs_label","a11y_qs_description","a11y_predefined_quantity","a11y_predefined_description","a11y_add_label","a11y_custom_quantity","a11y_custom_description","label_choose_quantity","label_button_ok","quantities","step","evt","stopPropagation","preventDefault","data","CTAContactSection","ctaData","variation","handleContactUsClick","skuArgs","srcComponent","productName","target","CTAViewDetails","CapsuleItem","country","trackedNode","useProductImpressionTracking","useProductClickTracking","bundled","showPriceSection","displayPrice","isCountryInListToEnableViewDetailsCTA","countryList","MachineColorsBubble","activeMachineSku","colorCss","style","MachineColorsSection","machineGroup","subProps","MachineItem","forwardProps","d","AccessoryItem","ProductItem","error","setError","useState","useErrorBoundary","categoryId","ProductPlaceholder","Products","Intl","ListFormat","locale","type","addToCartShape","products","ProductsContainer","buildUseProductTracking","Array","from","Recommendations","titleId","recommendation","recommendationLabel","ProductsPanel","filterOpen","breakpoint","filterPanelId","filterTriggerId","filtersAvailable","filtersCollapsed","FilterBreadcrumb","ArticleItem","useArticleTracking","handleArticleTracking","rel","ArticleThumbnailIcon","height","ArticlePlaceholder","Articles","articleResults","buildUseArticleTracking","ArticlesPanel","FaqItem","setExpanded","e","faqQuestion","faqAnswer","FaqPlaceholder","filler","repeat","random","FAQs","faqResults","FAQsPanel","TabElement","tabTitles","toLocaleLowerCase","tabGroup","SearchPage","tabs","content","QueryBreadcrumb","index","tabId","initPageProps","pageAttr","pageProps","createProps","colorToShade","parse","options","colors_to_shades","shadeToColors","Object","entries","shadeColor","color","shade","nes_article_category","nes_prd_categories","nes_prd_technology","nes_prd_roast","facet_filters_overrides","displayRecommendations","display_recommendations","display_sleeve_price","sleeve_main_price","add_to_cart_shape","cupSizesVolumes","freeze","cup_sizes_volumes","cupSize","price_ranges","tabs_titles","recs_label","articleCategories","recipes","machine_assistance","vertuo","original","pro","anomalousUSMikDevices","capsule","machine","accessory","facet_titles","nes_prd_price","nes_prd_color","nes_prd_cup_size","nes_prd_intensity","nes_prd_tasting_notes","nes_prd_usage","SearchPageHost","HTMLElement","connectedCallback","rendered","mountPoint","createElement","parentElement","appendChild","SearchBarHost","renderSearchPage","attributes","_SearchPageHost","customElements","get","define"],"mappings":"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"}