{"version":3,"file":"./modules/SearchResult.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/SearchInput.ts","webpack:///../../../node_modules/rxjs/_esm5/internal/observable/iif.js","webpack:///../../../node_modules/rxjs/_esm5/internal/observable/defer.js","webpack:///./modules/SearchResult.ts","webpack:///./modules/SearchAutoSuggestion.ts","webpack:///../../../node_modules/rxjs/_esm5/internal/operators/pluck.js"],"sourcesContent":["import { focusInput } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"SearchInput\"]';\r\n\r\nexport default class SearchInput {\r\n\r\n private searchClearIcon: HTMLElement;\r\n private searchInput: HTMLInputElement;\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new SearchInput(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.searchClearIcon = this.element.querySelector('.nx-search-input-clear__icon');\r\n this.searchInput = this.element.querySelector('.nx-search-input__text');\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.searchInput.addEventListener('input', (event) => {\r\n this.checkEmpty();\r\n });\r\n\r\n this.searchClearIcon.addEventListener('click', (event: Event) => {\r\n this.clearInput();\r\n });\r\n\r\n this.setValueToInput();\r\n\r\n if (this.searchInput.value) {\r\n this.searchClearIcon.classList.add('nx-search-input-clear__icon--show');\r\n }\r\n\r\n if (this.element.closest('.nx-layer')) setTimeout(() => focusInput(this.searchInput), 0);\r\n }\r\n\r\n checkEmpty() {\r\n if (this.searchInput.value) {\r\n this.searchClearIcon.classList.add('nx-search-input-clear__icon--show');\r\n }\r\n else {\r\n this.searchClearIcon.classList.remove('nx-search-input-clear__icon--show');\r\n focusInput(this.searchInput);\r\n }\r\n }\r\n\r\n clearInput() {\r\n this.searchInput.value = '';\r\n this.checkEmpty();\r\n }\r\n\r\n setValueToInput() {\r\n var url = window.location.href;\r\n var name = this.searchInput.getAttribute(\"name\");\r\n this.searchInput.value = this.getParameterByName(name, url);\r\n }\r\n\r\n getParameterByName(name, url) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n SearchInput.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n SearchInput.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n SearchInput.setup(moduleSelector);\r\n}","/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nexport function iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) {\n trueResult = EMPTY;\n }\n if (falseResult === void 0) {\n falseResult = EMPTY;\n }\n return defer(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map\n","import { fromEvent, of, Observable, merge, iif } from 'rxjs';\r\nimport { switchMap, tap, map, filter, delay } from 'rxjs/operators';\r\nimport SearchAutoSuggestion from './SearchAutoSuggestion';\r\nimport SearchInput from './SearchInput';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { getOptions, focusInput } from '../helpers/helperFunctions';\r\n// const ScrollTo = () => import(/* webpackChunkName: \"ScrollTo\" */'../ScrollTo').then(module => module.default);\r\n\r\nconst moduleSelector = '[data-module=\"SearchResult\"]';\r\n\r\ninterface SearchResultOptions {\r\n searchInputSelector: string;\r\n inputNodeSelector: string;\r\n mobileSearchButtonSelector: string;\r\n desktopSearchButtonSelector: string;\r\n mobileNavButtonSelector: string;\r\n}\r\n\r\nexport default class SearchResult {\r\n private searchInput: HTMLElement;\r\n private inputNode: HTMLInputElement;\r\n private scrollTo: ScrollTo;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new SearchResult(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: Optional = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.searchInput = this.element.querySelector(this.options.searchInputSelector);\r\n this.inputNode = this.element.querySelector(this.options.inputNodeSelector);\r\n\r\n this.init();\r\n }\r\n\r\n private init(): SearchResult {\r\n this.initSearchInput()\r\n .initAutoSuggestion()\r\n .initSearchButtonsClick();\r\n\r\n return this;\r\n }\r\n\r\n private initSearchInput(): SearchResult {\r\n new SearchInput(this.searchInput);\r\n return this;\r\n }\r\n\r\n private initAutoSuggestion(): SearchResult {\r\n new SearchAutoSuggestion(this.element);\r\n return this;\r\n }\r\n\r\n private initSearchButtonsClick(): SearchResult {\r\n merge(\r\n this.getMobileNavInitStream(),\r\n this.getDesktopNavInitStream()\r\n )\r\n .subscribe((e) => {\r\n e.preventDefault();\r\n if(this.scrollTo == undefined) {\r\n const getScrollTo = () => import(/* webpackChunkName: \"ScrollTo\" */'../ScrollTo');\r\n getScrollTo().then((module) => {\r\n this.scrollTo = new module.default();\r\n this.scrollToSearchResult()\r\n .setFocusOnInputNode()\r\n });\r\n return;\r\n } \r\n this.scrollToSearchResult()\r\n .setFocusOnInputNode()\r\n });\r\n\r\n return this;\r\n }\r\n\r\n private getMobileNavInitStream(): Observable {\r\n const getMobileSearchButton = () => document.querySelector(this.options.mobileSearchButtonSelector),\r\n closeMobileNav = () => document.querySelector(this.options.mobileNavButtonSelector).dispatchEvent(new MouseEvent('click')),\r\n\r\n $smartCompanionInit =\r\n iif(\r\n () => getMobileSearchButton() != null,\r\n of(getMobileSearchButton()),\r\n fromEvent(document, 'niveax:smartCompanionInitialized').pipe(map(getMobileSearchButton))\r\n )\r\n .pipe(\r\n filter(mobSearchBtn => !!mobSearchBtn),\r\n switchMap(mobSearchBtn => fromEvent(mobSearchBtn, 'click')\r\n .pipe(tap(e => e.preventDefault()))),\r\n tap(closeMobileNav),\r\n delay(0)\r\n );\r\n\r\n return $smartCompanionInit;\r\n }\r\n\r\n private getDesktopNavInitStream(): Observable {\r\n const getDesktopSearchButton = () => document.querySelector(this.options.desktopSearchButtonSelector),\r\n $desktopNavigationInit =\r\n iif(\r\n () => getDesktopSearchButton() != null,\r\n of(getDesktopSearchButton()),\r\n fromEvent(document, 'niveax:desktopActionIconInit').pipe(map(getDesktopSearchButton))\r\n )\r\n .pipe(\r\n filter(desktopSearchBtn => !!desktopSearchBtn),\r\n switchMap(desktopSearchBtn => fromEvent(desktopSearchBtn, 'click'))\r\n );\r\n\r\n return $desktopNavigationInit;\r\n }\r\n\r\n private scrollToSearchResult(): SearchResult {\r\n document.body.classList.add('nx-scrolling');\r\n let friction = 0.6;\r\n let duration = (document.documentElement.scrollTop || document.body.scrollTop) / 2 * friction;\r\n\r\n this.scrollTo.animateScrollTop(this.element, duration, 10, () => {\r\n document.body.classList.remove('nx-scrolling');\r\n });\r\n\r\n return this;\r\n }\r\n\r\n private setFocusOnInputNode(): SearchResult {\r\n focusInput(this.inputNode);\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): Optional {\r\n return {\r\n searchInputSelector: '.nx-search-results__input',\r\n inputNodeSelector: '.nx-search-input__text',\r\n mobileSearchButtonSelector: '.nx-nav-action-menu__item[data-id=\"search\"]',\r\n desktopSearchButtonSelector: '[data-action-id=\"search\"]',\r\n mobileNavButtonSelector: '.nx-mob-nav__button'\r\n };\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n SearchResult.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n SearchResult.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n SearchResult.setup(moduleSelector);\r\n}","import { fromEvent, from, merge, Observable } from 'rxjs';\r\nimport { debounceTime, pluck, filter, map, tap } from 'rxjs/operators';\r\nimport { getOptions, cleanString } from '../helpers/helperFunctions';\r\nimport { Optional } from '../typings/mapped-types';\r\nconst moduleSelector = '[data-module=\"SearchAutoSuggestion\"]';\r\n\r\ninterface SearchAutoSuggestionOptions {\r\n inputWrapperSelector: string;\r\n inputSelector: string;\r\n suggestionListSelector: string;\r\n formSelector: string;\r\n deleteBtnSelector: string;\r\n}\r\n\r\ninterface SearchAutoSuggestionResponseCache {\r\n [index: string]: string;\r\n}\r\n\r\nconst keyArrowUp = 38,\r\n keyArrowDown = 40,\r\n keyEnter = 13,\r\n filterTarget = ($mouseEventStream: Observable, targetTag: string) => $mouseEventStream.pipe(\r\n pluck('target'),\r\n map((target: HTMLElement) => target.closest(targetTag)),\r\n filter(suggestionItem => !!suggestionItem));\r\n\r\nexport default class SearchAutoSuggestion {\r\n private inputField: HTMLElement;\r\n private inputFieldText: HTMLInputElement;\r\n private suggestionField: HTMLElement;\r\n private form: HTMLFormElement;\r\n private deleteButton: HTMLElement;\r\n private ajaxResponseCache: SearchAutoSuggestionResponseCache = {};\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new SearchAutoSuggestion(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: Optional = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.inputField = this.element.querySelector(this.options.inputWrapperSelector);\r\n this.inputFieldText = this.inputField.querySelector(this.options.inputSelector);\r\n this.suggestionField = this.element.querySelector(this.options.suggestionListSelector);\r\n this.form = this.element.querySelector(this.options.formSelector) || element;\r\n this.deleteButton = this.element.querySelector(this.options.deleteBtnSelector);\r\n\r\n this.setInputEventHandler();\r\n }\r\n\r\n private setInputEventHandler(): SearchAutoSuggestion {\r\n const $input = fromEvent(this.inputFieldText, 'input').pipe(\r\n pluck('target'),\r\n debounceTime(500),\r\n filter(inputNode => (inputNode).value.length >= 3 ? true : this.hideDialog()),\r\n pluck('value'),\r\n map(cleanString)),\r\n\r\n $keyDown = fromEvent(this.inputFieldText, 'keydown').pipe(\r\n filter(({ target }) => (target).value != null)),\r\n\r\n $enterKey = $keyDown.pipe(\r\n filter((event: KeyboardEvent) => event.which === keyEnter),\r\n pluck('target', 'value')),\r\n\r\n $verticalArrowsKey = $keyDown.pipe(\r\n map(({ target, which }: KeyboardEvent) => ({ inputValue: cleanString((target).value), which })),\r\n filter(({ inputValue }) => inputValue.length >= 3),\r\n filter(({ which }) => [keyArrowUp, keyArrowDown].includes(which)),\r\n tap(({ inputValue }) => !this.isDialogVisible() && this.initSuggestion(inputValue))),\r\n\r\n $inputFieldClick = fromEvent(this.inputField, 'click').pipe(\r\n map(() => this.inputFieldText.value),\r\n filter(inputValue => inputValue.length >= 3),\r\n map(cleanString)),\r\n\r\n $deleteBtnClick = fromEvent(this.deleteButton, 'click'),\r\n\r\n $onBodyClick = fromEvent(document.body, 'click').pipe(\r\n pluck('target'),\r\n filter((target: HTMLElement) => target.closest(this.options.inputWrapperSelector) === null)),\r\n\r\n $onSuggestionFieldClick = fromEvent(this.suggestionField, 'click'),\r\n\r\n $onSearchResultHover = fromEvent(this.suggestionField, 'mouseover');\r\n\r\n // Subscriptions\r\n $input.subscribe(inputValue => this.initSuggestion(inputValue));\r\n\r\n $enterKey.subscribe((inputValue: string) => {\r\n let selectedElement = this.getSelectedElement(this.suggestionField),\r\n value = selectedElement ? selectedElement.textContent : inputValue;\r\n\r\n this.setToInputText(cleanString(value));\r\n });\r\n\r\n $verticalArrowsKey.subscribe(({ which }) => {\r\n switch (which) {\r\n case keyArrowDown:\r\n this.moveSelection(true);\r\n break;\r\n case keyArrowUp:\r\n this.moveSelection(false);\r\n break;\r\n }\r\n });\r\n\r\n $inputFieldClick.subscribe(inputValue => this.initSuggestion(inputValue));\r\n\r\n merge($deleteBtnClick, $onBodyClick).subscribe(() => this.hideDialog());\r\n\r\n filterTarget($onSuggestionFieldClick, 'li').subscribe((suggestionItem: HTMLElement) => {\r\n this.setToInputText(cleanString(suggestionItem.textContent))\r\n .submitForm();\r\n });\r\n\r\n filterTarget($onSearchResultHover, 'li').subscribe(\r\n suggestionItem =>\r\n this.removeSelection(Array.from(this.suggestionField.children))\r\n .setSelection(suggestionItem));\r\n\r\n return this;\r\n }\r\n\r\n private initSuggestion(searchTerm: string): SearchAutoSuggestion {\r\n this.clearSuggestion()\r\n .setLoader();\r\n\r\n this.isInCache(searchTerm)\r\n ? this.updateSuggestion(this.getResultsFromCache(searchTerm))\r\n : this.fetchSuggestions(searchTerm);\r\n\r\n return this;\r\n }\r\n\r\n // Cache Logic: START\r\n private isInCache(searchTerm: string): boolean {\r\n return searchTerm in this.ajaxResponseCache;\r\n }\r\n\r\n private setResultsToCache(searchTerm: string, resultsHTML: string): SearchAutoSuggestion {\r\n this.ajaxResponseCache[searchTerm] = resultsHTML;\r\n return this;\r\n }\r\n\r\n private getResultsFromCache(searchTerm: string) {\r\n return this.ajaxResponseCache[searchTerm];\r\n }\r\n // Cache Logic: END\r\n\r\n private updateSuggestion(resultsHTML: string): SearchAutoSuggestion {\r\n this.insertNodes(resultsHTML)\r\n .showDialog();\r\n\r\n return this;\r\n }\r\n\r\n private clearSuggestion(): SearchAutoSuggestion {\r\n this.suggestionField.innerHTML = \"\";\r\n return this;\r\n }\r\n\r\n private fetchSuggestions(searchTerm: string): SearchAutoSuggestion {\r\n //static AJAX usage\r\n // let ajaxUrl = window.location.protocol + \"//\" + window.location.host + \"/NiveaX/StaticPages/SearchSuggestions?q=\" + searchTerm;\r\n let ajaxUrl = window.location.protocol + \"//\" + window.location.host + \"/xajax/searchSuggestion?q=\" + searchTerm;\r\n let response = fetch(ajaxUrl, { credentials: 'include' })\r\n .then(response => {\r\n if (response.status === 200) {\r\n return response.json();\r\n } else {\r\n throw new Error(`AutoSuggestion for \"${searchTerm}\" was not loaded. Response status: ${response.status}`)\r\n }\r\n });\r\n\r\n from(response)\r\n .pipe(\r\n map((data: string) => JSON.parse(data) || { Results: [] }),\r\n pluck('Results'),\r\n map(results => results.map(r => r.Name)),\r\n tap(results => results.length === 0 && this.hideDialog()),\r\n filter(results => results.length > 0))\r\n .subscribe(\r\n results => {\r\n let resultsHTML = this.createSuggestionHTML(results, searchTerm);\r\n\r\n this.setResultsToCache(searchTerm, resultsHTML)\r\n .updateSuggestion(resultsHTML);\r\n },\r\n err => {\r\n console.warn('Fetch Error', err);\r\n this.hideDialog();\r\n }\r\n );\r\n\r\n return this;\r\n }\r\n\r\n private createSuggestionHTML(results: string[], searchTerm: string): string {\r\n return results\r\n .map(res => `
  • ${res.replace(new RegExp(searchTerm, \"i\"), \"$&\")}
  • `)\r\n .join('');\r\n }\r\n\r\n private insertNodes(resultsHTML: string): SearchAutoSuggestion {\r\n this.suggestionField.innerHTML = resultsHTML;\r\n return this;\r\n }\r\n\r\n private showDialog(): SearchAutoSuggestion {\r\n this.suggestionField.classList.add('active');\r\n return this;\r\n }\r\n\r\n private hideDialog(): boolean {\r\n this.suggestionField.classList.remove('active');\r\n return false;\r\n }\r\n\r\n private isDialogVisible(): boolean {\r\n return this.suggestionField.classList.contains('active');\r\n }\r\n\r\n private setToInputText(value: string): SearchAutoSuggestion {\r\n this.inputFieldText.value = value;\r\n return this;\r\n }\r\n\r\n private setLoader(): SearchAutoSuggestion {\r\n this.suggestionField.innerHTML =\r\n `
    \r\n
    \r\n
    \r\n
    \r\n
    `;\r\n\r\n return this;\r\n }\r\n\r\n private moveSelection(toBottom: boolean): SearchAutoSuggestion {\r\n const suggestionList = this.suggestionField,\r\n suggestions = Array.from((suggestionList.children)),\r\n currentSelected = this.getSelectedElement(suggestionList),\r\n firstElement = suggestionList.firstChild,\r\n lastElement = suggestionList.lastElementChild;\r\n\r\n let nextElementToSelect;\r\n\r\n this.removeSelection(suggestions);\r\n\r\n if (toBottom) {\r\n nextElementToSelect = currentSelected ? currentSelected.nextElementSibling : firstElement;\r\n this.setSelection(nextElementToSelect || firstElement);\r\n } else {\r\n nextElementToSelect = currentSelected ? currentSelected.previousElementSibling : lastElement;\r\n this.setSelection(nextElementToSelect || lastElement);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n private setSelection(element: HTMLElement): SearchAutoSuggestion {\r\n element.classList.add('selected');\r\n return this;\r\n }\r\n\r\n private removeSelection(elements: HTMLElement[]): SearchAutoSuggestion {\r\n elements.forEach(elem => elem.classList.remove('selected'));\r\n return this;\r\n }\r\n\r\n private getSelectedElement(list: HTMLElement): HTMLElement {\r\n return list.querySelector('.selected');\r\n }\r\n\r\n private submitForm(): SearchAutoSuggestion {\r\n this.form.submit();\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): Optional {\r\n return {\r\n inputWrapperSelector: '.nx-search-input__inner',\r\n inputSelector: '.nx-search-input__text',\r\n suggestionListSelector: '.nx-search__autosuggest',\r\n formSelector: '.nx-header-search-form',\r\n deleteBtnSelector: '.nx-search-input-clear__icon'\r\n };\r\n }\r\n}\r\n\r\n// Hot Module Replacement 2\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n SearchAutoSuggestion.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n SearchAutoSuggestion.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n SearchAutoSuggestion.setup(moduleSelector);\r\n}","/** PURE_IMPORTS_START _map PURE_IMPORTS_END */\nimport { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map\n"],"names":["moduleSelector","SearchInput","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","this","searchClearIcon","querySelector","searchInput","init","addEventListener","event","checkEmpty","clearInput","setValueToInput","value","classList","add","closest","setTimeout","remove","url","window","location","href","name","getAttribute","getParameterByName","replace","results","RegExp","exec","decodeURIComponent","iif","condition","trueResult","falseResult","observableFactory","Observable","subscriber","input","err","error","empty","subscribe","SearchResult","options","Object","assign","getDefaultOptions","searchInputSelector","inputNode","inputNodeSelector","initSearchInput","initAutoSuggestion","initSearchButtonsClick","SearchAutoSuggestion","merge","getMobileNavInitStream","getDesktopNavInitStream","e","preventDefault","undefined","scrollTo","scrollToSearchResult","setFocusOnInputNode","getScrollTo","then","module","default","getMobileSearchButton","mobileSearchButtonSelector","of","fromEvent","pipe","map","mobSearchBtn","switchMap","tap","mobileNavButtonSelector","dispatchEvent","MouseEvent","delay","getDesktopSearchButton","desktopSearchButtonSelector","desktopSearchBtn","body","duration","documentElement","scrollTop","animateScrollTop","keyArrowUp","keyArrowDown","filterTarget","$mouseEventStream","targetTag","target","suggestionItem","ajaxResponseCache","inputField","inputWrapperSelector","inputFieldText","inputSelector","suggestionField","suggestionListSelector","form","formSelector","deleteButton","deleteBtnSelector","setInputEventHandler","$input","length","hideDialog","$keyDown","$enterKey","which","$verticalArrowsKey","inputValue","includes","isDialogVisible","initSuggestion","$inputFieldClick","$deleteBtnClick","$onBodyClick","$onSuggestionFieldClick","$onSearchResultHover","selectedElement","getSelectedElement","textContent","setToInputText","moveSelection","submitForm","removeSelection","children","setSelection","searchTerm","clearSuggestion","setLoader","isInCache","updateSuggestion","getResultsFromCache","fetchSuggestions","setResultsToCache","resultsHTML","insertNodes","showDialog","innerHTML","ajaxUrl","protocol","host","response","fetch","credentials","status","json","Error","data","JSON","parse","Results","r","Name","createSuggestionHTML","console","warn","res","join","contains","toBottom","suggestionList","suggestions","currentSelected","firstElement","firstChild","lastElement","lastElementChild","nextElementToSelect","nextElementSibling","previousElementSibling","elements","elem","list","submit","pluck","properties","_i","arguments","source","props","mapper","x","currentProp","i","p","plucker"],"sourceRoot":""}