{"version":3,"file":"/share/sys-root/ceskehory/ceskehory-app-jaro-podzim.js","mappings":"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","sources":["webpack://sys-root/webpack/runtime/chunk loaded","webpack://sys-root/./src/Cameras/cameras.ts","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/../../../share/js/flags.js","webpack://sys-root/../../../share/js/searchWrap.js","webpack://sys-root/./src/sys-root.js","webpack://sys-root/webpack/bootstrap","webpack://sys-root/webpack/runtime/hasOwnProperty shorthand","webpack://sys-root/webpack/runtime/jsonp chunk loading","webpack://sys-root/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\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","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}","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\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;","// 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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t817: 0,\n\t90: 0,\n\t325: 0,\n\t551: 0,\n\t9: 0,\n\t853: 0,\n\t866: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksys_root\"] = self[\"webpackChunksys_root\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [866], () => (__webpack_require__(5220)))\n__webpack_require__.O(undefined, [866], () => (__webpack_require__(485)))\n__webpack_require__.O(undefined, [866], () => (__webpack_require__(4096)))\n__webpack_require__.O(undefined, [866], () => (__webpack_require__(9668)))\n__webpack_require__.O(undefined, [866], () => (__webpack_require__(563)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [866], () => (__webpack_require__(2204)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","window","addEventListener","whispererSuggestionList","userInterface","UserInterfaceHtmlElements_1","phpData","PhpDataProvider_1","isWhispererSuggestionListLoaded","customElements","define","SearchWhispererHtmlElement_1","searchWhisperer","document","createElement","setPositionUnderSearchBar","querySelector","prepend","searchInputField","event","value","length","includes","code","isSearchRunning","runSearch","domain","undefined","showSuggestions","getSearchQuery","loadWhispererSuggestionsListAsPromise","then","response","json","data","setSuggestionsList","console","log","setNextItemAsActive","setPreviousItemAsActive","target","hideSuggestions","iconMagnifyingGlass","AccentService","accentMap","string","normalizedString","i","this","charAt","exports","PhpDataProvider","settings","Error","SearchWhispererHtmlElement","template","activeItemIndex","shadow","attachShadow","mode","innerHTML","container","style","display","accentService","AccentService_1","HTMLLIElement","innerText","setActiveItem","resetActiveItem","contains","rect","getBoundingClientRect","top","scrollY","left","querySelectorAll","forEach","element","remove","searchedQuery","whisperingSuggestionsList","boldedSuggestionsList","getMatchingNamesWithBoldedSearchedPattern","limitedBoldedSuggestionsList","maxNumberOfSuggestions","slice","Object","entries","liElement","appendChild","list","children","item","classList","Array","from","indexOf","add","HTMLElement","searchedQueryNormalized","normalize","toLowerCase","matchingItemsList","key","push","itemBolded","boldSearchPatterInString","UserInterfaceHtmlElements","camerasContainer","iconSpinner","trim","brAfterTable","searchedCamerasTable","promiseOfSearchedCamerasTableHTml","tableHtml","hideContentCamerasTables","insertAdjacentHTML","disabled","removeSearchedCamerasTable","showMagnifyingGlassIcon","showContentCamerasTables","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","showSpinnerIcon","loadSearchTableHtmlAsPromise","swapCamerasTableForSearchResultCamerasTable","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","toggleRegionSelection","prototype","call","toggle","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","splice","r","o","obj","prop","hasOwnProperty","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}