{"version":3,"file":"search-bar.es.min.js","sources":["../../../packages/coveo-search/src/tools/promises.ts","../../../packages/coveo-search/src/search-bar/components/faq-modal-trigger.tsx","../../../packages/coveo-search/src/search-bar/components/suggestion-result.tsx","../../../packages/coveo-search/src/search-bar/components/searchbox-instant-results.tsx","../../../packages/coveo-search/src/search-bar/components/close-icon.tsx","../../../packages/coveo-search/src/search-bar/components/faq-modal.tsx","../../../packages/coveo-search/src/search-bar/components/search-bar.tsx","../../../packages/coveo-search/src/search-bar/search-bar.tsx"],"sourcesContent":["import type { Signal } from \"@preact/signals\"\n\nexport const handledPromise = <T>() => {\n const handlers = {} as { resolve: (value: T | PromiseLike<T>) => void }\n const prm = new Promise<T>((resolve) => Object.assign(handlers, { resolve }))\n return Object.assign(prm, handlers)\n}\n\nexport const waitForSignalValue = async <A extends {}, S>(signal: Signal<S>, handler: (value: S) => A | null | undefined) => {\n let unsubscribe: () => void;\n return new Promise<A>((resolve) => {\n unsubscribe = signal.subscribe((value) => {\n const val = handler(value)\n if (!val) { return }\n resolve(val);\n })\n }).finally(() => unsubscribe());\n}","import { Result } from '@coveo/headless';\nimport { Component, Fragment } from \"preact\";\nimport { signal } from \"@preact/signals\";\nimport { initializeBindings, resultContext } from '../coveo-atomic-lazy';\nimport cssText from \"./faq-modal-trigger.css\"\nimport register from \"preact-custom-element\";\n\nconst lazyStylesheet = new CSSStyleSheet().replace(cssText)\n\nexport default class FaqModalTrigger extends Component {\n static tagName = \"cv-faq-modal-trigger\"\n private result = signal<undefined | Result>(undefined);\n private host!: HTMLElement;\n private modalElement!: { openWith: (res: Result) => void };\n\n public async componentDidMount() {\n // TODO USE PREACT CONTEXT for BINDINGS\n this.host = (this as unknown as { __P: HTMLElement }).__P\n const shadowHost = (this.host.getRootNode() as ShadowRoot);\n shadowHost.adoptedStyleSheets = [await lazyStylesheet]\n const bindings = await initializeBindings(this.host);\n this.modalElement = bindings.interfaceElement.querySelector('#cv-faq-modal')! as unknown as { openWith: (res: Result) => void };\n this.host.addEventListener(\"click\", this.openFAQModal)\n this.result.value = await resultContext(this.host) as Result;\n\n }\n componentWillUnmount() {\n this.host.removeEventListener(\"click\", this.openFAQModal)\n }\n private openFAQModal = () => {\n this.modalElement.openWith(this.result.value as any)\n }\n\n public render() {\n const result = this.result.value;\n if (!result) {\n return;\n }\n\n return (\n <Fragment>\n <svg part=\"icon\" width=\"22\" height=\"20\" viewBox=\"0 0 22 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M22 8C22 2.69141 18.2988 0 11 0C3.70117 0 0.000488281 2.69141 0.000488281 8C0.000488281 13.3086 3.70117 16 11 16C12.3369 16 13.5752 15.9072 14.6846 15.7246L19.9242 19.2172L20.8859 18.576L19.3301 13.9092C21.1025 12.5654 22 10.5801 22 8ZM19.5644 17.7754L14.9072 14.6709L14.7099 14.7061C13.6074 14.9014 12.3594 15 11 15C4.27148 15 1.00049 12.71 1.00049 8C1.00049 3.28955 4.27149 1 11 1C17.7285 1 21 3.28955 21 8C21 10.4082 20.1689 12.1436 18.458 13.3037L18.1455 13.5166L19.5644 17.7754Z\" fill=\"#17171A\" />\n <path d=\"M10.4932 12.75C10.9074 12.75 11.2432 12.4142 11.2432 12C11.2432 11.5858 10.9074 11.25 10.4932 11.25C10.0789 11.25 9.74316 11.5858 9.74316 12C9.74316 12.4142 10.0789 12.75 10.4932 12.75Z\" fill=\"#17171A\" />\n <path d=\"M11 3C9.15674 3 8.5 4.2915 8.5 5.5V6H9.5V5.5C9.5 4.81592 9.76025 4 11 4C12.2402 4 12.5 4.81592 12.5 5.5C12.5 6.22363 12.0957 6.58301 11.4355 7.11035C10.7949 7.62256 9.99756 8.25928 9.99317 9.5V10.5H10.9932V9.50244C10.995 8.96088 11.2225 8.62286 11.613 8.26623C11.7443 8.14636 11.8937 8.02429 12.0596 7.8916C12.7012 7.37891 13.5 6.74121 13.5 5.5C13.5 4.2915 12.8428 3 11 3Z\" fill=\"#17171A\" />\n </svg>\n {result.raw.faq_question}\n </Fragment>\n );\n }\n}\n\nregister(FaqModalTrigger)","import { Result } from '@coveo/headless';\nimport { Component, Fragment } from \"preact\";\nimport { signal } from \"@preact/signals\";\nimport cssText from \"./suggestion-result.css\"\nimport register from \"preact-custom-element\";\nimport type { i18n } from '@coveo/atomic';\nimport { waitForSelector } from '@kissui/helpers/src/waitForSelector';\nimport { buildTracking } from '../../tools/tracking';\nimport { whenFirstImpression } from '../../tools/impression';\nimport type { CoveoSearchBarElement } from '../search-bar';\nimport { initializeBindings, resultContext } from '../coveo-atomic-lazy';\n\nconst lazyStylesheet = new CSSStyleSheet().replace(cssText)\n\nconst capitalize = (s: string) => s.replace(/(.)(.*)/, (_, s, t) => `${s.toUpperCase()}${t}`)\n\ntype Suggestion = Result & { position: number; raw: { nes_prd_sku?: string; nes_prd_technology?: string[] } };\n\nexport default class SuggestionResult extends Component {\n static tagName = \"cv-suggestion-result\"\n private result = signal<Suggestion | undefined>(undefined);\n private i18n = signal<undefined | i18n>(undefined)\n\n private host!: Element;\n\n private technologies?: string;\n intersectionObserver?: IntersectionObserver;\n outerButton?: HTMLButtonElement;\n handleImpressionTracking?: () => void;\n handleClickTracking?: () => void;\n\n public async componentDidMount() {\n this.host = (this as unknown as { __P: HTMLElement }).__P\n const shadowHost = (this.host.getRootNode() as ShadowRoot);\n shadowHost.adoptedStyleSheets = [await lazyStylesheet]\n const bindings = await initializeBindings(this.host);\n this.i18n.value = bindings.i18n\n const result = await resultContext(this.host) as Suggestion;\n\n const searchHost = await waitForSelector(\"nb-search-bar\") as CoveoSearchBarElement;\n const sharedProps = await searchHost.getSearchContext();\n const capitalizedTechs = result.raw?.nes_prd_technology?.map(capitalize)\n this.technologies = capitalizedTechs && new Intl.ListFormat(sharedProps.locale, { style: 'short', type: 'conjunction' }).format(capitalizedTechs)\n if (result.raw.nes_prd_sku) {\n const { handleImpressionTracking, handleClickTracking } = await buildTracking(result.raw.nes_prd_sku, \"Search Floating\", result.position)\n this.handleClickTracking = handleClickTracking;\n this.handleImpressionTracking = handleImpressionTracking;\n this.outerButton = (this.host.getRootNode() as ShadowRoot).host.parentNode! as HTMLButtonElement\n this.outerButton.addEventListener(\"click\", this.handleClickTracking)\n this.intersectionObserver = whenFirstImpression(this.host, this.handleImpressionTracking!)\n }\n this.result.value = result;\n }\n public componentWillUnmount() {\n this.intersectionObserver?.disconnect()\n this.outerButton?.removeEventListener(\"click\", this.handleClickTracking!)\n }\n\n public render() {\n const result = this.result.value\n if (!result) {\n return\n }\n return (\n <Fragment>\n {result.raw.nes_prd_image_url ? <div class=\"cv-column\">\n <img alt={result.title} src={result.raw.nes_prd_image_url as string} loading=\"lazy\" />\n </div> : null}\n <div class=\"cv-column\">\n <div class=\"cv-row\" onClick={this.handleClickTracking}>\n <atomic-result-link href-template=\"${raw.nes_instant_results_link}\" />\n </div>\n {this.technologies ? <div class=\"cv-row cv-in-tech\">\n {this.i18n.peek()!.t(\"in_prd_tecnology\", { prd_technology: this.technologies })}\n </div> : null}\n </div>\n </Fragment>\n );\n }\n}\n\nregister(SuggestionResult)","import \"./faq-modal-trigger\";\nimport \"./suggestion-result\";\n\nexport const SearchBoxInstantResults = () => {\n return (\n <atomic-search-box-instant-results max-results-per-query=\"3\">\n <atomic-result-template must-match-commontab=\"Products,Articles\">\n <template dangerouslySetInnerHTML={{\n __html: \"<cv-suggestion-result></cv-suggestion-result>\"\n }} />\n </atomic-result-template>\n <atomic-result-template must-match-commontab=\"FAQs\">\n <template dangerouslySetInnerHTML={{\n __html: \"<cv-faq-modal-trigger></cv-faq-modal-trigger>\"\n }} />\n </atomic-result-template>\n </atomic-search-box-instant-results>\n );\n};","export const CloseIcon = ({ fillRect }: { fillRect: string }) => {\n return (\n <svg\n width=\"48\"\n height=\"49\"\n viewBox=\"0 0 48 49\"\n fill=\"black\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect y=\"0.5\" width=\"48\" height=\"48\" rx=\"24\" fill={fillRect} />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M22.5382 24.5L15 16.9618L16.4618 15.5L24 23.0382L31.5382 15.5L33 16.9618L25.4618 24.5L33 32.0382L31.5382 33.5L24 25.9618L16.4618 33.5L15 32.0382L22.5382 24.5Z\"\n fill=\"#17171A\"\n />\n </svg>\n );\n};","import { Component } from \"preact\";\nimport { signal } from \"@preact/signals\";\nimport type { i18n } from '@coveo/atomic';\nimport { CloseIcon } from './close-icon';\nimport { initializeBindings } from '../coveo-atomic-lazy';\n\nexport type FaqResult = { raw: { faq_question: string, faq_answer: string } }\n\nexport class FaqModal extends Component {\n\n public result = signal<undefined | FaqResult>(undefined);\n private i18n = signal<undefined | i18n>(undefined)\n\n public async componentDidMount() {\n // TODO USE PREACT CONTEXT for BINDINGS\n const parent = (this as unknown as { __P: HTMLElement }).__P\n const bindings = await initializeBindings(parent);\n this.i18n.value = bindings.i18n\n }\n\n openWith = (result: FaqResult) => {\n this.result.value = result;\n }\n private handleClose = () => {\n this.result.value = undefined\n }\n\n public render() {\n const i18n = this.i18n.value\n if (!i18n) {\n return\n }\n\n return (\n <atomic-modal\n ref={(modal) => {\n // SOME STENCILs interop shenannigans\n if (!modal) { return }\n Object.assign(modal, { openWith: this.openWith })\n }}\n id=\"cv-faq-modal\"\n is-open={Boolean(this.result.value)}>\n <div slot=\"header\">\n <div class=\"cv-header-title\"\n dangerouslySetInnerHTML={{\n __html: this.result.value?.raw.faq_question ?? \"\"\n }}\n ></div>\n <div id=\"cv-faq-modal-close\" onClick={this.handleClose}>\n <CloseIcon fillRect=\"white\" />\n </div>\n </div>\n <div slot=\"body\" id=\"cv-faq-modal-body\"\n dangerouslySetInnerHTML={{\n __html: this.result.value?.raw.faq_answer ?? \"\"\n }}\n ></div>\n <div slot=\"footer\">\n <button id=\"cv-faq-modal-close-btn-done\" onClick={this.handleClose}>{i18n.t(\"close\")}</button>\n </div>\n </atomic-modal>\n );\n }\n}\n","import { render, h } from \"preact\";\nimport { computed, effect, signal } from \"@preact/signals\";\nimport { waitForSelector } from \"@kissui/helpers/src/waitForSelector\";\nimport { SearchEngine } from \"../../components\";\nimport { SearchBoxInstantResults } from \"./searchbox-instant-results\";\nimport { CloseIcon } from \"./close-icon\";\nimport { FaqModal } from \"./faq-modal\";\nimport cn from \"classnames\"\nimport type { CoveoSearchBarElement } from \"../search-bar\";\nimport { initializeBindings, manualLoadAtomic, atomicSignal, atomicPromise } from '../coveo-atomic-lazy';\nimport { waitForSignalValue } from \"../../tools/promises\";\n\nexport default class SearchBar extends HTMLElement {\n #mode = signal<\"button\" | \"searchbox\">(\"button\")\n #searchUid = signal(\"\");\n #isDesktop = signal(false);\n #mobileSearchOpened = signal(false);\n #hasQuery = signal(false);\n #atomicInitializationStatus = signal<\"idle\" | \"pending\" | \"fulfilled\">(\"idle\");\n #mainASBInputSignal = signal<null | HTMLInputElement>(null)\n #modalASBInputSignal = signal<null | HTMLInputElement>(null)\n #mainASISignal = signal<null | HTMLAtomicSearchInterfaceElement>(null)\n\n #searchBarMode = computed(() => {\n if (!this.#mainASBInputSignal.value) {\n return \"button\"\n } else if (this.#isDesktop.value) {\n return this.#mode.value\n } else {\n return \"button\"\n }\n })\n\n #loadingStatus = computed(() => {\n const atomicInitializationStatus = this.#atomicInitializationStatus.value;\n const mainASBInputSignal = this.#mainASBInputSignal.value\n const modalASBInputSignal = this.#modalASBInputSignal.value\n if (\n atomicInitializationStatus === \"fulfilled\" &&\n (!mainASBInputSignal ||\n !modalASBInputSignal)\n ) {\n return \"pending\"\n }\n return this.#atomicInitializationStatus.value\n })\n\n #engineUnsubscribe?: () => void\n #atomicUnsubscribe?: () => void\n #closeModalUnsubscribe?: () => void\n #autoOpenUnsubscribe?: () => void\n #resizeUnsubscribe?: () => void\n #zIndexWorkaroundUnsubscribe?: () => void\n #autoLoadUnsubscribe?: () => void\n #loadingStatusUnsubscribe?: () => void\n\n connectedCallback() {\n // preload loading icon\n fetch(\"/shared_res/agility/next-components/assets/icons/24/symbol/status-loading.svg\")\n\n this.#loadingStatusUnsubscribe = effect(()=> {\n this.setAttribute(\"data-loading-status\", this.#loadingStatus.value)\n })\n\n this.#autoOpenUnsubscribe = effect(() => {\n if (this.#hasQuery.value && this.#isDesktop.value) {\n this.#mode.value = \"searchbox\"\n }\n });\n\n this.#zIndexWorkaroundUnsubscribe = effect(() => {\n // z-index workaround\n if (!this.#modalASBInputSignal.value) {\n return\n }\n if (this.#mobileSearchOpened.value) {\n document.querySelector(\".BurgerSwitch\")?.classList.add(\"z_0\");\n } else {\n document.querySelector(\".BurgerSwitch\")?.classList.remove(\"z_0\");\n }\n });\n\n this.#closeModalUnsubscribe = this.#searchUid.subscribe(() => {\n this.#mobileSearchOpened.value = false\n })\n\n this.#atomicUnsubscribe = effect(() => {\n if (atomicSignal.value === \"pending\") {\n this.#atomicInitializationStatus.value = \"pending\";\n }\n })\n\n this.#autoLoadUnsubscribe = effect(() => {\n if (this.#mode.value === \"searchbox\") {\n manualLoadAtomic();\n }\n })\n }\n\n disconnectedCallback() {\n this.#atomicUnsubscribe?.()\n this.#closeModalUnsubscribe?.()\n this.#autoOpenUnsubscribe?.()\n this.#engineUnsubscribe?.();\n this.#resizeUnsubscribe?.();\n this.#zIndexWorkaroundUnsubscribe?.();\n this.#autoLoadUnsubscribe?.();\n this.#loadingStatusUnsubscribe?.();\n render(null, this)\n }\n\n set mode(value: \"button\" | \"searchbox\") {\n this.#mode.value = value\n }\n\n get mode() {\n return this.#mode.peek()\n }\n\n get loadingStatus() {\n return this.#loadingStatus\n }\n\n toggleFromButton = async () => {\n if (!this.#isDesktop.peek()) {\n this.#mobileSearchOpened.value = true;\n }\n await manualLoadAtomic();\n if (this.#isDesktop.peek()) {\n const input = await waitForSignalValue(this.#mainASBInputSignal, (el) => el)\n this.#mode.value = \"searchbox\";\n await waitForSignalValue(this.#mode, (el) => el === \"searchbox\" ? el : null)\n input.focus()\n }\n }\n\n handleCloseModal = () => this.#mobileSearchOpened.value = false;\n\n checkDesktop = () => this.#isDesktop.value = window.innerWidth > 996;\n\n public async init(\n onMount: () => void,\n onInitialized: (asi: HTMLAtomicSearchInterfaceElement & { engine: SearchEngine }) => void\n ) {\n const searchBar = await waitForSelector(\"nb-search-bar\") as CoveoSearchBarElement;\n const sharedProps = await searchBar.getSearchContext();\n\n atomicPromise\n .then(async () => {\n const asi = await waitForSignalValue(this.#mainASISignal, el => el)\n return initializeBindings(asi)\n }).then(async (bindings) => {\n this.#atomicInitializationStatus.value = \"fulfilled\";\n this.#engineUnsubscribe = bindings.engine.subscribe(() => {\n this.#hasQuery.value = Boolean(bindings.engine.state.search.searchResponseId && bindings.engine.state.query?.q)\n this.#searchUid.value = bindings.engine.state.search.response.searchUid\n })\n })\n\n this.checkDesktop()\n\n window.addEventListener(\"resize\", this.checkDesktop);\n\n const handleASIMount = async (el: null | HTMLAtomicSearchInterfaceElement) => {\n if (!el) { return }\n this.#mainASISignal.value = el\n await atomicPromise\n onMount()\n const { initRootInterface } = await import(\"../initialization\");\n await initRootInterface(sharedProps, el)\n onInitialized(el as HTMLAtomicSearchInterfaceElement & { engine: SearchEngine })\n }\n\n return render(\n h(() => {\n return <>\n <atomic-search-interface\n ref={handleASIMount}\n id=\"searchbox\"\n search-hub={sharedProps.search_hub}\n language={sharedProps.lang}\n >\n {this.#atomicInitializationStatus.value === \"fulfilled\" ? <>\n <atomic-search-box\n id=\"search-bar-searchbox\"\n number-of-queries=\"5\"\n ref={async (asb) => {\n if (!asb) { return }\n await waitForSelector(\"atomic-search-box#search-bar-searchbox.hydrated\", this);\n this.#mainASBInputSignal.value = await waitForSelector(\"[part=input]\", asb.shadowRoot as any) as HTMLInputElement\n }}\n redirection-url={sharedProps.inSearchPage ? undefined : sharedProps.search_page_url}\n class={cn([\"hydrated\", this.#searchBarMode.value === \"button\" && \"cv-hidden\"])}\n >\n <SearchBoxInstantResults />\n </atomic-search-box>\n <FaqModal />\n <atomic-modal\n id=\"search-box-modal\"\n fullscreen\n style={{ display: this.#mobileSearchOpened.value ? \"inherit\" : \"none\" }}\n is-open={this.#mobileSearchOpened.value}\n >\n <div slot=\"header\">\n <div class=\"cv-header-title\">{sharedProps.search_box_modal_title}</div>\n <div id=\"search-box-modal-close\" onClick={this.handleCloseModal}>\n <CloseIcon fillRect=\"#C5C5C5\" />\n </div>\n </div>\n <div slot=\"body\">\n <atomic-search-box\n id=\"search-modal-searchbox\"\n ref={async (asb) => {\n if (!asb) { return }\n await waitForSelector(\"atomic-search-box#search-modal-searchbox.hydrated\", this);\n this.#modalASBInputSignal.value = await waitForSelector(\"[part=input]\", asb.shadowRoot as any) as HTMLInputElement\n }}\n number-of-queries=\"5\"\n redirection-url={sharedProps.inSearchPage ? undefined : sharedProps.search_page_url}\n >\n <SearchBoxInstantResults />\n </atomic-search-box>\n </div>\n <div slot=\"footer\"></div>\n </atomic-modal>\n </> : null}\n </atomic-search-interface>\n <button\n aria-busy={this.#loadingStatus.value === \"pending\"}\n id=\"search-bar-button\"\n onClick={this.toggleFromButton}\n class={cn([\"search-bar-button\", this.#searchBarMode.value === \"searchbox\" && \"cv-hidden\"])}\n >\n <nb-loader class={cn(this.#loadingStatus.value !== \"pending\" && \"cv-hidden\")} />\n <svg\n class={cn(\"cv-search-icon\", this.#loadingStatus.value === \"pending\" && \"cv-hidden\")}\n width=\"30\"\n height=\"29\"\n viewBox=\"0 0 30 29\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"11.8151\" cy=\"11.652\" r=\"10.8182\" fill=\"white\" />\n <path\n d=\"M19.9718 21.9014C19.5812 21.5109 19.5812 20.8778 19.9718 20.4872L20.6789 19.7801C21.0694 19.3896 21.7026 19.3896 22.0931 19.7801L28.1035 25.7905C28.6893 26.3763 28.6893 27.3261 28.1035 27.9119V27.9119C27.5177 28.4976 26.5679 28.4976 25.9822 27.9119L19.9718 21.9014Z\"\n fill=\"white\"\n />\n </svg>\n <span class=\"text\">{sharedProps.coveo_copywriting[\"search\"]}</span>\n </button>\n </>\n }, null)\n , this)\n }\n}\n\ncustomElements.get(\"cv-search-bar\") || customElements.define(\"cv-search-bar\", SearchBar)","import { render } from \"preact\";\nimport createProps from \"@kissui/helpers/src/props.helpers\";\nimport { getLangCode, getMarketCode } from \"@kissui/helpers/src/dataLayer\";\nimport { waitForSelector } from \"@kissui/helpers/src/waitForSelector\";\nimport { getCurrency } from \"@kissui/helpers/src/getCurrency\";\nimport type { PageProps } from \"../search-page/search-page\";\nimport { coveo_copywriting as defaultCoveoCopywriting } from \"./schema-copywriting.mjs\";\nimport type { SearchEngine } from \"@coveo/headless\";\nimport { handledPromise } from \"../tools/promises\";\nimport \"./components/search-bar\";\nimport \"../style/search-bar.css\"\nimport '../tools/css-stylesheet-polyfill';\nimport componentStaticConfig from \"./component.json\"\n\nconst withParam = (absoluteUrl: string) =>\n `${absoluteUrl}${new URL(window.location.toString()).search}`;\n\nconst getAbsoluteSearchPageUrl = ({\n searchPageUrl,\n country,\n lang\n}: {\n searchPageUrl: string;\n country: string;\n lang: string;\n}) => {\n if (new RegExp(`^/${lang}`).test(searchPageUrl))\n throw new Error(`[search_page_url] cant start with \"${lang}\"`);\n if (new RegExp(`^/${country}/${lang}`).test(searchPageUrl))\n throw new Error(`[search_page_url] cant start with \"${country}/${lang}\"`);\n if (new RegExp(`^/${country}`).test(searchPageUrl))\n throw new Error(`[search_page_url] cant start with \"${country}\"`);\n\n const currentUrl = window.location.pathname;\n\n if (new RegExp(`^/${country}/${lang}`).test(currentUrl)) {\n return `/${country}/${lang}${searchPageUrl}`;\n }\n\n if (new RegExp(`^/${country}`).test(currentUrl)) {\n return `/${country}${searchPageUrl}`;\n }\n return searchPageUrl;\n};\n\nconst getPageProps = async ({\n search_page_url\n}: {\n search_page_url: string;\n}): Promise<PageProps | void> => {\n if (withParam(window.location.pathname) !== search_page_url) {\n return Promise.resolve();\n }\n const page = await waitForSelector(\"nb-search-page\");\n return createProps<PageProps>(page.attributes);\n};\n\nexport type SearchContext = {\n inSearchPage: boolean;\n lang: string;\n country: string;\n locale: string;\n currency: string;\n website: string;\n sitename: string;\n context_website: string;\n context_sitename: string;\n search_hub: string;\n search_page_url: string;\n search_box_modal_title: string;\n colors_to_shades: Record<string, string>;\n coveo_copywriting: Record<string, string>;\n recommendation_label?: PageProps[\"copywriting\"][\"recs_label\"];\n skuToCapsuleNetWeightG: Record<string, number>;\n skuToStrikethroughPrice: Record<string, number>;\n skuToNewPrice: Record<string, number>;\n facet_filters_overrides?: PageProps[\"copywriting\"][\"facet_filters_overrides\"];\n display_sleeve_price?: PageProps[\"options\"][\"display_sleeve_price\"];\n /**\n * @deprecated now this will be handled by Coveo\n */\n sleeve_main_price?: PageProps[\"options\"][\"sleeve_main_price\"];\n add_to_cart_shape?: PageProps[\"options\"][\"add_to_cart_shape\"];\n cup_sizes_volumes?: PageProps[\"copywriting\"][\"cup_sizes_volumes\"];\n};\n\ntype Props = {\n /**\n * JSON Record<string, string>\n * @deprecated\n */\n coveo_copywriting_parsed: string;\n /**\n JSON Record<string, string>\n */\n coveo_copywriting: string;\n copywriting: {\n search_box_modal_title: string;\n search_page_url: string;\n };\n};\n\nexport class CoveoSearchBarElement extends HTMLElement {\n public static skuToCapsuleNetWeightG?: Record<string, number>;\n public static skuToStrikethroughPrice?: Record<string, number>;\n public static skuToNewPrice?: Record<string, number>;\n\n public async getSearchContext(): Promise<SearchContext> {\n if (CoveoSearchBarElement.initPromise === undefined) {\n return Promise.reject(new Error(\"nb-search-bar is not mounted\"));\n }\n return CoveoSearchBarElement.initPromise;\n }\n\n public async getSearchInterface(): Promise<HTMLAtomicSearchInterfaceElement & { engine: SearchEngine }> {\n return CoveoSearchBarElement.searchInterfaceInitialized;\n }\n\n public async isSearchInterfaceMounted(): Promise<void> {\n return CoveoSearchBarElement.searchInterfaceMounted;\n }\n\n private static initPromise?: Promise<SearchContext>;\n private static searchInterfaceInitialized = handledPromise<HTMLAtomicSearchInterfaceElement & { engine: SearchEngine }>()\n private static searchInterfaceMounted = handledPromise<void>()\n private props!: Props;\n\n connectedCallback() {\n if (CoveoSearchBarElement.initPromise) {\n return\n }\n this.props = createProps(this.attributes);\n CoveoSearchBarElement.initPromise = this.init();\n CoveoSearchBarElement.initPromise.then(this.mount.bind(this));\n }\n\n async mount() {\n const customerHeader = await waitForSelector(\n \".Header__top-wrapper .Header__customer\",\n document.getElementById(\"top\")!\n );\n\n const searchboxEl = document.createElement(\"div\");\n searchboxEl.classList.add(\"cv-search-host\");\n\n customerHeader.insertBefore(\n searchboxEl,\n customerHeader.firstChild\n );\n\n render(<cv-search-bar ref={r => {\n if (!r) { return }\n r.init(\n () => CoveoSearchBarElement.searchInterfaceMounted.resolve(),\n (asi) => CoveoSearchBarElement.searchInterfaceInitialized.resolve(asi))\n }}\n />, searchboxEl)\n };\n\n async init(): Promise<SearchContext> {\n const { internal_config: { individual_lang_pipeline } } = componentStaticConfig\n const lang = getLangCode();\n const country = getMarketCode();\n const upperCaseCountry = country.toUpperCase();\n const upperCaseLang = lang.toUpperCase();\n const locale = `${lang}-${upperCaseCountry}`;\n const currency = getCurrency();\n const website = `Nespresso_${upperCaseCountry}`;\n const sitename = website;\n const context_website = website;\n const context_sitename = website;\n const search_hub = individual_lang_pipeline.includes(country)\n ? `Nespresso_${upperCaseCountry}_${upperCaseLang}_Search`\n : `Nespresso_${upperCaseCountry}_Search`;\n\n const search_page_url = withParam(\n getAbsoluteSearchPageUrl({\n searchPageUrl: this.props.copywriting.search_page_url.replace(\n /^(\\w)/,\n `/$1`\n ),\n lang,\n country\n })\n );\n\n const pageProps = await getPageProps({ search_page_url });\n\n const colors_to_shades = JSON.parse(\n pageProps?.options?.colors_to_shades ?? \"{}\"\n ) as Record<string, string>;\n\n // TODO remove coveo_copywriting_parsed;\n const coveo_copywriting = Object.assign(\n {},\n defaultCoveoCopywriting,\n JSON.parse(\n this.props.coveo_copywriting_parsed ?? this.props.coveo_copywriting\n )\n );\n\n return Object.assign(\n {\n inSearchPage: Boolean(pageProps),\n search_box_modal_title: this.props.copywriting.search_box_modal_title,\n lang,\n country,\n locale,\n currency,\n website,\n sitename,\n context_website,\n context_sitename,\n search_hub,\n search_page_url,\n colors_to_shades,\n coveo_copywriting,\n recommendation_label: pageProps?.copywriting.recs_label,\n display_sleeve_price: pageProps?.options?.display_sleeve_price,\n sleeve_main_price: pageProps?.options?.sleeve_main_price,\n add_to_cart_shape: pageProps?.options?.add_to_cart_shape,\n cup_sizes_volumes: pageProps?.copywriting.cup_sizes_volumes,\n facet_filters_overrides: pageProps?.copywriting.facet_filters_overrides\n },\n {\n skuToCapsuleNetWeightG: CoveoSearchBarElement.skuToCapsuleNetWeightG ?? {},\n skuToStrikethroughPrice: CoveoSearchBarElement.skuToStrikethroughPrice ?? {},\n skuToNewPrice: CoveoSearchBarElement.skuToNewPrice ?? {}\n }\n );\n }\n}\n\ncustomElements.get(\"nb-search-bar\") || customElements.define(\"nb-search-bar\", CoveoSearchBarElement)\n"],"names":["handledPromise","handlers","prm","Promise","resolve","Object","assign","waitForSignalValue","signal","handler","unsubscribe","subscribe","value","val","finally","lazyStylesheet","CSSStyleSheet","replace","cssText","FaqModalTrigger","Component","result","undefined","openFAQModal","modalElement","openWith","componentDidMount","host","__P","shadowHost","getRootNode","adoptedStyleSheets","bindings","initializeBindings","interfaceElement","querySelector","addEventListener","resultContext","componentWillUnmount","removeEventListener","render","_jsxs","Fragment","children","part","width","height","viewBox","fill","xmlns","_jsx","d","raw","faq_question","tagName","register","capitalize","s","_","t","toUpperCase","SuggestionResult","i18n","sharedProps","waitForSelector","getSearchContext","capitalizedTechs","nes_prd_technology","map","technologies","Intl","ListFormat","locale","style","type","format","nes_prd_sku","handleImpressionTracking","handleClickTracking","buildTracking","position","outerButton","parentNode","intersectionObserver","whenFirstImpression","disconnect","nes_prd_image_url","class","alt","title","src","loading","onClick","peek","prd_technology","SearchBoxInstantResults","dangerouslySetInnerHTML","__html","CloseIcon","fillRect","y","rx","FaqModal","handleClose","parent","ref","modal","id","Boolean","slot","faq_answer","SearchBar","HTMLElement","#mode","#searchUid","#isDesktop","#mobileSearchOpened","#hasQuery","#atomicInitializationStatus","#mainASBInputSignal","#modalASBInputSignal","#mainASISignal","#searchBarMode","computed","#loadingStatus","atomicInitializationStatus","mainASBInputSignal","modalASBInputSignal","toggleFromButton","manualLoadAtomic","input","el","focus","handleCloseModal","checkDesktop","window","innerWidth","#engineUnsubscribe","#atomicUnsubscribe","#closeModalUnsubscribe","#autoOpenUnsubscribe","#resizeUnsubscribe","#zIndexWorkaroundUnsubscribe","#autoLoadUnsubscribe","#loadingStatusUnsubscribe","connectedCallback","fetch","effect","setAttribute","document","classList","add","remove","atomicSignal","disconnectedCallback","mode","loadingStatus","init","onMount","onInitialized","atomicPromise","then","asi","engine","state","search","searchResponseId","query","q","response","searchUid","handleASIMount","initRootInterface","h","_Fragment","search_hub","language","lang","asb","shadowRoot","inSearchPage","search_page_url","cn","fullscreen","display","search_box_modal_title","cx","cy","r","coveo_copywriting","customElements","get","define","withParam","absoluteUrl","URL","location","toString","getAbsoluteSearchPageUrl","searchPageUrl","country","RegExp","test","Error","currentUrl","pathname","getPageProps","page","createProps","attributes","CoveoSearchBarElement","initPromise","reject","getSearchInterface","searchInterfaceInitialized","isSearchInterfaceMounted","searchInterfaceMounted","props","mount","bind","customerHeader","getElementById","searchboxEl","createElement","insertBefore","firstChild","internal_config","individual_lang_pipeline","componentStaticConfig","getLangCode","getMarketCode","upperCaseCountry","upperCaseLang","currency","getCurrency","website","sitename","context_website","context_sitename","includes","copywriting","pageProps","colors_to_shades","JSON","parse","options","defaultCoveoCopywriting","coveo_copywriting_parsed","recommendation_label","recs_label","display_sleeve_price","sleeve_main_price","add_to_cart_shape","cup_sizes_volumes","facet_filters_overrides","skuToCapsuleNetWeightG","skuToStrikethroughPrice","skuToNewPrice","_CoveoSearchBarElement"],"mappings":"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"}