{"version":3,"file":"pages-home.js","mappings":"sLAIA,MAkHMA,EAAiBC,IACrB,MAAMC,EAAmBC,SAASC,cAAc,sBAAsBC,aACtE,IAAIC,GAAuC,EAA9BC,SAASL,GAMtB,OAJID,EAAOO,UAAUC,SAAS,qBAC5BH,GAAU,GAGL,IAAII,SAASC,KAClBC,EAAAA,EAAAA,GAAKX,EAAQ,CACXY,SAAU,IACVP,SACAQ,SAAUA,KACRH,GAAS,GAEX,GACF,EAiJGI,OAAOC,WAAW,oCAAoCC,UAnRzCC,MAClB,MAAMC,EAAShB,SAASC,cAAc,gBAgCtC,GA9BIe,EAAOX,UAAUC,SAAS,aAC5BW,EAAAA,EAAAA,GAAOD,GAAQ,MACbE,EAAAA,EAAAA,GAAS,CACP,CACEF,EAAOf,cAAc,gBACrB,CACEkB,QAAS,GAEX,CAAET,SAAU,MAEd,CACEM,EAAOf,cAAc,uBACrB,CACEkB,QAAS,EACTC,UAAW,wBAEb,CAAEV,SAAU,GAAKW,GAAI,MAEvB,CACEL,EAAOM,iBAAiB,wBACxB,CACEH,QAAS,EACTC,UAAW,wBAEb,CAAEV,SAAU,GAAKa,OAAOC,EAAAA,EAAAA,IAAQ,OAElC,IAIFR,EAAOX,UAAUC,SAAS,YAAa,CACzC,MAAMmB,EAAWb,OAAOC,WAAW,sBAAsBC,QAEnDY,EAAW,GAEbD,EACFC,EAASC,KAAK,CACZX,EAAOf,cAAc,gBACrB,CACEkB,QAAS,GAEX,CAAET,SAAU,QAGdgB,EAASC,KAAK,CACZX,EAAOf,cAAc,gBACrB,CACE2B,SAAU,yBACVT,QAAS,GAEX,CAAET,SAAU,OAGdgB,EAASC,KAAK,CACZX,EAAOf,cAAc,uBACrB,CACEkB,QAAS,GAEX,CAAET,SAAU,EAAGW,GAAI,QAIvBK,EAASC,KAAK,CACZX,EAAOf,cAAc,uBACrB,CACEkB,QAAS,EACTC,UAAW,wBAEb,CAAEV,SAAU,GAAKW,GAAI,OAGvBK,EAASC,KAAK,CACZX,EAAOM,iBAAiB,wBACxB,CACEH,QAAS,EACTC,UAAW,wBAEb,CAAEV,SAAU,GAAKa,OAAOC,EAAAA,EAAAA,IAAQ,QAGlCP,EAAAA,EAAAA,GAAOD,GAAQ,MACbE,EAAAA,EAAAA,GAASQ,EAAS,GAEtB,CAEA,MAAMG,EAAeb,EAAOf,cAAc,yBAEpC6B,EAAqBA,KACzB,MAAMC,EAAaf,EAAOgB,wBAEpBC,EADajB,EAAOf,cAAc,iBACN+B,wBAC5BE,EAAgBL,EAAa5B,cAAc,YAAYC,aAEvDiC,EAAaJ,EAAWK,OAASH,EAAeG,OAEtD,GAAID,EAAa,EAAG,CAClB,MAAMhC,EAASgC,EAAaD,EAE5BL,EAAaQ,MAAMC,OAAU,GAAEC,KAAKC,IAAIrC,MAC1C,MACE0B,EAAaQ,MAAQ,IACvB,EAGER,IACFC,IAEAlB,OAAO6B,iBAAiB,SAAUX,GACpC,EAqKEf,GA/Ic2B,MAChB,MAAMC,EAAkB3C,SAASC,cAAc,2BAEzC2C,EAAgB,iBAAkB5C,SAAS6C,gBAC3CC,OAAuDC,IAAvCJ,EAAgBK,QAAQC,WACxCC,EAAgBtC,OAAOC,WAAW,+CAA+CC,QAIvF,GAFyB8B,IAAiBE,IAAiBI,EAGzD,OAGF,MAAMC,EAAanD,SAASC,cAAc,gBACpCmD,EAAaT,EAAgBU,kBAC7BC,EAAYX,EAAgBY,iBAElC,IAAIC,EAAeJ,EACfK,GAAgB,EAChBC,GAAc,EACdC,EAAkB,EAGtB,MAAMC,EAASC,UACb,GAAIL,IAAiBJ,EACnB,OAGFM,GAAc,EAEd,MAAM5D,EAAS0D,GAAcM,wBAA0BR,EAEnDxD,IACF0D,EAAe1D,QAETD,EAAcC,IAGtB4D,GAAc,CAAK,EAGfK,EAAWF,UACfH,GAAc,EAEd,MAAM5D,EAAS0D,EAAaQ,mBAE5BR,EAAe1D,EAEXA,UACID,EAAcC,GAEhBA,IAAWwD,GACbW,KAIJP,GAAc,CAAK,GAGrBQ,EAAAA,EAAAA,IAAG,2BAA4B,QAASC,IACtCnE,SAAS6C,gBAAgBxC,UAAU+D,IAAI,mBACvCD,EAAEE,OAAOhE,UAAU+D,IAAI,eACvBL,IACA/D,SAAS6C,gBAAgBxC,UAAUiE,OAAO,kBAAkB,IAuD9D3B,EAAgBF,iBAAiB,SApDN0B,IACzBR,EAAkBQ,EAAEI,OAAS,EAAI,GAAK,EAElCb,GACFS,EAAEK,kBAEK,IAGLhB,GAAcQ,oBAAoB3D,UAAUC,SAAS,oBAAsBqD,EAAkB,GAC/FH,GAAcQ,oBAAoB3D,UAAUiE,OAAO,eAGjDd,GAAcnD,UAAUC,SAAS,oBAAsBqD,EAAkB,GAC3Ec,YAAW,KACTzE,SAASC,cAAc,oBAAoBI,UAAUiE,OAAO,cAAc,GACzE,UAGDd,GAAcnD,UAAUC,SAAS,oBAAsBqD,EAAkB,IACtEH,GAAcnD,UAAUC,SAAS,mBAKnCmD,GAAiBE,EAAkB,GACtCH,EAAe,KACfkB,IACAd,IAEAO,EAAEK,iBAEK,GAGLhB,IAAiBF,GAAaK,EAAkB,GAClDM,IAEO,IAGLE,EAAEI,QAtFc,EAuFlBX,IACSO,EAAEI,OAxFO,GAyFlBR,IAGFI,EAAEK,iBAEK,QAGoD,CAAEG,SAAS,IAExExB,EAAWV,iBACT,SACC0B,IACCA,EAAEK,kBAEK,IAET,CAAEG,SAAS,IAGb,MAAMD,EAAoBA,KACxBjB,GAAgB,CAAI,EAGhBQ,EAAqBA,KACzBR,GAAgB,CAAK,EAGvBiB,GAAmB,EAMjBhC,IAGF9B,OAAOgE,eAAiB,KACtB5E,SAAS6C,gBAAgBR,MAAMlB,QAAU,EACzCP,OAAOiE,SAAS,EAAG,EAAE,C,iBC7RV,SAASC,IAEtB,KAAMC,gBAAgBD,GACpB,OAAO,IAAIA,EAIbC,KAAKC,KAAO,EAGZD,KAAKE,IAAM,EAGXF,KAAKG,UAAY,GAGjBH,KAAKI,gBAAkB,CAAC,EAGxBJ,KAAKK,QAAUC,OAAOC,OAAOP,KAAKK,SAGlCL,KAAKQ,cAAgB,EACvB,C,kCAGA,IAAIC,EAAU5E,OAAOZ,SAAS6C,gBAC1B/B,EACF0E,EAAQ1E,SACR0E,EAAQC,uBACRD,EAAQE,oBACRF,EAAQG,kBACRH,EAAQI,kBAUVd,EAAYe,UAAUC,gBAAkB,SAASC,EAAIC,GACnD,OAAOlF,EAAQmF,KAAKF,EAAIC,EAC1B,EAUAlB,EAAYe,UAAUvE,iBAAmB,SAAS4D,EAAWgB,GAC3D,OAAOA,EAAQ5E,iBAAiB4D,EAClC,EAUAJ,EAAYe,UAAUT,QAAU,GAGhC,IAAIe,EAAO,oCACXrB,EAAYe,UAAUT,QAAQzD,KAAK,CACjCyE,KAAM,KACNJ,SAAU,SAAyBK,GACjC,IAAIC,EACJ,GAAKA,EAAID,EAAIE,MAAMJ,GACjB,OAAOG,EAAE,GAAGE,MAAM,EAEtB,EACAC,QAAS,SAAsBV,GAC7B,GAAIA,EAAGW,GACL,MAAO,CAACX,EAAGW,GAEf,IAIF,IAAIC,EAAU,qCACd7B,EAAYe,UAAUT,QAAQzD,KAAK,CACjCyE,KAAM,QACNJ,SAAU,SAA4BK,GACpC,IAAIC,EACJ,GAAKA,EAAID,EAAIE,MAAMI,GACjB,OAAOL,EAAE,GAAGE,MAAM,EAEtB,EACAC,QAAS,SAA8BV,GACrC,IAAIa,EAAYb,EAAGa,UACnB,GAAIA,EAAW,CACb,GAAyB,iBAAdA,EACT,OAAOA,EAAUC,MAAM,MAClB,GAAyB,iBAAdD,GAA0B,YAAaA,EAGvD,OAAOA,EAAUE,QAAQD,MAAM,KAEnC,CACF,IAIF,IA0BIE,EA1BAC,EAAQ,mCACZlC,EAAYe,UAAUT,QAAQzD,KAAK,CACjCyE,KAAM,MACNJ,SAAU,SAA0BK,GAClC,IAAIC,EACJ,GAAKA,EAAID,EAAIE,MAAMS,GACjB,OAAOV,EAAE,GAAGW,aAEhB,EACAR,QAAS,SAA2BV,GAClC,MAAO,CAACA,EAAGmB,SAASD,cACtB,IAIFnC,EAAYe,UAAUT,QAAiB,QAAI,CACzCgB,KAAM,YACNJ,SAAU,WACR,OAAO,CACT,EACAS,QAAS,WACP,MAAO,EAAC,EACV,GAMAM,EADwB,mBAAfnG,OAAOmG,IACVnG,OAAOmG,IAEP,WACJ,SAASA,IACPhC,KAAKoC,IAAM,CAAC,CACd,CAOA,OANAJ,EAAIlB,UAAUuB,IAAM,SAASC,GAC3B,OAAOtC,KAAKoC,IAAIE,EAAM,IACxB,EACAN,EAAIlB,UAAUyB,IAAM,SAASD,EAAKE,GAChCxC,KAAKoC,IAAIE,EAAM,KAAOE,CACxB,EACOR,CACR,CAXK,GAiBR,IAAIS,EAAU,sIAOd,SAASC,EAAqBC,EAAY1B,GAGxC,IACE2B,EACAC,EACAtB,EACAuB,EAEAR,EACAS,EAPEC,GAFJL,EAAaA,EAAWlB,MAAM,GAAGwB,OAAON,EAAoB,UAE7BO,OAK7BC,EAAOlC,EAGPZ,EAAU,GAEZ,GAEE,GADAoC,EAAQW,KAAK,KACR7B,EAAIkB,EAAQW,KAAKD,MACpBA,EAAO5B,EAAE,GACLA,EAAE,KAAO4B,GACX,IAAKP,EAAI,EAAGA,EAAII,EAAeJ,IAE7B,GAAKN,GADLS,EAAQJ,EAAWC,IACF3B,SAASM,EAAE,IAAM,CAGhC,IAFAsB,EAAIxC,EAAQ6C,OACZJ,GAAM,EACCD,KACL,GAAIxC,EAAQwC,GAAGE,QAAUA,GAAS1C,EAAQwC,GAAGP,MAAQA,EAAK,CACxDQ,GAAM,EACN,KACF,CAEGA,GACHzC,EAAQzD,KAAK,CAAEmG,MAAOA,EAAOT,IAAKA,IAEpC,KACF,QAICf,GAET,OAAOlB,CACT,CAQA,SAASgD,EAAgBC,EAAKC,GAC5B,IAAIX,EAAGY,EAAKC,EACZ,IAAKb,EAAI,EAAGY,EAAMF,EAAIJ,OAAQN,EAAIY,EAAKZ,IAErC,GADAa,EAAOH,EAAIV,GACPW,EAAMG,cAAcD,GACtB,OAAOA,CAGb,CA2IA,SAASE,EAASC,EAAGC,GACnB,OAAOD,EAAEjC,GAAKkC,EAAElC,EAClB,CA/HA5B,EAAYe,UAAUgD,oBAAsB,WAAY,EAQxD/D,EAAYe,UAAUzB,IAAM,SAAS4B,EAAU8C,GAC7C,IAAIC,EACFpB,EACAqB,EACA3B,EACAS,EACAmB,EACAC,EACAC,EACA/D,EAAUL,KAAKQ,cACfL,EAAYH,KAAKG,UACjBC,EAAkBJ,KAAKI,gBAEzB,GAAwB,iBAAba,EAAX,CAYA,IAHAb,GALA4D,EAAM,CACJrC,GAAI3B,KAAKE,MACTe,SAAUA,EACV8C,KAAMA,IAEYpC,IAAMqC,EAE1BG,EAAkBzB,EAAqB1C,KAAKK,QAASY,GAChD2B,EAAI,EAAGA,EAAIuB,EAAgBjB,OAAQN,IAEtCN,GADA8B,EAAgBD,EAAgBvB,IACZN,KAGpBS,EAAQM,EAAgBhD,EAFxB4D,EAAaG,EAAcrB,WAIzBA,EAAQzC,OAAOC,OAAO0D,IAChB7B,IAAM,IAAIJ,EAChB3B,EAAQzD,KAAKmG,IAGXkB,IAAejE,KAAKK,QAAiB,SACvCL,KAAK8D,oBAAoBE,IAE3BE,EAAOnB,EAAMX,IAAIC,IAAIC,MAEnB4B,EAAO,GACPnB,EAAMX,IAAIG,IAAID,EAAK4B,IAErBA,EAAKtH,KAAKoH,GAGZhE,KAAKC,OACLE,EAAUvD,KAAKqE,EAlCf,CAmCF,EAQAlB,EAAYe,UAAUvB,OAAS,SAAS0B,EAAU8C,GAChD,GAAwB,iBAAb9C,EAAX,CAIA,IAAIkD,EACFC,EACAxB,EACAC,EACAwB,EACAC,EACAJ,EACAF,EACA3D,EAAUL,KAAKQ,cACfL,EAAaH,KAAKG,UAAY,GAC9BC,EAAkBJ,KAAKI,gBACvBmE,EAAa,CAAC,EACdC,EAAiC,IAArBC,UAAUvB,OAGxB,IADAiB,EAAkBzB,EAAqB1C,KAAKK,QAASY,GAChD2B,EAAI,EAAGA,EAAIuB,EAAgBjB,OAAQN,IAItC,IAHAwB,EAAgBD,EAAgBvB,GAEhCC,EAAIxC,EAAQ6C,OACLL,KAEL,GADAyB,EAAWjE,EAAQwC,GACfuB,EAAcrB,MAAMW,cAAcY,GAAW,CAE/C,GADAJ,EAAOI,EAASlC,IAAIC,IAAI+B,EAAc9B,KAGpC,IADA+B,EAAIH,EAAKhB,OACFmB,MACLL,EAAME,EAAKG,IACHpD,WAAaA,IAAauD,GAAaR,EAAID,OAASA,IAC1DG,EAAKQ,OAAOL,EAAG,GACfE,EAAWP,EAAIrC,KAAM,GAI3B,KACF,CAIJ,IAAKiB,KAAK2B,SACDnE,EAAgBwC,GACvB5C,KAAKC,OAGP,IAAK2C,KAAKxC,EACRD,EAAUvD,KAAKwD,EAAgBwC,GAAG3B,SA9CpC,CAgDF,EAiBAlB,EAAYe,UAAU6D,SAAW,SAASxD,GACxC,IAAKnB,KAAKG,UAAU+C,OAClB,MAAO,GAGT,IAIIN,EAAGC,EAAGW,EAAKoB,EAAM5D,EAAIO,EAAGC,EAAOwC,EAJ/BjI,EAAU,CAAC,EACb8I,EAAU,GACRC,EAAM9E,KAAKzD,iBAAiByD,KAAKG,UAAU4E,KAAK,MAAO5D,GAG3D,IAAKyB,EAAI,EAAGY,EAAMsB,EAAI5B,OAAQN,EAAIY,EAAKZ,IAGrC,IAFA5B,EAAK8D,EAAIlC,GAEJC,EAAI,EAAG+B,GADZrD,EAAIvB,KAAKjE,QAAQiF,IACIkC,OAAQL,EAAI+B,EAAM/B,IAEhC9G,GADLiI,EAAMzC,EAAEsB,IACSlB,IAUfH,EAAQzF,EAAQiI,EAAIrC,KATpBH,EAAQ,CACNG,GAAIqC,EAAIrC,GACRV,SAAU+C,EAAI/C,SACd8C,KAAMC,EAAID,KACViB,SAAU,IAEZjJ,EAAQiI,EAAIrC,IAAMH,EAClBqD,EAAQjI,KAAK4E,IAIfA,EAAMwD,SAASpI,KAAKoE,GAIxB,OAAO6D,EAAQI,KAAKtB,EACtB,EAOA5D,EAAYe,UAAU/E,QAAU,SAASiF,GACvC,IAAKA,EACH,MAAO,GAGT,IAAI4B,EAAGC,EAAGwB,EAAGb,EAAKoB,EAAMM,EAAMnC,EAAOoC,EAAMjB,EAAMF,EAAKrC,EAClDtB,EAAUL,KAAKQ,cACjB4E,EAAa,CAAC,EACdrJ,EAAU,GAEZ,IAAK6G,EAAI,EAAGY,EAAMnD,EAAQ6C,OAAQN,EAAIY,EAAKZ,IAGzC,GADAuC,GADApC,EAAQ1C,EAAQuC,IACHlB,QAAQV,GAEnB,IAAK6B,EAAI,EAAG+B,EAAOO,EAAKjC,OAAQL,EAAI+B,EAAM/B,IACxC,GAAKqB,EAAOnB,EAAMX,IAAIC,IAAI8C,EAAKtC,IAC7B,IAAKwB,EAAI,EAAGa,EAAOhB,EAAKhB,OAAQmB,EAAIa,EAAMb,KAGnCe,EADLzD,GADAqC,EAAME,EAAKG,IACF1C,KACc3B,KAAKe,gBAAgBC,EAAIgD,EAAI/C,YAClDmE,EAAWzD,IAAM,EACjB5F,EAAQa,KAAKoH,IAQzB,OAAOjI,EAAQkJ,KAAKtB,EACtB,ECpbA,IAAI0B,EAAe,CAAC,EAChBC,EAAgB,CAAC,EACjBC,EAAqB,IAAIC,QACzBC,EAA8B,IAAID,QAClCE,EAAiB,IAAIF,QACrBG,EAAoBrF,OAAOsF,yBAAyBC,MAAM/E,UAAW,iBAEzE,SAASgF,EAAOC,EAASC,EAAMC,GAC7B,IAAIC,EAASH,EAAQC,GAOrB,OALAD,EAAQC,GAAQ,WAEd,OADAC,EAAGE,MAAMJ,EAAStB,WACXyB,EAAOC,MAAMJ,EAAStB,UAC/B,EAEOsB,CACT,CA4BA,SAASK,IACPb,EAAmBhD,IAAIvC,MAAM,EAC/B,CAEA,SAASqG,IACPd,EAAmBhD,IAAIvC,MAAM,GAC7ByF,EAA4BlD,IAAIvC,MAAM,EACxC,CAEA,SAASsG,IACP,OAAOZ,EAAerD,IAAIrC,OAAS,IACrC,CAEA,SAASuG,EAAoBC,EAAOC,GAC7Bd,GACLrF,OAAOoG,eAAeF,EAAO,gBAAiB,CAC5CG,cAAc,EACdC,YAAY,EACZvE,IAAKoE,GAAUd,EAAkBtD,KAErC,CAWA,SAASwE,EAASL,GAChB,GAVF,SAAqBA,GACnB,IAEE,OADAA,EAAMM,YACC,CACT,CAAE,MAAOC,GACP,OAAO,CACT,CACF,CAGOC,CAAYR,GAAjB,CACA,IACIrG,GAD8B,IAArBqG,EAAMM,WAAmBxB,EAAgBD,GAC/BmB,EAAMS,MAC7B,GAAK9G,EAAL,CACA,IAAI+G,EA9DN,SAAiB/G,EAAWpF,EAAQoM,GAClC,IAAID,EAAQ,GACRE,EAAOrM,EAEX,EAAG,CACD,GAAsB,IAAlBqM,EAAKC,SAAgB,MAEzB,IAAIC,EAAWnH,EAAUpE,QAAQqL,GAEjC,GAAIE,EAASpE,OAAQ,CACnB,IAAIqE,EAAU,CACZH,KAAMA,EACNI,UAAWF,GAGTH,EACFD,EAAMO,QAAQF,GAEdL,EAAMtK,KAAK2K,EAEf,CACF,OAASH,EAAOA,EAAKM,eAErB,OAAOR,CACT,CAsCc,CAAQ/G,EAAWqG,EAAMzL,OAA6B,IAArByL,EAAMM,YACnD,GAAKI,EAAMhE,OAAX,CACA4C,EAAOU,EAAO,kBAAmBJ,GACjCN,EAAOU,EAAO,2BAA4BH,GAC1CE,EAAoBC,EAAOF,GAE3B,IAAK,IAAI1D,EAAI,EAAG+E,EAAOT,EAAMhE,OAAQN,EAAI+E,IACnCpC,EAAmBlD,IAAImE,GADkB5D,IAAK,CAElD,IAAI2E,EAAUL,EAAMtE,GACpB8C,EAAenD,IAAIiE,EAAOe,EAAQH,MAElC,IAAK,IAAIvE,EAAI,EAAG+B,EAAO2C,EAAQC,UAAUtE,OAAQL,EAAI+B,IAC/Ca,EAA4BpD,IAAImE,GADqB3D,IAEzD0E,EAAQC,UAAU3E,GAAGkB,KAAK7C,KAAKqG,EAAQH,KAAMZ,EAEjD,CAEAd,EAAuB,OAAEc,GACzBD,EAAoBC,EAjBK,CAFH,CAHS,CAuBjC,CAEA,SAASrH,EAAGkC,EAAMJ,EAAUgF,GAC1B,IACI2B,KADUnD,UAAUvB,OAAS,QAAsBlF,IAAjByG,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC7DmD,QAClBC,EAASD,EAAUtC,EAAgBD,EACnClF,EAAY0H,EAAOxG,GAElBlB,IACHA,EAAY,IAAIJ,EAChB8H,EAAOxG,GAAQlB,EACflF,SAASyC,iBAAiB2D,EAAMwF,EAAUe,IAG5CzH,EAAUd,IAAI4B,EAAUgF,EAC1B,CACA,SAAS6B,EAAIzG,EAAMJ,EAAUgF,GAC3B,IACI2B,KADUnD,UAAUvB,OAAS,QAAsBlF,IAAjByG,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC7DmD,QAClBC,EAASD,EAAUtC,EAAgBD,EACnClF,EAAY0H,EAAOxG,GAClBlB,IACLA,EAAUZ,OAAO0B,EAAUgF,GACvB9F,EAAUF,cACP4H,EAAOxG,GACdpG,SAAS8M,oBAAoB1G,EAAMwF,EAAUe,IAC/C,CACA,SAASI,EAAKjN,EAAQsG,EAAM/B,GAC1B,OAAOvE,EAAOkN,cAAc,IAAIC,YAAY7G,EAAM,CAChD8G,SAAS,EACTC,YAAY,EACZ9I,OAAQA,IAEZ,C,kCCjIA,IAAI+I,EAAgB,SAAuBC,EAAGzE,EAAG0E,EAAGC,GAElD,OADAF,GAAKE,EAAI,GACD,EAAUD,EAAI,EAAID,EAAIA,EAAIzE,GAE1B0E,EAAI,KADZD,GACsBA,EAAI,GAAK,GAAKzE,CACtC,EAEI4E,EAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU3E,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAX0E,QAAyB1E,EAAI4E,cAAgBF,QAAU1E,IAAQ0E,OAAO5H,UAAY,gBAAkBkD,CAC3H,EAsJA,QApJa,WAIX,IAAItC,OAAU,EAEVmH,OAAQ,EACRC,OAAO,EAEP1N,OAAS,EACT2N,OAAS,EACTC,OAAO,EAEPC,OAAW,EACXtN,OAAW,EAEXuN,OAAY,EACZC,OAAc,EAEdC,OAAO,EAEPxN,OAAW,EAUf,SAASyN,EAAI3H,GACX,OAAOA,EAAQzE,wBAAwBoM,IAAMR,CAC/C,CAIA,SAASS,EAAKC,GAEPL,IACHA,EAAYK,GAOdH,EAAOL,EAHPI,EAAcI,EAAcL,EAGDL,EAAOI,EAAUtN,GAG5CE,OAAOiE,SAAS,EAAGsJ,GAGnBD,EAAcxN,EAAWE,OAAO2N,sBAAsBF,IAQtDzN,OAAOiE,SAAS,EAAG+I,EAAQI,GAGvBvH,GAAWsH,IAEbtH,EAAQ+H,aAAa,WAAY,MAGjC/H,EAAQgI,SAIc,mBAAb9N,GACTA,IAIFsN,GAAY,EAvBd,CAsFA,OA1DA,SAAcnO,GACZ,IAAI4O,EAAUlF,UAAUvB,OAAS,QAAsBlF,IAAjByG,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAanF,OAVA9I,EAAWgO,EAAQhO,UAAY,IAC/BP,EAASuO,EAAQvO,QAAU,EAC3BQ,EAAW+N,EAAQ/N,SACnBmN,EAASY,EAAQZ,QAAUV,EAC3BW,EAAOW,EAAQX,OAAQ,EAGvBH,EApEOhN,OAAO+N,SAAW/N,OAAOgO,iBAuEN,IAAX9O,EAAyB,YAAc0N,EAAQ1N,IAE5D,IAAK,SACH2G,OAAU1D,EACVgL,GAAO,EACPF,EAAOD,EAAQ9N,EACf,MAIF,IAAK,SAEH+N,EAAOO,EADP3H,EAAU3G,GAEV,MAIF,IAAK,SACH2G,EAAUzG,SAASC,cAAcH,GACjC+N,EAAOO,EAAI3H,GAQf,OAHAuH,EAAWH,EAAOD,EAAQzN,EAGlBqN,EAAQkB,EAAQhO,WAEtB,IAAK,SACHA,EAAWgO,EAAQhO,SACnB,MAGF,IAAK,WACHA,EAAWgO,EAAQhO,SAASsN,GAKhCpN,OAAO2N,sBAAsBF,EAC/B,CAIF,CAIgBQ,E","sources":["webpack://silverstripe-base/./themes/app/src/pages/home.js","webpack://silverstripe-base/./node_modules/selector-set/selector-set.next.js","webpack://silverstripe-base/./node_modules/delegated-events/dist/index.js","webpack://silverstripe-base/./node_modules/jump.js/dist/jump.module.js"],"sourcesContent":["import { on } from \"delegated-events\";\nimport jump from \"jump.js\";\nimport { inView, stagger, timeline } from \"motion\";\n\nconst setupHeader = () => {\n const header = document.querySelector(\".home-header\");\n\n if (header.classList.contains(\"as-full\")) {\n inView(header, () => {\n timeline([\n [\n header.querySelector(\".media-block\"),\n {\n opacity: 1,\n },\n { duration: 1.5 },\n ],\n [\n header.querySelector(\".home-header-screen\"),\n {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n { duration: 0.8, at: \"<\" },\n ],\n [\n header.querySelectorAll(\".home-header-content\"),\n {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n { duration: 0.8, delay: stagger(0.4) },\n ],\n ]);\n });\n }\n\n if (header.classList.contains(\"as-right\")) {\n const isMobile = window.matchMedia(\"(max-width: 767px)\").matches;\n\n const sequence = [];\n\n if (isMobile) {\n sequence.push([\n header.querySelector(\".media-block\"),\n {\n opacity: 1,\n },\n { duration: 1.5 },\n ]);\n } else {\n sequence.push([\n header.querySelector(\".media-block\"),\n {\n clipPath: \"circle(50% at 50% 50%)\",\n opacity: 1,\n },\n { duration: 1.5 },\n ]);\n\n sequence.push([\n header.querySelector(\".media-block-circle\"),\n {\n opacity: 1,\n },\n { duration: 1, at: \"<\" },\n ]);\n }\n\n sequence.push([\n header.querySelector(\".home-header-screen\"),\n {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n { duration: 0.8, at: \"<\" },\n ]);\n\n sequence.push([\n header.querySelectorAll(\".home-header-content\"),\n {\n opacity: 1,\n transform: \"translate3d(0, 0, 0)\",\n },\n { duration: 0.8, delay: stagger(0.4) },\n ]);\n\n inView(header, () => {\n timeline(sequence);\n });\n }\n\n const mediaCaption = header.querySelector(\".header-media-caption\");\n\n const handleMediaCaption = () => {\n const headerRect = header.getBoundingClientRect();\n const mediaBlock = header.querySelector(\".header-media\");\n const mediaBlockRect = mediaBlock.getBoundingClientRect();\n const captionHeight = mediaCaption.querySelector(\".caption\").offsetHeight;\n\n const heightDiff = headerRect.height - mediaBlockRect.height;\n\n if (heightDiff < 0) {\n const offset = heightDiff - captionHeight;\n\n mediaCaption.style.bottom = `${Math.abs(offset)}px`;\n } else {\n mediaCaption.style = null;\n }\n };\n\n if (mediaCaption) {\n handleMediaCaption();\n\n window.addEventListener(\"resize\", handleMediaCaption);\n }\n};\n\nconst scrollToPanel = (target) => {\n const siteHeaderHeight = document.querySelector(\".site-header-inner\").offsetHeight;\n let offset = parseInt(siteHeaderHeight) * -1;\n\n if (target.classList.contains(\"element-results\")) {\n offset += 1;\n }\n\n return new Promise((resolve) => {\n jump(target, {\n duration: 600,\n offset,\n callback: () => {\n resolve();\n },\n });\n });\n};\n\nconst setupPage = () => {\n const scrollContainer = document.querySelector(\".panel-scroll-container\");\n\n const isTouchDevice = \"ontouchstart\" in document.documentElement;\n const hasAutoScroll = scrollContainer.dataset.autoscroll !== undefined;\n const canAutoScroll = window.matchMedia(\"(min-height: 900px) and (min-width: 1024px)\").matches;\n\n const allowAutoScroll = !isTouchDevice && hasAutoScroll && canAutoScroll;\n\n if (!allowAutoScroll) {\n return;\n }\n\n const siteHeader = document.querySelector(\".site-header\");\n const firstPanel = scrollContainer.firstElementChild;\n const lastPanel = scrollContainer.lastElementChild;\n\n let currentPanel = firstPanel;\n let scrollEnabled = true;\n let isScrolling = false;\n let scrollDirection = 1;\n let scrollThreshold = 5;\n\n const moveUp = async () => {\n if (currentPanel === firstPanel) {\n return;\n }\n\n isScrolling = true;\n\n const target = currentPanel?.previousElementSibling ?? lastPanel;\n\n if (target) {\n currentPanel = target;\n\n await scrollToPanel(target);\n }\n\n isScrolling = false;\n };\n\n const moveDown = async () => {\n isScrolling = true;\n\n const target = currentPanel.nextElementSibling;\n\n currentPanel = target;\n\n if (target) {\n await scrollToPanel(target);\n\n if (target === lastPanel) {\n disablePanelScroll();\n }\n }\n\n isScrolling = false;\n };\n\n on(\"element-results:complete\", \"html\", (e) => {\n document.documentElement.classList.add(\"overflow-hidden\");\n e.detail.classList.add(\"is-complete\");\n moveDown();\n document.documentElement.classList.remove(\"overflow-hidden\");\n });\n\n const handlePanelScroll = (e) => {\n scrollDirection = e.deltaY > 0 ? 1 : -1;\n\n if (isScrolling) {\n e.preventDefault();\n\n return false;\n }\n\n if (currentPanel?.nextElementSibling?.classList.contains(\"element-results\") && scrollDirection < 0) {\n currentPanel?.nextElementSibling?.classList.remove(\"is-complete\");\n }\n\n if (currentPanel?.classList.contains(\"element-results\") && scrollDirection < 0) {\n setTimeout(() => {\n document.querySelector(\".element-results\").classList.remove(\"is-complete\");\n }, 500);\n }\n\n if (currentPanel?.classList.contains(\"element-results\") && scrollDirection > 0) {\n if (!currentPanel?.classList.contains(\"is-complete\")) {\n return true;\n }\n }\n\n if (!scrollEnabled && scrollDirection < 0) {\n currentPanel = null;\n enablePanelScroll();\n moveUp();\n\n e.preventDefault();\n\n return false;\n }\n\n if (currentPanel === lastPanel && scrollDirection > 0) {\n disablePanelScroll();\n\n return true;\n }\n\n if (e.deltaY < -scrollThreshold) {\n moveUp();\n } else if (e.deltaY > scrollThreshold) {\n moveDown();\n }\n\n e.preventDefault();\n\n return false;\n };\n\n scrollContainer.addEventListener(\"wheel\", handlePanelScroll, { passive: false });\n\n siteHeader.addEventListener(\n \"wheel\",\n (e) => {\n e.preventDefault();\n\n return false;\n },\n { passive: false },\n );\n\n const enablePanelScroll = () => {\n scrollEnabled = true;\n };\n\n const disablePanelScroll = () => {\n scrollEnabled = false;\n };\n\n enablePanelScroll();\n};\n\nconst init = () => {\n if (!window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n setupHeader();\n setupPage();\n }\n\n window.onbeforeunload = () => {\n document.documentElement.style.opacity = 0;\n window.scrollTo(0, 0);\n };\n};\n\ninit();\n","// Public: Create a new SelectorSet.\nexport default function SelectorSet() {\n // Construct new SelectorSet if called as a function.\n if (!(this instanceof SelectorSet)) {\n return new SelectorSet();\n }\n\n // Public: Number of selectors added to the set\n this.size = 0;\n\n // Internal: Incrementing ID counter\n this.uid = 0;\n\n // Internal: Array of String selectors in the set\n this.selectors = [];\n\n // Internal: Map of selector ids to objects\n this.selectorObjects = {};\n\n // Internal: All Object index String names mapping to Index objects.\n this.indexes = Object.create(this.indexes);\n\n // Internal: Used Object index String names mapping to Index objects.\n this.activeIndexes = [];\n}\n\n// Detect prefixed Element#matches function.\nvar docElem = window.document.documentElement;\nvar matches =\n docElem.matches ||\n docElem.webkitMatchesSelector ||\n docElem.mozMatchesSelector ||\n docElem.oMatchesSelector ||\n docElem.msMatchesSelector;\n\n// Public: Check if element matches selector.\n//\n// Maybe overridden with custom Element.matches function.\n//\n// el - An Element\n// selector - String CSS selector\n//\n// Returns true or false.\nSelectorSet.prototype.matchesSelector = function(el, selector) {\n return matches.call(el, selector);\n};\n\n// Public: Find all elements in the context that match the selector.\n//\n// Maybe overridden with custom querySelectorAll function.\n//\n// selectors - String CSS selectors.\n// context - Element context\n//\n// Returns non-live list of Elements.\nSelectorSet.prototype.querySelectorAll = function(selectors, context) {\n return context.querySelectorAll(selectors);\n};\n\n// Public: Array of indexes.\n//\n// name - Unique String name\n// selector - Function that takes a String selector and returns a String key\n// or undefined if it can't be used by the index.\n// element - Function that takes an Element and returns an Array of String\n// keys that point to indexed values.\n//\nSelectorSet.prototype.indexes = [];\n\n// Index by element id\nvar idRe = /^#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'ID',\n selector: function matchIdSelector(sel) {\n var m;\n if ((m = sel.match(idRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementId(el) {\n if (el.id) {\n return [el.id];\n }\n }\n});\n\n// Index by all of its class names\nvar classRe = /^\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'CLASS',\n selector: function matchClassSelector(sel) {\n var m;\n if ((m = sel.match(classRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementClassNames(el) {\n var className = el.className;\n if (className) {\n if (typeof className === 'string') {\n return className.split(/\\s/);\n } else if (typeof className === 'object' && 'baseVal' in className) {\n // className is a SVGAnimatedString\n // global SVGAnimatedString is not an exposed global in Opera 12\n return className.baseVal.split(/\\s/);\n }\n }\n }\n});\n\n// Index by tag/node name: `DIV`, `FORM`, `A`\nvar tagRe = /^((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'TAG',\n selector: function matchTagSelector(sel) {\n var m;\n if ((m = sel.match(tagRe))) {\n return m[0].toUpperCase();\n }\n },\n element: function getElementTagName(el) {\n return [el.nodeName.toUpperCase()];\n }\n});\n\n// Default index just contains a single array of elements.\nSelectorSet.prototype.indexes['default'] = {\n name: 'UNIVERSAL',\n selector: function() {\n return true;\n },\n element: function() {\n return [true];\n }\n};\n\n// Use ES Maps when supported\nvar Map;\nif (typeof window.Map === 'function') {\n Map = window.Map;\n} else {\n Map = (function() {\n function Map() {\n this.map = {};\n }\n Map.prototype.get = function(key) {\n return this.map[key + ' '];\n };\n Map.prototype.set = function(key, value) {\n this.map[key + ' '] = value;\n };\n return Map;\n })();\n}\n\n// Regexps adopted from Sizzle\n// https://github.com/jquery/sizzle/blob/1.7/sizzle.js\n//\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n\n// Internal: Get indexes for selector.\n//\n// selector - String CSS selector\n//\n// Returns Array of {index, key}.\nfunction parseSelectorIndexes(allIndexes, selector) {\n allIndexes = allIndexes.slice(0).concat(allIndexes['default']);\n\n var allIndexesLen = allIndexes.length,\n i,\n j,\n m,\n dup,\n rest = selector,\n key,\n index,\n indexes = [];\n\n do {\n chunker.exec('');\n if ((m = chunker.exec(rest))) {\n rest = m[3];\n if (m[2] || !rest) {\n for (i = 0; i < allIndexesLen; i++) {\n index = allIndexes[i];\n if ((key = index.selector(m[1]))) {\n j = indexes.length;\n dup = false;\n while (j--) {\n if (indexes[j].index === index && indexes[j].key === key) {\n dup = true;\n break;\n }\n }\n if (!dup) {\n indexes.push({ index: index, key: key });\n }\n break;\n }\n }\n }\n }\n } while (m);\n\n return indexes;\n}\n\n// Internal: Find first item in Array that is a prototype of `proto`.\n//\n// ary - Array of objects\n// proto - Prototype of expected item in `ary`\n//\n// Returns object from `ary` if found. Otherwise returns undefined.\nfunction findByPrototype(ary, proto) {\n var i, len, item;\n for (i = 0, len = ary.length; i < len; i++) {\n item = ary[i];\n if (proto.isPrototypeOf(item)) {\n return item;\n }\n }\n}\n\n// Public: Log when added selector falls under the default index.\n//\n// This API should not be considered stable. May change between\n// minor versions.\n//\n// obj - {selector, data} Object\n//\n// SelectorSet.prototype.logDefaultIndexUsed = function(obj) {\n// console.warn(obj.selector, \"could not be indexed\");\n// };\n//\n// Returns nothing.\nSelectorSet.prototype.logDefaultIndexUsed = function() {};\n\n// Public: Add selector to set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.add = function(selector, data) {\n var obj,\n i,\n indexProto,\n key,\n index,\n objs,\n selectorIndexes,\n selectorIndex,\n indexes = this.activeIndexes,\n selectors = this.selectors,\n selectorObjects = this.selectorObjects;\n\n if (typeof selector !== 'string') {\n return;\n }\n\n obj = {\n id: this.uid++,\n selector: selector,\n data: data\n };\n selectorObjects[obj.id] = obj;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n key = selectorIndex.key;\n indexProto = selectorIndex.index;\n\n index = findByPrototype(indexes, indexProto);\n if (!index) {\n index = Object.create(indexProto);\n index.map = new Map();\n indexes.push(index);\n }\n\n if (indexProto === this.indexes['default']) {\n this.logDefaultIndexUsed(obj);\n }\n objs = index.map.get(key);\n if (!objs) {\n objs = [];\n index.map.set(key, objs);\n }\n objs.push(obj);\n }\n\n this.size++;\n selectors.push(selector);\n};\n\n// Public: Remove selector from set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.remove = function(selector, data) {\n if (typeof selector !== 'string') {\n return;\n }\n\n var selectorIndexes,\n selectorIndex,\n i,\n j,\n k,\n selIndex,\n objs,\n obj,\n indexes = this.activeIndexes,\n selectors = (this.selectors = []),\n selectorObjects = this.selectorObjects,\n removedIds = {},\n removeAll = arguments.length === 1;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n\n j = indexes.length;\n while (j--) {\n selIndex = indexes[j];\n if (selectorIndex.index.isPrototypeOf(selIndex)) {\n objs = selIndex.map.get(selectorIndex.key);\n if (objs) {\n k = objs.length;\n while (k--) {\n obj = objs[k];\n if (obj.selector === selector && (removeAll || obj.data === data)) {\n objs.splice(k, 1);\n removedIds[obj.id] = true;\n }\n }\n }\n break;\n }\n }\n }\n\n for (i in removedIds) {\n delete selectorObjects[i];\n this.size--;\n }\n\n for (i in selectorObjects) {\n selectors.push(selectorObjects[i].selector);\n }\n};\n\n// Sort by id property handler.\n//\n// a - Selector obj.\n// b - Selector obj.\n//\n// Returns Number.\nfunction sortById(a, b) {\n return a.id - b.id;\n}\n\n// Public: Find all matching decendants of the context element.\n//\n// context - An Element\n//\n// Returns Array of {selector, data, elements} matches.\nSelectorSet.prototype.queryAll = function(context) {\n if (!this.selectors.length) {\n return [];\n }\n\n var matches = {},\n results = [];\n var els = this.querySelectorAll(this.selectors.join(', '), context);\n\n var i, j, len, len2, el, m, match, obj;\n for (i = 0, len = els.length; i < len; i++) {\n el = els[i];\n m = this.matches(el);\n for (j = 0, len2 = m.length; j < len2; j++) {\n obj = m[j];\n if (!matches[obj.id]) {\n match = {\n id: obj.id,\n selector: obj.selector,\n data: obj.data,\n elements: []\n };\n matches[obj.id] = match;\n results.push(match);\n } else {\n match = matches[obj.id];\n }\n match.elements.push(el);\n }\n }\n\n return results.sort(sortById);\n};\n\n// Public: Match element against all selectors in set.\n//\n// el - An Element\n//\n// Returns Array of {selector, data} matches.\nSelectorSet.prototype.matches = function(el) {\n if (!el) {\n return [];\n }\n\n var i, j, k, len, len2, len3, index, keys, objs, obj, id;\n var indexes = this.activeIndexes,\n matchedIds = {},\n matches = [];\n\n for (i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n keys = index.element(el);\n if (keys) {\n for (j = 0, len2 = keys.length; j < len2; j++) {\n if ((objs = index.map.get(keys[j]))) {\n for (k = 0, len3 = objs.length; k < len3; k++) {\n obj = objs[k];\n id = obj.id;\n if (!matchedIds[id] && this.matchesSelector(el, obj.selector)) {\n matchedIds[id] = true;\n matches.push(obj);\n }\n }\n }\n }\n }\n }\n\n return matches.sort(sortById);\n};\n","import SelectorSet from 'selector-set';\n\nvar bubbleEvents = {};\nvar captureEvents = {};\nvar propagationStopped = new WeakMap();\nvar immediatePropagationStopped = new WeakMap();\nvar currentTargets = new WeakMap();\nvar currentTargetDesc = Object.getOwnPropertyDescriptor(Event.prototype, 'currentTarget');\n\nfunction before(subject, verb, fn) {\n var source = subject[verb];\n\n subject[verb] = function () {\n fn.apply(subject, arguments);\n return source.apply(subject, arguments);\n };\n\n return subject;\n}\n\nfunction matches(selectors, target, reverse) {\n var queue = [];\n var node = target;\n\n do {\n if (node.nodeType !== 1) break;\n\n var _matches = selectors.matches(node);\n\n if (_matches.length) {\n var matched = {\n node: node,\n observers: _matches\n };\n\n if (reverse) {\n queue.unshift(matched);\n } else {\n queue.push(matched);\n }\n }\n } while (node = node.parentElement);\n\n return queue;\n}\n\nfunction trackPropagation() {\n propagationStopped.set(this, true);\n}\n\nfunction trackImmediate() {\n propagationStopped.set(this, true);\n immediatePropagationStopped.set(this, true);\n}\n\nfunction getCurrentTarget() {\n return currentTargets.get(this) || null;\n}\n\nfunction defineCurrentTarget(event, getter) {\n if (!currentTargetDesc) return;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n enumerable: true,\n get: getter || currentTargetDesc.get\n });\n}\n\nfunction canDispatch(event) {\n try {\n event.eventPhase;\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction dispatch(event) {\n if (!canDispatch(event)) return;\n var events = event.eventPhase === 1 ? captureEvents : bubbleEvents;\n var selectors = events[event.type];\n if (!selectors) return;\n var queue = matches(selectors, event.target, event.eventPhase === 1);\n if (!queue.length) return;\n before(event, 'stopPropagation', trackPropagation);\n before(event, 'stopImmediatePropagation', trackImmediate);\n defineCurrentTarget(event, getCurrentTarget);\n\n for (var i = 0, len1 = queue.length; i < len1; i++) {\n if (propagationStopped.get(event)) break;\n var matched = queue[i];\n currentTargets.set(event, matched.node);\n\n for (var j = 0, len2 = matched.observers.length; j < len2; j++) {\n if (immediatePropagationStopped.get(event)) break;\n matched.observers[j].data.call(matched.node, event);\n }\n }\n\n currentTargets[\"delete\"](event);\n defineCurrentTarget(event);\n}\n\nfunction on(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n\n if (!selectors) {\n selectors = new SelectorSet();\n events[name] = selectors;\n document.addEventListener(name, dispatch, capture);\n }\n\n selectors.add(selector, fn);\n}\nfunction off(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n if (!selectors) return;\n selectors.remove(selector, fn);\n if (selectors.size) return;\n delete events[name];\n document.removeEventListener(name, dispatch, capture);\n}\nfunction fire(target, name, detail) {\n return target.dispatchEvent(new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: detail\n }));\n}\n\nexport { fire, off, on };\n","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n"],"names":["scrollToPanel","target","siteHeaderHeight","document","querySelector","offsetHeight","offset","parseInt","classList","contains","Promise","resolve","jump","duration","callback","window","matchMedia","matches","setupHeader","header","inView","timeline","opacity","transform","at","querySelectorAll","delay","stagger","isMobile","sequence","push","clipPath","mediaCaption","handleMediaCaption","headerRect","getBoundingClientRect","mediaBlockRect","captionHeight","heightDiff","height","style","bottom","Math","abs","addEventListener","setupPage","scrollContainer","isTouchDevice","documentElement","hasAutoScroll","undefined","dataset","autoscroll","canAutoScroll","siteHeader","firstPanel","firstElementChild","lastPanel","lastElementChild","currentPanel","scrollEnabled","isScrolling","scrollDirection","moveUp","async","previousElementSibling","moveDown","nextElementSibling","disablePanelScroll","on","e","add","detail","remove","deltaY","preventDefault","setTimeout","enablePanelScroll","passive","onbeforeunload","scrollTo","SelectorSet","this","size","uid","selectors","selectorObjects","indexes","Object","create","activeIndexes","docElem","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","prototype","matchesSelector","el","selector","call","context","idRe","name","sel","m","match","slice","element","id","classRe","className","split","baseVal","Map","tagRe","toUpperCase","nodeName","map","get","key","set","value","chunker","parseSelectorIndexes","allIndexes","i","j","dup","index","allIndexesLen","concat","length","rest","exec","findByPrototype","ary","proto","len","item","isPrototypeOf","sortById","a","b","logDefaultIndexUsed","data","obj","indexProto","objs","selectorIndexes","selectorIndex","k","selIndex","removedIds","removeAll","arguments","splice","queryAll","len2","results","els","join","elements","sort","len3","keys","matchedIds","bubbleEvents","captureEvents","propagationStopped","WeakMap","immediatePropagationStopped","currentTargets","currentTargetDesc","getOwnPropertyDescriptor","Event","before","subject","verb","fn","source","apply","trackPropagation","trackImmediate","getCurrentTarget","defineCurrentTarget","event","getter","defineProperty","configurable","enumerable","dispatch","eventPhase","_","canDispatch","type","queue","reverse","node","nodeType","_matches","matched","observers","unshift","parentElement","len1","capture","events","off","removeEventListener","fire","dispatchEvent","CustomEvent","bubbles","cancelable","easeInOutQuad","t","c","d","_typeof","Symbol","iterator","constructor","start","stop","easing","a11y","distance","timeStart","timeElapsed","next","top","loop","timeCurrent","requestAnimationFrame","setAttribute","focus","options","scrollY","pageYOffset","jumper"],"sourceRoot":""}