{"version":3,"file":"./modules/NewsFilter.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/Expandable.ts","webpack:///./helpers/UrlHelper.ts","webpack:///./modules/NewsFilter.ts","webpack:///./modules/Expander.ts","webpack:///./modules/FilterExpandElement.ts","webpack:///./modules/NewsFilterAction.ts"],"sourcesContent":["import { getOptions } from '../helpers/helperFunctions';\r\n\r\nexport default class Expandable {\r\n private height: number;\r\n private width: number;\r\n private active: boolean;\r\n\r\n constructor(private container: HTMLElement, private options: ExpandableOptions = {}) {\r\n this.active = this.container.className.includes('active');\r\n this.options = getOptions(this.container, Object.assign(this.getDefaultOptions(), this.options));\r\n\r\n this.init();\r\n }\r\n\r\n private init(): Expandable {\r\n this.saveInitialHeight()\r\n .setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n private saveInitialHeight(): Expandable {\r\n this.height = this.options.maxHeight || this.getElementHeight(this.container);\r\n this.width = this.getElementWidth(this.container);\r\n this.container.dataset.elementHeight = this.height != null ? this.height.toString() : '';\r\n this.container.dataset.elementWidth = this.height != null ? this.width.toString() : '';\r\n return this;\r\n }\r\n\r\n private getElementHeight(element: HTMLElement): number {\r\n return element.offsetHeight;\r\n }\r\n\r\n private getElementWidth(element: HTMLElement): number {\r\n return element.offsetWidth;\r\n }\r\n\r\n private getSuitableHeight(): number {\r\n return this.active ? this.height : this.options.collapsedHeight;\r\n }\r\n\r\n private setElementHeight(element: HTMLElement, height?: number): Expandable {\r\n element.style.maxHeight = height != null ? height + 'px' : '';\r\n return this;\r\n }\r\n\r\n private toggleState(): Expandable {\r\n this.active = !this.active;\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): ExpandableOptions {\r\n return {\r\n collapsedHeight: 115\r\n };\r\n }\r\n\r\n public setCollapsedHeight(value: number): Expandable {\r\n this.options.collapsedHeight = value;\r\n return this;\r\n }\r\n\r\n public toggle(): Expandable {\r\n this.toggleState()\r\n .setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n public isActive(): boolean {\r\n return this.active;\r\n }\r\n\r\n public needToBeShown(): boolean {\r\n return this.height > this.options.collapsedHeight * 1.25;\r\n }\r\n\r\n public clear(): Expandable {\r\n this.setElementHeight(this.container)\r\n .saveInitialHeight();\r\n return this;\r\n }\r\n\r\n public render(): Expandable {\r\n this.setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n public getContainer(): HTMLElement {\r\n return this.container;\r\n }\r\n}","export class UrlHelper {\r\n static all(url: string): any {\r\n return url.match(/[^&\\?]*=[^&]*/gi) || [];\r\n }\r\n\r\n static addWithoutDecode(url: string, parameters: any): string {\r\n var keyValuePairs = this.all(url);\r\n\r\n for (var key in parameters) {\r\n var k = encodeURIComponent(key);\r\n var v = encodeURIComponent(parameters[key]);\r\n if (url.search(new RegExp(key + '=', 'i')) === -1) {\r\n keyValuePairs.push(k + '=' + v);\r\n } else {\r\n url = this.updateWithoutDecode(url, { k: v });\r\n }\r\n }\r\n\r\n return [url.split('?')[0], keyValuePairs.join('&')].join('?');\r\n }\r\n\r\n static removeWithoutDecode(url: string, keys: string[]): string {\r\n for (var i = 0; i < keys.length; i++) {\r\n url = url.replace(new RegExp(keys[i] + '=.*?&|&?' + keys[i] + '=[^&]*', 'i'), '');\r\n }\r\n\r\n return url;\r\n }\r\n\r\n static updateWithoutDecode(url: string, parameters: any): string {\r\n for (var key in parameters) {\r\n url = url.replace(new RegExp('(' + key + ')(=)([^&]*)', 'i'), '$1$2' + parameters[key]);\r\n }\r\n\r\n return url;\r\n }\r\n\r\n static getWithoutDecode(url: string, keys: string[]):any {\r\n var parameters = {};\r\n\r\n if (keys !== undefined) {\r\n for (var i = 0; i < keys.length; i++) {\r\n var value = new RegExp(keys[i] + '=([^&]*)').exec(url);\r\n if (value != null && value[1] !== undefined) {\r\n parameters[keys[i]] = value[1];\r\n }\r\n }\r\n } else {\r\n var keyValuePairs = this.all(url);\r\n\r\n for (var i = 0; i < keyValuePairs.length; i++) {\r\n var keyValue = /([^&\\?]*)=([^&]*)/i.exec(keyValuePairs[i]);\r\n if (keyValue[1] !== undefined && keyValue[2] !== undefined) {\r\n parameters[keyValue[1]] = keyValue[2];\r\n }\r\n }\r\n }\r\n\r\n return parameters;\r\n }\r\n}","import FilterExpandElement from './FilterExpandElement';\r\nimport NewsFilterAction from './NewsFilterAction';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\nimport { removeClass, addClass, createElementFromString } from \"../helpers/DOMHelpers\";\r\n\r\nconst moduleSelector = '[data-module=\"NewsFilter\"]';\r\n\r\nexport default class NewsFilter {\r\n private filterNode: HTMLElement;\r\n private resetBtn: HTMLElement;\r\n private filterItems: FilterExpandElement[];\r\n private filterAction: NewsFilterAction;\r\n private suppressEvents: boolean = false;\r\n private spinner: HTMLElement;\r\n private newsList: HTMLElement;\r\n private searchField: HTMLInputElement;\r\n private dateField: HTMLInputElement;\r\n private searchIcon: HTMLElement;\r\n private loadingSpinner: HTMLElement;\r\n private dateIcon: HTMLElement;\r\n private loadMoreButton: HTMLElement;\r\n private loadedTitle: HTMLElement;\r\n private resultsContainer: HTMLElement;\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 NewsFilter(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.init();\r\n }\r\n\r\n private initFields(): NewsFilter {\r\n this.resetBtn = this.element.querySelector(this.options.resetBtnSelector);\r\n this.filterNode = this.element.querySelector(this.options.filterSelector);\r\n this.newsList = this.element.querySelector(this.options.listNodeSelector);\r\n this.searchField = this.element.querySelector(this.options.searchFieldSelector);\r\n this.dateField = this.element.querySelector(this.options.dateSelector);\r\n this.searchIcon = this.element.querySelector(this.options.searchIconSelector);\r\n this.dateIcon = this.element.querySelector(this.options.dateIconSelector);\r\n this.loadMoreButton = this.element.querySelector(this.options.loadMoreSelector);\r\n this.loadedTitle = this.element.querySelector(this.options.loadedTitleSelector);\r\n this.resultsContainer = this.element.querySelector(this.options.resultsContainerSelector);\r\n this.spinner = null;\r\n this.loadingSpinner = null;\r\n this.suppressEvents = false;\r\n\r\n return this;\r\n }\r\n\r\n private init(): NewsFilter {\r\n this.initFields()\r\n .showLoadingSpinner()\r\n .initFilterItems(this.filterNode)\r\n .initFilterAction(this.element)\r\n .initSearchField()\r\n .initDateField()\r\n .initLoadMore()\r\n .shouldShowResults()\r\n .addHandlerOnFilterChange()\r\n .addHandlerOnResetBtn()\r\n .addHandlerOnFilterClick()\r\n .synchronize()\r\n .hideLoadingSpinner();\r\n\r\n this.suppressEvents = false;\r\n return this;\r\n }\r\n\r\n private showSpinner(): NewsFilter {\r\n const spinner: HTMLElement = this.newsList.querySelector(this.options.ajaxSpinnerSelector);\r\n if (spinner == null || this.spinner == null) {\r\n this.spinner = document.createElement('div');\r\n this.spinner.innerHTML = `
`;\r\n this.newsList.appendChild(this.spinner);\r\n }\r\n else {\r\n this.spinner.hidden = false;\r\n }\r\n return this;\r\n }\r\n\r\n private hideSpinner(): NewsFilter {\r\n this.spinner.hidden = true;\r\n return this;\r\n }\r\n\r\n private showLoadingSpinner(): NewsFilter {\r\n const spinner: HTMLElement = this.element.querySelector(this.options.filterLoadingSpinnerSelector);\r\n if (spinner == null || this.loadingSpinner == null) {\r\n this.loadingSpinner = document.createElement('div');\r\n this.loadingSpinner.innerHTML = `
`;\r\n this.element.appendChild(this.loadingSpinner);\r\n }\r\n else {\r\n this.loadingSpinner.hidden = false;\r\n }\r\n return this;\r\n }\r\n\r\n private hideLoadingSpinner(): NewsFilter {\r\n setTimeout(() => {\r\n this.loadingSpinner.hidden = true;\r\n removeClass(this.filterNode, \"loading\");\r\n }, 1000);\r\n return this;\r\n }\r\n\r\n private initSearchField(): NewsFilter {\r\n this.searchField.addEventListener('keyup', (event: KeyboardEvent) => {\r\n if (event.keyCode === 13) {\r\n this.searchFieldChanged();\r\n }\r\n });\r\n\r\n this.searchIcon.addEventListener('click', () => {\r\n this.searchFieldChanged();\r\n });\r\n return this;\r\n }\r\n\r\n private searchFieldChanged(): NewsFilter {\r\n if (!this.suppressEvents)\r\n this.reloadFilter();\r\n return this;\r\n }\r\n\r\n private reloadFilter(): NewsFilter {\r\n this.filterAction.updateUrl();\r\n this.executeReloadFilterAjax(this.filterAction.getFilterAjaxUrl());\r\n return this;\r\n }\r\n\r\n private executeReloadFilterAjax(url: string): NewsFilter {\r\n const ajaxUrl: string = url,\r\n xhr: XMLHttpRequest = new XMLHttpRequest();\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const responseElement = createElementFromString(\"
\" + xhr.responseText + \"
\"),\r\n newNode: HTMLElement = responseElement.querySelector(this.options.newsFilterContainerSelector),\r\n currentNode: HTMLElement = this.element.querySelector(this.options.containerSelector);\r\n\r\n currentNode.innerHTML = newNode.innerHTML;\r\n this.init();\r\n\r\n } else {\r\n console.log('The request failed!');\r\n }\r\n };\r\n\r\n xhr.open('GET', ajaxUrl);\r\n xhr.send();\r\n\r\n return this;\r\n }\r\n\r\n private initDateField(): NewsFilter {\r\n if ('showPicker' in HTMLInputElement.prototype) {\r\n this.dateField.addEventListener('click', (event: any) => {\r\n event.preventDefault();\r\n const input: any = event.srcElement;\r\n try {\r\n input.showPicker();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n });\r\n\r\n this.dateIcon.addEventListener('click', (event: any) => {\r\n event.preventDefault();\r\n const input: any = this.dateField;\r\n try {\r\n input.showPicker();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n });\r\n }\r\n\r\n this.dateField.addEventListener('change', () => {\r\n this.dateFieldChanged();\r\n });\r\n\r\n return this;\r\n }\r\n\r\n private dateFieldChanged(): NewsFilter {\r\n if (!this.suppressEvents)\r\n this.reloadFilter();\r\n return this;\r\n }\r\n\r\n private initFilterAction(element: HTMLElement): NewsFilter {\r\n const callbacks = {\r\n loadMoreLoaded: () => this.loadMoreLoaded(),\r\n loadMoreTriggered: () => this.loadMoreTriggered()\r\n };\r\n\r\n this.filterAction = new NewsFilterAction(element, { callbacks });\r\n\r\n return this;\r\n }\r\n\r\n private initFilterItems(element: HTMLElement): NewsFilter {\r\n this.filterItems = Array.from(element.querySelectorAll(this.options.filterItemSelector))\r\n .map((item: HTMLElement) => new FilterExpandElement(item));\r\n\r\n return this;\r\n }\r\n\r\n private addHandlerOnResetBtn(): NewsFilter {\r\n this.resetBtn.addEventListener('click', () => this.reset());\r\n return this;\r\n }\r\n\r\n private reset(): NewsFilter {\r\n const reloadFilterNeeded: boolean = this.searchFieldHasValue() || this.dateFieldHasValue();\r\n this.suppressEvents = true;\r\n\r\n this.resetSearchField();\r\n this.resetDateField();\r\n this.filterAction.resetState();\r\n this.filterItems.forEach((filterItem: FilterExpandElement) => {\r\n filterItem.refreshFilters();\r\n });\r\n this.filterAction.updateUrl();\r\n if (reloadFilterNeeded) {\r\n this.reloadFilter();\r\n }\r\n else {\r\n this.filterAction.reload();\r\n }\r\n this.suppressEvents = false;\r\n return this;\r\n }\r\n\r\n private searchFieldHasValue(): boolean {\r\n return this.searchField.value !== '';\r\n }\r\n\r\n private dateFieldHasValue(): boolean {\r\n return this.dateField.value !== '';\r\n }\r\n\r\n private resetSearchField(): NewsFilter {\r\n this.searchField.value = '';\r\n return this;\r\n }\r\n\r\n private resetDateField(): NewsFilter {\r\n this.dateField.value = '';\r\n return this;\r\n }\r\n\r\n private loadMoreLoaded(): void { \r\n this.checkShowLoadMore();\r\n this.shouldShowResults();\r\n this.hideSpinner();\r\n }\r\n\r\n private loadMoreTriggered(): void {\r\n this.hideLoadMore();\r\n this.showSpinner();\r\n }\r\n\r\n private updateAllFilterItems(): NewsFilter {\r\n this.filterItems.forEach(fItm => fItm.refreshFilters());\r\n return this;\r\n }\r\n\r\n private updateFilterAction(): NewsFilter {\r\n this.filterAction.update();\r\n this.filterAction.updateUrl();\r\n this.filterAction.reload();\r\n return this;\r\n }\r\n\r\n private initLoadMore(): NewsFilter {\r\n this.loadMoreButton.addEventListener('click', () => {\r\n this.loadMoreFilterAction();\r\n });\r\n\r\n this.checkShowLoadMore();\r\n\r\n return this;\r\n }\r\n\r\n private loadMoreFilterAction(): NewsFilter {\r\n const offset: number = parseInt(this.filterNode.dataset.offset);\r\n if (offset == null || offset <= 0)\r\n return this;\r\n\r\n this.filterAction.loadMore(offset);\r\n return this;\r\n }\r\n\r\n private checkShowLoadMore(): NewsFilter {\r\n const resultCount: number = parseInt(this.filterNode.dataset.resultCount),\r\n offset: number = parseInt(this.filterNode.dataset.offset);\r\n\r\n if (resultCount > offset)\r\n this.showLoadMore();\r\n\r\n return this;\r\n }\r\n\r\n private showLoadMore(): NewsFilter {\r\n removeClass(this.loadMoreButton, 'cw-hidden');\r\n return this;\r\n }\r\n\r\n private hideLoadMore(): NewsFilter {\r\n addClass(this.loadMoreButton, 'cw-hidden');\r\n return this;\r\n }\r\n\r\n private onFilterChange(): void {\r\n const input = event.target;\r\n\r\n if (!this.suppressEvents) {\r\n if (input.closest(this.options.checkboxSelector)) {\r\n this.updateFilterAction();\r\n }\r\n }\r\n }\r\n\r\n private addHandlerOnFilterChange(): NewsFilter {\r\n this.filterNode.addEventListener('change', () => this.onFilterChange());\r\n return this;\r\n }\r\n\r\n private onDocumentClick(event: Event): void {\r\n const target = event.target,\r\n currentFilterItem = target.closest(this.options.filterItemSelector + '--active') || target;\r\n\r\n this.filterItems.forEach(fItm => fItm.element !== currentFilterItem && fItm.closeExpander());\r\n }\r\n\r\n private addHandlerOnFilterClick(): NewsFilter {\r\n document.addEventListener('click', this.onDocumentClick.bind(this));\r\n return this;\r\n }\r\n\r\n private synchronize(): NewsFilter {\r\n this.updateAllFilterItems();\r\n return this;\r\n }\r\n\r\n private shouldShowResults(): NewsFilter {\r\n this.shouldShowLoadedTitle();\r\n this.shouldshowResultsContainer();\r\n return this;\r\n }\r\n\r\n private shouldShowLoadedTitle(): NewsFilter {\r\n if (this.filterNode.dataset.resultCount === '0' || this.filterNode.dataset.teaserCount === '0') {\r\n this.hideLoadedTitle();\r\n }\r\n else {\r\n this.showLoadedTitle();\r\n }\r\n return this;\r\n }\r\n\r\n private showLoadedTitle(): NewsFilter {\r\n removeClass(this.loadedTitle, 'cw-hidden');\r\n return this;\r\n }\r\n\r\n private hideLoadedTitle(): NewsFilter {\r\n addClass(this.loadedTitle, 'cw-hidden');\r\n return this;\r\n }\r\n\r\n private shouldshowResultsContainer(): NewsFilter {\r\n if (this.filterNode.dataset.resultCount === '0' || this.filterNode.dataset.teaserCount === '0') {\r\n this.hideResultsContainer();\r\n }\r\n else {\r\n this.showResultsContainer();\r\n }\r\n return this;\r\n }\r\n\r\n private showResultsContainer(): NewsFilter {\r\n removeClass(this.resultsContainer, 'cw-hidden');\r\n return this;\r\n }\r\n\r\n private hideResultsContainer(): NewsFilter {\r\n addClass(this.resultsContainer, 'cw-hidden');\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): Optional {\r\n return {\r\n filterSelector: '.cw-tag-filter',\r\n checkboxSelector: '.cw-cat-item__tag-value',\r\n searchFieldSelector: '.cw-search',\r\n filterItemSelector: '.cw-tag-filter__item',\r\n resetBtnSelector: '.cw-sort-filters__reset-btn',\r\n listNodeSelector: '.cw-news-list',\r\n searchIconSelector: '.cw-search__wrapper .search-icon',\r\n dateSelector: '.cw-tag-filter__date',\r\n loadMoreSelector: '.cw-show-more',\r\n dateIconSelector: '.cw-date-container .date-icon',\r\n filterLoadingSpinnerSelector: '.cw-newsfilter-loading-spinner',\r\n ajaxSpinnerSelector: '.cw-newsfilter-ajax-spinner',\r\n newsFilterContainerSelector: '.cw-news-filter .cw-container',\r\n containerSelector: '.cw-container',\r\n resultsContainerSelector: '.cw-news-results',\r\n loadedTitleSelector: '.loaded-title'\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 new NewsFilter.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new NewsFilter.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 new NewsFilter.setup(moduleSelector);\r\n}","import Expandable from './Expandable';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"Expander\"]';\r\n\r\nexport default class Expander {\r\n private container: HTMLElement;\r\n private button: HTMLElement;\r\n private expandable: Expandable;\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 Expander(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: ExpanderOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.container = this.element.querySelector(`.${this.options.contaiterSelector}`) || this.element;\r\n this.button = this.element.querySelector(`.${this.options.buttonSelector}`);\r\n \r\n this.expandable = new Expandable(this.container, this.options.expandableOptions);\r\n\r\n this.init();\r\n }\r\n\r\n private init(): Expander {\r\n\r\n this.showExpanderButton()\r\n .setButtonEventHandler()\r\n // .setOnResizeHandler()\r\n .adjustAppearance()\r\n .applyActiveFromOptions();\r\n\r\n return this;\r\n }\r\n\r\n private showExpanderButton(): Expander {\r\n this.button.hidden = false;\r\n return this;\r\n }\r\n\r\n private setButtonEventHandler(): Expander {\r\n this.button.addEventListener('click', this.toggleExpander.bind(this));\r\n return this;\r\n }\r\n\r\n private toggleActiveModifier(force?: boolean): Expander {\r\n (force)\r\n ? this.element.classList.add(`${this.options.elementSelector}--active`)\r\n : this.element.classList.remove(`${this.options.elementSelector}--active`);\r\n\r\n return this;\r\n }\r\n\r\n private showFade(force?: boolean): Expander {\r\n (force)\r\n ? this.options.hasFade && this.container.classList.add(`${this.options.contaiterSelector}--with-fade`)\r\n : this.options.hasFade && this.container.classList.remove(`${this.options.contaiterSelector}--with-fade`);\r\n\r\n return this;\r\n }\r\n\r\n private toggleExpander(clickedEvent: boolean = true): void {\r\n debugger;\r\n this.expandable.toggle();\r\n this.toggleActiveModifier(this.expandable.isActive());\r\n }\r\n\r\n // private onResize(): void {\r\n // this.options.beforeResize();\r\n // this.adjustAppearance();\r\n // }\r\n\r\n private applyActiveFromOptions() {\r\n if (this.options.isActive) {\r\n this.toggleExpander(false);\r\n }\r\n return this;\r\n }\r\n\r\n // private setOnResizeHandler(): Expander {\r\n // Beiersdorf.addToEventStore('resize', this.onResize.bind(this), window);\r\n // return this;\r\n // }\r\n\r\n private setupExpander(): Expander {\r\n this.expandable.render();\r\n\r\n this.showFade(true)\r\n .hideButton(false);\r\n\r\n return this;\r\n }\r\n\r\n private destroyExpander(): Expander {\r\n this.expandable.clear();\r\n\r\n this.showFade(false)\r\n .hideButton(true);\r\n\r\n return this;\r\n }\r\n\r\n private hideButton(value: boolean): Expander {\r\n this.button.hidden = value;\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): ExpanderOptions {\r\n return {\r\n elementSelector: 'cw-expander',\r\n contaiterSelector: 'cw-expander__content',\r\n buttonSelector: 'cw-expander__button',\r\n hasFade: true,\r\n beforeResize: () => { }\r\n };\r\n }\r\n\r\n public adjustAppearance(): Expander {\r\n this.expandable.clear();\r\n\r\n this.expandable.needToBeShown()\r\n ? this.setupExpander()\r\n : this.destroyExpander();\r\n return this;\r\n }\r\n\r\n public setCollapsedHeight(value: number): Expander {\r\n this.expandable.setCollapsedHeight(value);\r\n return this;\r\n }\r\n\r\n public setBeforResizeCB(cb: Callback): Expander {\r\n this.options.beforeResize = cb;\r\n return this;\r\n }\r\n\r\n public isActive(): boolean {\r\n return this.expandable.isActive();\r\n }\r\n\r\n public toggle(): Expander {\r\n this.toggleExpander();\r\n return this;\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 new Expander.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new Expander.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 new Expander.setup(moduleSelector);\r\n}","/// \r\n\r\nimport Expander from './Expander';\r\nimport { getNamesOfInputs } from '../helpers/helperFunctions';\r\n\r\nexport default class FilterExpandElement {\r\n private expander: Expander;\r\n private checkBoxes: HTMLInputElement[];\r\n private selectedContainer: HTMLElement;\r\n\r\n constructor(public element: HTMLElement) {\r\n this.expander = this.getExpander();\r\n this.checkBoxes = this.getCheckBoxes();\r\n this.selectedContainer = this.getContainerForSelectedFilters();\r\n\r\n this.init();\r\n }\r\n\r\n private init(): FilterExpandElement {\r\n this.addHandlerOnCheckBoxChange();\r\n return this;\r\n }\r\n\r\n private getExpander(): Expander {\r\n return new Expander(this.element, {\r\n elementSelector: 'cw-tag-filter__item',\r\n contaiterSelector: 'cw-filters',\r\n buttonSelector: 'cw-tag-filter__title',\r\n hasFade: false\r\n });\r\n }\r\n\r\n private getCheckBoxes(): HTMLInputElement[] {\r\n return Array.from(this.element.querySelectorAll('.cw-cat-item__tag-value'));\r\n }\r\n\r\n private getContainerForSelectedFilters(): HTMLElement {\r\n return this.element.querySelector('.cw-title__selected-filters');\r\n }\r\n\r\n private addHandlerOnCheckBoxChange(): FilterExpandElement {\r\n this.element.addEventListener('change', (e: Event) => {\r\n const target = e.target as HTMLInputElement | null;\r\n if (!target) return;\r\n\r\n requestAnimationFrame(() => {\r\n this.setTimeStamp(target)\r\n .showSelectedFilters()\r\n .adjustAppearance();\r\n });\r\n });\r\n\r\n return this;\r\n }\r\n\r\n\r\n private getSelectedCheckBoxes(checkBoxes: HTMLInputElement[]): HTMLInputElement[] {\r\n return checkBoxes.filter((chbox: HTMLInputElement) => chbox.checked);\r\n }\r\n\r\n private showSelectedFilters(): FilterExpandElement {\r\n const counter: number = this.getSelectedCheckBoxes(this.checkBoxes).length,\r\n label: string = this.element.dataset.selectedTitle,\r\n max: number = parseInt(this.element.dataset.showSelected);\r\n\r\n if (this.getSelectedCheckBoxes(this.checkBoxes).length < max) {\r\n // console.log(this.getSelectedCheckBoxes(this.checkBoxes));\r\n const selectedInputs = getNamesOfInputs(this.getSelectedCheckBoxes(this.checkBoxes)).join(', ');\r\n this.selectedContainer.innerHTML = selectedInputs;\r\n }\r\n else {\r\n this.selectedContainer.innerHTML = `${counter} ${label}`;\r\n }\r\n return this;\r\n }\r\n\r\n private setTimeStamp(checkbox: FilterCheckBox): FilterExpandElement {\r\n checkbox.timeStamp = Date.now();\r\n return this;\r\n }\r\n\r\n private adjustAppearance(): FilterExpandElement {\r\n this.expander.adjustAppearance();\r\n return this;\r\n }\r\n\r\n public refreshFilters(): FilterExpandElement {\r\n this.showSelectedFilters();\r\n\r\n return this;\r\n }\r\n\r\n public closeExpander(): FilterExpandElement {\r\n if (this.expander.isActive()) {\r\n this.expander.toggle();\r\n }\r\n return this;\r\n }\r\n\r\n public getCheckedFilters(): FilterCheckBox[] {\r\n return this.getSelectedCheckBoxes(this.checkBoxes);\r\n }\r\n}","import { getOptions } from '../helpers/helperFunctions';\r\nimport { getSibling, createElementFromString, toggleClass } from '../helpers/DOMHelpers';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { UrlHelper } from \"../helpers/UrlHelper\";\r\n\r\nexport default class NewsFilterAction {\r\n private filterTag: HTMLElement;\r\n private tagsMap: TagMap;\r\n private filters: FilterItem[];\r\n private ajaxUrl: string;\r\n private baseContextUrl: string;\r\n private filterAjaxUrl: string;\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.filterTag = this.element.querySelector(this.options.filterTagSelector);\r\n this.ajaxUrl = this.filterTag.dataset.ajaxUrl;\r\n this.baseContextUrl = this.getBaseUrl();\r\n this.filterAjaxUrl = this.filterTag.dataset.filterAjaxUrl;\r\n this.init();\r\n }\r\n\r\n private init(): NewsFilterAction {\r\n this.initTagsMap();\r\n this.update();\r\n return this;\r\n }\r\n\r\n private initTagsMap(): NewsFilterAction {\r\n const tagsStr: string = this.filterTag.getAttribute(this.options.tagsMapAttrs.tagsStrAttr),\r\n tagCount: string = this.filterTag.getAttribute(this.options.tagsMapAttrs.tagCountAttr),\r\n itemsCount: string = this.filterTag.getAttribute(this.options.tagsMapAttrs.itemsCountAttr);\r\n this.setTagsMap(tagsStr, tagCount, itemsCount);\r\n return this;\r\n }\r\n\r\n private setTagsMap(tagsStr: string, tagCount: string, itemsCount: string): NewsFilterAction {\r\n this.tagsMap = {\r\n tagsStr: window.atob(tagsStr),\r\n tagCount: parseInt(tagCount),\r\n itemsCount: parseInt(itemsCount)\r\n };\r\n return this;\r\n }\r\n\r\n private getFilters(): FilterItem[] {\r\n const filters = [];\r\n const filterNodes = Array.from(this.element.querySelectorAll(this.options.filterItemSelector));\r\n\r\n filterNodes.forEach((filterNode: HTMLElement) => {\r\n const filterKey: string = filterNode.dataset.key,\r\n isAnd: boolean = filterNode.dataset.isAnd === 'True',\r\n valueNodes = Array.from(filterNode.querySelectorAll(this.options.checkboxSelector)),\r\n values = [];\r\n\r\n valueNodes.forEach((valueNode: HTMLInputElement) => {\r\n values.push({\r\n node: valueNode,\r\n key: valueNode.value,\r\n checked: valueNode.checked,\r\n index: parseInt(valueNode.dataset.index)\r\n });\r\n });\r\n\r\n const filter = {\r\n node: filterNode,\r\n key: filterKey,\r\n values: values,\r\n isAnd: isAnd,\r\n cache: [],\r\n };\r\n\r\n filters.push(filter);\r\n });\r\n\r\n return filters;\r\n }\r\n\r\n private isItemTagged(item: number, tag: number): boolean {\r\n const i = item * this.tagsMap.tagCount + tag;\r\n return (this.tagsMap.tagsStr.charCodeAt(Math.floor(i / 8)) & (1 << (i % 8))) !== 0;\r\n }\r\n\r\n private isItemIncludedInFilter(i: number, filter: FilterItem): boolean {\r\n let values: FilterValue[] = filter.values,\r\n isAndFilter: boolean = filter.isAnd,\r\n anyValueChecked: boolean = false;\r\n\r\n for (let v: number = 0; v < values.length; v++) {\r\n const value: FilterValue = values[v];\r\n\r\n if (value.checked) {\r\n anyValueChecked = true;\r\n if (this.isItemTagged(i, value.index)) {\r\n if (!isAndFilter)\r\n return true;\r\n } else {\r\n if (isAndFilter)\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (isAndFilter)\r\n return true;\r\n\r\n if (!anyValueChecked)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n private isItemVisible(i: number): boolean {\r\n for (let f: number = 0; f < this.filters.length; f++) {\r\n const filter: FilterItem = this.filters[f],\r\n cacheEntry = filter.cache[i];\r\n\r\n if (cacheEntry === true)\r\n continue;\r\n\r\n if (cacheEntry === false)\r\n return false;\r\n\r\n var isIncluded = this.isItemIncludedInFilter(i, filter);\r\n filter.cache[i] = isIncluded;\r\n\r\n if (!isIncluded) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private getSearchFieldValue(): string {\r\n let input: HTMLInputElement = this.element.querySelector(this.options.searchFieldSelector);\r\n if (typeof input !== \"undefined\" && input != null)\r\n return input.value;\r\n return \"\";\r\n }\r\n\r\n private getDateFieldValue(): string {\r\n let input: HTMLInputElement = this.element.querySelector(this.options.dateSelector);\r\n if (typeof input !== \"undefined\" && input != null)\r\n return input.value;\r\n return \"\";\r\n }\r\n\r\n private countResults(): number {\r\n let count = 0;\r\n\r\n for (var i: number = 0; i < this.tagsMap.itemsCount; i++) {\r\n\r\n if (this.isItemVisible(i))\r\n count++;\r\n }\r\n\r\n return count;\r\n }\r\n\r\n private countSimulateChecked(f: number, v: number, checkedValue: boolean): number {\r\n const filter: FilterItem = this.filters[f];\r\n const oldCache: any = filter.cache;\r\n filter.cache = [];\r\n const value: FilterValue = filter.values[v];\r\n const oldChecked: boolean = value.checked;\r\n value.checked = checkedValue;\r\n const count: number = this.countResults();\r\n value.checked = oldChecked;\r\n filter.cache = oldCache;\r\n return count;\r\n }\r\n\r\n private countSimulateOnlyThisChecked(f: number, v: number): number {\r\n const oldFilter = this.filters[f];\r\n\r\n this.filters[f] = {\r\n cache: [],\r\n values: [\r\n {\r\n index: oldFilter.values[v].index,\r\n checked: true\r\n }\r\n ]\r\n };\r\n\r\n const count: number = this.countResults();\r\n this.filters[f] = oldFilter;\r\n\r\n return count;\r\n }\r\n\r\n private setCount(value: FilterValue, count: string, isDisabled: boolean): NewsFilterAction {\r\n let countNode: HTMLElement;\r\n\r\n countNode = getSibling(value.node, this.options.countNodeSelector) || value.node.nextSibling.nextSibling;\r\n value.node.disabled = isDisabled;\r\n\r\n countNode.innerText = count;\r\n return this;\r\n }\r\n\r\n private anyValueChecked(filter: FilterItem): boolean {\r\n const values = filter.values;\r\n\r\n for (let v = 0; v < values.length; v++) {\r\n if (values[v].checked)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getReloadUrl(): string {\r\n const paramsStr: string = this.encodeParams(this.getParams()),\r\n ajaxUrl: string = this.ajaxUrl + '&' + paramsStr;\r\n return ajaxUrl;\r\n }\r\n\r\n public getFilterAjaxUrl(): string {\r\n const paramsStr: string = this.encodeParams(this.getParams()),\r\n ajaxUrl: string = this.filterAjaxUrl + '&' + paramsStr;\r\n return ajaxUrl;\r\n }\r\n\r\n\r\n private getLoadMoreUrl(offset: number): string {\r\n const paramsStr: string = this.encodeParams(this.getParams(offset)),\r\n ajaxUrl: string = this.ajaxUrl + '&' + paramsStr;\r\n return ajaxUrl;\r\n }\r\n\r\n private getParams(offset?: number): FilterActionState {\r\n const filters: FilterItem[] = this.getFilters(),\r\n searchValue: string = this.getSearchFieldValue(),\r\n dateValue: string = this.getDateFieldValue(),\r\n params = {};\r\n\r\n filters.forEach((filter: FilterItem) => {\r\n const keys = [];\r\n\r\n filter.values.forEach(value => {\r\n if (value.checked) {\r\n keys.push(value.key);\r\n }\r\n });\r\n\r\n if (keys.length > 0) {\r\n params[filter.key] = keys;\r\n }\r\n });\r\n\r\n if (searchValue != null && searchValue !== \"\")\r\n params[\"query\"] = [searchValue];\r\n\r\n if (dateValue != null && dateValue !== \"\")\r\n params[\"date\"] = [dateValue];\r\n\r\n if (offset != null && offset > 0)\r\n params[\"offset\"] = [offset];\r\n\r\n return params;\r\n }\r\n\r\n private getBaseUrl(): string {\r\n const url: string = location.href,\r\n keys: string[] = this.getParamKeys();\r\n\r\n return UrlHelper.removeWithoutDecode(url, keys);\r\n }\r\n\r\n private getParamKeys(): string[] {\r\n const filters: FilterItem[] = this.getFilters(),\r\n keys: string[] = [];\r\n\r\n filters.forEach((filter: FilterItem) => {\r\n keys.push(filter.key);\r\n });\r\n\r\n keys.push(\"query\");\r\n keys.push(\"date\");\r\n keys.push(\"offset\");\r\n\r\n return keys;\r\n }\r\n\r\n private encodeParams(params: FilterActionState): string {\r\n return Object.entries(params).map(([key, value]) => `${encodeURIComponent(key)}=${value.map(v => encodeURIComponent(v)).join(',')}`).join('&');\r\n }\r\n\r\n public update(): NewsFilterAction {\r\n this.filters = this.getFilters();\r\n const currentCount: number = this.countResults();\r\n\r\n this.filters.forEach((filter: FilterItem, fIdx: number) => {\r\n\r\n filter.values.forEach((value: FilterValue, vIdx: number) => {\r\n let countStr: string;\r\n if (!value.checked) {\r\n const count: number = this.countSimulateChecked(fIdx, vIdx, true);\r\n if (filter.isAnd || !this.anyValueChecked(filter)) {\r\n countStr = count.toString();\r\n } else {\r\n if (this.countSimulateOnlyThisChecked(fIdx, vIdx) === 0) {\r\n countStr = \"0\";\r\n } else {\r\n countStr = `+${(count - currentCount)}`;\r\n }\r\n }\r\n } else {\r\n countStr = \"\";\r\n }\r\n\r\n let isDisabled: boolean = countStr === \"0\";\r\n this.setCount(value, countStr, isDisabled);\r\n });\r\n\r\n let allValuesDisabled = Array.from(filter.values).every(({ node: { disabled } }) => disabled);\r\n toggleClass(filter.node, 'cw-filter-tag--disabled', allValuesDisabled);\r\n });\r\n\r\n return this;\r\n }\r\n\r\n public updateUrl(): NewsFilterAction {\r\n const params: FilterActionState = this.getParams();\r\n let url: string = this.baseContextUrl;\r\n\r\n url = UrlHelper.addWithoutDecode(url, params);\r\n history.pushState(\"\", \"\", url);\r\n return this;\r\n }\r\n\r\n public reload(): NewsFilterAction {\r\n const ajaxUrl: string = this.getReloadUrl();\r\n this.executeAjax(ajaxUrl);\r\n return this;\r\n }\r\n\r\n public loadMore(offset: number): NewsFilterAction {\r\n const ajaxUrl: string = this.getLoadMoreUrl(offset);\r\n this.executeLoadMoreAjax(ajaxUrl);\r\n return this;\r\n }\r\n\r\n public scrollToResultNode(): NewsFilterAction {\r\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > -1) {\r\n location.href = \"#\";\r\n location.href = \"#result\";\r\n } else {\r\n const resultNode: HTMLElement = this.element.querySelector(this.options.resultNodeSelector);\r\n resultNode.scrollIntoView(true);\r\n }\r\n return this;\r\n }\r\n\r\n private executeLoadMoreAjax(url: string): NewsFilterAction {\r\n this.options.callbacks.loadMoreTriggered();\r\n const container: HTMLElement = document.querySelector(this.options.gridNodeSelector),\r\n ajaxUrl: string = url,\r\n xhr: XMLHttpRequest = new XMLHttpRequest();\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const responseElement = createElementFromString(xhr.responseText),\r\n gridNode: HTMLElement = responseElement.querySelector(this.options.gridNodeSelector) || responseElement,\r\n count: string = gridNode.dataset.resultCount,\r\n offset: string = gridNode.dataset.offset,\r\n loadedTitle: string = gridNode.dataset.loaded,\r\n loadedElement: HTMLElement = this.element.querySelector(this.options.loadedNodeSelector),\r\n tagFilter: HTMLElement = this.element.querySelector(this.options.filterTagSelector);\r\n\r\n if (count != null) {\r\n container.dataset.resultCount = count;\r\n tagFilter.dataset.resultCount = count;\r\n }\r\n\r\n if (offset != null) {\r\n container.dataset.offset = offset;\r\n tagFilter.dataset.offset = offset;\r\n }\r\n\r\n if (loadedTitle != null) {\r\n loadedElement.innerText = loadedTitle;\r\n }\r\n\r\n Array.from(gridNode.children).forEach((element: HTMLElement) => {\r\n container.appendChild(element);\r\n });\r\n\r\n } else {\r\n console.log('The request failed!');\r\n }\r\n this.options.callbacks.loadMoreLoaded();\r\n };\r\n\r\n xhr.open('GET', ajaxUrl);\r\n xhr.send();\r\n\r\n return this;\r\n }\r\n\r\n private executeAjax(url: string): NewsFilterAction {\r\n this.options.callbacks.loadMoreTriggered();\r\n const container: HTMLElement = document.querySelector(this.options.gridNodeSelector),\r\n ajaxUrl: string = url,\r\n xhr: XMLHttpRequest = new XMLHttpRequest();\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const responseElement = createElementFromString(xhr.responseText),\r\n gridNode: HTMLElement = responseElement.querySelector(this.options.gridNodeSelector) || responseElement,\r\n count: string = gridNode.dataset.resultCount,\r\n offset: string = gridNode.dataset.offset,\r\n resultNode: HTMLElement = this.element.querySelector(this.options.resultNodeSelector),\r\n loadedTitle: string = gridNode.dataset.loaded,\r\n loadedElement: HTMLElement = this.element.querySelector(this.options.loadedNodeSelector),\r\n tagFilter: HTMLElement = this.element.querySelector(this.options.filterTagSelector);\r\n\r\n if (count != null) {\r\n resultNode.innerHTML = count;\r\n container.dataset.resultCount = count;\r\n tagFilter.dataset.resultCount = count;\r\n }\r\n\r\n if (offset != null) {\r\n tagFilter.dataset.offset = offset;\r\n container.dataset.offset = offset;\r\n }\r\n\r\n if (loadedTitle != null) {\r\n loadedElement.innerText = loadedTitle;\r\n }\r\n\r\n if (gridNode.innerHTML !== \"\")\r\n container.innerHTML = gridNode.innerHTML;\r\n\r\n } else {\r\n console.log('The request failed!');\r\n }\r\n this.options.callbacks.loadMoreLoaded();\r\n };\r\n\r\n xhr.open('GET', ajaxUrl);\r\n xhr.send();\r\n\r\n return this;\r\n }\r\n\r\n public resetState(): NewsFilterAction {\r\n Array.from(>this.filterTag.querySelectorAll(this.options.checkboxSelector + ':checked')).forEach(input => input.checked = false);\r\n this.update();\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): Optional {\r\n return {\r\n tagsMapAttrs: {\r\n tagsStrAttr: 'data-atob',\r\n tagCountAttr: 'data-tab-count',\r\n itemsCountAttr: 'data-teaser-count'\r\n },\r\n filterTagSelector: '.cw-tag-filter',\r\n filterItemSelector: '.cw-tag-filter__item',\r\n dateSelector: '.cw-tag-filter__date',\r\n loadMoreSelector: '.cw-show-more',\r\n searchFieldSelector: '.cw-search',\r\n checkboxSelector: '.cw-cat-item__tag-value',\r\n countNodeSelector: '.cw-cat-item__count',\r\n resultNodeSelector: '.cw-news-results span',\r\n gridNodeSelector: '.cw-news-list',\r\n loadedNodeSelector: '.cw-show-more-container .loaded-title',\r\n callbacks: {\r\n loadMoreLoaded: () => { },\r\n loadMoreTriggered: () => { }\r\n }\r\n };\r\n }\r\n}"],"names":["container","options","this","active","className","includes","Object","assign","getDefaultOptions","init","saveInitialHeight","setElementHeight","getSuitableHeight","height","maxHeight","getElementHeight","width","getElementWidth","dataset","elementHeight","toString","elementWidth","element","offsetHeight","offsetWidth","collapsedHeight","style","toggleState","setCollapsedHeight","value","toggle","isActive","needToBeShown","clear","render","getContainer","all","url","match","addWithoutDecode","parameters","keyValuePairs","key","k","encodeURIComponent","v","search","RegExp","push","updateWithoutDecode","split","join","removeWithoutDecode","keys","i","length","replace","getWithoutDecode","undefined","exec","keyValue","moduleSelector","suppressEvents","setup","selector","Array","from","document","querySelectorAll","filter","node","moduleInitialized","forEach","NewsFilter","initFields","resetBtn","querySelector","resetBtnSelector","filterNode","filterSelector","newsList","listNodeSelector","searchField","searchFieldSelector","dateField","dateSelector","searchIcon","searchIconSelector","dateIcon","dateIconSelector","loadMoreButton","loadMoreSelector","loadedTitle","loadedTitleSelector","resultsContainer","resultsContainerSelector","spinner","loadingSpinner","showLoadingSpinner","initFilterItems","initFilterAction","initSearchField","initDateField","initLoadMore","shouldShowResults","addHandlerOnFilterChange","addHandlerOnResetBtn","addHandlerOnFilterClick","synchronize","hideLoadingSpinner","showSpinner","ajaxSpinnerSelector","createElement","innerHTML","appendChild","hidden","hideSpinner","filterLoadingSpinnerSelector","setTimeout","addEventListener","event","keyCode","searchFieldChanged","reloadFilter","filterAction","updateUrl","executeReloadFilterAjax","getFilterAjaxUrl","ajaxUrl","xhr","XMLHttpRequest","onload","status","newNode","responseText","newsFilterContainerSelector","containerSelector","console","log","open","send","HTMLInputElement","prototype","preventDefault","input","srcElement","showPicker","error","dateFieldChanged","callbacks","loadMoreLoaded","loadMoreTriggered","filterItems","filterItemSelector","map","item","reset","reloadFilterNeeded","searchFieldHasValue","dateFieldHasValue","resetSearchField","resetDateField","resetState","filterItem","refreshFilters","reload","checkShowLoadMore","hideLoadMore","updateAllFilterItems","fItm","updateFilterAction","update","loadMoreFilterAction","offset","parseInt","loadMore","resultCount","showLoadMore","onFilterChange","target","closest","checkboxSelector","onDocumentClick","currentFilterItem","closeExpander","bind","shouldShowLoadedTitle","shouldshowResultsContainer","teaserCount","hideLoadedTitle","showLoadedTitle","hideResultsContainer","showResultsContainer","contaiterSelector","button","buttonSelector","expandable","expandableOptions","Expander","showExpanderButton","setButtonEventHandler","adjustAppearance","applyActiveFromOptions","toggleExpander","toggleActiveModifier","force","classList","add","elementSelector","remove","showFade","hasFade","clickedEvent","setupExpander","hideButton","destroyExpander","beforeResize","setBeforResizeCB","cb","expander","getExpander","checkBoxes","getCheckBoxes","selectedContainer","getContainerForSelectedFilters","addHandlerOnCheckBoxChange","e","requestAnimationFrame","setTimeStamp","showSelectedFilters","getSelectedCheckBoxes","chbox","checked","counter","label","selectedTitle","max","showSelected","selectedInputs","checkbox","timeStamp","Date","now","getCheckedFilters","filterTag","filterTagSelector","baseContextUrl","getBaseUrl","filterAjaxUrl","initTagsMap","tagsStr","getAttribute","tagsMapAttrs","tagsStrAttr","tagCount","tagCountAttr","itemsCount","itemsCountAttr","setTagsMap","tagsMap","window","atob","getFilters","filters","filterKey","isAnd","valueNodes","values","valueNode","index","cache","isItemTagged","tag","charCodeAt","Math","floor","isItemIncludedInFilter","isAndFilter","anyValueChecked","isItemVisible","f","cacheEntry","isIncluded","getSearchFieldValue","getDateFieldValue","countResults","count","countSimulateChecked","checkedValue","oldCache","oldChecked","countSimulateOnlyThisChecked","oldFilter","setCount","isDisabled","countNode","countNodeSelector","nextSibling","disabled","innerText","getReloadUrl","paramsStr","encodeParams","getParams","getLoadMoreUrl","searchValue","dateValue","params","location","href","getParamKeys","entries","currentCount","fIdx","vIdx","countStr","allValuesDisabled","every","history","pushState","executeAjax","executeLoadMoreAjax","scrollToResultNode","navigator","userAgent","indexOf","appVersion","resultNodeSelector","scrollIntoView","gridNodeSelector","responseElement","gridNode","loaded","loadedElement","loadedNodeSelector","tagFilter","children","resultNode"],"sourceRoot":""}