{"version":3,"sources":["webpack:///./app/javascript/calendar/filters.js"],"names":["loadCalendarFilterById","id","undefined","url","window","calendarSettings","loadFilterLink","replace","$","ajax","method","dataType","success","data","removeClass","addClass","val","title","patient_ids","forEach","option","document","querySelector","setValue","clear","mode_type_ids","therapist_ids","loadedCalendarFilter","error","xhr","status","console","updateQuickButtons","getElementById","remove","existingHeaderToolbar","quickButtonsContainer","createElement","className","parentNode","insertBefore","nextSibling","activeFilter","URLSearchParams","location","search","get","innerHTML","buttonWrapper","Array","isArray","calendarFiltersData","pinnedFilters","filter","distinction","activeFilterExists","some","activeFilterObject","find","isActive","button","type","dataset","uuid","active","action","icon","length","substring","appendChild","loadCalendarFilters","show","urlParams","filterUrl","filtersLink","toString","filtersListPinned","filtersListSaved","filtersListOther","empty","admin","isAdmin","distinctionIcon","class","grippie","listItem","attr","filterSpan","text","dataId","defaultIcon","defaultLink","href","append","deleteLink","prepend","children","hide","newCalendarFilter","event","preventDefault","prop","loadCalendarFilter","target","deleteCalendarFilter","dUrl","deleteFilterLink","eId","parent","confirm","defaultCalendarFilter","defaultFilterLink","saveAndApplyCalendarFilter","form","checkValidity","saveUrl","saveFilterLink","serialize","set","newUrl","pathname","Turbolinks","visit","reportValidity","saveFilterPositionChange","ui","list","filterItems","item","index","moveUrl","moveFilterLink","showEmptyDropzones","src","savedFilters","otherFilters","registerFilters","off","on","this","closest","modal","sortable","connectWith","revert","handle","placeholder","helper","axis","opacity","start","receive","update","stop","originalIndex","items","eq","before"],"mappings":"82BAMA,IAAMA,EAAyB,SAACC,GAAQ,IAAD,EACrC,QAAWC,IAAPD,GAA2B,OAAPA,EACtB,OAAO,EAET,IAAME,EAAG,UAAGC,OAAOC,wBAAV,aAAG,EAAyBC,eAAeC,QAAQ,MAAON,GACnEO,EAAEC,KAAK,CACLN,MACAO,OAAQ,MACRC,SAAU,OACVC,QAJK,SAIGC,GACNL,EAAE,4BAA4BM,YAAY,cAC1CN,EAAE,eAAD,OAAgBK,EAAKZ,GAArB,OAA6Bc,SAAS,cACvCP,EAAE,uBAAuBQ,IAAIH,EAAKZ,IAClCO,EAAE,0BAA0BQ,IAAIH,EAAKI,OACrCJ,EAAKK,YAAYC,SAAQ,SAACC,GACxBC,SAASC,cAAc,gCAAgCC,SAASH,EAAO,GAAIA,EAAO,OAEhFC,SAASC,cAAc,oCACzBD,SAASC,cAAc,kCAAkCE,QACzDX,EAAKY,cAAcN,SAAQ,SAACC,GAC1BC,SAASC,cAAc,kCAAkCC,SAASH,EAAO,GAAIA,EAAO,QAGpFC,SAASC,cAAc,qCACzBD,SAASC,cAAc,mCAAmCE,QAC1DX,EAAKa,cAAcP,SAAQ,SAACC,GAC1BC,SAASC,cAAc,mCAAmCC,SAASH,EAAO,GAAIA,EAAO,QAGzFhB,OAAOuB,qBAAuB1B,GAEhC2B,MA1BK,SA0BCC,EAAKC,EAAQF,GACjBG,QAAQH,MAAM,kBAAmBE,EAAQF,OAwD/CxB,OAAO4B,mBA/CoB,WAAO,IAAD,EAE/B,UAAAX,SAASY,eAAe,wBAAxB,SAA0CC,SAE1C,IAAMC,EAAwBd,SAASC,cAAc,iCACrD,GAAKa,EAAL,CAEA,IAAMC,EAAwBf,SAASgB,cAAc,OACrDD,EAAsBnC,GAAK,gBAC3BmC,EAAsBE,UAAY,+BAClCH,EAAsBI,WAAWC,aAAaJ,EAAuBD,EAAsBM,aAE3F,IACMC,EADY,IAAIC,gBAAgBvC,OAAOwC,SAASC,QACvBC,IAAI,UAEnCV,EAAsBW,UAAtB,iEACA,IAAMC,EAAgBZ,EAAsBd,cAAc,WAC1D,GAAK2B,MAAMC,QAAQ9C,OAAO+C,qBAA1B,CAEA,IAAIC,EAAgBhD,OAAO+C,oBAAoBE,QAAO,SAAAA,GAAM,MAA2B,WAAvBA,EAAOC,eAEjEC,EAAqBH,EAAcI,MAAK,SAAAH,GAAM,OAAIA,EAAOpD,KAAOyC,KAEtE,GAAIA,IAAiBa,EAAoB,CACvC,IAAME,EAAqBrD,OAAO+C,oBAAoBO,MAAK,SAAAL,GAAM,OAAIA,EAAOpD,KAAOyC,KAC/Ee,IACFL,EAAa,CAAIK,GAAJ,SAA2BL,KAI5CA,EAAcjC,SAAQ,SAAAkC,GACpB,IAAMM,EAAWN,EAAOpD,KAAOyC,EACzBkB,EAASvC,SAASgB,cAAc,UACtCuB,EAAOC,KAAO,SACdD,EAAOtB,UAAP,qBAAiCqB,EAAW,mBAAqB,YAAjE,QACAC,EAAOE,QAAQC,KAAOV,EAAOpD,GAC7B2D,EAAOE,QAAQE,OAASL,EAAW,OAAS,QAC5CC,EAAOE,QAAP,QAAyBT,EAAM,QAC/BO,EAAOE,QAAQG,OAAS5C,SAASC,cAAc,kBAAoB,qCAAuC,yCAC1GsC,EAAOb,UAAP,kCACoBM,EAAOa,KAD3B,yBAEIb,EAAOpC,MAAMkD,OAAS,GAAKd,EAAOpC,MAAMmD,UAAU,EAAG,IAAM,MAAQf,EAAOpC,MAF9E,mBAGI0C,EAAW,0BAA4B,GAH3C,UAKAX,EAAcqB,YAAYT,SAS9B,IAAMU,EAAsB,WAC1B9D,EAAE,eAAe+D,OACjB,IAAMC,EAAY,IAAI7B,gBAAgBvC,OAAOwC,SAASC,QAClD4B,EAAS,UAAMrE,OAAOC,iBAAiBqE,YAA9B,YAA6CF,EAAUG,YAChEtD,SAASC,cAAc,oBACzBmD,GAAa,eAEfjE,EAAEC,KAAK,CACLN,IAAKsE,EACL/D,OAAQ,MACRC,SAAU,OACVC,QAJK,SAIGC,GAAO,IAAD,IACN+D,EAAoBpE,EAAE,iCACtBqE,EAAmBrE,EAAE,gCACrBsE,EAAmBtE,EAAE,oCAE3BoE,EAAkBG,QAClBF,EAAiBE,QACjBD,EAAiBC,QAEjB3E,OAAO+C,oBAAsBtC,EAE7BA,EAAKM,SAAQ,SAACkC,GACZ,GAAKA,EAAO2B,OAAS5E,OAAOC,iBAAiB4E,UAAc5B,EAAO2B,QAAU5E,OAAOC,iBAAiB4E,QAAU,CAC5G,IAAIC,EAEFA,GADyB,cAAvB7B,EAAOC,aAEAD,EAAOC,YADE9C,EAAE,MAAO,CAAE2E,MAAA,gCAAgC9B,EAAOa,SAMtE,IAAMkB,EAAU5E,EAAE,MAAO,CAAE2E,MAAO,sCAC5BE,EAAW7E,EAAE,OAAQ,CAAE2E,MAAO,yDAA0DG,KAAK,UAAWjC,EAAOpD,IACjHoD,EAAOW,QACTqB,EAAStE,SAAS,cAEpB,IAAMwE,EAAa/E,EAAE,SAAU,CAAE2E,MAAO,oBAAqBK,KAAMnC,EAAOpC,MAAOwE,OAAQpC,EAAOpD,KAC1FyF,EAAclF,EAAE,MAAO,CAAE2E,MAAO9B,EAAM,QAAW,qBAAuB,iBACxEsC,EAAcnF,EAAE,MAAO,CAC3BoF,KAAM,sBACNT,MAAO,gBACPM,OAAQpC,EAAOpD,KACd4F,OAAOH,GACJI,EAAatF,EAAE,MAAO,CAC1BoF,KAAM,sBACNT,MAAO,eACPM,OAAQpC,EAAOpD,KACd4F,OAAOrF,EAAE,MAAO,CAAE2E,MAAO,iBAC5BE,EAASU,QAAQb,GACjBG,EAASU,QAAQX,GACU,WAAvB/B,EAAOC,aACT+B,EAASQ,OAAON,GAAYM,OAAOC,GAAYD,OAAOF,GACtDf,EAAkBiB,OAAOR,IACO,UAAvBhC,EAAOC,aAChB+B,EAASQ,OAAON,GAAYM,OAAOC,GAAYD,OAAOF,GACtDd,EAAiBgB,OAAOR,KAExBA,EAASQ,OAAON,GAChBT,EAAiBe,OAAOR,QAKc,IAAxCT,EAAkBoB,WAAW7B,QAC/BS,EAAkBiB,OAAO,sFAEgB,IAAvChB,EAAiBmB,WAAW7B,QAC9BU,EAAiBgB,OAAO,qFAEiB,IAAvCf,EAAiBkB,WAAW7B,QAC9BW,EAAiBe,OAAO,uFAE1BrF,EAAE,eAAeyF,YAEmB/F,IAAhCE,OAAOuB,sBACT3B,EAAuBI,OAAOuB,sBAGhC,aAAAvB,QAAO4B,0BAAP,kBAEFJ,MA1EK,SA0ECC,EAAKC,EAAQF,GACjBG,QAAQH,MAAM,mCAAoCE,EAAQF,GAC1DpB,EAAE,eAAeyF,WAIvB7F,OAAOkE,oBAAsBA,EAM7B,IAAM4B,EAAoB,SAACC,GACpB,OAALA,QAAK,IAALA,KAAOC,iBACP5F,EAAE,4BAA4BM,YAAY,cAC1CN,EAAE,6BAA6B6F,KAAK,YAAY,GAChD7F,EAAE,uBAAuBQ,IAAI,IAC7BR,EAAE,0BAA0BQ,IAAI,IAChCR,EAAE,iCAAiC6F,KAAK,WAAW,GACnDhF,SAASC,cAAc,gCAAgCE,QACvDH,SAASC,cAAc,kCAAkCE,QACrDH,SAASC,cAAc,oCACzBD,SAASC,cAAc,mCAAmCE,SAQxD8E,EAAqB,SAACH,GACrB,OAALA,QAAK,IAALA,KAAOC,iBACPF,EAAkBC,GAClB,IAAMlG,EAAKO,EAAE2F,EAAMI,QAAQjB,KAAK,UAC5BrF,GACFD,EAAuBC,IAQrBuG,EAAuB,SAACL,GAAW,IAAD,EACjC,OAALA,QAAK,IAALA,KAAOC,iBACP5F,EAAE,eAAe+D,OACjB,IAAMkC,EAAI,UAAGrG,OAAOC,wBAAV,aAAG,EAAyBqG,iBAChCC,EAAMnG,EAAE2F,EAAMI,QAAQK,SAAStB,KAAK,UACrCmB,GAASE,GAAQvG,OAAOyG,QAAQ,2EAIrCrG,EAAEC,KAAK,CACLN,IAAKsG,EAAKlG,QAAQ,MAAOoG,GACzBjG,OAAQ,OACRC,SAAU,OACVC,QAJK,SAIGC,GACNyD,IACA4B,KAEFtE,MARK,SAQCC,EAAIC,EAAQF,GAChBG,QAAQH,MAAM,kBAAmBE,EAAQF,MAZ3CpB,EAAE,eAAeyF,QAqBfa,EAAwB,SAACX,GAAW,IAAD,EAClC,OAALA,QAAK,IAALA,KAAOC,iBACP5F,EAAE,eAAe+D,OACjB,IAAMkC,EAAI,UAAGrG,OAAOC,wBAAV,aAAG,EAAyB0G,kBAChCJ,EAAMnG,EAAE2F,EAAMI,QAAQK,SAAStB,KAAK,UACrCmB,GAASE,GAAQvG,OAAOyG,QAAQ,qEAIrCrG,EAAEC,KAAK,CACLN,IAAKsG,EAAKlG,QAAQ,MAAOoG,GACzBjG,OAAQ,OACRC,SAAU,OACVC,QAJK,SAIGC,GACNyD,IACA4B,KAEFtE,MARK,SAQCC,EAAIC,EAAQF,GAChBG,QAAQH,MAAM,kBAAmBE,EAAQF,MAZ3CpB,EAAE,eAAeyF,QAqBfe,EAA6B,SAACb,GAAW,IAAD,IACvC,OAALA,QAAK,IAALA,KAAOC,iBAEP,IAAMa,EAAO5F,SAASY,eAAe,qBAErC,GAAKgF,EAAKC,gBAAV,CAIA1G,EAAE,sCAAsC6F,KAAK,YAAY,GACzD,IAAMc,EAAO,UAAG/G,cAAH,iBAAG,EAAQC,wBAAX,aAAG,EAA0B+G,eAC1C5G,EAAEC,KAAK,CACLN,IAAKgH,EACLzG,OAAQ,OACRC,SAAU,OACVE,KAAML,EAAEyG,GAAMI,YACdzG,QALK,SAKGC,GACN,IAAM2D,EAAY,IAAI7B,gBAAgBvC,OAAOwC,SAASC,QACtD2B,EAAS,OAAQ,UACjBA,EAAU8C,IAAI,SAAUzG,EAAKZ,IAC7B,IAAMsH,EAAM,UAAMnH,OAAOwC,SAAS4E,SAAtB,YAAkChD,EAAUG,YACxD8C,WAAWC,MAAMH,IAEnB3F,MAZK,SAYCC,EAAKC,EAAQF,GAEjB,IAAM4C,EAAY,IAAI7B,gBAAgBvC,OAAOwC,SAASC,QACtD2B,EAAS,OAAQ,UACjB,IAAM+C,EAAM,UAAMnH,OAAOwC,SAAS4E,SAAtB,YAAkChD,EAAUG,YACxD8C,WAAWC,MAAMH,WAtBnBN,EAAKU,kBAgCHC,EAA2B,SAACC,EAAIC,GAAU,IAAD,IAC7CtH,EAAE,eAAe+D,OACjB,IAAMwD,EAAcF,EAAGG,KAAKpB,SAASZ,SAAS,0BACxCjC,EAAO8D,EAAGG,KAAKnH,KAAK,MACpBoH,EAAiB,cAATH,EAAuB,EAAIC,EAAYE,MAAMJ,EAAGG,MAC1DE,EAAO,UAAG9H,cAAH,iBAAG,EAAQC,wBAAX,aAAG,EAA0B8H,eACxCD,EAAUA,EAAQ3H,QAAQ,IAAKwD,GAAMxD,QAAQ,IAAK0H,GAAO1H,QAAQ,IAAKuH,GACtEtH,EAAEC,KAAK,CACLN,IAAK+H,EACLxH,OAAQ,QACRC,SAAU,OACVC,QAJK,SAIGC,GACNyD,KAEF1C,MAPK,SAOCC,EAAIC,EAAQF,GAChBG,QAAQH,MAAM,kBAAmBE,EAAQF,OAYzCwG,EAAqB,SAAC7D,GAAsB,IAAhB8D,EAAe,uDAAT,KACtC,GAAI9D,EAAM,CACR,IAAMnB,EAAgB5C,EAAE,0DAA0D2D,QACrE,WAARkE,GAAsC,IAAlBjF,GAAiC,WAARiF,GAAsC,IAAlBjF,IACpE5C,EAAE,iCAAiCqF,OAAO,uEAE5C,IAAMyC,EAAe9H,EAAE,yDAAyD2D,QACnE,UAARkE,GAAoC,IAAjBC,GAAgC,UAARD,GAAoC,IAAjBC,IACjE9H,EAAE,gCAAgCqF,OAAO,sEAE3C,IAAM0C,EAAe/H,EAAE,yDAAyD2D,QACnE,cAARkE,GAAwC,IAAjBE,GAAgC,cAARF,GAAwC,IAAjBE,IACzE/H,EAAE,gCAAgCqF,OAAO,uEAE3CrF,EAAE,mBAAmBO,SAAS,eAC9BP,EAAE,cAAcO,SAAS,eAEzBP,EAAE,4CAA4C0B,SAC9C1B,EAAE,2CAA2C0B,SAC7C1B,EAAE,2CAA2C0B,SAC7C1B,EAAE,mBAAmBM,YAAY,eACjCN,EAAE,cAAcM,YAAY,WAOhCV,OAAOoI,gBAAkB,WACvB,IAAMhE,EAAY,IAAI7B,gBAAgBvC,OAAOwC,SAASC,QACtDzC,OAAOuB,qBAAuB6C,EAAU1B,IAAI,UAC5CwB,IACA9D,EAAEa,UAAUoH,IAAI,aAChBjI,EAAEa,UAAUqH,GAAG,iBAAkB,qCAAsC1B,GACvExG,EAAEa,UAAUqH,GAAG,iBAAkB,2BAA4BxC,GAC7D1F,EAAEa,UAAUqH,GAAG,iBAAkB,kBAAmBpC,GACpD9F,EAAEa,UAAUqH,GAAG,iBAAkB,iBAAkBlC,GACnDhG,EAAEa,UAAUqH,GAAG,iBAAkB,kBAAmB5B,GACpDtG,EAAEa,UAAUqH,GAAG,iBAAkB,6BAA6B,WAC5DlI,EAAEmI,MAAMC,QAAQ,UAAUC,MAAM,WAI9BxH,SAASC,cAAc,mBAAoD,MAA/BlB,OAAOuB,uBACrDnB,EAAE,4BAA4BM,YAAY,UAC1CN,EAAE,oBAAoBqI,MAAM,SAK9BrI,EAAE,oCAAoCsI,SAAS,CAC7CC,YAAa,8DACbC,QAAQ,EACRC,OAAQ,WACRC,YAAa,WACbC,OAAQ,QACRC,KAAM,IACNC,QAAS,GACTC,MAR6C,SAQvCnD,EAAO0B,GACXO,GAAmB,EAAM,aACzBP,EAAGG,KAAKnH,KAAK,gBAAiBgH,EAAGG,KAAKC,UAExCsB,QAZ6C,SAYrCpD,EAAO0B,GACbD,EAAyBC,EAAI,cAE/B2B,OAf6C,SAetCrD,EAAO0B,KAGd4B,KAlB6C,SAkBxCtD,EAAO0B,GAEV,IAAM6B,EAAgB7B,EAAGG,KAAKnH,KAAK,iBACnC,GAAoC,oCAAhCgH,EAAGG,KAAKpB,SAAStB,KAAK,MAA6C,CACrE9E,EAAEmI,MAAMG,SAAS,UACjB,IAAMa,EAAQnJ,EAAEmI,MAAM3C,WAClB0D,GAAiB,GAAKA,EAAgBC,EAAMxF,QAC9CwF,EAAMC,GAAGF,GAAeG,OAAOhC,EAAGG,MAGtCI,GAAmB,MAKvB5H,EAAE,gCAAgCsI,SAAS,CACzCC,YAAa,kEACbC,QAAQ,EACRC,OAAQ,WACRC,YAAa,WACbE,KAAM,IACNC,QAAS,GACTC,MAPyC,SAOnCnD,EAAO0B,GACXO,GAAmB,EAAK,UAE1BmB,QAVyC,SAUjCpD,EAAO0B,GACbD,EAAyBC,EAAI,UAE/B2B,OAbyC,SAalCrD,EAAO0B,GACZD,EAAyBC,EAAI,UAE/B4B,KAhByC,SAgBpCtD,EAAO0B,GACVO,GAAmB,MAKvB5H,EAAE,iCAAiCsI,SAAS,CAC1CC,YAAa,iEACbC,QAAQ,EACRC,OAAQ,WACRC,YAAa,WACbE,KAAM,IACNC,QAAS,GACTC,MAP0C,SAOpCnD,EAAO0B,GACXO,GAAmB,EAAK,WAE1BmB,QAV0C,SAUlCpD,EAAO0B,GACbD,EAAyBC,EAAI,WAE/B2B,OAb0C,SAanCrD,EAAO0B,GACZD,EAAyBC,EAAI,WAE/B4B,KAhB0C,SAgBrCtD,EAAO0B,GACVO,GAAmB,Q","file":"js/73-bf0d0e09e01b965c26a4.chunk.js","sourcesContent":["import { constructURL } from 'helpers/url';\n\n// Loads a calendar filter by its ID via an AJAX request and populates the filter form.\n//\n// @param {number} id - The ID of the calendar filter to load.\n// @return {void}\nconst loadCalendarFilterById = (id) => {\n if (id === undefined || id === null) {\n return false;\n }\n const url = window.calendarSettings?.loadFilterLink.replace('000', id);\n $.ajax({\n url,\n method: 'GET',\n dataType: 'json',\n success(data) {\n $('li.saved-calendar-filter').removeClass('bg-warning');\n $(`li[data-id=\"${data.id}\"]`).addClass('bg-warning');\n $('#calendar_filter_id').val(data.id);\n $('#calendar_filter_title').val(data.title);\n data.patient_ids.forEach((option) => {\n document.querySelector('awc-autocomplete#patient_ids').setValue(option[1], option[0]);\n });\n if (document.querySelector('awc-autocomplete#mode_type_ids')) {\n document.querySelector('awc-autocomplete#mode_type_ids').clear();\n data.mode_type_ids.forEach((option) => {\n document.querySelector('awc-autocomplete#mode_type_ids').setValue(option[1], option[0]);\n });\n }\n if (document.querySelector('awc-autocomplete#therapists_ids')) {\n document.querySelector('awc-autocomplete#therapists_ids').clear();\n data.therapist_ids.forEach((option) => {\n document.querySelector('awc-autocomplete#therapists_ids').setValue(option[1], option[0]);\n });\n }\n window.loadedCalendarFilter = id;\n },\n error(xhr, status, error) {\n console.error('Request failed:', status, error);\n },\n });\n};\n\n// Update the quick filter buttons based on pinned filters and the active filter from the URL.\n// Ensures the active filter is shown first, even if it isn't pinned.\n//\n// @return {void}\nconst updateQuickButtons = () => {\n // Remove any existing quick-buttons container to ensure a fresh render\n document.getElementById('quick-buttons')?.remove();\n // Find the existing header toolbar\n const existingHeaderToolbar = document.querySelector('.fc-header-toolbar.fc-toolbar');\n if (!existingHeaderToolbar) return;\n // Create and insert the new quick-buttons container\n const quickButtonsContainer = document.createElement('div');\n quickButtonsContainer.id = 'quick-buttons';\n quickButtonsContainer.className = 'fc-header-toolbar fc-toolbar';\n existingHeaderToolbar.parentNode.insertBefore(quickButtonsContainer, existingHeaderToolbar.nextSibling);\n // Get the 'filter' parameter from the URL\n const urlParams = new URLSearchParams(window.location.search);\n const activeFilter = urlParams.get('filter'); // Get the filter UUID from the URL\n // Add the button wrapper\n quickButtonsContainer.innerHTML = `
`;\n const buttonWrapper = quickButtonsContainer.querySelector('.d-flex');\n if (!Array.isArray(window.calendarFiltersData)) return;\n // Get pinned filters\n let pinnedFilters = window.calendarFiltersData.filter(filter => filter.distinction === 'pinned');\n // Check if active filter exists in pinned list\n const activeFilterExists = pinnedFilters.some(filter => filter.id === activeFilter);\n // If active filter isn't pinned, find it and place it at the beginning\n if (activeFilter && !activeFilterExists) {\n const activeFilterObject = window.calendarFiltersData.find(filter => filter.id === activeFilter);\n if (activeFilterObject) {\n pinnedFilters = [activeFilterObject, ...pinnedFilters]; // Prepend active filter\n }\n }\n // Render buttons\n pinnedFilters.forEach(filter => {\n const isActive = filter.id === activeFilter;\n const button = document.createElement('button');\n button.type = 'button';\n button.className = `btn btn-sm ${isActive ? 'btn-primary pr-1' : 'btn-light'} m-0`;\n button.dataset.uuid = filter.id;\n button.dataset.active = isActive ? 'true' : 'false';\n button.dataset.default = filter.default;\n button.dataset.action = document.querySelector('admin-calendar') ? 'click->admin-calendar#filterEvents' : 'click->therapist-calendar#filterEvents';\n button.innerHTML = `\n \n ${filter.title.length > 30 ? filter.title.substring(0, 27) + '...' : filter.title}\n ${isActive ? \"\" : ''}\n `;\n buttonWrapper.appendChild(button);\n });\n};\nwindow.updateQuickButtons = updateQuickButtons;\n\n// Loads calendar filters via an AJAX request and updates the filter lists in the UI.\n// Assigns the method to the `window` object for global access.\n//\n// @return {void}\nconst loadCalendarFilters = () => {\n $('#filterMask').show();\n const urlParams = new URLSearchParams(window.location.search);\n let filterUrl = `${window.calendarSettings.filtersLink}?${urlParams.toString()}`;\n if (document.querySelector('admin-calendar')) {\n filterUrl += '&admin=true';\n }\n $.ajax({\n url: filterUrl,\n method: 'GET',\n dataType: 'json',\n success(data) {\n const filtersListPinned = $('#calendarFiltersPinnedFilters');\n const filtersListSaved = $('#calendarFiltersSavedFilters');\n const filtersListOther = $('#calendarFiltersTransientFilters');\n // Clear any existing items\n filtersListPinned.empty();\n filtersListSaved.empty();\n filtersListOther.empty();\n // Store the data in windows\n window.calendarFiltersData = data;\n // Loop through the data and create list items\n data.forEach((filter) => {\n if ((filter.admin && window.calendarSettings.isAdmin) || (!filter.admin && !window.calendarSettings.isAdmin)) {\n let distinctionIcon;\n if (filter.distinction === 'transient') {\n distinctionIcon = $('', { class: `filterIcon pr-1 bi bi-${filter.icon}` });\n } else if (filter.distinction === 'pinned') {\n distinctionIcon = $('', { class: `filterIcon pr-1 bi bi-${filter.icon}` });\n } else {\n distinctionIcon = $('', { class: `filterIcon pr-1 bi bi-${filter.icon}` });\n }\n const grippie = $('', { class: 'bi bi-three-dots-vertical grippie' });\n const listItem = $('