{"version":3,"file":"range-slider-controller-CFjkWs1l.js","sources":["../../../app/frontend/src/jobseeker/main/js/controllers/range-slider-controller.js"],"sourcesContent":["import { Controller } from '@hotwired/stimulus';\nimport noUiSlider from 'nouislider';\n\nexport default class extends Controller {\n static targets = ['slider', 'value', 'minValue', 'maxValue', 'filter'];\n\n static values = {\n options: Array\n };\n\n connect() {\n this.initializeSlider();\n }\n\n disconnect() {\n this.destroySlider();\n }\n\n initializeSlider() {\n if (this.instance) {\n this.destroySlider();\n }\n\n if (this.multipleSlider) {\n this.renderMultipleSlider();\n } else {\n this.renderSingleSlider();\n }\n }\n\n destroySlider() {\n if (this.instance && this.sliderTarget.noUiSlider) {\n this.instance.destroy();\n this.instance = null;\n }\n }\n\n renderSingleSlider() {\n this.instance = noUiSlider.create(this.sliderTarget, {\n connect: true,\n range: {\n min: 0,\n max: this.optionsValue.length - 1\n },\n step: 1,\n start: this.currentLevel,\n cssPrefix: 'range-slider-'\n });\n\n this.instance.on('set', this.updateSingleValue);\n }\n\n updateSingleValue = () => {\n if (!this.hasValueTarget) return;\n\n const value = this.instance.get();\n const level = this.optionsValue[~~value];\n this.valueTarget.value = level;\n\n if (this.hasFilterTarget) {\n this.application\n .getControllerForElementAndIdentifier(\n this.element.closest('[data-controller=\"vacancy-filter\"]'),\n 'vacancy-filter'\n )\n .submit({});\n }\n };\n\n renderMultipleSlider() {\n this.instance = noUiSlider.create(this.sliderTarget, {\n connect: true,\n range: {\n min: 0,\n max: this.optionsValue.length - 1\n },\n step: 1,\n start: [this.currentMinLevel, this.currentMaxLevel],\n cssPrefix: 'range-slider-',\n format: {\n to: (value) => value,\n from: (value) => value\n }\n });\n\n this.instance.on('set', this.updateMultipleValue);\n }\n\n updateMultipleValue = () => {\n if (!this.hasMinValueTarget && !this.hasMaxValueTarget) return;\n\n this.minValueTarget.value =\n this.optionsValue[Math.round(this.instance.get()[0])];\n this.maxValueTarget.value =\n this.optionsValue[Math.round(this.instance.get()[1])];\n\n if (this.hasFilterTarget) {\n this.application\n .getControllerForElementAndIdentifier(\n this.element.closest('[data-controller=\"vacancy-filter\"]'),\n 'vacancy-filter'\n )\n .submit({});\n }\n };\n\n get multipleSlider() {\n return this.data.get('multipleSlider') === 'true';\n }\n\n get currentLevel() {\n return this.hasValueTarget && this.valueTarget.value\n ? this.optionsValue.indexOf(this.valueTarget.value.toString())\n : 0;\n }\n\n get currentMinLevel() {\n return this.minValueTarget.value\n ? this.optionsValue.indexOf(this.minValueTarget.value)\n : 0;\n }\n\n get currentMaxLevel() {\n return this.maxValueTarget.value\n ? this.optionsValue.indexOf(this.maxValueTarget.value)\n : this.optionsValue.length - 1;\n }\n}\n"],"names":["rangeSliderController","Controller","__publicField","value","level","noUiSlider"],"mappings":"mQAGe,MAAKA,UAASC,CAAW,CAAzB,kCAiDbC,EAAA,yBAAoB,IAAM,CACxB,GAAI,CAAC,KAAK,eAAgB,OAE1B,MAAMC,EAAQ,KAAK,SAAS,IAAK,EAC3BC,EAAQ,KAAK,aAAa,CAAC,CAACD,CAAK,EACvC,KAAK,YAAY,MAAQC,EAErB,KAAK,iBACP,KAAK,YACF,qCACC,KAAK,QAAQ,QAAQ,oCAAoC,EACzD,gBACV,EACS,OAAO,CAAA,CAAE,CAEf,GAqBDF,EAAA,2BAAsB,IAAM,CACtB,CAAC,KAAK,mBAAqB,CAAC,KAAK,oBAErC,KAAK,eAAe,MAClB,KAAK,aAAa,KAAK,MAAM,KAAK,SAAS,IAAG,EAAG,CAAC,CAAC,CAAC,EACtD,KAAK,eAAe,MAClB,KAAK,aAAa,KAAK,MAAM,KAAK,SAAS,IAAG,EAAG,CAAC,CAAC,CAAC,EAElD,KAAK,iBACP,KAAK,YACF,qCACC,KAAK,QAAQ,QAAQ,oCAAoC,EACzD,gBACV,EACS,OAAO,CAAA,CAAE,EAEf,GA9FD,SAAU,CACR,KAAK,iBAAkB,CAC3B,CAEE,YAAa,CACX,KAAK,cAAe,CACxB,CAEE,kBAAmB,CACb,KAAK,UACP,KAAK,cAAe,EAGlB,KAAK,eACP,KAAK,qBAAsB,EAE3B,KAAK,mBAAoB,CAE/B,CAEE,eAAgB,CACV,KAAK,UAAY,KAAK,aAAa,aACrC,KAAK,SAAS,QAAS,EACvB,KAAK,SAAW,KAEtB,CAEE,oBAAqB,CACnB,KAAK,SAAWG,EAAW,OAAO,KAAK,aAAc,CACnD,QAAS,GACT,MAAO,CACL,IAAK,EACL,IAAK,KAAK,aAAa,OAAS,CACjC,EACD,KAAM,EACN,MAAO,KAAK,aACZ,UAAW,eACjB,CAAK,EAED,KAAK,SAAS,GAAG,MAAO,KAAK,iBAAiB,CAClD,CAmBE,sBAAuB,CACrB,KAAK,SAAWA,EAAW,OAAO,KAAK,aAAc,CACnD,QAAS,GACT,MAAO,CACL,IAAK,EACL,IAAK,KAAK,aAAa,OAAS,CACjC,EACD,KAAM,EACN,MAAO,CAAC,KAAK,gBAAiB,KAAK,eAAe,EAClD,UAAW,gBACX,OAAQ,CACN,GAAKF,GAAUA,EACf,KAAOA,GAAUA,CACzB,CACA,CAAK,EAED,KAAK,SAAS,GAAG,MAAO,KAAK,mBAAmB,CACpD,CAoBE,IAAI,gBAAiB,CACnB,OAAO,KAAK,KAAK,IAAI,gBAAgB,IAAM,MAC/C,CAEE,IAAI,cAAe,CACjB,OAAO,KAAK,gBAAkB,KAAK,YAAY,MAC3C,KAAK,aAAa,QAAQ,KAAK,YAAY,MAAM,SAAU,CAAA,EAC3D,CACR,CAEE,IAAI,iBAAkB,CACpB,OAAO,KAAK,eAAe,MACvB,KAAK,aAAa,QAAQ,KAAK,eAAe,KAAK,EACnD,CACR,CAEE,IAAI,iBAAkB,CACpB,OAAO,KAAK,eAAe,MACvB,KAAK,aAAa,QAAQ,KAAK,eAAe,KAAK,EACnD,KAAK,aAAa,OAAS,CACnC,CACA,CA3HED,EADkBF,EACX,UAAU,CAAC,SAAU,QAAS,WAAY,WAAY,QAAQ,GAErEE,EAHkBF,EAGX,SAAS,CACd,QAAS,KACV"}