{"version":3,"file":"vacancy-filter-controller-DeMiQgJx.js","sources":["../../../app/frontend/src/jobseeker/main/js/controllers/vacancy-filter-controller.js"],"sourcesContent":["import { Controller } from '@hotwired/stimulus';\nimport { FetchRequest } from '@rails/request.js';\nimport { navigator } from '@hotwired/turbo';\n\nexport default class extends Controller {\n static targets = ['form'];\n static values = {\n url: String,\n params: String,\n id: String\n };\n\n connect() {\n this.url = new URL(document.location);\n\n this.activeParams = JSON.parse(this.paramsValue);\n }\n\n reset() {\n const form = this.formTarget;\n if (!(form instanceof HTMLFormElement)) {\n throw new Error('The passed element is not a Form element.');\n }\n\n form.reset();\n this.submit({ extraParams: { reset: true } });\n }\n\n submit({ event, extraParams = {} }) {\n // Cancel the previous fetch request if it's still pending\n if (this.fetchController) this.fetchController.abort();\n\n const currentFormParams = this.formToJSON(this.formTarget);\n\n // Create a new AbortController to cancel the fetch request\n this.fetchController = new AbortController();\n\n // Add filter_id to the params so the turbo stream can replace the correct filter button partial.\n // Add reload_seo_frames to the params so the SEO turbo frames can be reloaded.\n const metaInfo = {\n filter_id: this.idValue || false,\n ...extraParams\n };\n\n this.get(this.urlValue, {\n query: {\n ...this.activeParams,\n ...currentFormParams,\n ...metaInfo\n },\n signal: this.fetchController.signal\n });\n }\n\n formToJSON(elem) {\n let output = {};\n new FormData(elem).forEach((value, key) => {\n // Check if property already exist\n if (Object.prototype.hasOwnProperty.call(output, key)) {\n let current = output[key];\n if (!Array.isArray(current)) {\n // If it's not an array, convert it to an array.\n current = output[key] = [current];\n }\n current.push(value); // Add the new value to the array.\n } else {\n output[key] = value;\n }\n });\n return output;\n }\n\n get(url, options = {}) {\n const request = new FetchRequest('get', url, {\n responseKind: 'turbo-stream',\n ...options\n });\n return this.withProgress(request.perform());\n }\n\n showProgressBar() {\n document.querySelector('#vacancies_frame').setAttribute('busy', true);\n navigator.delegate.adapter.progressBar.setValue(0);\n navigator.delegate.adapter.progressBar.show();\n }\n\n hideProgressBar() {\n document.querySelector('#vacancies_frame').setAttribute('busy', false);\n navigator.delegate.adapter.progressBar.setValue(1);\n navigator.delegate.adapter.progressBar.hide();\n }\n\n withProgress(request) {\n this.showProgressBar();\n\n return request.then((response) => {\n this.hideProgressBar();\n return response;\n });\n }\n}\n"],"names":["vacancyFilterController","Controller","form","event","extraParams","currentFormParams","metaInfo","elem","output","value","key","current","url","options","request","FetchRequest","navigator","response","__publicField"],"mappings":"mTAIe,MAAKA,UAASC,CAAW,CAQtC,SAAU,CACR,KAAK,IAAM,IAAI,IAAI,SAAS,QAAQ,EAEpC,KAAK,aAAe,KAAK,MAAM,KAAK,WAAW,CACnD,CAEE,OAAQ,CACN,MAAMC,EAAO,KAAK,WAClB,GAAI,EAAEA,aAAgB,iBACpB,MAAM,IAAI,MAAM,2CAA2C,EAG7DA,EAAK,MAAO,EACZ,KAAK,OAAO,CAAE,YAAa,CAAE,MAAO,EAAI,EAAI,CAChD,CAEE,OAAO,CAAE,MAAAC,EAAO,YAAAC,EAAc,CAAE,CAAA,EAAI,CAE9B,KAAK,iBAAiB,KAAK,gBAAgB,MAAO,EAEtD,MAAMC,EAAoB,KAAK,WAAW,KAAK,UAAU,EAGzD,KAAK,gBAAkB,IAAI,gBAI3B,MAAMC,EAAW,CACf,UAAW,KAAK,SAAW,GAC3B,GAAGF,CACJ,EAED,KAAK,IAAI,KAAK,SAAU,CACtB,MAAO,CACL,GAAG,KAAK,aACR,GAAGC,EACH,GAAGC,CACJ,EACD,OAAQ,KAAK,gBAAgB,MACnC,CAAK,CACL,CAEE,WAAWC,EAAM,CACf,IAAIC,EAAS,CAAE,EACf,WAAI,SAASD,CAAI,EAAE,QAAQ,CAACE,EAAOC,IAAQ,CAEzC,GAAI,OAAO,UAAU,eAAe,KAAKF,EAAQE,CAAG,EAAG,CACrD,IAAIC,EAAUH,EAAOE,CAAG,EACnB,MAAM,QAAQC,CAAO,IAExBA,EAAUH,EAAOE,CAAG,EAAI,CAACC,CAAO,GAElCA,EAAQ,KAAKF,CAAK,CAC1B,MACQD,EAAOE,CAAG,EAAID,CAEtB,CAAK,EACMD,CACX,CAEE,IAAII,EAAKC,EAAU,GAAI,CACrB,MAAMC,EAAU,IAAIC,EAAa,MAAOH,EAAK,CAC3C,aAAc,eACd,GAAGC,CACT,CAAK,EACD,OAAO,KAAK,aAAaC,EAAQ,QAAO,CAAE,CAC9C,CAEE,iBAAkB,CAChB,SAAS,cAAc,kBAAkB,EAAE,aAAa,OAAQ,EAAI,EACpEE,EAAU,SAAS,QAAQ,YAAY,SAAS,CAAC,EACjDA,EAAU,SAAS,QAAQ,YAAY,KAAM,CACjD,CAEE,iBAAkB,CAChB,SAAS,cAAc,kBAAkB,EAAE,aAAa,OAAQ,EAAK,EACrEA,EAAU,SAAS,QAAQ,YAAY,SAAS,CAAC,EACjDA,EAAU,SAAS,QAAQ,YAAY,KAAM,CACjD,CAEE,aAAaF,EAAS,CACpB,YAAK,gBAAiB,EAEfA,EAAQ,KAAMG,IACnB,KAAK,gBAAiB,EACfA,EACR,CACL,CACA,CA/FEC,EADkBlB,EACX,UAAU,CAAC,MAAM,GACxBkB,EAFkBlB,EAEX,SAAS,CACd,IAAK,OACL,OAAQ,OACR,GAAI,MACL"}