{"version":3,"sources":["webpack:///./assets/javascripts/modules/components/PriceRangeComponent.js"],"names":["PriceRangeComponent","compEl","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","minVal","parseInt","$component","dataset","rangeMin","maxVal","rangeMax","currentMin","min","currentMax","max","minInput","querySelector","SELECTORS","maxInput","rangeSlider","currency","undefined","applyFilter","resetSlider","bind","enableSlider","disableSlider","Component","active","_get","prototype","init","setSliderChangeHandler","bindEvents","rangeAllSliders","allSplitted","all","split","cnt","length","setMaxIndexTo","updateInputs","i","perc","Math","floor","noUiSlider","create","start","connect","range","snap","tooltips","format","wnumb","prefix","decimals","thousand","_this2","on","values","get","toString","replace","$emit","$customEvents","FILTERS_EVENTS","currentPriceRangeInput","domComponent","launchQuery","value","isNaN","set","classList","remove","CLASSNAMES","document","querySelectorAll","forEach","item","setAttribute","removeAttribute","element","sort","a","b","query","count","getAllRanges","facetName","add","$on","PRICE_RANGE_FILTER","reset","disable","enable"],"mappings":"qZAKqBA,cAoBnB,SAAAA,EAAYC,gGAAQC,CAAAC,KAAAH,GAAA,IAAAI,mKAAAC,CAAAF,MAAAH,EAAAM,WAAAC,OAAAC,eAAAR,IAAAS,KAAAN,KACZF,IADY,OAElBG,EAAKM,OAASC,SAASP,EAAKQ,WAAWC,QAAQC,UAC/CV,EAAKW,OAASJ,SAASP,EAAKQ,WAAWC,QAAQG,UAC/CZ,EAAKa,WAAaN,SAASP,EAAKQ,WAAWC,QAAQK,KACnDd,EAAKe,WAAaR,SAASP,EAAKQ,WAAWC,QAAQO,KACnDhB,EAAKiB,SAAWjB,EAAKQ,WAAWU,cAAclB,EAAKmB,UAAUF,UAC7DjB,EAAKoB,SAAWpB,EAAKQ,WAAWU,cAAclB,EAAKmB,UAAUC,UAC7DpB,EAAKqB,YAAcrB,EAAKQ,WAAWU,cAAclB,EAAKmB,UAAUE,aAChErB,EAAKsB,cAAgDC,IAArCvB,EAAKQ,WAAWC,QAAQa,SAAyBtB,EAAKQ,WAAWC,QAAQa,SAClC,OAArDtB,EAAKQ,WAAWU,cAAc,mBAA8BlB,EAAKQ,WAAWU,cAAc,mBAAmBT,QAAQa,SAAW,GAElItB,EAAKwB,aAAc,EAEnBxB,EAAKyB,YAAczB,EAAKyB,YAAYC,KAAjB1B,GACnBA,EAAK2B,aAAe3B,EAAK2B,aAAaD,KAAlB1B,GACpBA,EAAK4B,cAAgB5B,EAAK4B,cAAcF,KAAnB1B,GAhBHA,qUApB2B6B,iDAG7C,MAAO,wDAIP,OACEZ,SAAU,mBACVG,SAAU,mBACVC,YAAa,0DAKf,OACES,OAAQ,6SAwBVC,CAAAnC,EAAAoC,UAAA9B,WAAAC,OAAAC,eAAAR,EAAAoC,WAAA,SAAAjC,MAAAM,KAAAN,MACAA,KAAKkC,OACLlC,KAAKmC,yBACLnC,KAAKoC,4CAIL,IAAIC,KAGAC,EAFOtC,KAAKS,WAAWC,QACZ6B,IACOC,MAAM,KACxBC,EAAMH,EAAYI,OAElBC,EAAgBF,EAAK,EAIzB,GAFAzC,KAAK4C,eAEFH,GAAO,EACR,IAAI,IAAII,EAAI,EAAGA,EAAIJ,EAAKI,IAAK,CAC3B,IAAIC,EAAOC,KAAKC,MAAM,IAAIH,GAAGJ,EAAI,IAPjB,GAQbI,EACDR,EAAA,IAAyB7B,SAAS8B,EAAYO,IACtCA,GAAKF,EACbN,EAAA,IAAyB7B,SAAS8B,EAAYO,IAE9CR,EAAgBS,EAAO,KAAOtC,SAAS8B,EAAYO,IAKzDI,IAAWC,OAAOlD,KAAKsB,aACrB6B,OAAQnD,KAAKc,WAAYd,KAAKgB,YAC9BoC,SAAS,EACTC,MAAQhB,EACRiB,MAAO,EACPC,UAAU,EACVC,OAAQC,KACNC,OAAU1D,KAAKuB,SAAW,IAC1BoC,SAAY,EACZC,SAAY,wDAKO,IAAAC,EAAA7D,KACRA,KAAKS,WAWpBT,KAAKsB,YAAY2B,WAAWa,GAAG,SAVV,WACnB,IAAMC,EAASF,EAAKvC,YAAY2B,WAAWe,MAC3CH,EAAK/C,WAAaN,SAASuD,EAAO,GAAGE,WAAWC,QAAQL,EAAKtC,SAAW,IAAK,KAC7EsC,EAAK7C,WAAaR,SAASuD,EAAO,GAAGE,WAAWC,QAAQL,EAAKtC,SAAW,IAAK,KAC7EsC,EAAKjB,eACFiB,EAAKpC,cACNoC,EAAKM,MAAMN,EAAKO,cAAcC,eAAeC,wBAAwBC,aAAcV,EAAKpD,aACxFoD,EAAKM,MAAMN,EAAKO,cAAcC,eAAeG,wDAOtB,IAAvBxE,KAAKkB,SAASuD,QAA0C,IAA3BC,MAAM1E,KAAKc,aAAyBd,KAAKkB,SAASuD,OAASzE,KAAKc,YACvE,IAAvBd,KAAKqB,SAASoD,QAA0C,IAA3BC,MAAM1E,KAAKgB,aAAyBhB,KAAKqB,SAASoD,OAASzE,KAAKgB,cAC9FhB,KAAKyB,aAAc,GAErBzB,KAAKkB,SAASuD,MAAQzE,KAAKc,WAAWmD,WAAWC,QAAQ,KAAM,IAC/DlE,KAAKqB,SAASoD,MAAQzE,KAAKgB,WAAWiD,WAAWC,QAAQ,KAAM,0CAI/D,IAAI3C,EAAWvB,KAAKuB,SAChBwC,EAAS/D,KAAKsB,YAAY2B,WAAWe,MAEzChE,KAAKsB,YAAY2B,WAAW0B,KAAK3E,KAAKO,OAAQP,KAAKY,SACnDZ,KAAKc,WAAaN,SAASuD,EAAO,GAAGE,WAAWC,QAAQ3C,EAAW,IAAK,KACxEvB,KAAKgB,WAAaR,SAASuD,EAAO,GAAGE,WAAWC,QAAQ3C,EAAW,IAAK,KACxEvB,KAAK4C,eACL5C,KAAKS,WAAWmE,UAAUC,OAAO7E,KAAK8E,WAAW/C,gDAKjDgD,SAASC,iBAAiBhF,KAAKoB,UAAUE,aAAa2D,QAAQ,SAAAC,GACjD,MAARA,GACHA,EAAKC,aAAa,WAAY,6CAMhCJ,SAASC,iBAAiBhF,KAAKoB,UAAUE,aAAa2D,QAAQ,SAAAC,GACjD,MAARA,GACHA,EAAKE,gBAAgB,mDAIZC,GACX,GAAc,MAAXA,EAAiB,CAClB,IACI/C,EADM+C,EAAQ3E,QAAQ6B,IACJC,MAAM,KAK5B,OAFAF,EAAYgD,KADI,SAACC,EAAGC,GAAJ,OAAUD,EAAIC,IAGvBlD,wCAQT,GAA+C,MAA5CyC,SAAS5D,cAAc,kBACxB,MAAO,GAGT,IAAIsE,EAAQ,GACRC,SACAL,EAAUrF,KAAKS,WACf6B,EAActC,KAAK2F,aAAaN,GAChC9E,EAA0B,MAAjBP,KAAKkB,SAAmBlB,KAAKkB,SAASuD,MAAQY,EAAQlE,cAAcnB,KAAKoB,UAAUF,UAAUuD,MACtG7D,EAA0B,MAAjBZ,KAAKqB,SAAmBrB,KAAKqB,SAASoD,MAAQY,EAAQlE,cAAcnB,KAAKoB,UAAUC,UAAUoD,MACtG9D,EAAW0E,EAAQ3E,QAAQC,SAC3BE,EAAWwE,EAAQ3E,QAAQG,SAC3B+E,EAAYP,EAAQ3E,QAAQkF,UAEhC,GAAkB,MAAftD,GAAwB3B,GAAYJ,GAAUM,GAAYD,EA0B3DyE,EAAQT,UAAUC,OAAO7E,KAAK8E,WAAW/C,YA1B2B,CAEpE0D,EAAQ,IAER,IAAI,IAAI5C,EAAI,EAAGA,EAAIP,EAAYI,OAAQG,IACrC,KAAGrC,SAAS8B,EAAYO,KAAOtC,GAGxB,GAAIC,SAAS8B,EAAYO,KAAOjC,GAAoB,MAAT8E,EAEhDD,GAASG,EAAY,IAAMtD,EAAYO,GACvC6C,EAAQ,MACH,MAAIlF,SAAS8B,EAAYO,KAAOjC,GAAoB,MAAT8E,GAIhD,MAFAD,GAAS,IAAMG,EAAY,IAAMtD,EAAYO,GAKrC,KAAT4C,IAEDA,GAASG,EAAY,IAAMhF,GAG7ByE,EAAQT,UAAUiB,IAAI7F,KAAK8E,WAAW/C,QAIxC,OAAO0D,uCAIPzF,KAAK8F,IAAI9F,KAAKoE,cAAc2B,mBAAmBC,MAAOhG,KAAK0B,aAC3D1B,KAAK8F,IAAI9F,KAAKoE,cAAc2B,mBAAmBE,QAASjG,KAAK6B,eAC7D7B,KAAK8F,IAAI9F,KAAKoE,cAAc2B,mBAAmBG,OAAQlG,KAAK4B,uBAvM3C/B","file":"component-PriceRangeComponent.chunks.js","sourcesContent":["import Component from '../abstracts/Component';\nimport noUiSlider from 'nouislider';\nimport 'nouislider/dist/nouislider.css';\nimport wnumb from 'wnumb';\n\nexport default class PriceRangeComponent extends Component {\n\n get COMPONENTNAME() {\n return 'PriceRangeComponent';\n }\n\n get SELECTORS() {\n return {\n minInput: '[data-input-min]',\n maxInput: '[data-input-max]',\n rangeSlider: '[data-range-slider]',\n };\n }\n\n get CLASSNAMES() {\n return {\n active: 'active',\n };\n }\n\n constructor(compEl) {\n super(compEl);\n this.minVal = parseInt(this.$component.dataset.rangeMin);\n this.maxVal = parseInt(this.$component.dataset.rangeMax);\n this.currentMin = parseInt(this.$component.dataset.min);\n this.currentMax = parseInt(this.$component.dataset.max);\n this.minInput = this.$component.querySelector(this.SELECTORS.minInput);\n this.maxInput = this.$component.querySelector(this.SELECTORS.maxInput);\n this.rangeSlider = this.$component.querySelector(this.SELECTORS.rangeSlider);\n this.currency = this.$component.dataset.currency !== undefined ? this.$component.dataset.currency :\n this.$component.querySelector('[data-currency]') !== null ? this.$component.querySelector('[data-currency]').dataset.currency : '';\n // extra components\n this.applyFilter = false;\n\n this.resetSlider = this.resetSlider.bind(this);\n this.enableSlider = this.enableSlider.bind(this);\n this.disableSlider = this.disableSlider.bind(this);\n }\n\n render() {\n super.render();\n this.init();\n this.setSliderChangeHandler();\n this.bindEvents();\n }\n\n init() {\n let rangeAllSliders = {};\n let data = this.$component.dataset;\n let all = data.all;\n let allSplitted = all.split(\"|\");\n let cnt = allSplitted.length;\n let setMinIndexTo = 0;\n let setMaxIndexTo = cnt -1;\n\n this.updateInputs();\n\n if(cnt >= 2) {\n for(var i = 0; i < cnt; i++) {\n let perc = Math.floor(100*i/(cnt-1));\n if(i == setMinIndexTo) {\n rangeAllSliders[\"min\"] = parseInt(allSplitted[i]);\n } else if(i == setMaxIndexTo) {\n rangeAllSliders[\"max\"] = parseInt(allSplitted[i]);\n } else {\n rangeAllSliders[perc + \"%\"] = parseInt(allSplitted[i]);\n }\n }\n }\n\n noUiSlider.create(this.rangeSlider, {\n start: [this.currentMin, this.currentMax],\n connect: true,\n range : rangeAllSliders,\n snap : true,\n tooltips: true,\n format: wnumb({\n 'prefix': this.currency + ' ',\n 'decimals': 0,\n 'thousand': ''\n })\n });\n }\n\n setSliderChangeHandler() {\n const target = this.$component;\n const handleSlider = () => {\n const values = this.rangeSlider.noUiSlider.get();\n this.currentMin = parseInt(values[0].toString().replace(this.currency + ' ', ''));\n this.currentMax = parseInt(values[1].toString().replace(this.currency + ' ', ''));\n this.updateInputs();\n if(this.applyFilter) {\n this.$emit(this.$customEvents.FILTERS_EVENTS.currentPriceRangeInput,{domComponent: this.$component});\n this.$emit(this.$customEvents.FILTERS_EVENTS.launchQuery);\n }\n };\n this.rangeSlider.noUiSlider.on('change', handleSlider);\n }\n\n updateInputs() {\n if((this.minInput.value != '' && isNaN(this.currentMin) === false && this.minInput.value != this.currentMin) ||\n (this.maxInput.value != '' && isNaN(this.currentMax) === false && this.maxInput.value != this.currentMax)) {\n this.applyFilter = true;\n }\n this.minInput.value = this.currentMin.toString().replace('.-', '');\n this.maxInput.value = this.currentMax.toString().replace('.-', '');\n }\n\n resetSlider() {\n let currency = this.currency;\n let values = this.rangeSlider.noUiSlider.get();\n // reset sliders\n this.rangeSlider.noUiSlider.set([this.minVal, this.maxVal]);\n this.currentMin = parseInt(values[0].toString().replace(currency + ' ', ''));\n this.currentMax = parseInt(values[1].toString().replace(currency + ' ', ''));\n this.updateInputs();\n this.$component.classList.remove(this.CLASSNAMES.active);\n }\n\n //To disable\n disableSlider() {\n document.querySelectorAll(this.SELECTORS.rangeSlider).forEach(item => {\n if(item == null) return;\n item.setAttribute('disabled', '');\n });\n }\n\n //To re-enable\n enableSlider() {\n document.querySelectorAll(this.SELECTORS.rangeSlider).forEach(item => {\n if(item == null) return;\n item.removeAttribute('disabled');\n });\n }\n\n getAllRanges(element) {\n if(element != null) {\n let all = element.dataset.all;\n let allSplitted = all.split(\"|\");\n // ascending order set\n const sortAsc = (a, b) => a - b;\n allSplitted.sort(sortAsc);\n\n return allSplitted;\n } else {\n return;\n }\n }\n\n buildQuery() {\n // take values\n if(document.querySelector('.w-price-range') == null) {\n return '';\n }\n\n let query = '';\n let count;\n let element = this.$component;\n let allSplitted = this.getAllRanges(element);\n let minVal = this.minInput != null ? this.minInput.value : element.querySelector(this.SELECTORS.minInput).value;\n let maxVal = this.maxInput != null ? this.maxInput.value : element.querySelector(this.SELECTORS.maxInput).value;\n let rangeMin = element.dataset.rangeMin;\n let rangeMax = element.dataset.rangeMax;\n let facetName = element.dataset.facetName;\n\n if(allSplitted != null && (rangeMin != minVal || rangeMax != maxVal)) {\n\n query = ':';\n\n for(var i = 0; i < allSplitted.length; i++) {\n if(parseInt(allSplitted[i]) <= minVal) {\n // if is less , i jumpt it\n continue;\n } else if((parseInt(allSplitted[i]) <= maxVal) && count == null) {\n // first price filter\n query += facetName + \":\" + allSplitted[i];\n count = 1;\n } else if((parseInt(allSplitted[i]) <= maxVal) && count != null) {\n // first price filter\n query += \":\" + facetName + \":\" + allSplitted[i];\n } else {\n break;\n }\n }\n if(query == ':') {\n //avoids broken query\n query += facetName + \":\" + maxVal;\n }\n\n element.classList.add(this.CLASSNAMES.active);\n } else {\n element.classList.remove(this.CLASSNAMES.active);\n }\n return query;\n }\n\n bindEvents(){\n this.$on(this.$customEvents.PRICE_RANGE_FILTER.reset, this.resetSlider);\n this.$on(this.$customEvents.PRICE_RANGE_FILTER.disable, this.disableSlider);\n this.$on(this.$customEvents.PRICE_RANGE_FILTER.enable, this.enableSlider);\n }\n}\n"],"sourceRoot":""}