{"version":3,"file":"sections-calendar.3229b1bad7d2afa55ac8.js","mappings":"kKAGAA,EAAAA,EAAAA,QAAe,CACbC,QAAS,CAAE,mBAAoB,oBAGjC,SAAeD,EAAAA,EAAAA,KAASE,MAAMC,EAAAA,E,6DCF9B,MAAMC,EAAQ,CACZC,SAAU,MA6CNC,EAAgB,KACpB,MAAMC,EAAKC,SAASC,eAAe,mBAEnC,GAAKF,EAAL,CAIA,IAAKA,EAAGG,UAAUC,SAAS,MAAO,CAChC,MAAMC,EAAWL,EAAGM,QAAQD,SAE5BR,EAAMC,SAAW,IAAIS,EAAAA,EAASP,EAAI,CAChCQ,QAAS,CAACC,EAAAA,GACVC,YAAa,eACbC,aAAcC,OAAOC,WAAW,uBAAuBC,QAAU,EAAI,EACrEC,cAAe,CACbC,KAAM,GACNC,OAAQ,kBACRC,MAAO,IAETC,OAAQC,MAAOC,EAAMC,KACnB,MAAMC,EAAQ,CAAEC,MAAOH,EAAKI,SAAUC,IAAKL,EAAKM,QAC1CC,EAAY,IAAIC,gBAAgBjB,OAAOkB,SAASC,QAChDC,EAAiBJ,EAAUK,IAAI,YAC/BC,EAAaN,EAAUK,IAAI,UAE7BD,IACFT,EAAMY,SAAWH,GAGfE,IACFX,EAAMQ,OAASG,GAKjBZ,QAFmBc,EAAAA,EAAAA,IAAS/B,GAAUkB,MAAMA,GAAOU,MAAMI,OAE5C,GAGnB,CAEAxC,EAAMC,SAASwC,QAnCf,CAmCuB,GAGzBC,EAAAA,EAAAA,IAAG,QAAS,gCArFQC,IAClB,MAAMC,EAASD,EAAEE,OAAOC,QAAQ,UAEhC1C,SAAS2C,iBAAiB,oCAAoCC,SAASC,GAAMA,EAAE3C,UAAU4C,OAAO,eAEhGN,EAAOtC,UAAU6C,IAAI,aAErB,MAAMC,EAAWhD,SAASiD,cAAc,qBAClCC,EAAelD,SAASiD,cAAc,yBAE5C,IAAIE,EAAe,GAES,SAAxBX,EAAOnC,QAAQ+C,MACjBJ,EAAS9C,UAAU4C,OAAO,UAC1BI,EAAahD,UAAU6C,IAAI,UAC3BI,EAAe,SAEfH,EAAS9C,UAAU6C,IAAI,UACvBG,EAAahD,UAAU4C,OAAO,UAC9BK,EAAe,WAEfrD,KAGF,MAAMuD,EAAY,IAAIC,IAAI3C,OAAOkB,SAAS0B,MAE1CF,EAAUvB,OAASuB,EAAUvB,OAAO0B,QAAQ,uBAAyB,QAAOL,KAE5ExC,OAAO8C,QAAQC,aAAa,CAAC,EAAG,GAAIL,GAEpCrD,SAAS2C,iBAAiB,0CAA0CC,SAASC,GAAOA,EAAEc,MAAQR,IAE9F,MAAMS,EAAQ5D,SAASiD,cAAc,6BAErC,GAAIW,EAAO,CACT,MAAMC,EAAW,IAAIP,IAAIM,EAAML,MAC/BM,EAAS/B,OAAU,SAAQqB,IAE3BS,EAAML,KAAOM,EAASN,IACxB,MA+CFjB,EAAAA,EAAAA,IAAG,sBAAuB,OAAQxC,GAElCA,G","sources":["webpack://kelberman.org/./themes/app/src/scripts/common/ajax.js","webpack://kelberman.org/./themes/app/src/sections/calendar.js"],"sourcesContent":["import wretch from 'wretch'\nimport QueryStringAddon from 'wretch/addons/queryString'\n\nwretch.options({\n headers: { 'X-Requested-With': 'XMLHttpRequest' },\n})\n\nexport default wretch().addon(QueryStringAddon)\n","import { on } from 'delegated-events'\nimport { Calendar } from '@fullcalendar/core'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport ajax from '@common/ajax'\n\nconst state = {\n calendar: null,\n}\n\nconst handleView = (e) => {\n const button = e.target.closest('button')\n\n document.querySelectorAll('.events-view-controls .is-active').forEach((x) => x.classList.remove('is-active'))\n\n button.classList.add('is-active')\n\n const listView = document.querySelector('.events-view-list')\n const calendarView = document.querySelector('.events-view-calendar')\n\n let selectedView = ''\n\n if (button.dataset.view === 'list') {\n listView.classList.remove('hidden')\n calendarView.classList.add('hidden')\n selectedView = 'list'\n } else {\n listView.classList.add('hidden')\n calendarView.classList.remove('hidden')\n selectedView = 'calendar'\n\n setupCalendar()\n }\n\n const windowUrl = new URL(window.location.href)\n\n windowUrl.search = windowUrl.search.replace(/view=(list|calendar)/, `view=${selectedView}`)\n\n window.history.replaceState({}, '', windowUrl)\n\n document.querySelectorAll('[data-page-filters] input[name=\"view\"]').forEach((x) => (x.value = selectedView))\n\n const clear = document.querySelector('[data-page-filters-clear]')\n\n if (clear) {\n const clearUrl = new URL(clear.href)\n clearUrl.search = `?view=${selectedView}`\n\n clear.href = clearUrl.href\n }\n}\n\nconst setupCalendar = () => {\n const el = document.getElementById('events-calendar')\n\n if (!el) {\n return\n }\n\n if (!el.classList.contains('fc')) {\n const endpoint = el.dataset.endpoint\n\n state.calendar = new Calendar(el, {\n plugins: [dayGridPlugin],\n initialView: 'dayGridMonth',\n dayMaxEvents: window.matchMedia('(min-width: 1024px)').matches ? 3 : 0,\n headerToolbar: {\n left: '',\n center: 'prev,title,next',\n right: '',\n },\n events: async (info, success) => {\n const query = { start: info.startStr, end: info.endStr }\n const urlParams = new URLSearchParams(window.location.search)\n const searchCategory = urlParams.get('category')\n const searchTerm = urlParams.get('search')\n\n if (searchCategory) {\n query.category = searchCategory\n }\n\n if (searchTerm) {\n query.search = searchTerm\n }\n\n const resp = await ajax.url(endpoint).query(query).get().json()\n\n success(resp)\n },\n })\n }\n\n state.calendar.render()\n}\n\non('click', '.events-view-controls button', handleView)\non('pagecontent:replace', 'html', setupCalendar)\n\nsetupCalendar()\n"],"names":["wretch","headers","addon","QueryStringAddon","state","calendar","setupCalendar","el","document","getElementById","classList","contains","endpoint","dataset","Calendar","plugins","dayGridPlugin","initialView","dayMaxEvents","window","matchMedia","matches","headerToolbar","left","center","right","events","async","info","success","query","start","startStr","end","endStr","urlParams","URLSearchParams","location","search","searchCategory","get","searchTerm","category","ajax","json","render","on","e","button","target","closest","querySelectorAll","forEach","x","remove","add","listView","querySelector","calendarView","selectedView","view","windowUrl","URL","href","replace","history","replaceState","value","clear","clearUrl"],"sourceRoot":""}