{"version":3,"file":"/share/epSnow/app.js","mappings":"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","sources":["webpack:///./src/AccentService/AccentService.ts","webpack:///./src/AppUserInterface/AppUserInterface.ts","webpack:///./src/CommentPopupWindow/CommentPopupWindow.ts","webpack:///./src/PhpDataProvider/PhpDataProvider.ts","webpack:///./src/SearchWhisperer/SearchWhispererHtmlElement.ts","webpack:///./src/SearchWhisperer/getMatchingNames.ts","webpack:///./src/SearchWhisperer/loadShortNameListAsPromis.ts","webpack:///./src/boldSearchPatterInString/boldSearchPatterInString.ts","webpack:///./src/runSearch/loadSearchTableHtmlAsPromise.ts","webpack:///./src/runSearch/runSearch.ts","webpack:///./src/snowComment/snowComment.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/global","webpack:///./app.ts"],"sourcesContent":["export class AccentService {\r\n\r\n constructor(private readonly accentMap: {[key: string]: string}) {}\r\n\r\n public normalize(string: string): string {\r\n let normalizedString = '';\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n normalizedString += this.accentMap[string.charAt(i)] || string.charAt(i);\r\n }\r\n\r\n return normalizedString;\r\n }\r\n\r\n}","\r\nexport class AppUserInterface {\r\n\r\n public isSearchRunning: boolean = false;\r\n\r\n public readonly epSnowContainer: HTMLDivElement = document.querySelector('#ep-snow') as HTMLDivElement;\r\n\r\n public readonly mainSnowTable: HTMLTableElement = document.querySelector('#ep-snow #tabsnih') as HTMLTableElement;\r\n\r\n public readonly searchBox: HTMLInputElement = document.querySelector('#ep-snow input#snih-search') as HTMLInputElement;\r\n public readonly magnifyingGlassIcon: HTMLImageElement = document.querySelector('#ep-snow #snih-search-img') as HTMLImageElement;\r\n public readonly spinnerIcon: HTMLImageElement = document.querySelector('#ep-snow img.search_spinner.search_ico') as HTMLImageElement;\r\n\r\n public hideMainSnowTable(): void\r\n {\r\n this.mainSnowTable.style.display = 'none';\r\n }\r\n\r\n public showMainSnowTable(): void\r\n {\r\n this.mainSnowTable.style.display = 'table';\r\n }\r\n\r\n}","export class CommentPopupWindow extends HTMLElement {\r\n template = `\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\"Zavřít\"
\r\n\t\t\t\t\t \r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t`;\r\n\r\n static get observedAttributes() {\r\n return [ 'text', ];\r\n }\r\n\r\n private shadow: ShadowRoot;\r\n\r\n private overlay: HTMLDivElement;\r\n private titleContainer: HTMLDivElement;\r\n private textContainer: HTMLDivElement;\r\n private closeIconContainer: HTMLDivElement;\r\n\r\n constructor() {\r\n super();\r\n this.shadow = this.attachShadow({ mode: \"open\" });\r\n\r\n this.shadow.innerHTML = this.template;\r\n\r\n this.overlay = this.shadow.querySelector('.popup-overlay') as HTMLDivElement;\r\n this.titleContainer = this.shadow.querySelector('.title') as HTMLDivElement;\r\n this.textContainer = this.shadow.querySelector('.text') as HTMLDivElement;\r\n this.closeIconContainer = this.shadow.querySelector('.close-icon-container') as HTMLDivElement;\r\n\r\n this.overlay.addEventListener('click', () => this.remove());\r\n this.closeIconContainer.addEventListener('click', () => this.remove());\r\n }\r\n\r\n connectedCallback() {\r\n this.titleContainer.textContent = this.getAttribute('data-title');\r\n this.textContainer.textContent = this.getAttribute('data-text');\r\n }\r\n\r\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\r\n this.textContainer.textContent = newValue;\r\n }\r\n\r\n moveNextTo(element: HTMLElement) {\r\n const rect = element.getBoundingClientRect();\r\n\r\n const popupWindowContainer = this.shadow.querySelector('.popup-window-container') as HTMLDivElement;\r\n popupWindowContainer.style.top = `${rect.top + window.scrollY}px`;\r\n popupWindowContainer.style.left = `${rect.left - 290}px`;\r\n }\r\n}","export class PhpDataProvider {\r\n\r\n public readonly server: string;\r\n public readonly regionId: string;\r\n public readonly locale: string;\r\n public readonly pageSeoString: string;\r\n public readonly accentMap: {[key: string]: string};\r\n\r\n constructor() {\r\n // @ts-ignore - backendData jsou zapsane primo ve strance.\r\n const data = backendData;\r\n\r\n if (typeof data !== 'object'\r\n || typeof data.server !== 'string'\r\n || typeof data.regionId !== 'string'\r\n || typeof data.locale !== 'string'\r\n || typeof data.pageSeoString !== 'string'\r\n || typeof data.accentMap !== 'object'\r\n ) {\r\n throw new Error('');\r\n }\r\n\r\n this.server = data.server;\r\n this.regionId = data.regionId;\r\n this.locale = data.locale;\r\n this.pageSeoString = data.pageSeoString;\r\n this.accentMap = data.accentMap;\r\n }\r\n}","import {AppUserInterface} from \"../AppUserInterface/AppUserInterface\";\r\nimport {runSearch} from \"../runSearch/runSearch\";\r\nimport {loadShortNamesListAsPromise} from \"./loadShortNameListAsPromis\";\r\nimport {getMatchingNamesWithBoldedSearchedPattern} from \"./getMatchingNames\";\r\nimport {PhpDataProvider} from \"../PhpDataProvider/PhpDataProvider\";\r\nimport {AccentService} from \"../AccentService/AccentService\";\r\n\r\nexport class SearchWhispererHtmlElement extends HTMLElement\r\n{\r\n template = `\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t`;\r\n\r\n private shadow: ShadowRoot;\r\n\r\n private readonly phpData: PhpDataProvider;\r\n private readonly userInterface: AppUserInterface;\r\n private readonly accentService: AccentService;\r\n\r\n private readonly container: HTMLUListElement;\r\n private activeItemIndex: number | null = null;\r\n\r\n private shortNamesList: string[] | undefined;\r\n\r\n constructor() {\r\n super();\r\n\r\n // Inicializace shadow DOMu.\r\n this.shadow = this.attachShadow({ mode: \"open\" });\r\n this.shadow.innerHTML = this.template;\r\n\r\n // Ziskani cointaineru a schovani.\r\n this.container = this.shadow.querySelector('ul#whisperer-container') as HTMLUListElement;\r\n this.container.style.display = 'none';\r\n\r\n // Potrebne instance trid.\r\n this.phpData = new PhpDataProvider();\r\n this.userInterface = new AppUserInterface();\r\n this.accentService = new AccentService(this.phpData.accentMap);\r\n\r\n // Poklud se klikne na jednu z moznosti naseptavace (nejaky li element). Vlozime text teto moznosti do\r\n // vyhledavaciho pole, naseptavac schovame a spustime vyhledavani.\r\n this.container.addEventListener('click', (event: MouseEvent) => {\r\n if (! (event.target instanceof HTMLLIElement)) {\r\n return;\r\n }\r\n\r\n this.userInterface.searchBox.value = (event.target as HTMLLIElement).innerText;\r\n\r\n this.hideSuggestions();\r\n runSearch(\r\n this.userInterface,\r\n this.phpData.server,\r\n this.phpData.regionId,\r\n this.phpData.locale,\r\n this.phpData.pageSeoString\r\n );\r\n });\r\n\r\n // Poklud se mysi najede na jednu z moznosti naseptavace (nejaky li element). Nastavime tento element jako\r\n // aktivni (obarveni elementu atd).\r\n this.container.addEventListener('mouseover', (event: MouseEvent) => {\r\n if (! (event.target instanceof HTMLLIElement)) {\r\n return;\r\n }\r\n\r\n this.setActiveItem(event.target as HTMLLIElement);\r\n });\r\n\r\n // Pokud mysi vyjedeme z containeru, tak zrusime aktivni element.\r\n this.container.addEventListener('mouseleave', () => {\r\n this.removeActiveItem();\r\n });\r\n\r\n // Pokud klikneme mimo vyhledavaci box, tak naseptavac schovame.\r\n document.addEventListener('click', (event: MouseEvent) => {\r\n if (! this.userInterface.searchBox.contains(event.target as HTMLElement)) {\r\n this.hideSuggestions();\r\n }\r\n });\r\n }\r\n\r\n // connectedCallback() {}\r\n // attributeChangedCallback(name: string, oldValue: string, newValue: string) {}\r\n\r\n public setPositionUnderSearchBar(): void {\r\n const rect = this.userInterface.searchBox.getBoundingClientRect();\r\n\r\n this.container.style.top = `${rect.top + window.scrollY + 25}px`;\r\n this.container.style.left = `${rect.left}px`;\r\n }\r\n\r\n public hideSuggestions(): void {\r\n this.container.style.display = 'none';\r\n }\r\n\r\n public showSuggestions(): void {\r\n this.container.style.display = 'block';\r\n }\r\n\r\n public setSuggestions(list: object): void {\r\n this.showSuggestions();\r\n\r\n Object.entries(list).forEach(([key, value]: [string, any]) => {\r\n if (typeof value !== 'string') {\r\n throw new Error('SearchWhispererElement::setSuggestions() Input list must contain only string!');\r\n }\r\n });\r\n\r\n // Odebereme vsechny nabizene moznosti naseptavace, tedy vsechny child elementy(li elementy).\r\n this.container.querySelectorAll('*').forEach((element: Element) => { element.remove() });\r\n\r\n // Vytvorime moznosti naseptavace, tedy child elementy(li elementy). A pridame je do containeru(ul elementu).\r\n Object.entries(list).forEach(([key, value]: [string, string]) => {\r\n const liElement = document.createElement('li');\r\n liElement.innerHTML = value;\r\n\r\n this.container.appendChild(liElement);\r\n });\r\n }\r\n\r\n\r\n public removeActiveItem(): void {\r\n if (this.activeItemIndex === null || this.container.children.item(this.activeItemIndex) === null) {\r\n return;\r\n }\r\n\r\n (this.container.children.item(this.activeItemIndex) as HTMLLIElement).classList.remove('activeItem');\r\n this.activeItemIndex = null;\r\n }\r\n\r\n\r\n public setActiveItem(liElement: HTMLLIElement): void {\r\n if (this.activeItemIndex !== null) {\r\n this.removeActiveItem();\r\n }\r\n\r\n this.activeItemIndex = Array.from(this.container.children).indexOf(liElement);\r\n (this.container.children.item(this.activeItemIndex) as HTMLLIElement).classList.add('activeItem');\r\n }\r\n\r\n\r\n public setNextItemAsActive(): void {\r\n // Odebrat class u soucasneho.\r\n if (this.activeItemIndex !== null) {\r\n (this.container.children.item(this.activeItemIndex) as HTMLLIElement).classList.remove('activeItem');\r\n }\r\n\r\n // Nastavime dalsi prvek jako aktivni.\r\n this.activeItemIndex = (this.activeItemIndex !== null && this.activeItemIndex + 1 < this.container.children.length)\r\n ? this.activeItemIndex = this.activeItemIndex + 1\r\n : this.activeItemIndex = 0;\r\n\r\n // Pridat class u dalsiho nyni soucasneho.\r\n (this.container.children.item(this.activeItemIndex) as HTMLLIElement).classList.add('activeItem');\r\n\r\n // Nastavit text search baru aby odpovidal textu aktivniho elementu.\r\n this.userInterface.searchBox.value = (this.container.children.item(this.activeItemIndex) as HTMLLIElement).innerText;\r\n }\r\n\r\n public setPreviousItemAsActive(): void {\r\n // Odebrat class u soucasneho.\r\n if (this.activeItemIndex !== null) {\r\n (this.container.children.item(this.activeItemIndex) as HTMLLIElement).classList.remove('activeItem');\r\n }\r\n\r\n // Nastavime predchozi prvek jako aktivni.\r\n this.activeItemIndex = (this.activeItemIndex !== null && this.activeItemIndex > 0)\r\n ? this.activeItemIndex = this.activeItemIndex - 1\r\n : this.activeItemIndex = this.container.children.length - 1;\r\n\r\n // Pridat class u dalsiho nyni soucasneho.\r\n (this.container.children.item(this.activeItemIndex) as HTMLLIElement).classList.add('activeItem');\r\n\r\n // Nastavit text search baru aby odpovidal textu aktivniho elementu.\r\n this.userInterface.searchBox.value = (this.container.children.item(this.activeItemIndex) as HTMLLIElement).innerText;\r\n }\r\n\r\n public showSuggestionsFor(searchedQuery: string): void {\r\n if (typeof this.shortNamesList === 'undefined') {\r\n const promiseOfShortNamesList = loadShortNamesListAsPromise(\r\n this.phpData.server,\r\n this.phpData.regionId,\r\n this.phpData.locale,\r\n this.phpData.pageSeoString\r\n );\r\n\r\n promiseOfShortNamesList\r\n .then(response => response.json())\r\n .then(data => {\r\n this.shortNamesList = data as string[];\r\n\r\n const suggestionsList = getMatchingNamesWithBoldedSearchedPattern(\r\n this.accentService, searchedQuery, this.shortNamesList\r\n );\r\n\r\n this.setSuggestions(suggestionsList);\r\n });\r\n //.catch(() => {});\r\n } else {\r\n const suggestionsList = getMatchingNamesWithBoldedSearchedPattern(\r\n this.accentService, searchedQuery, this.shortNamesList\r\n );\r\n\r\n this.setSuggestions(suggestionsList);\r\n }\r\n }\r\n\r\n}","import {AccentService} from \"../AccentService/AccentService\";\r\nimport {boldSearchPatterInString} from \"../boldSearchPatterInString/boldSearchPatterInString\";\r\n\r\nexport function getMatchingNames(accentService: AccentService, searchedQuery: string, list: string[]): string[] {\r\n const searchedQueryNormalized = (accentService.normalize(searchedQuery)).toLowerCase();\r\n const matchingItemsList: string[] = [];\r\n\r\n for (const key in list) {\r\n const item = list[key];\r\n const itemNormalized = accentService.normalize(list[key].toLowerCase());\r\n\r\n if (itemNormalized.includes(searchedQueryNormalized)) {\r\n matchingItemsList.push(item);\r\n }\r\n }\r\n\r\n return matchingItemsList;\r\n}\r\n\r\nexport function getMatchingNamesWithBoldedSearchedPattern(accentService: AccentService, searchedQuery: string, list: string[]): string[] {\r\n const searchedQueryNormalized = (accentService.normalize(searchedQuery)).toLowerCase();\r\n const matchingItemsList: string[] = [];\r\n\r\n for (const key in list) {\r\n const item = list[key];\r\n const itemNormalized = accentService.normalize(list[key].toLowerCase());\r\n\r\n if (itemNormalized.includes(searchedQueryNormalized)) {\r\n let itemBolded = boldSearchPatterInString(accentService, searchedQuery, item);\r\n matchingItemsList.push(itemBolded);\r\n }\r\n }\r\n\r\n return matchingItemsList;\r\n}","\r\nexport function loadShortNamesListAsPromise(\r\n server: string,\r\n regionId: string,\r\n locale: string,\r\n pageSeoString: string\r\n): Promise {\r\n const fetchUrl = '/share/epSnow/epSnowGetShortNamesAsJson.php';\r\n const fetchOptions = {\r\n method: 'POST',\r\n mode: 'same-origin',\r\n cache: 'no-cache',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n body: JSON.stringify({server: server, regionId: regionId, locale: locale, pageSeoString: pageSeoString})\r\n };\r\n\r\n return fetch(fetchUrl, fetchOptions as RequestInit);\r\n}","\r\nimport {AccentService} from \"../AccentService/AccentService\";\r\n\r\n// ToDo: String.substr je depreciated ale nejde proste nahradit za String.substring protoze druhy argument je jiny.\r\n// Do budoucna by bylo dobre prepsat a napsat automaticke testy.\r\n// Konkretne rozdil je v tom ze:\r\n// String.substr(start, length)\r\n// String.substring(indexStart, indexEnd)\r\n/**\r\n * Prekopiraovana funkce z legacy kodu pro zvyrazneni vyshledavaneho string ve stringu.\r\n * Napriklad:\r\n * $pattern = 'ri', $text = 'Bedřichov' => 'Bedřichov'\r\n */\r\nexport function boldSearchPatterInString(accentService: AccentService, pattern: string, text: string): string {\r\n let text_dia = accentService.normalize(text);\r\n pattern = accentService.normalize(pattern);\r\n pattern = pattern.toLowerCase();\r\n text_dia = text_dia.toLowerCase();\r\n let pattern_length = pattern.length;\r\n let pozice = 0;\r\n let offset_text = 0;\r\n while (text_dia.indexOf(pattern, pozice) !== -1) {\r\n pozice = text_dia.indexOf(pattern, pozice);\r\n let pozice_text = pozice + offset_text;\r\n let pattern_text = text.substr(pozice_text, pattern_length);\r\n let re = new RegExp('('+pattern_text+')', 'i') ;\r\n let sub_text = text.substr(pozice_text);\r\n text = text.substr(0,pozice_text) + sub_text.replace(re,\"$1\");\r\n pozice = pozice + pattern_length;\r\n offset_text += 17;\r\n }\r\n\r\n return text;\r\n}","export function loadSearchTableHtmlAsPromise(\r\n searchedQuery: string,\r\n server : string,\r\n regionId : string,\r\n locale : string,\r\n pageSeoString: string\r\n): Promise {\r\n const fetchUrl = '/share/epSnow/epSnowGetSearchTableHtmlAsJson.php';\r\n\r\n const fetchOptions = {\r\n method: 'POST',\r\n mode: 'same-origin',\r\n cache: 'no-cache',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n searchedQuery: searchedQuery,\r\n server: server,\r\n regionId: regionId,\r\n locale: locale,\r\n pageSeoString: pageSeoString\r\n })\r\n };\r\n\r\n return fetch(fetchUrl, fetchOptions as RequestInit);\r\n}","import {AppUserInterface} from \"../AppUserInterface/AppUserInterface\";\r\nimport {loadSearchTableHtmlAsPromise} from \"./loadSearchTableHtmlAsPromise\";\r\n\r\nexport function runSearch(\r\n userInterface: AppUserInterface,\r\n server: string,\r\n regionId: string,\r\n locale: string,\r\n pageSeoString: string\r\n): void {\r\n if (userInterface.isSearchRunning || userInterface.searchBox.value.length === 0) {\r\n return;\r\n }\r\n\r\n userInterface.isSearchRunning = true;\r\n\r\n userInterface.searchBox.disabled = true;\r\n userInterface.magnifyingGlassIcon.style.display = 'none';\r\n userInterface.spinnerIcon.style.display = 'block';\r\n\r\n const searchQuery = userInterface.searchBox.value.trim();\r\n const promiseOfSearchedTableHtml = loadSearchTableHtmlAsPromise(searchQuery, server, regionId, locale, pageSeoString);\r\n\r\n promiseOfSearchedTableHtml\r\n .then(response => response.json())\r\n .then(tableHtml => {\r\n userInterface.hideMainSnowTable();\r\n\r\n userInterface.epSnowContainer.insertAdjacentHTML('beforeend', tableHtml);\r\n\r\n (document.querySelector('#btn-na-puvodni') as HTMLSpanElement)\r\n .addEventListener('click', () => {\r\n userInterface.searchBox.disabled = false;\r\n userInterface.searchBox.value = '';\r\n userInterface.magnifyingGlassIcon.style.display = 'block';\r\n userInterface.spinnerIcon.style.display = 'none';\r\n\r\n userInterface.showMainSnowTable();\r\n (document.querySelector('#tabsnihfiltr') as HTMLTableElement).remove();\r\n\r\n userInterface.isSearchRunning = false;\r\n });\r\n })\r\n .catch(() => {\r\n console.log('Searching failed.');\r\n userInterface.isSearchRunning = false;\r\n });\r\n}","import {CommentPopupWindow} from \"../CommentPopupWindow/CommentPopupWindow\";\r\n\r\ncustomElements.define('ep-popup-window', CommentPopupWindow);\r\n\r\nexport function showComment(id: number, name: string, iconElement: HTMLElement) {\r\n\r\n const popupWindowElement = document.createElement('ep-popup-window') as CommentPopupWindow;\r\n const elementAttributes = { id: 'comment-popup', 'data-title': name, 'data-text': 'Komentář se načítá...' };\r\n\r\n Object.entries(elementAttributes).forEach(([attributeName, attributeValue]) => {\r\n popupWindowElement.setAttribute(attributeName, attributeValue);\r\n });\r\n\r\n popupWindowElement.moveNextTo(iconElement);\r\n\r\n (document.querySelector('body') as HTMLBodyElement).prepend(popupWindowElement);\r\n\r\n const fetchUrl = '/share/epSnow/epSnowGetCommentAsJson.php';\r\n const fetchOptions = {\r\n method: 'POST',\r\n mode: 'same-origin',\r\n cache: 'no-cache',\r\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },\r\n body: JSON.stringify({id: id}) // body data type must match \"Content-Type\" header\r\n };\r\n\r\n fetch(fetchUrl, fetchOptions as RequestInit)\r\n .then(response => response.json())\r\n .then(commentText => popupWindowElement.setAttribute('text', commentText));\r\n //.catch((error) => console.error('Error:', error));\r\n\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","import {showComment} from \"./src/snowComment/snowComment\";\r\nimport {AppUserInterface} from \"./src/AppUserInterface/AppUserInterface\";\r\nimport {PhpDataProvider} from \"./src/PhpDataProvider/PhpDataProvider\";\r\nimport {runSearch} from \"./src/runSearch/runSearch\";\r\nimport {SearchWhispererHtmlElement} from \"./src/SearchWhisperer/SearchWhispererHtmlElement\";\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n\r\n // Pridame funkci showComment do globalu.\r\n const _global = (window /* browser */ || global /* node */) as any;\r\n _global.showComment = showComment;\r\n\r\n // Registrujeme custom SearchWhispererHtmlElement. Vytvorime jej. Provedeme potrebna nastaveni. A pripmene na body.\r\n customElements.define('search-whisperer', SearchWhispererHtmlElement);\r\n const searchWhisperer = document.createElement('search-whisperer') as SearchWhispererHtmlElement;\r\n searchWhisperer.setPositionUnderSearchBar();\r\n (document.querySelector('body') as HTMLBodyElement).prepend(searchWhisperer);\r\n\r\n const phpData = new PhpDataProvider();\r\n const userInterface = new AppUserInterface();\r\n\r\n // Naseptavac\r\n userInterface.searchBox.addEventListener('keyup', (event: KeyboardEvent) => {\r\n\r\n // Pokud je search field prazdny, neprovadime zadnou akci.\r\n if (userInterface.searchBox.value.length === 0) {\r\n return;\r\n }\r\n\r\n // Vyhledavani odstartovane stisknutim entru.\r\n if ([ 'Enter', 'NumpadEnter'].includes(event.code)) {\r\n searchWhisperer.hideSuggestions();\r\n runSearch(userInterface, phpData.server, phpData.regionId, phpData.locale, phpData.pageSeoString);\r\n return;\r\n }\r\n\r\n if (event.code === 'ArrowUp') {\r\n searchWhisperer.setPreviousItemAsActive();\r\n return;\r\n } else if (event.code === 'ArrowDown') {\r\n searchWhisperer.setNextItemAsActive();\r\n return;\r\n }\r\n\r\n searchWhisperer.showSuggestionsFor(userInterface.searchBox.value.trim());\r\n searchWhisperer.setPositionUnderSearchBar();\r\n searchWhisperer.removeActiveItem();\r\n });\r\n\r\n // Pokud se zmenil text ve vyhledavacim boxu a vyhledavaci boxu je prazdny, schovame naseptavac.\r\n userInterface.searchBox.addEventListener('input', (event) => {\r\n if ((event.target as HTMLInputElement).value.length === 0) {\r\n searchWhisperer.hideSuggestions();\r\n }\r\n });\r\n\r\n // Vyhledavani odstartovane kliknutim na ikonku lupy.\r\n userInterface.magnifyingGlassIcon.addEventListener('click', () => {\r\n if (userInterface.searchBox.value.length === 0) {\r\n return;\r\n }\r\n\r\n runSearch(userInterface, phpData.server, phpData.regionId, phpData.locale, phpData.pageSeoString);\r\n });\r\n\r\n});\r\n"],"names":["AccentService","accentMap","string","normalizedString","i","length","this","charAt","AppUserInterface","isSearchRunning","epSnowContainer","document","querySelector","mainSnowTable","searchBox","magnifyingGlassIcon","spinnerIcon","style","display","CommentPopupWindow","template","shadow","attachShadow","mode","innerHTML","overlay","titleContainer","textContainer","closeIconContainer","addEventListener","remove","textContent","getAttribute","name","oldValue","newValue","element","rect","getBoundingClientRect","popupWindowContainer","top","window","scrollY","left","HTMLElement","PhpDataProvider","data","backendData","server","regionId","locale","pageSeoString","Error","SearchWhispererHtmlElement","activeItemIndex","container","phpData","userInterface","accentService","event","target","HTMLLIElement","value","innerText","hideSuggestions","runSearch","setActiveItem","removeActiveItem","contains","list","showSuggestions","Object","entries","forEach","querySelectorAll","liElement","createElement","appendChild","children","item","classList","Array","from","indexOf","add","searchedQuery","shortNamesList","loadShortNamesListAsPromise","then","response","json","suggestionsList","getMatchingNamesWithBoldedSearchedPattern","setSuggestions","searchedQueryNormalized","normalize","toLowerCase","matchingItemsList","key","includes","push","itemBolded","boldSearchPatterInString","fetchOptions","method","cache","headers","body","JSON","stringify","fetch","pattern","text","text_dia","pattern_length","pozice","offset_text","pozice_text","pattern_text","substr","re","RegExp","sub_text","replace","disabled","searchQuery","trim","loadSearchTableHtmlAsPromise","tableHtml","hideMainSnowTable","insertAdjacentHTML","showMainSnowTable","console","log","customElements","define","id","iconElement","popupWindowElement","elementAttributes","attributeName","attributeValue","setAttribute","moveNextTo","prepend","commentText","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","g","globalThis","Function","e","showComment","searchWhisperer","setPositionUnderSearchBar","code","showSuggestionsFor","setNextItemAsActive","setPreviousItemAsActive"],"sourceRoot":""}