{"version":3,"file":"error-ffd3a631.js","sources":["../../../../src/scripts/coveo/components/searchbox.tsx","../../../../src/scripts/coveo/components/did-you-mean.tsx","../../../../src/scripts/react-components/listing-states/error.tsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n FunctionComponent,\n useId,\n useRef\n} from 'react';\nimport { rovingIndex } from 'roving-ux';\nimport { SearchBox as HeadlessSearchBox } from '@coveo/headless';\n\ninterface SearchBoxProps {\n controller: HeadlessSearchBox;\n searchLabel: string;\n searchPlaceholder: string;\n submitLabel: string;\n clearLabel: string;\n maxSuggestions?: number;\n onSearchSubmit?: (value: string, type?: string) => void;\n}\n\nexport const SEARCH_BOX_EVENTS = Object.freeze({\n updateDidYouMean: 'searchbox:updateDidYouMean'\n});\n\nexport const SearchBox: FunctionComponent<SearchBoxProps> = props => {\n const id = useId();\n const {\n controller,\n searchLabel,\n searchPlaceholder,\n submitLabel,\n clearLabel,\n maxSuggestions,\n onSearchSubmit\n } = props;\n const [state, setState] = useState(controller.state);\n const [value, setValue] = useState(controller.state.value);\n const [focus, setFocus] = useState(false);\n const listRef = useRef<HTMLUListElement>(null);\n const input = useRef<HTMLInputElement>(null);\n\n const isEnterKey = (e: React.KeyboardEvent<HTMLDivElement>) =>\n e.key === 'Enter';\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (input.current === document.activeElement) {\n if (isEnterKey(e)) {\n e.preventDefault();\n onSearchSubmit && onSearchSubmit(value, 'search box');\n controller.updateText(value);\n setFocus(false);\n controller.submit();\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n if (listRef.current) {\n if (e.key === 'ArrowDown') {\n const firstElement = listRef.current.querySelector('li');\n if (firstElement) {\n firstElement.querySelector('button')?.focus();\n setFocus(true);\n }\n } else {\n const lastElement = listRef.current.querySelector('li:last-child');\n if (lastElement) {\n (lastElement as HTMLLIElement).querySelector('button')?.focus();\n setFocus(true);\n }\n }\n }\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n setFocus(false);\n input.current?.blur();\n }\n } else if (e.key === 'Escape') {\n e.preventDefault();\n input.current?.focus();\n setFocus(false);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.value.length > 2) {\n controller.updateText(e.target.value);\n setFocus(true);\n }\n\n if (e.target.value.length === 0) {\n handleClear();\n }\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n if (e.target.value.length > 2) {\n controller.updateText(e.target.value);\n }\n };\n\n const handleSuggestionClick = (value: string) => {\n onSearchSubmit && onSearchSubmit(value, 'suggestion box');\n setValue(value);\n controller.selectSuggestion(value);\n };\n\n const handleMouseDown = (e: Event) => {\n if ((e.target as HTMLElement)?.closest('.searchbox__input-wrapper')) {\n return;\n } else {\n setFocus(false);\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLElement>) => {\n if (\n !(e.relatedTarget as HTMLElement)?.closest('.searchbox__input-wrapper')\n ) {\n setFocus(false);\n }\n };\n\n const handleDidYouMean = (e: CustomEventInit) => {\n const query = e.detail.query;\n setValue(query);\n onSearchSubmit && onSearchSubmit(query);\n };\n\n const handleClear = (e?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e?.preventDefault();\n setValue('');\n onSearchSubmit && onSearchSubmit('');\n controller.updateText('');\n controller.submit();\n };\n\n const handleSearchSubmit = (value: string) => {\n onSearchSubmit && onSearchSubmit(value, 'search box');\n controller.updateText(value);\n setFocus(false);\n controller.submit();\n };\n\n useEffect(() => {\n controller.subscribe(() => setState(controller.state));\n window.addEventListener(\n SEARCH_BOX_EVENTS.updateDidYouMean,\n handleDidYouMean\n );\n window.addEventListener('mousedown', e => handleMouseDown(e));\n\n return () => {\n window.removeEventListener(\n SEARCH_BOX_EVENTS.updateDidYouMean,\n handleDidYouMean\n );\n\n window.removeEventListener('mousedown', e => handleMouseDown(e));\n };\n }, []);\n\n useEffect(() => {\n if (!value) {\n setValue(state.value);\n onSearchSubmit && onSearchSubmit(state.value);\n }\n }, [state.value]);\n\n useEffect(() => {\n if (listRef.current) {\n rovingIndex({\n element: listRef.current,\n target: '.predictive-search__item'\n });\n }\n }, [state.suggestions]);\n\n return (\n <div\n className=\"searchbox\"\n onKeyDown={e => {\n handleKeyDown(e);\n }}\n >\n <div className=\"field \">\n <label className=\"field__label \" htmlFor={`searchbox-${id}`}>\n {searchLabel}\n </label>\n <div className=\"searchbox__input-wrapper\">\n <input\n className=\"field__input\"\n id={`searchbox-${id}`}\n name={`searchbox-${id}`}\n placeholder={searchPlaceholder}\n value={value}\n onChange={handleChange}\n onInput={handleInputChange}\n onFocus={() => setFocus(true)}\n ref={input}\n />\n {state.suggestions.length > 0 && value.length > 2 && focus && (\n <ul\n className=\"predictive-search__list\"\n ref={listRef}\n onFocus={() => setFocus(true)}\n onBlur={handleInputBlur}\n >\n {state.suggestions.map((suggestion, index) => {\n const value = suggestion.rawValue;\n if (maxSuggestions && index >= maxSuggestions - 1) {\n return null;\n }\n return (\n <li key={value}>\n <button\n className=\"predictive-search__item\"\n title={suggestion.rawValue}\n onClick={() => handleSuggestionClick(value)}\n dangerouslySetInnerHTML={{\n __html: suggestion.highlightedValue\n }}\n onFocus={() => {\n setFocus(true);\n }}\n />\n </li>\n );\n })}\n </ul>\n )}\n </div>\n {value.length > 0 && (\n <button\n className=\"field__input-close\"\n title={clearLabel}\n onClick={handleClear}\n >\n <span className=\"sr-only\">{clearLabel}</span>\n </button>\n )}\n <button\n className=\"field__input-search\"\n title={searchLabel}\n onClick={() => handleSearchSubmit(value)}\n disabled={state.value.length === 0}\n onBlur={e => handleInputBlur(e)}\n >\n <span className=\"sr-only\">{submitLabel}</span>\n </button>\n </div>\n </div>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport {\n DidYouMean,\n buildDidYouMean,\n QuerySummary,\n SearchEngine,\n ResultList,\n SearchBox\n} from '@coveo/headless';\nimport { ExtendedWindowType, headlessEngine } from '../engine';\nimport { labelsObj, querySummary } from '../controllers/controller';\nimport { SEARCH_BOX_EVENTS } from './searchbox';\n\nexport const SITE_TYPES = Object.freeze({\n searchListing: 'search-listing',\n documentListing: 'document-listing'\n});\n\nconst REPLACE_PLACEHOLDERS = Object.freeze({\n queryPlaceholder: '{{query}}',\n total: '{{totalResults}}'\n});\n\ntype DidYouMeanProps = {\n correctionOnly?: boolean;\n hideOnNoResults?: boolean;\n siteType?: string;\n resultController?: ResultList;\n searchBoxController?: SearchBox;\n searchType?: string;\n};\n\nconst DidYouMean = ({\n correctionOnly,\n hideOnNoResults,\n siteType,\n resultController,\n searchBoxController,\n searchType\n}: DidYouMeanProps) => {\n const controller: DidYouMean = buildDidYouMean(\n headlessEngine as SearchEngine\n );\n const [state, setState] = useState(controller.state);\n const [summaryState, setSummaryState] = useState(\n (querySummary as QuerySummary).state\n );\n\n useEffect(() => {\n controller.subscribe(() => setState(controller.state));\n (querySummary as QuerySummary).subscribe(() =>\n setSummaryState((querySummary as QuerySummary).state)\n );\n }, []);\n\n useEffect(() => {\n if (\n resultController?.state.searchResponseId &&\n searchBoxController?.state.value &&\n siteType === SITE_TYPES.searchListing\n ) {\n const global = window as ExtendedWindowType;\n\n const resultsCount = (querySummary as QuerySummary).state.total;\n const searchTerm = state.originalQuery;\n const didYouMeanKeyword = state.queryCorrection?.correctedQuery;\n\n global?.dataLayer.push({\n event: 'results_viewed',\n event_category: 'results page viewed',\n event_action: 'internal search',\n event_attributes: {\n results_count: resultsCount,\n search_term: searchTerm,\n did_you_mean_keyword: didYouMeanKeyword,\n search_type: searchType\n }\n });\n }\n\n if (\n resultController?.state.searchResponseId &&\n searchBoxController?.state.value &&\n siteType === SITE_TYPES.documentListing\n ) {\n const global = window as ExtendedWindowType;\n\n global.dataLayer?.push({\n event_action: resultController.state.hasResults ? 'success' : 'failure',\n event_attributes: {\n results_count: (querySummary as QuerySummary).state.total,\n search_term: state.originalQuery,\n search_type: searchType\n },\n event_category: 'site search',\n event: 'document_library_search'\n });\n }\n }, [resultController?.state.searchResponseId]);\n\n if (state?.originalQuery.length === 0) {\n return <></>;\n }\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n e.preventDefault();\n controller.applyCorrection();\n window.dispatchEvent(\n new CustomEvent(SEARCH_BOX_EVENTS.updateDidYouMean, {\n detail: {\n query: state?.queryCorrection?.correctedQuery\n },\n bubbles: true\n })\n );\n };\n\n return (\n <>\n <div\n className={`did-you-mean ${\n hideOnNoResults && summaryState.total === 0\n ? 'did-you-mean--hidden'\n : ''\n }`}\n >\n {!correctionOnly && (\n <p className=\"did-you-mean__search\">{`${labelsObj.didYouMeanSearch\n .replace(\n REPLACE_PLACEHOLDERS.queryPlaceholder,\n state?.originalQuery\n )\n .replace(REPLACE_PLACEHOLDERS.total, summaryState?.total)}`}</p>\n )}\n {state.hasQueryCorrection && (\n <p className=\"did-you-mean__correction\">\n <span>{labelsObj.didYouMeanCorrection}</span>{' '}\n <button className=\"link--inline link--arrow\" onClick={handleClick}>\n <span>{state?.queryCorrection?.correctedQuery}</span>\n <p className=\"did-you-mean__question-mark\">?</p>\n </button>\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default DidYouMean;\n","import React from 'react';\nimport DidYouMean from '../../coveo/components/did-you-mean';\n\nexport type ErrorProps = {\n errorMessage: string;\n noResultsMessage: string;\n noResultsKeywordMessage: string;\n noResultsAdditionalMessage?: string;\n keyword?: string;\n showError?: boolean;\n withDidYouMean?: boolean;\n};\n\nfunction Error({\n errorMessage,\n noResultsMessage,\n noResultsKeywordMessage,\n noResultsAdditionalMessage,\n keyword,\n showError,\n withDidYouMean\n}: ErrorProps) {\n return (\n <div className=\"error-message\">\n {showError ? (\n <div\n className=\"error-message__error rtf\"\n dangerouslySetInnerHTML={{ __html: errorMessage }}\n />\n ) : (\n <>\n {keyword ? (\n <div className=\"error-message__error\">\n {noResultsKeywordMessage.replace('{{KEYWORD}}', keyword)}\n </div>\n ) : (\n <div className=\"error-message__error\">{noResultsMessage}</div>\n )}\n {withDidYouMean && <DidYouMean correctionOnly={true} />}\n {noResultsAdditionalMessage && (\n <div\n className=\"error-message__additional-message rtf\"\n dangerouslySetInnerHTML={{ __html: noResultsAdditionalMessage }}\n />\n )}\n </>\n )}\n </div>\n );\n}\n\nexport default Error;\n"],"names":["SEARCH_BOX_EVENTS","SearchBox","props","id","useId","controller","searchLabel","searchPlaceholder","submitLabel","clearLabel","maxSuggestions","onSearchSubmit","state","setState","useState","value","setValue","focus","setFocus","listRef","useRef","input","isEnterKey","handleKeyDown","firstElement","_a","lastElement","_b","_c","_d","handleInputChange","handleClear","handleChange","handleSuggestionClick","handleMouseDown","handleInputBlur","handleDidYouMean","query","handleSearchSubmit","useEffect","rovingIndex","React","suggestion","index","SITE_TYPES","REPLACE_PLACEHOLDERS","DidYouMean","correctionOnly","hideOnNoResults","siteType","resultController","searchBoxController","searchType","buildDidYouMean","headlessEngine","summaryState","setSummaryState","querySummary","global","resultsCount","searchTerm","didYouMeanKeyword","handleClick","e","labelsObj","Error","errorMessage","noResultsMessage","noResultsKeywordMessage","noResultsAdditionalMessage","keyword","showError","withDidYouMean"],"mappings":"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"}