{"version":3,"file":"./modules/RangeInputWithEvent.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/RangeInput/index.ts","webpack:///./modules/RangeInput/RangeInput.ts","webpack:///./modules/RangeInputWithEvent.ts"],"sourcesContent":["import RangeInput from './RangeInput';\r\nexport default RangeInput;","import { createListItem } from '../../helpers/DOMHelpers';\r\nconst moduleSelector = '[data-module=\"RangeInput\"]';\r\n\r\nimport { getOptions } from '../../helpers/helperFunctions';\r\n\r\nexport default class RangeInput {\r\n protected options: RangeInputOptions;\r\n protected inputField: any;\r\n protected rangeValueList: NodeListOf;\r\n protected inputFieldActiveBackground: HTMLElement;\r\n protected inputFieldThumb: HTMLElement;\r\n protected inputFieldThumbHover: HTMLElement;\r\n protected inputFieldThumbHoverContent: HTMLElement;\r\n protected numberOfSteps: number;\r\n protected generatedList: boolean = false;\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 RangeInput(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, options: RangeInputOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), options));\r\n\r\n this.inputField = this.element.querySelector(`.${this.options.InputFieldClass}`);\r\n this.rangeValueList = this.element.querySelectorAll(`.${this.options.InputValueClass}`);\r\n this.inputFieldActiveBackground = this.element.querySelector(`.${this.options.InputFieldClass}--active`);\r\n this.inputFieldThumb = this.element.querySelector(`.${this.options.InputFieldClass}--thumb`);\r\n this.inputFieldThumbHover = this.element.querySelector(`.${this.options.InputFieldClass}--thumb-hover`);\r\n this.inputFieldThumbHoverContent = this.element.querySelector(`.${this.options.InputFieldClass}--thumb-hover-text`);\r\n if (!this.inputField.step) this.inputField.step = 1;\r\n this.numberOfSteps = ((this.inputField.max - this.inputField.min) / this.inputField.step) + 1;\r\n\r\n if (this.numberOfSteps > 20) {this.element.querySelector(`.${this.options.InputValueClass}-list`).classList.add(`${this.options.InputValueClass}-list--show-first-and-last`)};\r\n\r\n if (this.rangeValueList.length === 0) { this.generatedList = true; this.generateHoverContentList() };\r\n\r\n this.positionItemLabels();\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.activeInputElementBackground(this.correctInputValue(this.inputField.value))\r\n .moveInputThumb(this.correctInputValue(this.inputField.value))\r\n .moveInputThumbHover(this.correctInputValue(this.inputField.value))\r\n .focusInputThumb()\r\n .onInputChange();\r\n }\r\n\r\n private generateHoverContentList(): RangeInput {\r\n let listItemValue = this.inputField.min;\r\n for (let counter: number = 0; counter < this.numberOfSteps; counter++) {\r\n if (counter > 0) listItemValue = parseFloat(listItemValue) + parseFloat(this.inputField.step);\r\n let newElement = createListItem(`${this.options.InputValueClass}`);\r\n newElement.innerHTML = listItemValue;\r\n newElement.setAttribute('data-hover-value', listItemValue);\r\n this.element.querySelector(`.${this.options.InputValueClass}-list`).appendChild(newElement);\r\n }\r\n this.rangeValueList = this.element.querySelectorAll(`.${this.options.InputValueClass}`);\r\n\r\n return this;\r\n }\r\n\r\n private onInputChange(): RangeInput {\r\n this.inputField.oninput = (e: Event) => {\r\n this.doOnInputChange(e);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected doOnInputChange(e: Event): RangeInput {\r\n this.activeInputElementBackground(this.correctInputValue(this.inputField.value))\r\n .moveInputThumb(this.correctInputValue(this.inputField.value))\r\n .moveInputThumbHover(this.correctInputValue(this.inputField.value));\r\n\r\n return this;\r\n }\r\n\r\n private correctInputValue(inputValue: number): number {\r\n let stepIndex;\r\n if (inputValue === this.inputField.min) {\r\n stepIndex = 0;\r\n } else {\r\n stepIndex = (this.inputField.value - this.inputField.min) / this.inputField.step;\r\n }\r\n\r\n return stepIndex;\r\n }\r\n\r\n private activeInputElementBackground(inputValue: number): RangeInput {\r\n this.inputFieldActiveBackground.style.width = this.getPositionCalculation(inputValue);\r\n\r\n return this;\r\n }\r\n\r\n private moveInputThumb(inputValue: number): RangeInput {\r\n this.inputFieldThumb.style.left = this.getPositionCalculation(inputValue);\r\n\r\n this.addFirstAndLastClasses(this.inputFieldThumb, `${this.options.InputFieldClass}--thumb`);\r\n return this;\r\n }\r\n\r\n private moveInputThumbHover(inputValue: number): RangeInput {\r\n this.inputThumbHoverContent();\r\n\r\n if (this.inputField.value === this.inputField.max) {\r\n this.inputFieldThumbHover.style.right = '0%';\r\n this.inputFieldThumbHover.style.left = 'auto';\r\n } else {\r\n this.inputFieldThumbHover.style.left = this.getPositionCalculation(inputValue);\r\n this.inputFieldThumbHover.style.right = 'auto';\r\n };\r\n\r\n this.addFirstAndLastClasses(this.inputFieldThumbHover, `${this.options.InputFieldClass}--thumb-hover`);\r\n\r\n return this;\r\n }\r\n\r\n private inputThumbHoverContent(): RangeInput {\r\n this.inputFieldThumbHoverContent.innerHTML = (this.rangeValueList[this.correctInputValue(this.inputField.value)] as HTMLElement).getAttribute('data-hover-value');\r\n return this;\r\n }\r\n\r\n private focusInputThumb(): RangeInput {\r\n this.inputField.addEventListener('mousedown', () => { this.inputFieldThumb.classList.add(`${this.options.InputFieldClass}--thumb-active`) });\r\n this.inputField.addEventListener('mouseup', () => { this.inputFieldThumb.classList.remove(`${this.options.InputFieldClass}--thumb-active`) });\r\n\r\n //touch events\r\n this.inputField.addEventListener('touchstart', () => { this.inputFieldThumb.classList.add(`${this.options.InputFieldClass}--thumb-active`) }, { passive: true });\r\n this.inputField.addEventListener('touchend', () => { this.inputFieldThumb.classList.remove(`${this.options.InputFieldClass}--thumb-active`) }, { passive: true });\r\n\r\n return this;\r\n }\r\n\r\n private getPositionCalculation(value: number): string {\r\n return ((100 * value) / (this.numberOfSteps - 1)) + \"%\";\r\n }\r\n\r\n private addFirstAndLastClasses(element: HTMLElement, originalClass: string) {\r\n this.resetFirstAndLastClasses(element, `${originalClass}`);\r\n if (parseFloat(this.inputField.value) === parseFloat(this.inputField.min)) this.addFirstClass(element, `${originalClass}`);\r\n if (parseFloat(this.inputField.value) === parseFloat(this.inputField.max)) this.addLastClass(element, `${originalClass}`);\r\n }\r\n\r\n private addFirstClass(element: HTMLElement, originalClass: string): RangeInput {\r\n element.classList.add(`${originalClass}-first`)\r\n\r\n return this;\r\n }\r\n\r\n private addLastClass(element: HTMLElement, originalClass: string): RangeInput {\r\n element.classList.add(`${originalClass}-last`)\r\n\r\n return this;\r\n }\r\n\r\n private resetFirstAndLastClasses(element: HTMLElement, originalClass: string): RangeInput {\r\n element.classList.remove(`${originalClass}-first`)\r\n element.classList.remove(`${originalClass}-last`)\r\n\r\n return this;\r\n }\r\n\r\n private positionItemLabels(): RangeInput {\r\n if (this.rangeValueList.length === 0) return;\r\n for (let index: number = 0; index < this.numberOfSteps; index++) {\r\n (this.rangeValueList[index] as HTMLElement).style.left = ((100 / (this.inputField.max - this.inputField.min)) * (index * this.inputField.step)) + \"%\";\r\n }\r\n return this;\r\n }\r\n\r\n public getDefaultOptions(): RangeInputOptions {\r\n return {\r\n InputFieldClass: 'nx-range-slider-input',\r\n InputValueClass: 'nx-range-slider-value',\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 RangeInput.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new RangeInput.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 RangeInput.setup(moduleSelector)\r\n};","import RangeInput from './RangeInput';\r\n\r\nconst moduleSelector = '[data-module=\"RangeInputWithEvent\"]';\r\n\r\nexport default class RangeInputWithEvent extends RangeInput {\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 RangeInputWithEvent(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement) {\r\n super(element);\r\n }\r\n\r\n protected doOnInputChange(e: Event): RangeInput {\r\n super.doOnInputChange(e);\r\n this.dispatchSliderEvent((e.target as HTMLInputElement).value)\r\n\r\n return this;\r\n }\r\n\r\n private dispatchSliderEvent(value: string) {\r\n this.inputField.dispatchEvent(new CustomEvent('niveax:RangeInput', { detail: { inputValue: value } }));\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 RangeInputWithEvent.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n RangeInputWithEvent.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 RangeInputWithEvent.setup(moduleSelector)\r\n};"],"names":["moduleSelector","RangeInput","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","generatedList","this","Object","assign","getDefaultOptions","inputField","querySelector","InputFieldClass","rangeValueList","InputValueClass","inputFieldActiveBackground","inputFieldThumb","inputFieldThumbHover","inputFieldThumbHoverContent","step","numberOfSteps","max","min","classList","add","length","generateHoverContentList","positionItemLabels","init","activeInputElementBackground","correctInputValue","value","moveInputThumb","moveInputThumbHover","focusInputThumb","onInputChange","listItemValue","counter","parseFloat","newElement","innerHTML","setAttribute","appendChild","oninput","e","doOnInputChange","inputValue","stepIndex","style","width","getPositionCalculation","left","addFirstAndLastClasses","inputThumbHoverContent","right","getAttribute","addEventListener","remove","passive","originalClass","resetFirstAndLastClasses","addFirstClass","addLastClass","index","RangeInputWithEvent","super","dispatchSliderEvent","target","dispatchEvent","CustomEvent","detail"],"sourceRoot":""}