{"version":3,"file":"/share/sys-root/slovenske/slovenske-app-jaro-leto-podzim.js","mappings":"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","sources":["webpack://sys-root/./src/Cameras/src/AccentService/AccentService.ts","webpack://sys-root/./src/Cameras/src/PhpDataProvider/PhpDataProvider.ts","webpack://sys-root/./src/Cameras/src/SearchWhisperer/SearchWhispererHtmlElement.ts","webpack://sys-root/./src/Cameras/src/SearchWhisperer/getMatchingNames.ts","webpack://sys-root/./src/Cameras/src/UserInterfaceHtmlElements/UserInterfaceHtmlElements.ts","webpack://sys-root/./src/Cameras/src/boldSearchPatterInString/boldSearchPatterInString.ts","webpack://sys-root/./src/Cameras/src/loadSearchTableHtmlAsPromise/loadSearchTableHtmlAsPromise.ts","webpack://sys-root/./src/Cameras/src/loadWhispererSuggestionsListAsPromise/loadWhispererSuggestionsListAsPromise.ts","webpack://sys-root/./src/Cameras/src/runSearch/boldSearchPatterInString.ts","webpack://sys-root/webpack/bootstrap","webpack://sys-root/../../../share/js/flags.js","webpack://sys-root/../../../share/js/searchWrap.js","webpack://sys-root/./src/Cameras/cameras.ts","webpack://sys-root/./src/sys-root.js"],"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}","export class PhpDataProvider {\r\n\r\n public readonly domain: string;\r\n public readonly accentMap: {[key: string]: string};\r\n\r\n constructor() {\r\n // @ts-ignore - variable 'settings' is directly in the page added by koupani component\r\n // www-ep-release/sys-koupani/koupani_ctrl.php.\r\n const data = settings;\r\n\r\n if (typeof data !== 'object' || typeof data.domain !== 'string' || typeof data.accentMap !== 'object') {\r\n throw new Error('Unable to read data needed for the frontend app.');\r\n }\r\n\r\n this.domain = data.domain;\r\n this.accentMap = data.accentMap;\r\n }\r\n}","import {UserInterfaceHtmlElements} from \"../UserInterfaceHtmlElements/UserInterfaceHtmlElements\";\r\nimport {getMatchingNamesWithBoldedSearchedPattern} from \"./getMatchingNames\";\r\nimport {PhpDataProvider} from \"../PhpDataProvider/PhpDataProvider\";\r\nimport {AccentService} from \"../AccentService/AccentService\";\r\nimport {runSearch} from \"../runSearch/boldSearchPatterInString\";\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 /** Defining maximum number of suggestions in the whisperer element. */\r\n private static maxNumberOfSuggestions = 20;\r\n\r\n private shadow: ShadowRoot;\r\n\r\n private readonly phpData: PhpDataProvider;\r\n private readonly userInterface: UserInterfaceHtmlElements;\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 whisperingSuggestionsList: 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 UserInterfaceHtmlElements();\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.searchInputField.value = (event.target as HTMLLIElement).innerText;\r\n\r\n runSearch(this.userInterface, this, this.phpData.domain);\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.resetActiveItem();\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.searchInputField.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.searchInputField.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 // 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 this.container.style.display = 'none';\r\n }\r\n\r\n public showSuggestions(searchedQuery: string): void {\r\n if (this.whisperingSuggestionsList === undefined) {\r\n throw new Error('Whisperer suggestions not loaded.');\r\n }\r\n\r\n const boldedSuggestionsList = getMatchingNamesWithBoldedSearchedPattern(\r\n this.accentService, searchedQuery, this.whisperingSuggestionsList\r\n );\r\n\r\n const limitedBoldedSuggestionsList = (boldedSuggestionsList.length > SearchWhispererHtmlElement.maxNumberOfSuggestions)\r\n ? boldedSuggestionsList.slice(0, SearchWhispererHtmlElement.maxNumberOfSuggestions)\r\n : boldedSuggestionsList;\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(limitedBoldedSuggestionsList).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 this.setPositionUnderSearchBar();\r\n this.resetActiveItem();\r\n this.container.style.display = 'block';\r\n }\r\n\r\n public setSuggestionsList(list: string[]): void {\r\n if (this.whisperingSuggestionsList !== undefined) {\r\n throw new Error('Repeatedly setting suggestions list.')\r\n }\r\n\r\n this.whisperingSuggestionsList = list;\r\n }\r\n\r\n public resetActiveItem(): 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.resetActiveItem();\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.searchInputField.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.searchInputField.value = (this.container.children.item(this.activeItemIndex) as HTMLLIElement).innerText;\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\n * Class which includes HTML elements we expect to be in page for JS use.\r\n */\r\nexport class UserInterfaceHtmlElements {\r\n\r\n public isSearchRunning: boolean = false;\r\n\r\n public readonly camerasContainer: HTMLDivElement = document.querySelector('#tabkamery') as HTMLDivElement;\r\n public readonly searchInputField: HTMLInputElement = document.querySelector('#tabkamery #snih-search') as HTMLInputElement;\r\n public readonly iconMagnifyingGlass: HTMLImageElement = document.querySelector('#tabkamery #snih-search-img') as HTMLImageElement;\r\n public readonly iconSpinner: HTMLImageElement = document.querySelector('#tabkamery img.search_spinner.search_ico') as HTMLImageElement;\r\n\r\n public getSearchQuery(): string {\r\n return this.searchInputField.value.trim();\r\n }\r\n\r\n public showSpinnerIcon(): void {\r\n this.iconMagnifyingGlass.style.display = 'none';\r\n this.iconSpinner.style.display = 'block';\r\n }\r\n\r\n public showMagnifyingGlassIcon(): void {\r\n this.iconSpinner.style.display = 'none';\r\n this.iconMagnifyingGlass.style.display = 'block';\r\n }\r\n\r\n public showContentCamerasTables(): void {\r\n this.camerasContainer\r\n .querySelectorAll('table')\r\n .forEach((element: HTMLTableElement) => {\r\n\r\n element.style.display = 'table';\r\n });\r\n }\r\n\r\n public hideContentCamerasTables(): void {\r\n this.camerasContainer\r\n .querySelectorAll('table')\r\n .forEach((element: HTMLTableElement) => {\r\n\r\n element.style.display = 'none';\r\n });\r\n }\r\n\r\n public removeSearchedCamerasTable(): void {\r\n let brAfterTable = this.camerasContainer.querySelector('#tabkameryfiltr + br');\r\n if (brAfterTable instanceof HTMLElement) {\r\n brAfterTable.remove();\r\n }\r\n\r\n let searchedCamerasTable = this.camerasContainer.querySelector('#tabkameryfiltr');\r\n if (searchedCamerasTable instanceof HTMLElement) {\r\n searchedCamerasTable.remove();\r\n }\r\n }\r\n\r\n public swapCamerasTableForSearchResultCamerasTable(promiseOfSearchedCamerasTableHTml: Promise): void {\r\n promiseOfSearchedCamerasTableHTml\r\n .then(response => response.json())\r\n .then(tableHtml => {\r\n this.hideContentCamerasTables();\r\n\r\n // Add
...
.\r\n this.camerasContainer.insertAdjacentHTML('beforeend', tableHtml);\r\n\r\n (this.camerasContainer.querySelector('#btn-na-puvodni') as HTMLSpanElement)\r\n .addEventListener('click', () => {\r\n this.searchInputField.disabled = false;\r\n this.searchInputField.value = '';\r\n this.removeSearchedCamerasTable();\r\n this.showMagnifyingGlassIcon();\r\n this.showContentCamerasTables();\r\n });\r\n })\r\n .catch(() => {\r\n console.log('Searching failed.');\r\n })\r\n .finally(() => {\r\n this.isSearchRunning = false;\r\n });\r\n }\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}","/**\r\n * Loads html of table containing search results as promise.\r\n */\r\nexport function loadSearchTableHtmlAsPromise(searchQuery: string, domain: string): Promise {\r\n\r\n const fetchUrl = '/share/ajax/kamery_vyhledavac2.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 // 'pattern' is searched query and 'domain' is needed variable.\r\n pattern: searchQuery,\r\n domain: domain\r\n } ),\r\n };\r\n\r\n return fetch(fetchUrl, fetchOptions as RequestInit);\r\n}","/**\r\n * Loads list of string which represent all possible string which can be offered as whispering.\r\n */\r\nexport function loadWhispererSuggestionsListAsPromise(domain: string): Promise {\r\n\r\n const fetchUrl = '/share/ajax/kamery_naseptavac2.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({domain: domain})\r\n };\r\n\r\n return fetch(fetchUrl, fetchOptions as RequestInit);\r\n}","import {loadSearchTableHtmlAsPromise} from \"../loadSearchTableHtmlAsPromise/loadSearchTableHtmlAsPromise\";\r\nimport {UserInterfaceHtmlElements} from \"../UserInterfaceHtmlElements/UserInterfaceHtmlElements\";\r\nimport {SearchWhispererHtmlElement} from \"../SearchWhisperer/SearchWhispererHtmlElement\";\r\n\r\n\r\nexport function runSearch(\r\n userInterface: UserInterfaceHtmlElements,\r\n searchWhisperer: SearchWhispererHtmlElement,\r\n domain: string\r\n): void {\r\n // Run search.\r\n userInterface.isSearchRunning = true;\r\n userInterface.showSpinnerIcon();\r\n searchWhisperer.hideSuggestions();\r\n const promiseOfSearchedCamerasTableHTml = loadSearchTableHtmlAsPromise(\r\n userInterface.getSearchQuery(),\r\n domain\r\n );\r\n userInterface.swapCamerasTableForSearchResultCamerasTable(promiseOfSearchedCamerasTableHTml);\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","document.documentElement.onclick = closeAll;\r\n\r\nfunction showHide(e, el) {\r\n\tvar el = el.parentNode;\r\n\r\n\tif (el.className != \"show\") {\r\n\t\te.cancelBubble = true;\r\n\t\tif (e.stopPropagation) e.stopPropagation();\r\n\t}\r\n\tcloseAll();\r\n\tel.className = el.className == '' ? 'show' : '';\r\n}\r\n\r\nfunction closeAll() {\r\n\tvar container = document.getElementById(\"vlajecky\");\r\n\r\n\tif (container !== null) {\r\n\t\tvar items = container.getElementsByTagName(\"li\");\r\n\r\n\t\tfor (var i = items.length - 1; i >= 0; i--) {\r\n\t\t\titems[i].className = \"\";\r\n\t\t}\r\n\t}\r\n}\r\n\r\nwindow.showHide = showHide;\r\nwindow.closeAll = closeAll;","// INFO:\r\n// ----------------------------------------------------------------\r\n// \t\t- Kvůli podpoře IE prosím NEPOUŽÍVAT arrow functions.\r\n// ----------------------------------------------------------------\r\n\r\n/** Zajistuje zobrazeni a schovani #searchWrap po kliknuti na ikonku lupy pro Internet Explorer. */\r\nsearchWrapToggleIE = function () {\r\n\tconst searchIcon = document.querySelector('.searchIcon a');\r\n\tconst searchWrap = document.querySelector('#search-wrap');\r\n\tlet isSlideOpen = false;\r\n\r\n\tsearchIcon.addEventListener('click', function (e) {\r\n\t\te.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n\r\n\r\n\r\n\t\tif( ! isSlideOpen) {\r\n\t\t\tsearchWrap.style.display = 'block';\r\n\t\t\tisSlideOpen = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tsearchWrap.style.display = 'none';\r\n\t\t\tisSlideOpen = false;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/** Zajistuje slizdeni a zajizdeni #searchWrap po kliknuti na ikonku lupy. */\r\nsearchWrapSlideToggle = function () {\r\n\tconst searchIcon = document.querySelector('.searchIcon a');\r\n\tconst searchWrap = document.querySelector('#search-wrap');\r\n\r\n\tsearchIcon.addEventListener('click', function (e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tlet isSlideOpen = searchWrap.classList.contains('active');\r\n\r\n\t\tif( ! isSlideOpen) {\r\n\t\t\t// Zobrazí(slideDown) searchWrap.\r\n\t\t\tsearchWrap.classList.add('active');\r\n\t\t\tsearchWrap.style.height = 'auto';\r\n\r\n\t\t\t// Získání spočítané výšky pro searchWrap.\r\n\t\t\tlet height = searchWrap.clientHeight;\r\n\r\n\t\t\t// Nastavení výšky searchWrapu na 0px abychom mohli animovat zobrazeni(slide down).\r\n\t\t\tsearchWrap.style.height = '0px';\r\n\r\n\t\t\t// Po tom co jsme nastavili výšku na 0px, nastavime požadovanou výšku, čímž spustíme animaci.\r\n\t\t\t// SetTimeout pushne task do stacku. Což ve výsledku znamená, že proces proběhne PO synchroních procesech. */\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tsearchWrap.style.height = height + 'px';\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Nastavení výšky searchWrapu na 0px čímž spustíme animaci(slide up).\r\n\t\t\tsearchWrap.style.height = '0px';\r\n\r\n\t\t\t// Odebrání třídy .active až animace skončí.\r\n\t\t\tsearchWrap.addEventListener(\r\n\t\t\t\t'transitionend',\r\n\t\t\t\tfunction () { searchWrap.classList.remove('active') },\r\n\t\t\t\t{once: true}\r\n\t\t\t);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/** Zabrani odeslani pokud je search bar prazdny, nebo obsahuje jenom bile znaky. */\r\npreventSendingEmptySearchBar = function () {\r\n\tdocument.querySelector('#search-wrap form.search-form')\r\n\t\t.addEventListener('submit', function (event) {\r\n\t\t\tconst searchBarElement = event.target.querySelector('div.search-bar input[type=\"text\"][name=\"q\"]');\r\n\r\n\t\t\tif( searchBarElement.value.trim() === '' )\r\n\t\t\t\tevent.preventDefault();\r\n\t\t});\r\n}\r\n\r\nconst isInternetExplorer = (\r\n\twindow.navigator.userAgent.indexOf('MSIE') > -1 ||\r\n\twindow.navigator.userAgent.indexOf('Trident') > -1\r\n);\r\n\r\nif( isInternetExplorer )\r\n\twindow.addEventListener(\"load\", searchWrapToggleIE, false);\r\nelse\r\n\twindow.addEventListener(\"load\", searchWrapSlideToggle, false);\r\n\r\nwindow.addEventListener(\"load\", preventSendingEmptySearchBar, false);\r\n","\r\nimport {PhpDataProvider} from \"./src/PhpDataProvider/PhpDataProvider\";\r\nimport {SearchWhispererHtmlElement} from \"./src/SearchWhisperer/SearchWhispererHtmlElement\";\r\nimport {UserInterfaceHtmlElements} from \"./src/UserInterfaceHtmlElements/UserInterfaceHtmlElements\";\r\nimport {loadWhispererSuggestionsListAsPromise} from \"./src/loadWhispererSuggestionsListAsPromise/loadWhispererSuggestionsListAsPromise\";\r\nimport {runSearch} from \"./src/runSearch/boldSearchPatterInString\";\r\n\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n\r\n const userInterface = new UserInterfaceHtmlElements();\r\n const phpData = new PhpDataProvider();\r\n\r\n // Must be global 'var' variable not let.\r\n var isWhispererSuggestionListLoaded: boolean = false;\r\n var whispererSuggestionList: string[] | undefined;\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 // Whisperer\r\n userInterface.searchInputField.addEventListener('keyup', (event: KeyboardEvent) => {\r\n\r\n // Pokud je search field prazdny, neprovadime zadnou akci.\r\n if (userInterface.searchInputField.value.length === 0) {\r\n return;\r\n }\r\n\r\n // Search started by pressing enter.\r\n if ([ 'Enter', 'NumpadEnter' ].includes(event.code)) {\r\n if (userInterface.searchInputField.value.length === 0 && ! userInterface.isSearchRunning) {\r\n return;\r\n }\r\n\r\n runSearch(userInterface, searchWhisperer, phpData.domain);\r\n return;\r\n }\r\n\r\n if (event.code === 'ArrowUp') {\r\n searchWhisperer.setPreviousItemAsActive();\r\n return;\r\n }\r\n else if (event.code === 'ArrowDown') {\r\n searchWhisperer.setNextItemAsActive();\r\n return;\r\n }\r\n\r\n // Loading the list of suggestions if not loaded yet.\r\n if (! isWhispererSuggestionListLoaded) {\r\n isWhispererSuggestionListLoaded = true;\r\n\r\n loadWhispererSuggestionsListAsPromise(phpData.domain)\r\n .then(response => response.json())\r\n .then(data => {\r\n\r\n whispererSuggestionList = data as string[];\r\n\r\n searchWhisperer.setSuggestionsList(whispererSuggestionList);\r\n\r\n if (! userInterface.isSearchRunning) {\r\n searchWhisperer.showSuggestions(userInterface.getSearchQuery());\r\n }\r\n })\r\n .catch(() => {\r\n console.log('Retrieving suggestions failed.')\r\n });\r\n }\r\n else if (isWhispererSuggestionListLoaded\r\n && whispererSuggestionList !== undefined\r\n && ! userInterface.isSearchRunning\r\n ) {\r\n searchWhisperer.showSuggestions(userInterface.getSearchQuery());\r\n }\r\n\r\n });\r\n\r\n // Pokud se zmenil text ve vyhledavacim boxu a vyhledavaci boxu je prazdny, schovame naseptavac.\r\n userInterface.searchInputField.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.iconMagnifyingGlass.addEventListener('click', () => {\r\n if (userInterface.getSearchQuery().length === 0 && ! userInterface.isSearchRunning) {\r\n return;\r\n }\r\n\r\n runSearch(userInterface, searchWhisperer, phpData.domain);\r\n });\r\n\r\n});\r\n\r\n\r\n","/**\r\n * functiontoggleRegionSelection() - Přepíná mezi zobrazením mapy a seznamu regionů.\r\n */\r\nfunction toggleRegionSelection()\r\n{\r\n\tevent.preventDefault();\r\n\r\n\t// Konverze nodeList na Array kvuli podpore IE.\r\n\t//\t\tArray.prototype.slice.call více backwards compatible než Array.from\r\n\tArray.prototype.slice\r\n\t\t.call( document.querySelectorAll('.mapa, .seznam, .vyber-mapa-abeceda, .vyber-abeceda-mapa') )\r\n\t\t.forEach( function (item) {\r\n\t\t\titem.classList.toggle('block-visible');\r\n\t\t});\r\n}\r\n\r\nwindow.toggleRegionSelection = toggleRegionSelection;"],"names":["AccentService","accentMap","string","normalizedString","i","length","this","charAt","exports","PhpDataProvider","data","settings","domain","Error","SearchWhispererHtmlElement","template","activeItemIndex","shadow","attachShadow","mode","innerHTML","container","querySelector","style","display","phpData","PhpDataProvider_1","userInterface","UserInterfaceHtmlElements_1","accentService","AccentService_1","addEventListener","event","target","HTMLLIElement","searchInputField","value","innerText","runSearch","setActiveItem","resetActiveItem","document","contains","hideSuggestions","rect","getBoundingClientRect","top","window","scrollY","left","querySelectorAll","forEach","element","remove","searchedQuery","undefined","whisperingSuggestionsList","boldedSuggestionsList","getMatchingNamesWithBoldedSearchedPattern","limitedBoldedSuggestionsList","maxNumberOfSuggestions","slice","Object","entries","liElement","createElement","appendChild","setPositionUnderSearchBar","list","children","item","classList","Array","from","indexOf","add","HTMLElement","searchedQueryNormalized","normalize","toLowerCase","matchingItemsList","key","includes","push","itemBolded","boldSearchPatterInString","UserInterfaceHtmlElements","isSearchRunning","camerasContainer","iconMagnifyingGlass","iconSpinner","trim","brAfterTable","searchedCamerasTable","promiseOfSearchedCamerasTableHTml","then","response","json","tableHtml","hideContentCamerasTables","insertAdjacentHTML","disabled","removeSearchedCamerasTable","showMagnifyingGlassIcon","showContentCamerasTables","console","log","pattern","text","text_dia","pattern_length","pozice","offset_text","pozice_text","pattern_text","substr","re","RegExp","sub_text","replace","searchQuery","fetchOptions","method","cache","headers","body","JSON","stringify","fetch","searchWhisperer","showSpinnerIcon","loadSearchTableHtmlAsPromise","getSearchQuery","swapCamerasTableForSearchResultCamerasTable","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","closeAll","getElementById","items","getElementsByTagName","className","documentElement","onclick","showHide","e","el","parentNode","cancelBubble","stopPropagation","searchWrapToggleIE","searchIcon","searchWrap","isSlideOpen","preventDefault","returnValue","searchWrapSlideToggle","height","once","clientHeight","setTimeout","preventSendingEmptySearchBar","navigator","userAgent","whispererSuggestionList","isWhispererSuggestionListLoaded","customElements","define","SearchWhispererHtmlElement_1","prepend","code","showSuggestions","loadWhispererSuggestionsListAsPromise","setSuggestionsList","setNextItemAsActive","setPreviousItemAsActive","toggleRegionSelection","prototype","call","toggle"],"sourceRoot":""}