{"version":3,"sources":["webpack:///./app/javascript/controllers/filters_controller.js"],"names":["this","checkAppliedFilters","updateCountAllFilters","toggleClearAll","query","window","location","search","decodedURI","decodeURI","urlParams","URLSearchParams","checkboxTargets","forEach","checkbox","entries","key","value","match","checked","updateCount","checkedCount","filter","length","allFiltersCountTarget","innerText","data","set","$","parent","addClass","event","target","get","clearAllTarget","show","hide","difference","counter","getMatchingCounter","dataset","category","count","parseInt","text","ev","preventDefault","element","taxonCounterTargets","getNumberSpan","filterFormTarget","submit","scope","id","sortInputTarget","find","childNodes","Controller","targets"],"mappings":"khFAMIA,KAAKC,sBACLD,KAAKE,wBACLF,KAAKG,mB,4CAGgB,IAAD,OACdC,EAAQC,OAAOC,SAASC,OAE9B,GAAGH,EAAO,CACR,IAAMI,EAAaC,UAAUL,GACvBM,EAAY,IAAIC,gBAAgBH,GACnBR,KAAKY,gBAEbC,SAAQ,SAACC,GAAY,IAAD,I,+nBAAA,CACHJ,EAAUK,WADP,IAC7B,IAAI,EAAJ,qBAA+C,CAAC,IAAD,eAApCC,EAAoC,KAA/BC,EAA+B,KAC1CD,EAAIE,MAAM,WAAaJ,EAASG,OAASA,IAC1CH,EAASK,SAAU,EACnB,EAAKC,YAAYN,KAJQ,qC,8CAYjC,IAAIO,EAAerB,KAAKY,gBAAgBU,QAAO,SAACR,GAAD,OAAaA,EAASK,WAASI,OAC9EvB,KAAKwB,sBAAsBC,UAAYJ,EAAe,EAAf,WAAuBA,EAAvB,KAAuC,GAC9ErB,KAAK0B,KAAKC,IAAI,eAAgBN,GAE1BA,EAAe,GACjBO,EAAE5B,KAAKwB,uBAAuBK,SAASC,SAAS,iB,oCAItCC,GACZ/B,KAAKoB,YAAYW,EAAMC,U,uCAIJhC,KAAK0B,KAAKO,IAAI,gBACd,EACjBL,EAAE5B,KAAKkC,gBAAgBC,OAEvBP,EAAE5B,KAAKkC,gBAAgBE,S,kCAIftB,GACV,IAAMuB,EAAavB,EAASK,QAAU,GAAK,EACrCmB,EAAUtC,KAAKuC,mBAAmBzB,EAAS0B,QAAQC,UAEnDC,GAASC,SAASL,EAAQb,UAAUP,MAAM,QAAU,GAAKmB,EACzDO,EAAgB,GAATF,EAAa,GAAb,WAAsBA,EAAtB,KAEbd,EAAEU,GAAST,SAASC,SAAS,eAE7BQ,EAAQb,UAAYmB,I,+BAGbC,GAAK,IAAD,OACXA,EAAGC,iBAEH9C,KAAKY,gBAAgBC,SAAQ,SAAAkC,GAC3BA,EAAQ5B,SAAU,KAEpBnB,KAAKgD,oBAAoBnC,SAAQ,SAAAkC,GAC/B,EAAKE,cAAcF,GAAStB,UAAY,MAG1CG,EAAEiB,EAAGb,QAAQI,OACbpC,KAAKkD,iBAAiBC,W,kCAGZN,GACVA,EAAGC,iBAEH,IAAMM,EAAQP,EAAGb,OAAOqB,GACxBrD,KAAKsD,gBAAgBrC,MAAQmC,EAC7BpD,KAAKkD,iBAAiBC,W,yCAGLV,GACjB,IAAMH,EAAUtC,KAAKgD,oBAAoBO,MAAK,SAACR,GAAD,OAAaA,EAAQP,QAAQC,UAAYA,KACvF,OAAOzC,KAAKiD,cAAcX,K,oCAGdA,GACZ,OAAOA,EAAQkB,WAAW,Q,mCA3FDC,G,EACpBC,QAAU,CAAC,aAAc,eAAgB,WAAY,YAAa,kBAAmB,a","file":"js/31-f2de3c204e341ec5aeeb.chunk.js","sourcesContent":["import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['filterForm', 'taxonCounter', 'checkbox', 'sortInput', 'allFiltersCount', 'clearAll']\n\n initialize() {\n this.checkAppliedFilters()\n this.updateCountAllFilters()\n this.toggleClearAll()\n }\n\n checkAppliedFilters() {\n const query = window.location.search\n\n if(query) {\n const decodedURI = decodeURI(query)\n const urlParams = new URLSearchParams(decodedURI)\n const checkboxes = this.checkboxTargets\n\n checkboxes.forEach((checkbox)=>{\n for(const [key, value] of urlParams.entries()) {\n if(key.match(/search/) && checkbox.value == value) {\n checkbox.checked = true\n this.updateCount(checkbox)\n }\n }\n })\n }\n }\n\n updateCountAllFilters(){\n let checkedCount = this.checkboxTargets.filter((checkbox)=> checkbox.checked).length\n this.allFiltersCountTarget.innerText = checkedCount > 0 ? `(${checkedCount})`:''\n this.data.set('filtersCount', checkedCount)\n\n if (checkedCount > 0 ) {\n $(this.allFiltersCountTarget).parent().addClass('has-filters')\n }\n }\n\n updateCounter(event) {\n this.updateCount(event.target)\n }\n\n toggleClearAll(){\n let filtersCount = this.data.get('filtersCount')\n if (filtersCount > 0) {\n $(this.clearAllTarget).show()\n }else{\n $(this.clearAllTarget).hide()\n }\n }\n\n updateCount(checkbox) {\n const difference = checkbox.checked ? 1 : -1\n const counter = this.getMatchingCounter(checkbox.dataset.category)\n\n const count = (parseInt(counter.innerText.match(/\\d/)) || 0) + difference\n const text = count == 0 ? \"\" : `(${count})`\n\n $(counter).parent().addClass('has-filters')\n\n counter.innerText = text\n }\n\n clearAll(ev) {\n ev.preventDefault()\n\n this.checkboxTargets.forEach(element => {\n element.checked = false\n });\n this.taxonCounterTargets.forEach(element => {\n this.getNumberSpan(element).innerText = \"\"\n });\n\n $(ev.target).hide()\n this.filterFormTarget.submit()\n }\n\n changeOrder(ev) {\n ev.preventDefault()\n\n const scope = ev.target.id\n this.sortInputTarget.value = scope\n this.filterFormTarget.submit()\n }\n\n getMatchingCounter(category) {\n const counter = this.taxonCounterTargets.find((element) => element.dataset.category == category)\n return this.getNumberSpan(counter)\n }\n\n getNumberSpan(counter) {\n return counter.childNodes[1]\n }\n}\n"],"sourceRoot":""}