{"version":3,"file":"./modules/UvCalculator.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/UvCalculator/UvCalculator.ts","webpack:///./modules/UvCalculator/index.ts","webpack:///./modules/FormElement.ts","webpack:///./modules/UvCalculator/AutoComplete.ts"],"sourcesContent":["const moduleSelector = '[data-module=\"UvCalculator\"]';\r\n\r\nimport DefaultFormElement from '../FormElement';\r\nimport AutoComplete from './AutoComplete';\r\nimport { createElementFromString } from '../../helpers/DOMHelpers';\r\nimport { getOptions, debounce } from '../../helpers/helperFunctions';\r\n\r\nexport default class UvCalculator extends DefaultFormElement {\r\n private uvBtn: HTMLElement;\r\n private goBackBtn: HTMLElement;\r\n private uvHeader: HTMLElement;\r\n protected options: UvCalculatorOptions;\r\n private ajaxAddressUrl: string;\r\n private ajaxUvIndexUrl: string;\r\n private inputField: HTMLInputElement;\r\n private indexArray = [];\r\n private currentAddress: string;\r\n private addressList;\r\n private autoComplete: AutoComplete;\r\n private resultContainer: HTMLElement;\r\n private ucContentWrapper: 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 UvCalculator(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, options: UvCalculatorOptions = {}) {\r\n super(element);\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), options));\r\n this.uvBtn = this.element.querySelector(`.${this.options.ActionButton}`);\r\n this.goBackBtn = this.element.querySelector(`.${this.options.ActionLink}`);\r\n this.ajaxAddressUrl = this.element.getAttribute(`${this.options.DataAjaxAddressUrl}`);\r\n this.ajaxUvIndexUrl = this.element.getAttribute(`${this.options.DataAjaxUvIndexUrl}`);\r\n this.inputField = this.element.querySelector(`.${this.options.InputField}`);\r\n this.uvHeader = this.element.querySelector(`.${this.options.UvHeader}`);\r\n this.resultContainer = this.element.querySelector(`.${this.options.AutoCompleteWrapper}`);\r\n this.ucContentWrapper = this.element.querySelector(`.${this.options.UvContentWrapper} > div`)\r\n\r\n this.addGoBackBtn()\r\n .creatIndexArray()\r\n .initEventHandlers();\r\n\r\n this.autoComplete = new AutoComplete(element, this.onAutoCompleteItemClicked.bind(this));\r\n }\r\n\r\n private initEventHandlers() {\r\n const debouncedOnTyping = debounce((value) => this.onTyping(value), 300);\r\n this.uvBtn.addEventListener('click', () => this.getLatLon());\r\n this.inputField.addEventListener('keyup', (e) => {\r\n const targetInput: HTMLInputElement = e.currentTarget as HTMLInputElement;\r\n debouncedOnTyping(targetInput.value);\r\n this.onPressEnter(e)\r\n })\r\n\r\n this.ucContentWrapper.addEventListener('click', (e) => this.goBackUvHeader(e))\r\n }\r\n\r\n private onAutoCompleteItemClicked(e) {\r\n const currentTarget: HTMLElement = e.target as HTMLElement;\r\n\r\n if (currentTarget.classList.contains('nx-autocomplete--list-item')) {\r\n const dataIndex: string = currentTarget.getAttribute('data-index');\r\n const addressSelected = this.addressList[dataIndex];\r\n this.getUvIndex(addressSelected);\r\n }\r\n }\r\n\r\n private onTyping(value) {\r\n if (value.length >= 3) {\r\n this.getListOfAddress(value);\r\n }\r\n }\r\n\r\n private getListOfAddress(value) {\r\n const url: string = `${this.ajaxAddressUrl}?query=${value}`;\r\n this.requestUrl(url, this.autoSuggest.bind(this));\r\n }\r\n\r\n private autoSuggest(xhttp) {\r\n this.addressList = JSON.parse(xhttp.responseText);\r\n const list = [];\r\n\r\n this.addressList.forEach(e => {\r\n list.push(`${e.Address.FreeformAddress || e.Address.CountrySubdivision} (${e.Address.Country})`)\r\n })\r\n\r\n this.autoComplete.showAutoComplete(this.inputField.value, list)\r\n }\r\n\r\n private onPressEnter(e) {\r\n if (e.which == 13 || e.keyCode == 13) {\r\n this.getLatLon();\r\n }\r\n }\r\n\r\n private goBackUvHeader(e) {\r\n const target: HTMLElement = e.target as HTMLElement\r\n if (target.classList.contains('nx-uv-calculator__action-link')) {\r\n this.uvHeader.classList.remove(`${this.options.UvHeader}--hidden`);\r\n this.ucContentWrapper.innerHTML = \"\";\r\n\r\n this.scrollToSection(this.uvHeader);\r\n }\r\n }\r\n\r\n private getLatLon() {\r\n const adddress: string = this.inputField.value;\r\n const url: string = `${this.ajaxAddressUrl}?query=${adddress}`;\r\n this.requestUrl(url, this.onAddressSuccess.bind(this));\r\n }\r\n\r\n private onAddressSuccess(xhttp) {\r\n const data = JSON.parse(xhttp.responseText);\r\n const firstItem = data[0];\r\n\r\n if (!firstItem) {\r\n return this;\r\n }\r\n\r\n this.getUvIndex(firstItem);\r\n }\r\n\r\n private getUvIndex(addressSelected) {\r\n const lat: string = addressSelected.Position.Lat;\r\n const lon: string = addressSelected.Position.Lon;\r\n this.currentAddress = addressSelected.Address.FreeformAddress || addressSelected.Address.CountrySubdivision;\r\n\r\n const url: string = `${this.ajaxUvIndexUrl}?query=${lat},${lon}`;\r\n this.requestUrl(url, this.onUVIndexSuccess.bind(this));\r\n }\r\n\r\n private onUVIndexSuccess(xhttp) {\r\n const index = xhttp.responseText;\r\n const targetItem: HTMLElement = this.element.querySelector(`[data-uv-range-upper-limit=\"${this.getCurrentUvIndex(index)}\"]`) as HTMLElement;\r\n this.ucContentWrapper.innerHTML = this.repleceData(targetItem, index);\r\n this.cleanUvHeader();\r\n this.uvHeader.classList.add(`${this.options.UvHeader}--hidden`);\r\n }\r\n\r\n private repleceData(targetItem: HTMLElement, index) {\r\n let node = targetItem.innerHTML\r\n node = node.replace(/\\[uvIndex\\]/g, index);\r\n node = node.replace(/\\[city\\]/g, `${this.currentAddress}`);\r\n\r\n return node;\r\n }\r\n\r\n private cleanUvHeader() {\r\n this.inputField.value = \"\";\r\n this.inputField.classList.remove('nx-input-text--focused');\r\n this.inputField.parentElement.classList.remove('nx-input-text__clear-btn--show');\r\n this.resultContainer.classList.remove(`${this.options.AutoCompleteWrapper}--active`);\r\n }\r\n\r\n private requestUrl(url, onSuccess, onFailed?) {\r\n const xhttp = new XMLHttpRequest();\r\n\r\n xhttp.onreadystatechange = () => {\r\n if (xhttp.readyState === 4) {\r\n if (xhttp.status === 200) {\r\n onSuccess(xhttp);\r\n }\r\n else if (xhttp.status === 404 || xhttp.status === 500) {\r\n if (typeof (onFailed) === 'function') {\r\n onFailed(xhttp);\r\n } else {\r\n console.warn(`Request failed:/\\n${xhttp.status}`);\r\n }\r\n }\r\n }\r\n };\r\n\r\n xhttp.open('Get', url);\r\n xhttp.send();\r\n }\r\n\r\n private creatIndexArray() {\r\n Array.from(this.element.querySelectorAll('[data-uv-range-upper-limit]')).forEach((element: HTMLElement) => {\r\n this.indexArray.push(element.getAttribute('data-uv-range-upper-limit'));\r\n });\r\n\r\n return this\r\n }\r\n\r\n private addGoBackBtn() {\r\n Array.from(this.element.querySelectorAll('[data-uv-range-upper-limit]')).forEach((element: HTMLElement) => {\r\n const goBackNodeButton = createElementFromString(`${this.goBackBtn.innerText}`);\r\n element.querySelector('.nx-content-zone__placeholder ').append(goBackNodeButton);\r\n });\r\n\r\n return this\r\n }\r\n\r\n private getCurrentUvIndex(indexValue) {\r\n let index;\r\n\r\n for (let i = 0; i <= this.indexArray.length - 1; i++) {\r\n index = this.indexArray[i];\r\n if (parseInt(this.indexArray[i]) >= parseInt(indexValue)) {\r\n break;\r\n }\r\n }\r\n\r\n return index\r\n }\r\n\r\n private scrollToSection(section) {\r\n section.scrollIntoView();\r\n let anchorNav: HTMLElement = document.body.querySelector('.nx-anchor-navigation') as HTMLElement\r\n let anchorNavHeight = 20;\r\n if (anchorNav) {\r\n anchorNavHeight = anchorNav.clientHeight;\r\n }\r\n\r\n window.scrollBy({\r\n top: -anchorNavHeight,\r\n left: 0,\r\n behavior: 'auto'\r\n });\r\n }\r\n\r\n protected getDefaultOptions(): UvCalculatorOptions {\r\n return {\r\n UvContentWrapper: 'nx-uv-calculator--content-wrapper',\r\n AutoCompleteWrapper: 'nx-autocomplete-result',\r\n UvHeader: 'nx-uv-calculator__header',\r\n InputField: 'nx-input-text__field',\r\n ActionLink: 'nx-action-link',\r\n ActionButton: 'nx-btn',\r\n DataAjaxAddressUrl: 'data-ajax-address-url',\r\n DataAjaxUvIndexUrl: 'data-ajax-uv-index-url',\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 UvCalculator.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n UvCalculator.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 UvCalculator.setup(moduleSelector)\r\n};","import UvCalculator from './UvCalculator';\r\nexport default UvCalculator;","import { toggleClass } from \"../helpers/DOMHelpers\";\r\nconst moduleSelector = '[data-module=\"FormElement\"]';\r\n\r\nexport default class FormElement {\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 FormElement(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n const ajaxURL = this.element.dataset.ajaxUrl;\r\n\r\n ajaxURL\r\n\r\n ? new FormElementNewsletter(this.element, ajaxURL)\r\n : new DefaultFormElement(this.element);\r\n }\r\n}\r\n\r\nexport class DefaultFormElement {\r\n protected formFieldContainer: HTMLElement;\r\n protected clearIcon: HTMLElement;\r\n protected inputText: HTMLInputElement;\r\n\r\n constructor(public element: HTMLElement) {\r\n this.formFieldContainer = this.element.querySelector('.nx-input-text');\r\n this.clearIcon = this.element.querySelector('.nx-input-text__clear-btn');\r\n this.inputText = this.element.querySelector('.nx-input-text__field');\r\n if (this.formFieldContainer && this.clearIcon && this.inputText) this.init();\r\n }\r\n\r\n protected init(): DefaultFormElement {\r\n this.checkFocus();\r\n this.inputText.addEventListener('input', () => this.checkEmpty());\r\n this.clearIcon.addEventListener('click', () => this.clearInput());\r\n return this;\r\n }\r\n\r\n protected checkFocus(): DefaultFormElement {\r\n this.inputText.addEventListener('focus', () => {\r\n this.formFieldContainer.classList.add('nx-input-text--focused');\r\n });\r\n\r\n this.inputText.addEventListener('blur', () => {\r\n this.formFieldContainer.classList.remove('nx-input-text--focused');\r\n });\r\n return this;\r\n }\r\n\r\n protected checkEmpty(): DefaultFormElement {\r\n toggleClass(this.formFieldContainer, 'nx-input-text__clear-btn--show', this.inputText.value.length > 0);\r\n return this;\r\n }\r\n\r\n protected clearInput(): DefaultFormElement {\r\n this.inputText.value = '';\r\n this.checkEmpty();\r\n this.inputText.blur();\r\n return this;\r\n }\r\n\r\n}\r\n\r\nexport class FormElementNewsletter extends DefaultFormElement {\r\n private formBtn: HTMLInputElement;\r\n\r\n constructor(public element: HTMLElement, private ajaxUrl: string) {\r\n super(element);\r\n this.formBtn = this.element.querySelector('.nx-btn');\r\n this.initFormWithParam();\r\n }\r\n\r\n private initFormWithParam() {\r\n this.formBtn.addEventListener('click', () => {\r\n let emailValue = this.inputText.value;\r\n let connectToAjaxUrl = ~this.ajaxUrl.indexOf(\"?\") ? '&' : '?';\r\n window.NiveaX.layer.openAsync(`${this.ajaxUrl}${connectToAjaxUrl}email=${emailValue}`);\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 FormElement.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n FormElement.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 FormElement.setup(moduleSelector);\r\n}","import { getOptions } from '../../helpers/helperFunctions';\r\n\r\nexport default class AutoComplete {\r\n private autocompleteWrapper: HTMLElement;\r\n element: HTMLElement;\r\n private inputField: HTMLInputElement;\r\n protected options: AutoCompleteOptions;\r\n private charLength: number = 3\r\n private callBackFn;\r\n\r\n constructor(element, fn, options?: AutoCompleteOptions) {\r\n this.element = element as HTMLElement\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), options));\r\n this.autocompleteWrapper = element.querySelector(`.${this.options.ContentSelector}`);\r\n this.inputField = this.element.querySelector(`.${this.options.InputField}`);\r\n this.charLength = this.options.CharLength;\r\n this.callBackFn = fn;\r\n this.initEventHandlers();\r\n }\r\n\r\n private initEventHandlers() {\r\n document.addEventListener('click', (e) => this.documentOnClickHandler(e));\r\n this.inputField.addEventListener('keyup', (e) => this.shouldAutoCompleteAppear());\r\n this.autocompleteWrapper.addEventListener('click', (e) => this.callBackFn(e));\r\n }\r\n\r\n public showAutoComplete(val, list) {\r\n if (list.length > 0) {\r\n this.autocompleteWrapper.classList.add(`${this.options.ContentSelector}--active`);\r\n } else {\r\n this.autocompleteWrapper.innerHTML = '';\r\n this.autocompleteWrapper.classList.remove(`${this.options.ContentSelector}--active`);\r\n\r\n return\r\n }\r\n\r\n let data = list;\r\n\r\n let res = '';\r\n data.forEach((e, index) => {\r\n res += `- \r\n ${e.replace(new RegExp(val, \"i\"), \"$&\")}\r\n
`;\r\n })\r\n res += '
';\r\n\r\n this.autocompleteWrapper.innerHTML = res;\r\n }\r\n\r\n private shouldAutoCompleteAppear() {\r\n const inputLenght = this.inputField.value.length\r\n if (inputLenght < this.charLength && this.autocompleteWrapper.classList.contains(`${this.options.ContentSelector}--active`)) {\r\n this.autocompleteWrapper.classList.remove(`${this.options.ContentSelector}--active`);\r\n }\r\n }\r\n\r\n private documentOnClickHandler(e) {\r\n const currentTarget: HTMLElement = e.target as HTMLElement;\r\n if (!currentTarget.closest(`.${this.options.ContentSelector}`)) {\r\n this.autocompleteWrapper.classList.remove(`${this.options.ContentSelector}--active`);\r\n }\r\n }\r\n\r\n protected getDefaultOptions(): AutoCompleteOptions {\r\n return {\r\n ContentSelector: 'nx-autocomplete-result',\r\n InputField: 'nx-input-text__field',\r\n CharLength: 3\r\n };\r\n }\r\n}"],"names":["moduleSelector","UvCalculator","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","super","indexArray","this","Object","assign","getDefaultOptions","uvBtn","querySelector","ActionButton","goBackBtn","ActionLink","ajaxAddressUrl","getAttribute","DataAjaxAddressUrl","ajaxUvIndexUrl","DataAjaxUvIndexUrl","inputField","InputField","uvHeader","UvHeader","resultContainer","AutoCompleteWrapper","ucContentWrapper","UvContentWrapper","addGoBackBtn","creatIndexArray","initEventHandlers","autoComplete","onAutoCompleteItemClicked","bind","debouncedOnTyping","value","onTyping","addEventListener","getLatLon","e","targetInput","currentTarget","onPressEnter","goBackUvHeader","target","classList","contains","dataIndex","addressSelected","addressList","getUvIndex","length","getListOfAddress","url","requestUrl","autoSuggest","xhttp","JSON","parse","responseText","list","push","Address","FreeformAddress","CountrySubdivision","Country","showAutoComplete","which","keyCode","remove","innerHTML","scrollToSection","adddress","onAddressSuccess","firstItem","lat","Position","Lat","lon","Lon","currentAddress","onUVIndexSuccess","index","targetItem","getCurrentUvIndex","repleceData","cleanUvHeader","add","replace","parentElement","onSuccess","onFailed","XMLHttpRequest","onreadystatechange","readyState","status","console","warn","open","send","goBackNodeButton","innerText","append","indexValue","i","parseInt","section","scrollIntoView","anchorNav","body","anchorNavHeight","clientHeight","window","scrollBy","top","left","behavior","FormElement","ajaxURL","ajaxUrl","FormElementNewsletter","DefaultFormElement","formFieldContainer","clearIcon","inputText","init","checkFocus","checkEmpty","clearInput","blur","formBtn","initFormWithParam","emailValue","connectToAjaxUrl","indexOf","NiveaX","layer","openAsync","AutoComplete","fn","charLength","autocompleteWrapper","ContentSelector","CharLength","callBackFn","documentOnClickHandler","shouldAutoCompleteAppear","val","res","RegExp","closest"],"sourceRoot":""}