{"version":3,"sources":["webpack://static-html-webpack-boilerplate/./node_modules/headroom.js/dist/headroom.js","webpack://static-html-webpack-boilerplate/webpack/bootstrap","webpack://static-html-webpack-boilerplate/webpack/runtime/compat get default export","webpack://static-html-webpack-boilerplate/webpack/runtime/define property getters","webpack://static-html-webpack-boilerplate/webpack/runtime/hasOwnProperty shorthand","webpack://static-html-webpack-boilerplate/./src/js/components/cards.ts","webpack://static-html-webpack-boilerplate/./node_modules/@ungap/url-search-params/esm/index.js","webpack://static-html-webpack-boilerplate/./src/js/app.ts","webpack://static-html-webpack-boilerplate/./src/js/components/header.ts","webpack://static-html-webpack-boilerplate/./src/js/components/events.ts"],"names":["module","exports","isBrowser","window","createScroller","element","obj","document","nodeType","isDocument","doc","win","body","html","documentElement","scrollHeight","Math","max","offsetHeight","clientHeight","height","innerHeight","scrollY","undefined","pageYOffset","parentNode","scrollTop","elementScroller","trackScroll","options","callback","rafId","isPassiveSupported","supported","addEventListener","removeEventListener","err","passiveEventsSupported","scrolled","scroller","lastScrollY","details","update","round","direction","distance","abs","isOutOfBounds","top","offset","bottom","toleranceExceeded","tolerance","handleScroll","requestAnimationFrame","eventOptions","passive","capture","destroy","cancelAnimationFrame","normalizeUpDown","t","Object","down","up","Headroom","elem","assign","this","classes","initialised","frozen","prototype","constructor","init","cutsTheMustard","addClass","setTimeout","self","scrollTracker","bind","keys","forEach","removeClass","unpin","hasClass","onUnpin","call","pin","onPin","freeze","unfreeze","onTop","notTop","onNotTop","onBottom","notBottom","onNotBottom","shouldUnpin","shouldPin","className","classList","add","apply","split","remove","every","cls","contains","pinned","unpinned","initial","factory","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","prop","hasOwnProperty","Cards","el","currentIndex","elementIndices","elements","renderPagiation","pagination","innerHTML","_element","i","dot","createElement","appendChild","slider","querySelector","nodes","querySelectorAll","index","length","push","observer","IntersectionObserver","entries","activated","reduce","entry","intersectionRatio","target","id","root","threshold","rootMargin","observe","URLSearchParams","plus","q","toString","String","isArray","create","find","findPercentSign","replace","proto","append","value","appendTo","_ungap","delete","has","getAll","slice","set","thisArg","invoke","toJSON","query","encoded","encode","join","configurable","writable","dict","charAt","pairs","indexOf","decode","addEach","res","str","decodeURIComponent","encodeURIComponent","replacer","match","Array","URLSearchParamsProto","iterable","Symbol","iterator","o_O","items","next","shift","done","names","name","values","sort","dP","gOPD","getOwnPropertyDescriptor","updateSearchParams","sp","_usp","search","verifySearchParams","Class","TypeError","upgradeClass","createSearchParams","polluteSearchParams","ClassProto","searchParams","href","del","createSearchParamsPollute","defineProperties","_searchParams","HTMLAnchorElement","test","URL","meh","fn","Header","_a","_b","_c","headerToggle","toggle","burgerstate","checked","headroom","anchors","click","pageHero","backdrop","ev","preventDefault","code","which","header","langaugePicker","location","events","eventsEl","changeMonth","delta","newDate","Date","currentDate","setDate","setMonth","getMonth","page","getData","eventLocationUid","then","response","controlsHeadline","innerText","ControlsHeadline","eventHtml","createEventListHtml","Events","eventListContainer","handlePagination","HasMorePages","loadNextPage","insertAdjacentHTML","acc","eventItem","createEventItemHtml","date","params","toISOString","fetch","method","headers","Accept","ok","Error","json","hasMorePages","style","display","image","Image","SourceSet","Source","Sizes","AltText","Width","Height","label","Label","priceIsFrom","PriceIsFrom","priceText","PriceText","Link","ModifierClass","Title","Url","OpenInNewWindow","Time","Trumpet","Text","Price","eventsListContainer","controls","controlsPrevious","controlsNext","onclick","paginationClickElement","cards","CSS","supports","cardsEl","readyState"],"mappings":";mCAOiEA,EAAOC,QAGhE,WAAc,aAEpB,SAASC,IACP,MAAyB,oBAAXC,OAwHhB,SAASC,EAAeC,GACtB,OAhFgBC,EAgFAD,IA7EFC,EAAIC,UAPpB,SAAoBD,GAClB,OAAwB,IAAjBA,EAAIE,SAMmBC,CAAWH,EAAIC,WAIzCG,GADkBC,EA0EoBN,GAzE5BE,SACVK,EAAOF,EAAIE,KACXC,EAAOH,EAAII,gBAER,CAKLC,aAAc,WACZ,OAAOC,KAAKC,IACVL,EAAKG,aACLF,EAAKE,aACLH,EAAKM,aACLL,EAAKK,aACLN,EAAKO,aACLN,EAAKM,eAQTC,OAAQ,WACN,OAAOT,EAAIU,aAAeR,EAAKM,cAAgBP,EAAKO,cAOtDG,QAAS,WACP,YAAwBC,IAApBZ,EAAIa,YACCb,EAAIa,aAGLX,GAAQD,EAAKa,YAAcb,GAAMc,aAK/C,SAAyBrB,GACvB,MAAO,CAILU,aAAc,WACZ,OAAOC,KAAKC,IACVZ,EAAQU,aACRV,EAAQa,aACRb,EAAQc,eAOZC,OAAQ,WACN,OAAOJ,KAAKC,IAAIZ,EAAQa,aAAcb,EAAQc,eAOhDG,QAAS,WACP,OAAOjB,EAAQqB,YAMkCC,CAAgBtB,GA1EvE,IAAwBM,EAClBD,EACAE,EACAC,EATYP,EAsFlB,SAASsB,EAAYvB,EAASwB,EAASC,GACrC,IACIC,EADAC,EAzHN,WACE,IAAIC,GAAY,EAEhB,IACE,IAAIJ,EAAU,CAEZ,cACEI,GAAY,IAGhB9B,OAAO+B,iBAAiB,OAAQL,EAASA,GACzC1B,OAAOgC,oBAAoB,OAAQN,EAASA,GAC5C,MAAOO,GACPH,GAAY,EAGd,OAAOA,EAyGkBI,GAErBC,GAAW,EACXC,EAAWnC,EAAeC,GAC1BmC,EAAcD,EAASjB,UACvBmB,EAAU,GAEd,SAASC,IACP,IAAIpB,EAAUN,KAAK2B,MAAMJ,EAASjB,WAC9BF,EAASmB,EAASnB,SAClBL,EAAewB,EAASxB,eAG5B0B,EAAQnB,QAAUA,EAClBmB,EAAQD,YAAcA,EACtBC,EAAQG,UAAYtB,EAAUkB,EAAc,OAAS,KACrDC,EAAQI,SAAW7B,KAAK8B,IAAIxB,EAAUkB,GACtCC,EAAQM,cAAgBzB,EAAU,GAAKA,EAAUF,EAASL,EAC1D0B,EAAQO,IAAM1B,GAAWO,EAAQoB,OAAOR,EAAQG,WAChDH,EAAQS,OAAS5B,EAAUF,GAAUL,EACrC0B,EAAQU,kBACNV,EAAQI,SAAWhB,EAAQuB,UAAUX,EAAQG,WAE/Cd,EAASW,GAETD,EAAclB,EACdgB,GAAW,EAGb,SAASe,IACFf,IACHA,GAAW,EACXP,EAAQuB,sBAAsBZ,IAIlC,IAAIa,IAAevB,GACf,CAAEwB,SAAS,EAAMC,SAAS,GAM9B,OAHApD,EAAQ6B,iBAAiB,SAAUmB,EAAcE,GACjDb,IAEO,CACLgB,QAAS,WACPC,qBAAqB5B,GACrB1B,EAAQ8B,oBAAoB,SAAUkB,EAAcE,KAK1D,SAASK,EAAgBC,GACvB,OAAOA,IAAMC,OAAOD,GAAKA,EAAI,CAAEE,KAAMF,EAAGG,GAAIH,GAW9C,SAASI,EAASC,EAAMrC,GACtBA,EAAUA,GAAW,GACrBiC,OAAOK,OAAOC,KAAMH,EAASpC,QAASA,GACtCuC,KAAKC,QAAUP,OAAOK,OAAO,GAAIF,EAASpC,QAAQwC,QAASxC,EAAQwC,SAEnED,KAAKF,KAAOA,EACZE,KAAKhB,UAAYQ,EAAgBQ,KAAKhB,WACtCgB,KAAKnB,OAASW,EAAgBQ,KAAKnB,QACnCmB,KAAKE,aAAc,EACnBF,KAAKG,QAAS,EA6NhB,OA3NAN,EAASO,UAAY,CACnBC,YAAaR,EAMbS,KAAM,WAoBJ,OAnBIT,EAASU,iBAAmBP,KAAKE,cACnCF,KAAKQ,SAAS,WACdR,KAAKE,aAAc,EAInBO,YACE,SAASC,GACPA,EAAKC,cAAgBnD,EACnBkD,EAAKvC,SACL,CAAEU,OAAQ6B,EAAK7B,OAAQG,UAAW0B,EAAK1B,WACvC0B,EAAKpC,OAAOsC,KAAKF,MAGrB,IACAV,OAIGA,MAOTV,QAAS,WACPU,KAAKE,aAAc,EACnBR,OAAOmB,KAAKb,KAAKC,SAASa,QAAQd,KAAKe,YAAaf,MACpDA,KAAKW,cAAcrB,WAOrB0B,MAAO,YACDhB,KAAKiB,SAAS,WAAcjB,KAAKiB,SAAS,cAC5CjB,KAAKQ,SAAS,YACdR,KAAKe,YAAY,UAEbf,KAAKkB,SACPlB,KAAKkB,QAAQC,KAAKnB,QASxBoB,IAAK,WACCpB,KAAKiB,SAAS,cAChBjB,KAAKQ,SAAS,UACdR,KAAKe,YAAY,YAEbf,KAAKqB,OACPrB,KAAKqB,MAAMF,KAAKnB,QAStBsB,OAAQ,WACNtB,KAAKG,QAAS,EACdH,KAAKQ,SAAS,WAOhBe,SAAU,WACRvB,KAAKG,QAAS,EACdH,KAAKe,YAAY,WAGnBnC,IAAK,WACEoB,KAAKiB,SAAS,SACjBjB,KAAKQ,SAAS,OACdR,KAAKe,YAAY,UAEbf,KAAKwB,OACPxB,KAAKwB,MAAML,KAAKnB,QAKtByB,OAAQ,WACDzB,KAAKiB,SAAS,YACjBjB,KAAKQ,SAAS,UACdR,KAAKe,YAAY,OAEbf,KAAK0B,UACP1B,KAAK0B,SAASP,KAAKnB,QAKzBlB,OAAQ,WACDkB,KAAKiB,SAAS,YACjBjB,KAAKQ,SAAS,UACdR,KAAKe,YAAY,aAEbf,KAAK2B,UACP3B,KAAK2B,SAASR,KAAKnB,QAKzB4B,UAAW,WACJ5B,KAAKiB,SAAS,eACjBjB,KAAKQ,SAAS,aACdR,KAAKe,YAAY,UAEbf,KAAK6B,aACP7B,KAAK6B,YAAYV,KAAKnB,QAK5B8B,YAAa,SAASzD,GAGpB,MAF0C,SAAtBA,EAAQG,YAEHH,EAAQO,KAAOP,EAAQU,mBAGlDgD,UAAW,SAAS1D,GAGlB,MAFwC,OAAtBA,EAAQG,WAEHH,EAAQU,mBAAsBV,EAAQO,KAG/D4B,SAAU,SAASwB,GACjBhC,KAAKF,KAAKmC,UAAUC,IAAIC,MACtBnC,KAAKF,KAAKmC,UACVjC,KAAKC,QAAQ+B,GAAWI,MAAM,OAIlCrB,YAAa,SAASiB,GACpBhC,KAAKF,KAAKmC,UAAUI,OAAOF,MACzBnC,KAAKF,KAAKmC,UACVjC,KAAKC,QAAQ+B,GAAWI,MAAM,OAIlCnB,SAAU,SAASe,GACjB,OAAOhC,KAAKC,QAAQ+B,GAAWI,MAAM,KAAKE,OAAM,SAASC,GACvD,OAAOvC,KAAKiC,UAAUO,SAASD,KAC9BvC,KAAKF,OAGVxB,OAAQ,SAASD,GACXA,EAAQM,gBAKQ,IAAhBqB,KAAKG,SAIL9B,EAAQO,IACVoB,KAAKpB,MAELoB,KAAKyB,SAGHpD,EAAQS,OACVkB,KAAKlB,SAELkB,KAAK4B,YAGH5B,KAAK8B,YAAYzD,GACnB2B,KAAKgB,QACIhB,KAAK+B,UAAU1D,IACxB2B,KAAKoB,SASXvB,EAASpC,QAAU,CACjBuB,UAAW,CACTY,GAAI,EACJD,KAAM,GAERd,OAAQ,EACRV,SAAUrC,IAAcC,OAAS,KACjCkE,QAAS,CACPE,OAAQ,mBACRsC,OAAQ,mBACRC,SAAU,qBACV9D,IAAK,gBACL6C,OAAQ,oBACR3C,OAAQ,mBACR8C,UAAW,uBACXe,QAAS,aAIb9C,EAASU,kBAvYLzE,KACA,aAAc8E,MACd,cAAezE,SAASO,iBACxBgD,OAAOK,QACPL,OAAOmB,MACP3B,uBAoYGW,EA3ayE+C,KCN9EC,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,GAAGF,EAAyBE,GAC3B,OAAOF,EAAyBE,GAAUlH,QAG3C,IAAID,EAASiH,EAAyBE,GAAY,CAGjDlH,QAAS,IAOV,OAHAmH,EAAoBD,GAAU5B,KAAKvF,EAAOC,QAASD,EAAQA,EAAOC,QAASiH,GAGpElH,EAAOC,QCnBfiH,EAAoBG,EAAI,SAASrH,GAChC,IAAIsH,EAAStH,GAAUA,EAAOuH,WAC7B,WAAa,OAAOvH,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAkH,EAAoBM,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRJ,EAAoBM,EAAI,SAASvH,EAASyH,GACzC,IAAI,IAAIC,KAAOD,EACXR,EAAoBU,EAAEF,EAAYC,KAAST,EAAoBU,EAAE3H,EAAS0H,IAC5E7D,OAAO+D,eAAe5H,EAAS0H,EAAK,CAAEG,YAAY,EAAMC,IAAKL,EAAWC,MCJ3ET,EAAoBU,EAAI,SAAStH,EAAK0H,GAAQ,OAAOlE,OAAOU,UAAUyD,eAAe1C,KAAKjF,EAAK0H,I,wBCAxF,MAAME,EACT,YAAYC,GAcR,GAbA/D,KAAKgE,aAAe,EACpBhE,KAAKiE,eAAiB,GACtBjE,KAAKkE,SAAW,GAChBlE,KAAKmE,gBAAkB,KACnBnE,KAAKoE,WAAWC,UAAY,GAC5BrE,KAAKkE,SAASpD,SAAQ,CAACwD,EAAUC,KAC7B,MAAMC,EAAMrI,SAASsI,cAAc,MAC/BzE,KAAKgE,eAAiBO,GACtBC,EAAIvC,UAAUC,IAAI,cAEtBlC,KAAKoE,WAAWM,YAAYF,QAG/BT,EACD,OAEJ/D,KAAK2E,OAASZ,EACd/D,KAAKoE,WAAapE,KAAK2E,OAAOC,cAAc,wBAC5C,MAAMC,EAAQ7E,KAAK2E,OAAOG,iBAAiB,UAC3C,IAAK,IAAIC,EAAQ,EAAGA,EAAQF,EAAMG,OAAQD,IACtC/E,KAAKkE,SAASe,KAAKJ,EAAME,IAE7B,MAAMG,EAAW,IAAIC,sBAAsBC,IAEvC,MAAMC,EAAYD,EAAQE,QAAO,CAACzI,EAAK0I,IAC3BA,EAAMC,kBAAoB3I,EAAI2I,kBAAqBD,EAAQ1I,IAEnEwI,EAAUG,mBAAqB,IAC/BxF,KAAKgE,aAAehE,KAAKiE,eAAeoB,EAAUI,OAAOC,IACzD1F,KAAKmE,qBAEV,CACCwB,KAAM3F,KAAK2E,OAAQiB,UAAW,EAAGC,WAAY,QAEjD7F,KAAKkE,SAASpD,SAAQ,CAAC7E,EAASsI,KAC5BvE,KAAKiE,eAAehI,EAAQyJ,IAAMnB,EAClCW,EAASY,QAAQ7J,OCrC7B,IAAIyE,EAAO,GACX,KACG,SAAUqF,EAAiBC,GAC1B,GACE,IAAID,EAAgB,SAASpC,IAAI,OAASqC,GAC1C,IAAID,EAAgB,CAACE,EAAGD,IAAOrC,IAAI,OAASqC,GAC5C,IAAID,EAAgB,CAAC,CAAC,IAAKC,KAAQrC,IAAI,OAASqC,GACL,UAA3C,IAAID,EAAgB,QAAQG,YACkB,WAA9C,IAAIH,EAAgB,CAACE,EAAG,OAAOC,YACgB,YAA/C,IAAIH,EAAgB,CAACE,EAAG,QAAQC,WAEhC,MAAMH,EACRrF,EAAKqF,gBAAkBA,EAVxB,CAWCA,gBAAiB,KACnB,MAAMA,IACL,SAAUrG,EAAQyG,EAAQC,GACzB,IAAIC,EAAS3G,EAAO2G,OAChB5C,EAAiB/D,EAAO+D,eACxB6C,EAAO,qBACPC,EAAkB,uBAClBP,EAAO,MACPQ,EAAU,CACZ,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAELC,EAAQ,CACVC,OAAQ,SAAUnD,EAAKoD,GACrBC,EAAS5G,KAAK6G,OAAQtD,EAAKoD,IAE7BG,OAAQ,SAAUvD,UACTvD,KAAK6G,OAAOtD,IAErBI,IAAK,SAAUJ,GACb,OAAOvD,KAAK+G,IAAIxD,GAAOvD,KAAK6G,OAAOtD,GAAK,GAAK,MAE/CyD,OAAQ,SAAUzD,GAChB,OAAOvD,KAAK+G,IAAIxD,GAAOvD,KAAK6G,OAAOtD,GAAK0D,MAAM,GAAK,IAErDF,IAAK,SAAUxD,GACb,OAAOA,KAAOvD,KAAK6G,QAErBK,IAAK,SAAU3D,EAAKoD,GAClB3G,KAAK6G,OAAOtD,GAAO,CAAC4C,EAAOQ,KAE7B7F,QAAS,SAAUpD,EAAUyJ,GAC3B,IAAIzG,EAAOV,KACX,IAAK,IAAIuD,KAAO7C,EAAKmG,OACnBnG,EAAKmG,OAAOtD,GAAKzC,QAAQsG,EAAQ7D,GACnC,SAAS6D,EAAOT,GACdjJ,EAASyD,KAAKgG,EAASR,EAAOR,EAAO5C,GAAM7C,KAG/C2G,OAAQ,WACN,MAAO,IAETnB,SAAU,WACR,IAAIoB,EAAQ,GACZ,IAAK,IAAI/D,KAAOvD,KAAK6G,OAEnB,IADA,IAAIU,EAAUC,EAAOjE,GAEnBgB,EAAI,EACJoC,EAAQ3G,KAAK6G,OAAOtD,GACpBgB,EAAIoC,EAAM3B,OAAQT,IAElB+C,EAAMrC,KAAKsC,EAAU,IAAMC,EAAOb,EAAMpC,KAG5C,OAAO+C,EAAMG,KAAK,OAGtB,IAAK,IAAIlE,KAAOkD,EACdhD,EAAesC,EAAgB3F,UAAWmD,EAAK,CAC7CmE,cAAc,EACdC,UAAU,EACVhB,MAAOF,EAAMlD,KAGjB,SAASwC,EAAgBuB,GACvB,IAAIM,EAAOvB,EAAO,MAElB,OADA5C,EAAezD,KAAM,SAAU,CAAC2G,MAAOiB,KAC/B,GACN,KAAMN,EACJ,MACF,IAAsB,iBAAVA,EACc,MAApBA,EAAMO,OAAO,KACfP,EAAQA,EAAML,MAAM,IAEtB,IAAK,IACHa,EAAQR,EAAMlF,MAAM,KACpBmC,EAAI,EACJS,EAAS8C,EAAM9C,OAAQT,EAAIS,EAAQT,IACnC,CACA,IACIQ,GADA4B,EAAQmB,EAAMvD,IACAwD,QAAQ,MACrB,EAAIhD,EACP6B,EACEgB,EACAI,EAAOrB,EAAMM,MAAM,EAAGlC,IACtBiD,EAAOrB,EAAMM,MAAMlC,EAAQ,KAEpB4B,EAAM3B,QACf4B,EACEgB,EACAI,EAAOrB,GACP,IAIN,MACF,KAAKP,EAAQkB,GACX,IACE/C,EAAI,EACJS,EAASsC,EAAMtC,OAAQT,EAAIS,EAAQT,IACnC,CACA,IAAIoC,EACJC,EAASgB,GADLjB,EAAQW,EAAM/C,IACG,GAAIoC,EAAM,IAEjC,MACF,IAAK,YAAaW,EAChBA,EAAMxG,QAAQmH,EAASL,GACvB,MACF,QACE,IAAK,IAAIrE,KAAO+D,EACdV,EAASgB,EAAMrE,EAAK+D,EAAM/D,KAIlC,SAAS0E,EAAQtB,EAAOpD,GACtBqD,EAAS5G,KAAMuD,EAAKoD,GAGtB,SAASC,EAASgB,EAAMrE,EAAKoD,GAC3B,IAAIuB,EAAM9B,EAAQO,GAASA,EAAMc,KAAK,KAAOd,EACzCpD,KAAOqE,EACTA,EAAKrE,GAAK0B,KAAKiD,GAEfN,EAAKrE,GAAO,CAAC2E,GAGjB,SAASF,EAAOG,GACd,OAAOC,mBAAmBD,EAAI3B,QAAQD,EAAiB,OAAOC,QAAQR,EAAM,MAG9E,SAASwB,EAAOW,GACd,OAAOE,mBAAmBF,GAAK3B,QAAQF,EAAMgC,GAG/C,SAASA,EAASC,GAChB,OAAO/B,EAAQ+B,GAxEjB7H,EAAKqF,gBAAkBA,EAlExB,CA6ICrG,OAAQyG,OAAQqC,MAAMpC,UAGzB,SAAUqC,GAET,IAAIC,GAAW,EACf,IAAMA,IAAaC,OAAOC,SAAY,MAAOC,IAiF7C,SAASD,EAASlI,EAAMhD,GACtB,IAAIoL,EAAQ,GAGZ,OAFApI,EAAKI,QAAQpD,EAAUoL,GAEhBJ,EACLI,EAAMH,OAAOC,YACb,CACEG,KAAM,WACJ,IAAIpC,EAAQmC,EAAME,QAClB,MAAO,CAACC,UAAgB,IAAVtC,EAAkBA,MAAOA,KAvFzC,YAAa8B,IACjBA,EAAqB3H,QAAU,SAAiBpD,EAAUyJ,GACxD,IAAIzG,EAAOV,KACPkJ,EAAQxJ,OAAO2G,OAAO,MAC1BrG,KAAKkG,WACAM,QAAQ,oBAAqB,KAC7BpE,MAAM,KACNtB,SAAQ,SAAUqI,GACZA,EAAKnE,UAAUmE,KAAQD,KAE3BA,EAAMC,GAAQzI,EAAKsG,OAAOmC,IAAOrI,SAAQ,SAAS6F,GACjDjJ,EAASyD,KAAKgG,EAASR,EAAOwC,EAAMzI,WAO1C,SAAU+H,IACdA,EAAqB5H,KAAO,WAC1B,OAAO+H,EAAS5I,MAAM,SAAS2G,EAAOpD,GAAOvD,KAAKiF,KAAK1B,QAKrD,WAAYkF,IAChBA,EAAqBW,OAAS,WAC5B,OAAOR,EAAS5I,MAAM,SAAS2G,EAAOpD,GAAOvD,KAAKiF,KAAK0B,QAKrD,YAAa8B,IACjBA,EAAqBrD,QAAU,WAC7B,OAAOwD,EAAS5I,MAAM,SAAS2G,EAAOpD,GAAOvD,KAAKiF,KAAK,CAAC1B,EAAKoD,SAK7D+B,KAAcC,OAAOC,YAAYH,KACnCA,EAAqBE,OAAOC,UAAYH,EAAqBrD,SAIzD,SAAUqD,IACdA,EAAqBY,KAAO,WAS1B,IARA,IAME9E,EAAGhB,EAAKoD,EALRvB,EAAUpF,KAAKoF,UACfG,EAAQH,EAAQ2D,OAChBE,EAAO1D,EAAM0D,KACbpI,EAAO,GACPuI,EAAS1J,OAAO2G,OAAO,OAGjB4C,GAEN1F,GADAoD,EAAQpB,EAAMoB,OACF,GACZ9F,EAAKoE,KAAK1B,GACJA,KAAO6F,IACXA,EAAO7F,GAAO,IAEhB6F,EAAO7F,GAAK0B,KAAK0B,EAAM,IAEvBsC,GADA1D,EAAQH,EAAQ2D,QACHE,KAKf,IADApI,EAAKwI,OACA9E,EAAI,EAAGA,EAAI1D,EAAKmE,OAAQT,IAC3BvE,KAAK8G,OAAOjG,EAAK0D,IAEnB,IAAKA,EAAI,EAAGA,EAAI1D,EAAKmE,OAAQT,IAC3BhB,EAAM1C,EAAK0D,GACXvE,KAAK0G,OAAOnD,EAAK6F,EAAO7F,GAAKyF,WAoBlC,SAAUtJ,GACT,IACE4J,EAAK5J,EAAO+D,eACZ8F,EAAO7J,EAAO8J,yBAwCdC,EAAqB,SAAUC,GAC7B,IAAIhD,EAASgD,EAAGhD,OAChBgD,EAAGhD,OAAS+B,EAAqB/B,OACjCX,gBAAgB5E,KAAKuI,EAAIA,EAAGC,KAAKC,OAAO3C,MAAM,IAC9CyC,EAAGhD,OAASA,GAEdmD,EAAqB,SAAU3N,EAAK4N,GAClC,KAAM5N,aAAe4N,GAAQ,MAAM,IAAIC,UACrC,0EACkCD,EAAMX,OAG5Ca,EAAe,SAAUF,GACvB,IAKEG,EA9BiCC,EA0BjCC,EAAaL,EAAM1J,UACnBgK,EAAeb,EAAKY,EAAY,gBAChCE,EAAOd,EAAKY,EAAY,QACxBP,EAASL,EAAKY,EAAY,WAGvBC,GAAgBR,GAAUA,EAAO1C,MAhCHgD,EA3BT,SAAUN,GACpC,SAASlD,EAAOyC,EAAMxC,GACpB8B,EAAqB/B,OAAOvF,KAAKnB,KAAMmJ,EAAMxC,GAC7CwC,EAAOnJ,KAAKkG,WACZ0D,EAAO1C,IAAI/F,KAAKnB,KAAK2J,KAAMR,EAAQ,IAAMA,EAAQ,IAEnD,SAASmB,EAAInB,GACXV,EAAqB3B,OAAO3F,KAAKnB,KAAMmJ,GACvCA,EAAOnJ,KAAKkG,WACZ0D,EAAO1C,IAAI/F,KAAKnB,KAAK2J,KAAMR,EAAQ,IAAMA,EAAQ,IAEnD,SAASjC,EAAIiC,EAAMxC,GACjB8B,EAAqBvB,IAAI/F,KAAKnB,KAAMmJ,EAAMxC,GAC1CwC,EAAOnJ,KAAKkG,WACZ0D,EAAO1C,IAAI/F,KAAKnB,KAAK2J,KAAMR,EAAQ,IAAMA,EAAQ,IAEnD,OAAO,SAAUO,EAAI/C,GAInB,OAHA+C,EAAGhD,OAASA,EACZgD,EAAG5C,OAASwD,EACZZ,EAAGxC,IAAMA,EACFoC,EAAGI,EAAI,OAAQ,CACpBhC,cAAc,EACdC,UAAU,EACVhB,MAAOA,KAsCP4D,CAA0BX,GAD5BK,EAhCK,SAAU/N,EAAKwN,GAQpB,OAPAJ,EACEpN,EAAK,gBAAiB,CACpBwL,cAAc,EACdC,UAAU,EACVhB,MAAOuD,EAAoBR,EAAIxN,KAG5BwN,GA2BPhK,EAAO8K,iBACLL,EACA,CACEE,KAAM,CACJ1G,IAAK,WACH,OAAO0G,EAAK1G,IAAIxC,KAAKnB,OAEvBkH,IAAK,SAAUP,GACb,IAAI+C,EAAK1J,KAAKyK,cACdJ,EAAKnD,IAAI/F,KAAKnB,KAAM2G,GAChB+C,GAAID,EAAmBC,KAG/BE,OAAQ,CACNjG,IAAK,WACH,OAAOiG,EAAOjG,IAAIxC,KAAKnB,OAEzBkH,IAAK,SAAUP,GACb,IAAI+C,EAAK1J,KAAKyK,cACdb,EAAO1C,IAAI/F,KAAKnB,KAAM2G,GAClB+C,GAAID,EAAmBC,KAG/BU,aAAc,CACZzG,IAAK,WAEH,OADAkG,EAAmB7J,KAAM8J,GAClB9J,KAAKyK,eAAiBR,EAC3BjK,KACA,IAAI+F,gBAAgB/F,KAAK4J,OAAO3C,MAAM,MAG1CC,IAAK,SAAUwC,GACbG,EAAmB7J,KAAM8J,GACzBG,EAAmBjK,KAAM0J,SAQvC,IACEM,EAAaU,mBACT,oBAAoBC,YAAYC,MAAQA,IAAIxK,WAC9C4J,EAAaY,KACf,MAAOC,KAhHV,CAiHCnL,QApNH,CAsNCgB,EAAKqF,gBAAgB3F,WACvB,ICpXkB0K,EDoXlB,EAAepK,EAAf,gB,kBEtXO,MAAMqK,EACT,YAAYhH,GACR,IAAIiH,EAAIC,EAAIC,EACZlL,KAAKmL,aAAe,KAChB,IAAIH,EAAIC,EACR9O,SAASO,gBAAgBuF,UAAUmJ,OAAO,cAA2C,QAA3BJ,EAAKhL,KAAKqL,mBAAgC,IAAPL,OAAgB,EAASA,EAAGM,UAC5F,QAA3BL,EAAKjL,KAAKqL,mBAAgC,IAAPJ,OAAgB,EAASA,EAAGK,SAAWtL,KAAKuL,SAASjK,SAAWtB,KAAKuL,SAAShK,YAEvHvB,KAAKwL,QAAU,KACQxL,KAAK/D,QAAQ6I,iBAAiB,cACtChE,SAAQ7E,IACfA,EAAQ6B,iBAAiB,SAAS,KAC9B,IAAIkN,EAAIC,GACwB,QAA3BD,EAAKhL,KAAKqL,mBAAgC,IAAPL,OAAgB,EAASA,EAAGM,WACpC,QAA3BL,EAAKjL,KAAKqL,mBAAgC,IAAPJ,GAAyBA,EAAGQ,gBAKhFzL,KAAK/D,QAAU8H,EACf/D,KAAK0L,SAAWvP,SAASyI,cAAc,eACvC5E,KAAKqL,YAAcrL,KAAK/D,QAAQ2I,cAAc,iBAC9C5E,KAAK2L,SAAW3L,KAAK/D,QAAQ2I,cAAc,uBAC3C5E,KAAKuL,SAAW,IAAI,IAAJ,CAAavL,KAAK/D,QAAS,CACvC4C,QAAkC,QAAxBmM,EAAKhL,KAAK0L,gBAA6B,IAAPV,OAAgB,EAASA,EAAGjO,eAAiB,IACvFkD,QAAS,CACL0C,QAAS,SACTF,OAAQ,iBACRC,SAAU,mBACV9D,IAAK,cACL6C,OAAQ,kBACR3C,OAAQ,iBACR8C,UAAW,qBACXzB,OAAQ,oBAGhBH,KAAKuL,SAASjL,OACdN,KAAKwL,UACuB,QAA3BP,EAAKjL,KAAKqL,mBAAgC,IAAPJ,GAAyBA,EAAGnN,iBAAiB,SAAUkC,KAAKmL,aAAc,CAC1G/L,SAAS,IAEY,QAAxB8L,EAAKlL,KAAK2L,gBAA6B,IAAPT,GAAyBA,EAAGpN,iBAAiB,SAAU8N,IACpF,IAAIZ,EAAIC,EACRW,EAAGC,kBAC6B,QAA3Bb,EAAKhL,KAAKqL,mBAAgC,IAAPL,OAAgB,EAASA,EAAGM,WACpC,QAA3BL,EAAKjL,KAAKqL,mBAAgC,IAAPJ,GAAyBA,EAAGQ,YAGxEtP,SAAS2B,iBAAiB,WAAY8N,IAClC,IAAIZ,EAAIC,IACyB,QAA3BD,EAAKhL,KAAKqL,mBAAgC,IAAPL,OAAgB,EAASA,EAAGM,UAAwB,WAAZM,EAAGE,MAAgC,WAAXF,EAAGrI,KAAiC,KAAbqI,EAAGG,SAC/HH,EAAGC,iBACyB,QAA3BZ,EAAKjL,KAAKqL,mBAAgC,IAAPJ,GAAyBA,EAAGQ,aDlD9DX,EAUL,KACT,MAAMkB,EAAS7P,SAASyI,cAAc,WACtC,GAAIoH,EAAQ,CACR,IAAIjB,EAAOiB,GACX,MAAMC,EAAiBD,EAAOpH,cAAc,uBAC5CqH,SAAgEA,EAAenO,iBAAiB,UAAU,KACtGoO,SAAS7B,KAAO4B,EAAetF,SAGvC,MAAMwF,EAAShQ,SAAS2I,iBAAiB,cACrCqH,EAAOnH,QACPmH,EAAOrL,SAASsL,GAAa,IEvBrC,MACI,YAAYrI,GACR,IAAIiH,EAmGJ,GAlGAhL,KAAKqM,YAAeC,IAChB,MAAMC,EAAU,IAAIC,KAAKxM,KAAKyM,aAC9BF,EAAQG,QAAQ,GAChBH,EAAQI,SAASJ,EAAQK,WAAaN,GACtCtM,KAAK6M,KAAO,EACZ7M,KAAK8M,QAAQP,EAASvM,KAAK+M,iBAAkB/M,KAAK6M,MAAMG,MAAMC,IAC1DjN,KAAKyM,YAAcF,EACfvM,KAAKkN,mBACLlN,KAAKkN,iBAAiBC,UAAYF,EAASG,kBAE/C,MAAMC,EAAYrN,KAAKsN,oBAAoBL,EAASM,QACpDvN,KAAKwN,mBAAmBnJ,UAAYgJ,EACpCrN,KAAKyN,iBAAiBR,EAASS,kBAGvC1N,KAAK2N,aAAe,KAChB3N,KAAK6M,OAEL7M,KAAK8M,QAAQ9M,KAAKyM,YAAazM,KAAK+M,iBAAkB/M,KAAK6M,MAAMG,MAAMC,IACnE,MAAMI,EAAYrN,KAAKsN,oBAAoBL,EAASM,QACpDvN,KAAKwN,mBAAmBI,mBAAmB,YAAaP,GACxDrN,KAAKyN,iBAAiBR,EAASS,kBAGvC1N,KAAKsN,oBAAuBnB,GACjBA,EAAO7G,QAAO,CAACuI,EAAKC,IAAcD,EAAO7N,KAAK+N,oBAAoBD,IAAY,IAEzF9N,KAAK8M,QAAU,CAACkB,EAAMjB,EAAkBF,KACpC,MAAMoB,EAAS,IAAI,EAInB,OAHAA,EAAO/G,IAAI,YAAa8G,EAAKE,eAC7BD,EAAO/G,IAAI,mBAAoB6F,GAC/BkB,EAAO/G,IAAI,OAAQ2F,EAAK3G,YACjBiI,MAAM,+CAAiDF,EAAQ,CAClEG,OAAQ,MACRC,QAAS,CACLC,OAAQ,sBAEbtB,MAAMC,IACL,IAAKA,EAASsB,GACV,MAAM,IAAIC,MAAM,sBAEpB,OAAOvB,EAASwB,WAGxBzO,KAAKyN,iBAAoBiB,IACjB1O,KAAKoE,aACLpE,KAAKoE,WAAWuK,MAAMC,QAAUF,EAAe,QAAU,SAGjE1O,KAAK+N,oBAAuBD,IACxB,MAAMe,EAAQ,uBACbf,EAAUgB,MAAMC,0BACnBjB,EAAUgB,MAAME,yBACdlB,EAAUgB,MAAMG,sBAClBnB,EAAUgB,MAAMI,0BACdpB,EAAUgB,MAAMK,yBACfrB,EAAUgB,MAAMM,iCAEXC,EAAQvB,EAAUwB,MAClB,2CAA2CxB,EAAUwB,eACrD,GACAC,EAAczB,EAAU0B,YACxB,gEACA,GACAC,EAAmC,MAAvB3B,EAAU4B,UACtB,6BAA6B5B,EAAU4B,oBACvC,GACN,MAAO,iCACS5B,EAAU6B,KAAKC,8CAA8C9B,EAAU6B,KAAKE,gBAAgB/B,EAAU6B,KAAKG,QAAQhC,EAAU6B,KAAKI,gBAAkB,gCAAkC,+GAEvKjC,EAAUtB,8DACTsB,EAAUkC,0GAGhDnB,kIAG0Cf,EAAUmC,mEACZnC,EAAU6B,KAAKO,wBACvDb,0FAGAE,sEAECzB,EAAUqC,oBACVV,wSAUCzP,KAAKmM,OAASpI,EACd/D,KAAKyM,YAAc,IAAID,KACvBxM,KAAK6M,KAAO,GACP9I,EACD,OAEJ,MAAMgJ,EAAoF,QAAhE/B,EAAKhL,KAAKmM,OAAOvH,cAAc,mCAAgD,IAAPoG,OAAgB,EAASA,EAAGrE,MACxHyJ,EAAsBpQ,KAAKmM,OAAOvH,cAAc,wBACtD,IAAKmI,IAAqBqD,EACtB,OAEJpQ,KAAK+M,iBAAmBA,EACxB/M,KAAKwN,mBAAqB4C,EAC1B,MAAMC,EAAWrQ,KAAKmM,OAAOvH,cAAc,uBAS3C,GARIyL,IACArQ,KAAKkN,iBAAmBmD,EAASzL,cAAc,gCAC/C5E,KAAKsQ,iBAAmBD,EAASzL,cAAc,4BAC/C5E,KAAKuQ,aAAeF,EAASzL,cAAc,4BAC3C5E,KAAKsQ,iBAAiBE,QAAU,IAAMxQ,KAAKqM,aAAa,GACxDrM,KAAKuQ,aAAaC,QAAU,IAAMxQ,KAAKqM,YAAY,IAEvDrM,KAAKoE,WAAapE,KAAKmM,OAAOvH,cAAc,yBACxC5E,KAAKoE,WAAY,CACjB,MAAMqM,EAAyBzQ,KAAKoE,WAAWQ,cAAc,aACzD6L,IACAA,EAAuBD,QAAU,KAC7BxQ,KAAK2N,gBACE,OFtGqBvB,KAE5C,MAAMsE,EAAQvU,SAAS2I,iBAAiB,aACpC4L,EAAM1L,QAAU2L,IAAIC,SAAS,kCAC7BF,EAAM5P,SAAQ+P,GAAW,IAAI/M,EAAM+M,MAvBX,aAAxB1U,SAAS2U,YAAqD,gBAAxB3U,SAAS2U,WAE/CrQ,WAAWqK,EAAI,GAGf3O,SAAS2B,iBAAiB,mBAAoBgN,G","file":"app.bundle.js","sourcesContent":["/*!\n * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Headroom = factory());\n}(this, function () { 'use strict';\n\n function isBrowser() {\n return typeof window !== \"undefined\";\n }\n\n /**\n * Used to detect browser support for adding an event listener with options\n * Credit: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n */\n function passiveEventsSupported() {\n var supported = false;\n\n try {\n var options = {\n // eslint-disable-next-line getter-return\n get passive() {\n supported = true;\n }\n };\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (err) {\n supported = false;\n }\n\n return supported;\n }\n\n function isSupported() {\n return !!(\n isBrowser() &&\n function() {}.bind &&\n \"classList\" in document.documentElement &&\n Object.assign &&\n Object.keys &&\n requestAnimationFrame\n );\n }\n\n function isDocument(obj) {\n return obj.nodeType === 9; // Node.DOCUMENT_NODE === 9\n }\n\n function isWindow(obj) {\n // `obj === window` or `obj instanceof Window` is not sufficient,\n // as the obj may be the window of an iframe.\n return obj && obj.document && isDocument(obj.document);\n }\n\n function windowScroller(win) {\n var doc = win.document;\n var body = doc.body;\n var html = doc.documentElement;\n\n return {\n /**\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\n * @return {Number} the scroll height of the document in pixels\n */\n scrollHeight: function() {\n return Math.max(\n body.scrollHeight,\n html.scrollHeight,\n body.offsetHeight,\n html.offsetHeight,\n body.clientHeight,\n html.clientHeight\n );\n },\n\n /**\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\n * @return {Number} the height of the viewport in pixels\n */\n height: function() {\n return win.innerHeight || html.clientHeight || body.clientHeight;\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the page has scrolled along the Y-axis\n */\n scrollY: function() {\n if (win.pageYOffset !== undefined) {\n return win.pageYOffset;\n }\n\n return (html || body.parentNode || body).scrollTop;\n }\n };\n }\n\n function elementScroller(element) {\n return {\n /**\n * @return {Number} the scroll height of the element in pixels\n */\n scrollHeight: function() {\n return Math.max(\n element.scrollHeight,\n element.offsetHeight,\n element.clientHeight\n );\n },\n\n /**\n * @return {Number} the height of the element in pixels\n */\n height: function() {\n return Math.max(element.offsetHeight, element.clientHeight);\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the element has scrolled along the Y-axis\n */\n scrollY: function() {\n return element.scrollTop;\n }\n };\n }\n\n function createScroller(element) {\n return isWindow(element) ? windowScroller(element) : elementScroller(element);\n }\n\n /**\n * @param element EventTarget\n */\n function trackScroll(element, options, callback) {\n var isPassiveSupported = passiveEventsSupported();\n var rafId;\n var scrolled = false;\n var scroller = createScroller(element);\n var lastScrollY = scroller.scrollY();\n var details = {};\n\n function update() {\n var scrollY = Math.round(scroller.scrollY());\n var height = scroller.height();\n var scrollHeight = scroller.scrollHeight();\n\n // reuse object for less memory churn\n details.scrollY = scrollY;\n details.lastScrollY = lastScrollY;\n details.direction = scrollY > lastScrollY ? \"down\" : \"up\";\n details.distance = Math.abs(scrollY - lastScrollY);\n details.isOutOfBounds = scrollY < 0 || scrollY + height > scrollHeight;\n details.top = scrollY <= options.offset[details.direction];\n details.bottom = scrollY + height >= scrollHeight;\n details.toleranceExceeded =\n details.distance > options.tolerance[details.direction];\n\n callback(details);\n\n lastScrollY = scrollY;\n scrolled = false;\n }\n\n function handleScroll() {\n if (!scrolled) {\n scrolled = true;\n rafId = requestAnimationFrame(update);\n }\n }\n\n var eventOptions = isPassiveSupported\n ? { passive: true, capture: false }\n : false;\n\n element.addEventListener(\"scroll\", handleScroll, eventOptions);\n update();\n\n return {\n destroy: function() {\n cancelAnimationFrame(rafId);\n element.removeEventListener(\"scroll\", handleScroll, eventOptions);\n }\n };\n }\n\n function normalizeUpDown(t) {\n return t === Object(t) ? t : { down: t, up: t };\n }\n\n /**\n * UI enhancement for fixed headers.\n * Hides header when scrolling down\n * Shows header when scrolling up\n * @constructor\n * @param {DOMElement} elem the header element\n * @param {Object} options options for the widget\n */\n function Headroom(elem, options) {\n options = options || {};\n Object.assign(this, Headroom.options, options);\n this.classes = Object.assign({}, Headroom.options.classes, options.classes);\n\n this.elem = elem;\n this.tolerance = normalizeUpDown(this.tolerance);\n this.offset = normalizeUpDown(this.offset);\n this.initialised = false;\n this.frozen = false;\n }\n Headroom.prototype = {\n constructor: Headroom,\n\n /**\n * Start listening to scrolling\n * @public\n */\n init: function() {\n if (Headroom.cutsTheMustard && !this.initialised) {\n this.addClass(\"initial\");\n this.initialised = true;\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(\n function(self) {\n self.scrollTracker = trackScroll(\n self.scroller,\n { offset: self.offset, tolerance: self.tolerance },\n self.update.bind(self)\n );\n },\n 100,\n this\n );\n }\n\n return this;\n },\n\n /**\n * Destroy the widget, clearing up after itself\n * @public\n */\n destroy: function() {\n this.initialised = false;\n Object.keys(this.classes).forEach(this.removeClass, this);\n this.scrollTracker.destroy();\n },\n\n /**\n * Unpin the element\n * @public\n */\n unpin: function() {\n if (this.hasClass(\"pinned\") || !this.hasClass(\"unpinned\")) {\n this.addClass(\"unpinned\");\n this.removeClass(\"pinned\");\n\n if (this.onUnpin) {\n this.onUnpin.call(this);\n }\n }\n },\n\n /**\n * Pin the element\n * @public\n */\n pin: function() {\n if (this.hasClass(\"unpinned\")) {\n this.addClass(\"pinned\");\n this.removeClass(\"unpinned\");\n\n if (this.onPin) {\n this.onPin.call(this);\n }\n }\n },\n\n /**\n * Freezes the current state of the widget\n * @public\n */\n freeze: function() {\n this.frozen = true;\n this.addClass(\"frozen\");\n },\n\n /**\n * Re-enables the default behaviour of the widget\n * @public\n */\n unfreeze: function() {\n this.frozen = false;\n this.removeClass(\"frozen\");\n },\n\n top: function() {\n if (!this.hasClass(\"top\")) {\n this.addClass(\"top\");\n this.removeClass(\"notTop\");\n\n if (this.onTop) {\n this.onTop.call(this);\n }\n }\n },\n\n notTop: function() {\n if (!this.hasClass(\"notTop\")) {\n this.addClass(\"notTop\");\n this.removeClass(\"top\");\n\n if (this.onNotTop) {\n this.onNotTop.call(this);\n }\n }\n },\n\n bottom: function() {\n if (!this.hasClass(\"bottom\")) {\n this.addClass(\"bottom\");\n this.removeClass(\"notBottom\");\n\n if (this.onBottom) {\n this.onBottom.call(this);\n }\n }\n },\n\n notBottom: function() {\n if (!this.hasClass(\"notBottom\")) {\n this.addClass(\"notBottom\");\n this.removeClass(\"bottom\");\n\n if (this.onNotBottom) {\n this.onNotBottom.call(this);\n }\n }\n },\n\n shouldUnpin: function(details) {\n var scrollingDown = details.direction === \"down\";\n\n return scrollingDown && !details.top && details.toleranceExceeded;\n },\n\n shouldPin: function(details) {\n var scrollingUp = details.direction === \"up\";\n\n return (scrollingUp && details.toleranceExceeded) || details.top;\n },\n\n addClass: function(className) {\n this.elem.classList.add.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n removeClass: function(className) {\n this.elem.classList.remove.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n hasClass: function(className) {\n return this.classes[className].split(\" \").every(function(cls) {\n return this.classList.contains(cls);\n }, this.elem);\n },\n\n update: function(details) {\n if (details.isOutOfBounds) {\n // Ignore bouncy scrolling in OSX\n return;\n }\n\n if (this.frozen === true) {\n return;\n }\n\n if (details.top) {\n this.top();\n } else {\n this.notTop();\n }\n\n if (details.bottom) {\n this.bottom();\n } else {\n this.notBottom();\n }\n\n if (this.shouldUnpin(details)) {\n this.unpin();\n } else if (this.shouldPin(details)) {\n this.pin();\n }\n }\n };\n\n /**\n * Default options\n * @type {Object}\n */\n Headroom.options = {\n tolerance: {\n up: 0,\n down: 0\n },\n offset: 0,\n scroller: isBrowser() ? window : null,\n classes: {\n frozen: \"headroom--frozen\",\n pinned: \"headroom--pinned\",\n unpinned: \"headroom--unpinned\",\n top: \"headroom--top\",\n notTop: \"headroom--not-top\",\n bottom: \"headroom--bottom\",\n notBottom: \"headroom--not-bottom\",\n initial: \"headroom\"\n }\n };\n\n Headroom.cutsTheMustard = isSupported();\n\n return Headroom;\n\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","export class Cards {\n constructor(el) {\n this.currentIndex = 0;\n this.elementIndices = {};\n this.elements = [];\n this.renderPagiation = () => {\n this.pagination.innerHTML = '';\n this.elements.forEach((_element, i) => {\n const dot = document.createElement('li');\n if (this.currentIndex === i) {\n dot.classList.add('is-current');\n }\n this.pagination.appendChild(dot);\n });\n };\n if (!el) {\n return;\n }\n this.slider = el;\n this.pagination = this.slider.querySelector('.js-cards-pagination');\n const nodes = this.slider.querySelectorAll('a.card');\n for (let index = 0; index < nodes.length; index++) {\n this.elements.push(nodes[index]);\n }\n const observer = new IntersectionObserver((entries) => {\n // find the entry with the largest intersection ratio\n const activated = entries.reduce((max, entry) => {\n return (entry.intersectionRatio > max.intersectionRatio) ? entry : max;\n });\n if (activated.intersectionRatio >= 1) {\n this.currentIndex = this.elementIndices[activated.target.id];\n this.renderPagiation();\n }\n }, {\n root: this.slider, threshold: 1, rootMargin: '0px'\n });\n this.elements.forEach((element, i) => {\n this.elementIndices[element.id] = i;\n observer.observe(element);\n });\n }\n}\n","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n (function (URLSearchParams, plus) {\n if (\n new URLSearchParams('q=%2B').get('q') !== plus ||\n new URLSearchParams({q: plus}).get('q') !== plus ||\n new URLSearchParams([['q', plus]]).get('q') !== plus ||\n new URLSearchParams('q=\\n').toString() !== 'q=%0A' ||\n new URLSearchParams({q: ' &'}).toString() !== 'q=+%26' ||\n new URLSearchParams({q: '%zx'}).toString() !== 'q=%25zx'\n )\n throw URLSearchParams;\n self.URLSearchParams = URLSearchParams;\n }(URLSearchParams, '+'));\n} catch(URLSearchParams) {\n (function (Object, String, isArray) {'use strict';\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var find = /[!'\\(\\)~]|%20|%00/g;\n var findPercentSign = /%(?![0-9a-fA-F]{2})/g;\n var plus = /\\+/g;\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n var proto = {\n append: function (key, value) {\n appendTo(this._ungap, key, value);\n },\n delete: function (key) {\n delete this._ungap[key];\n },\n get: function (key) {\n return this.has(key) ? this._ungap[key][0] : null;\n },\n getAll: function (key) {\n return this.has(key) ? this._ungap[key].slice(0) : [];\n },\n has: function (key) {\n return key in this._ungap;\n },\n set: function (key, value) {\n this._ungap[key] = [String(value)];\n },\n forEach: function (callback, thisArg) {\n var self = this;\n for (var key in self._ungap)\n self._ungap[key].forEach(invoke, key);\n function invoke(value) {\n callback.call(thisArg, value, String(key), self);\n }\n },\n toJSON: function () {\n return {};\n },\n toString: function () {\n var query = [];\n for (var key in this._ungap) {\n var encoded = encode(key);\n for (var\n i = 0,\n value = this._ungap[key];\n i < value.length; i++\n ) {\n query.push(encoded + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n }\n };\n for (var key in proto)\n defineProperty(URLSearchParams.prototype, key, {\n configurable: true,\n writable: true,\n value: proto[key]\n });\n self.URLSearchParams = URLSearchParams;\n function URLSearchParams(query) {\n var dict = create(null);\n defineProperty(this, '_ungap', {value: dict});\n switch (true) {\n case !query:\n break;\n case typeof query === 'string':\n if (query.charAt(0) === '?') {\n query = query.slice(1);\n }\n for (var\n pairs = query.split('&'),\n i = 0,\n length = pairs.length; i < length; i++\n ) {\n var value = pairs[i];\n var index = value.indexOf('=');\n if (-1 < index) {\n appendTo(\n dict,\n decode(value.slice(0, index)),\n decode(value.slice(index + 1))\n );\n } else if (value.length){\n appendTo(\n dict,\n decode(value),\n ''\n );\n }\n }\n break;\n case isArray(query):\n for (var\n i = 0,\n length = query.length; i < length; i++\n ) {\n var value = query[i];\n appendTo(dict, value[0], value[1]);\n }\n break;\n case 'forEach' in query:\n query.forEach(addEach, dict);\n break;\n default:\n for (var key in query)\n appendTo(dict, key, query[key]);\n }\n }\n\n function addEach(value, key) {\n appendTo(this, key, value);\n }\n\n function appendTo(dict, key, value) {\n var res = isArray(value) ? value.join(',') : value;\n if (key in dict)\n dict[key].push(res);\n else\n dict[key] = [res];\n }\n\n function decode(str) {\n return decodeURIComponent(str.replace(findPercentSign, '%25').replace(plus, ' '));\n }\n\n function encode(str) {\n return encodeURIComponent(str).replace(find, replacer);\n }\n\n function replacer(match) {\n return replace[match];\n }\n\n }(Object, String, Array.isArray));\n}\n\n(function (URLSearchParamsProto) {\n\n var iterable = false;\n try { iterable = !!Symbol.iterator; } catch (o_O) {}\n\n /* istanbul ignore else */\n if (!('forEach' in URLSearchParamsProto)) {\n URLSearchParamsProto.forEach = function forEach(callback, thisArg) {\n var self = this;\n var names = Object.create(null);\n this.toString()\n .replace(/=[\\s\\S]*?(?:&|$)/g, '=')\n .split('=')\n .forEach(function (name) {\n if (!name.length || name in names)\n return;\n (names[name] = self.getAll(name)).forEach(function(value) {\n callback.call(thisArg, value, name, self);\n });\n });\n };\n }\n\n /* istanbul ignore else */\n if (!('keys' in URLSearchParamsProto)) {\n URLSearchParamsProto.keys = function keys() {\n return iterator(this, function(value, key) { this.push(key); });\n };\n }\n\n /* istanbul ignore else */\n if (!('values' in URLSearchParamsProto)) {\n URLSearchParamsProto.values = function values() {\n return iterator(this, function(value, key) { this.push(value); });\n };\n }\n\n /* istanbul ignore else */\n if (!('entries' in URLSearchParamsProto)) {\n URLSearchParamsProto.entries = function entries() {\n return iterator(this, function(value, key) { this.push([key, value]); });\n };\n }\n\n /* istanbul ignore else */\n if (iterable && !(Symbol.iterator in URLSearchParamsProto)) {\n URLSearchParamsProto[Symbol.iterator] = URLSearchParamsProto.entries;\n }\n\n /* istanbul ignore else */\n if (!('sort' in URLSearchParamsProto)) {\n URLSearchParamsProto.sort = function sort() {\n var\n entries = this.entries(),\n entry = entries.next(),\n done = entry.done,\n keys = [],\n values = Object.create(null),\n i, key, value\n ;\n while (!done) {\n value = entry.value;\n key = value[0];\n keys.push(key);\n if (!(key in values)) {\n values[key] = [];\n }\n values[key].push(value[1]);\n entry = entries.next();\n done = entry.done;\n }\n // not the champion in efficiency\n // but these two bits just do the job\n keys.sort();\n for (i = 0; i < keys.length; i++) {\n this.delete(keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n this.append(key, values[key].shift());\n }\n };\n }\n\n function iterator(self, callback) {\n var items = [];\n self.forEach(callback, items);\n /* istanbul ignore next */\n return iterable ?\n items[Symbol.iterator]() :\n {\n next: function() {\n var value = items.shift();\n return {done: value === void 0, value: value};\n }\n };\n }\n\n /* istanbul ignore next */\n (function (Object) {\n var\n dP = Object.defineProperty,\n gOPD = Object.getOwnPropertyDescriptor,\n createSearchParamsPollute = function (search) {\n function append(name, value) {\n URLSearchParamsProto.append.call(this, name, value);\n name = this.toString();\n search.set.call(this._usp, name ? ('?' + name) : '');\n }\n function del(name) {\n URLSearchParamsProto.delete.call(this, name);\n name = this.toString();\n search.set.call(this._usp, name ? ('?' + name) : '');\n }\n function set(name, value) {\n URLSearchParamsProto.set.call(this, name, value);\n name = this.toString();\n search.set.call(this._usp, name ? ('?' + name) : '');\n }\n return function (sp, value) {\n sp.append = append;\n sp.delete = del;\n sp.set = set;\n return dP(sp, '_usp', {\n configurable: true,\n writable: true,\n value: value\n });\n };\n },\n createSearchParamsCreate = function (polluteSearchParams) {\n return function (obj, sp) {\n dP(\n obj, '_searchParams', {\n configurable: true,\n writable: true,\n value: polluteSearchParams(sp, obj)\n }\n );\n return sp;\n };\n },\n updateSearchParams = function (sp) {\n var append = sp.append;\n sp.append = URLSearchParamsProto.append;\n URLSearchParams.call(sp, sp._usp.search.slice(1));\n sp.append = append;\n },\n verifySearchParams = function (obj, Class) {\n if (!(obj instanceof Class)) throw new TypeError(\n \"'searchParams' accessed on an object that \" +\n \"does not implement interface \" + Class.name\n );\n },\n upgradeClass = function (Class) {\n var\n ClassProto = Class.prototype,\n searchParams = gOPD(ClassProto, 'searchParams'),\n href = gOPD(ClassProto, 'href'),\n search = gOPD(ClassProto, 'search'),\n createSearchParams\n ;\n if (!searchParams && search && search.set) {\n createSearchParams = createSearchParamsCreate(\n createSearchParamsPollute(search)\n );\n Object.defineProperties(\n ClassProto,\n {\n href: {\n get: function () {\n return href.get.call(this);\n },\n set: function (value) {\n var sp = this._searchParams;\n href.set.call(this, value);\n if (sp) updateSearchParams(sp);\n }\n },\n search: {\n get: function () {\n return search.get.call(this);\n },\n set: function (value) {\n var sp = this._searchParams;\n search.set.call(this, value);\n if (sp) updateSearchParams(sp);\n }\n },\n searchParams: {\n get: function () {\n verifySearchParams(this, Class);\n return this._searchParams || createSearchParams(\n this,\n new URLSearchParams(this.search.slice(1))\n );\n },\n set: function (sp) {\n verifySearchParams(this, Class);\n createSearchParams(this, sp);\n }\n }\n }\n );\n }\n }\n ;\n try {\n upgradeClass(HTMLAnchorElement);\n if (/^function|object$/.test(typeof URL) && URL.prototype)\n upgradeClass(URL);\n } catch (meh) {}\n }(Object));\n\n}(self.URLSearchParams.prototype, Object));\nexport default self.URLSearchParams;\n","import { Cards } from './components/cards';\nimport Events from './components/events';\nimport { Header } from './components/header';\nconst docReady = (fn) => {\n // see if DOM is already available\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // call on next available tick\n setTimeout(fn, 1);\n }\n else {\n document.addEventListener('DOMContentLoaded', fn);\n }\n};\nconst init = () => {\n const header = document.querySelector('.header');\n if (header) {\n new Header(header);\n const langaugePicker = header.querySelector('.js-language-picker');\n langaugePicker === null || langaugePicker === void 0 ? void 0 : langaugePicker.addEventListener('change', () => {\n location.href = langaugePicker.value;\n });\n }\n const events = document.querySelectorAll('.js-events');\n if (events.length) {\n events.forEach((eventsEl) => new Events(eventsEl));\n }\n const cards = document.querySelectorAll('.js-cards');\n if (cards.length && CSS.supports('scroll-snap-type: x mandatory')) {\n cards.forEach(cardsEl => new Cards(cardsEl));\n }\n};\ndocReady(init);\n","import Headroom from 'headroom.js';\nexport class Header {\n constructor(el) {\n var _a, _b, _c;\n this.headerToggle = () => {\n var _a, _b;\n document.documentElement.classList.toggle('header-open', (_a = this.burgerstate) === null || _a === void 0 ? void 0 : _a.checked);\n ((_b = this.burgerstate) === null || _b === void 0 ? void 0 : _b.checked) ? this.headroom.freeze() : this.headroom.unfreeze();\n };\n this.anchors = () => {\n const anchorLink = this.element.querySelectorAll('a[href^=\"#');\n anchorLink.forEach(element => {\n element.addEventListener('click', () => {\n var _a, _b;\n if ((_a = this.burgerstate) === null || _a === void 0 ? void 0 : _a.checked) {\n (_b = this.burgerstate) === null || _b === void 0 ? void 0 : _b.click();\n }\n });\n });\n };\n this.element = el;\n this.pageHero = document.querySelector('.venue-hero');\n this.burgerstate = this.element.querySelector('#burger-state');\n this.backdrop = this.element.querySelector('.js-header-backdrop');\n this.headroom = new Headroom(this.element, {\n offset: ((_a = this.pageHero) === null || _a === void 0 ? void 0 : _a.clientHeight) || 640 * 1.5,\n classes: {\n initial: 'header',\n pinned: 'header--pinned',\n unpinned: 'header--unpinned',\n top: 'header--top',\n notTop: 'header--not-top',\n bottom: 'header--bottom',\n notBottom: 'header--not-bottom',\n frozen: 'header--frozen',\n },\n });\n this.headroom.init();\n this.anchors();\n (_b = this.burgerstate) === null || _b === void 0 ? void 0 : _b.addEventListener('change', this.headerToggle, {\n passive: true,\n });\n (_c = this.backdrop) === null || _c === void 0 ? void 0 : _c.addEventListener('click', (ev) => {\n var _a, _b;\n ev.preventDefault();\n if ((_a = this.burgerstate) === null || _a === void 0 ? void 0 : _a.checked) {\n (_b = this.burgerstate) === null || _b === void 0 ? void 0 : _b.click();\n }\n });\n document.addEventListener('keydown', (ev) => {\n var _a, _b;\n if (((_a = this.burgerstate) === null || _a === void 0 ? void 0 : _a.checked) && ev.code === 'Escape' || ev.key === 'Escape' || ev.which === 27) {\n ev.preventDefault();\n (_b = this.burgerstate) === null || _b === void 0 ? void 0 : _b.click();\n }\n });\n }\n}\n","import URLSearchParams from '@ungap/url-search-params';\nclass Events {\n constructor(el) {\n var _a;\n this.changeMonth = (delta) => {\n const newDate = new Date(this.currentDate);\n newDate.setDate(1);\n newDate.setMonth(newDate.getMonth() + delta);\n this.page = 1;\n this.getData(newDate, this.eventLocationUid, this.page).then((response) => {\n this.currentDate = newDate;\n if (this.controlsHeadline) {\n this.controlsHeadline.innerText = response.ControlsHeadline;\n }\n const eventHtml = this.createEventListHtml(response.Events);\n this.eventListContainer.innerHTML = eventHtml;\n this.handlePagination(response.HasMorePages);\n });\n };\n this.loadNextPage = () => {\n this.page++;\n // use insertAdjacentHTML with beforeend\n this.getData(this.currentDate, this.eventLocationUid, this.page).then((response) => {\n const eventHtml = this.createEventListHtml(response.Events);\n this.eventListContainer.insertAdjacentHTML('beforeend', eventHtml);\n this.handlePagination(response.HasMorePages);\n });\n };\n this.createEventListHtml = (events) => {\n return events.reduce((acc, eventItem) => acc += this.createEventItemHtml(eventItem), '');\n };\n this.getData = (date, eventLocationUid, page) => {\n const params = new URLSearchParams();\n params.set('startDate', date.toISOString());\n params.set('eventLocationUid', eventLocationUid);\n params.set('page', page.toString());\n return fetch('/umbraco/MeyersFoodVenues/Events/GetEvents/?' + params, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n }).then((response) => {\n if (!response.ok) {\n throw new Error('Der skete en fejl.');\n }\n return response.json();\n });\n };\n this.handlePagination = (hasMorePages) => {\n if (this.pagination) {\n this.pagination.style.display = hasMorePages ? 'block' : 'none';\n }\n };\n this.createEventItemHtml = (eventItem) => {\n const image = ``;\n const label = eventItem.Label\n ? `${eventItem.Label}`\n : '';\n const priceIsFrom = eventItem.PriceIsFrom\n ? 'fra'\n : '';\n const priceText = eventItem.PriceText != null\n ? ` ${eventItem.PriceText}`\n : '';\n return `\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t${eventItem.Date}\r\n\t\t\t\t${eventItem.Time}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t${image}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t${eventItem.Trumpet}\r\n\t\t\t\t${eventItem.Link.Text}\r\n\t\t\t\t${label}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t${priceIsFrom}\r\n\t\t\t\t\r\n\t\t\t\t\t${eventItem.Price}\r\n\t\t\t\t\t${priceText}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
`;\n };\n this.events = el;\n this.currentDate = new Date();\n this.page = 1;\n if (!el) {\n return;\n }\n const eventLocationUid = (_a = this.events.querySelector('input.js-events-location')) === null || _a === void 0 ? void 0 : _a.value;\n const eventsListContainer = this.events.querySelector('.js-events-eventlist');\n if (!eventLocationUid || !eventsListContainer) {\n return;\n }\n this.eventLocationUid = eventLocationUid;\n this.eventListContainer = eventsListContainer;\n const controls = this.events.querySelector('.js-events-controls');\n if (controls) {\n this.controlsHeadline = controls.querySelector('.js-events-controls-headline');\n this.controlsPrevious = controls.querySelector('button[direction=\"prev\"]');\n this.controlsNext = controls.querySelector('button[direction=\"next\"]');\n this.controlsPrevious.onclick = () => this.changeMonth(-1);\n this.controlsNext.onclick = () => this.changeMonth(1);\n }\n this.pagination = this.events.querySelector('.js-events-pagination');\n if (this.pagination) {\n const paginationClickElement = this.pagination.querySelector('a, button');\n if (paginationClickElement) {\n paginationClickElement.onclick = () => {\n this.loadNextPage();\n return false;\n };\n }\n }\n }\n}\nexport default Events;\n"],"sourceRoot":""}