{"version":3,"file":"959.557788c1b3ab78c7aab1.js","mappings":"mKAEO,MAAMA,EAAkB,CAC3BC,QAAQ,GAGZ,IAAIC,EAAuB,KAC3B,MAAMC,EAA4BC,IAC9BC,aAAaH,GACbA,EAAuBI,YAAW,KAC9BC,SAASC,KAAKC,UAAUC,OAAO,mBAAoBN,GACnDJ,EAAgBC,OAASG,CAAI,GAC9B,IAAI,EAEXG,SAASC,KAAKG,iBAAiB,WAAW,SAASC,GAC/C,OAAQA,EAAEC,KACN,IAAK,SACL,IAAK,KACL,IAAK,UACL,IAAK,OACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,MACL,IAAK,QACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,WACL,IAAK,IACL,IAAK,QACL,IAAK,SACDV,GAAyB,GAGrC,IACAI,SAASC,KAAKG,iBAAiB,aAAa,WACxCR,GAAyB,EAC7B,IACAI,SAASC,KAAKG,iBAAiB,cAAc,WACzCR,GAAyB,EAC7B,G,2GCnCA,MAAMW,EAAQP,SAASQ,cAAc,QACrC,IAAIC,GAAW,EACXC,GAAkB,EAEf,MAAMC,EAAmB,CAC5BjB,QAAQ,GAECkB,EAAoB,CAC7BlB,QAAQ,GAGZ,MAAMmB,EACFC,WAAAA,CAAYC,EAASC,GACjBC,KAAKF,QAAUA,EACfE,KAAKC,WAAaH,EAAQP,cAAc,OACxCS,KAAKE,aAAeH,EACpBC,KAAKG,UAAW,EAChBH,KAAKI,YAAc,KACnBJ,KAAKK,UAAY,IACjBL,KAAKM,iBAAmB,EACxBN,KAAKO,wBAA0B,EAC/BP,KAAKQ,MAAQ,GACb,IAAIR,KAAKF,QAAQW,iBAAiB,kBAAkBC,SAAQC,IACxD,IAAIC,EAAIZ,KAAKQ,MAAMK,OACnBb,KAAKQ,MAAMI,GAAK,IAAIE,EAASF,EAAGD,EAAG,EAAE,IAGzCX,KAAKe,OAAS,CACVC,WAAa,KACbC,aAAe,KACfC,KAAOlB,KAAKF,QAAQP,cAAc,oBAEtCS,KAAKmB,UAAgC,MAApBnB,KAAKe,OAAOG,KAC1BlB,KAAKmB,YACJnB,KAAKe,OAAOC,WAAahB,KAAKe,OAAOG,KAAK3B,cAAc,wBACxDS,KAAKe,OAAOE,aAAejB,KAAKe,OAAOG,KAAK3B,cAAc,yBAElE,CACA6B,IAAAA,GACIpB,KAAKG,UAAW,EAChBH,KAAKF,QAAQuB,aAAa,eAAe,GACtC7B,GACCQ,KAAKE,aAAamB,aAAa,iBAAiB,GAChD/B,EAAML,UAAUqC,IAAI,sBACpB5B,EAAiBjB,QAAS,EAC1B8C,OAAOC,uBAAsB,KACzBlC,EAAML,UAAUqC,IAAI,sBACpBtB,KAAKF,QAAQ2B,gBAAkB,KAC3BzB,KAAK0B,eAAc,EAAK,CAC3B,MAGLhC,EAAiBjB,QAAS,EAC1B8C,OAAOC,uBAAsB,KACzBlC,EAAML,UAAU0C,OAAO,qBAAqB,IAGxD,CACAC,IAAAA,GACOlC,EAAiBjB,QAChBuB,KAAKG,UAAW,EAChBT,EAAiBjB,QAAS,EAC1BuB,KAAKE,aAAamB,aAAa,iBAAiB,GAChD/B,EAAML,UAAUqC,IAAI,sBACpBhC,EAAML,UAAU0C,OAAO,sBACvB3B,KAAKF,QAAQ2B,gBAAkB,KAC3BzB,KAAK0B,eAAc,EAAM,IAG7B1B,KAAKG,UAAW,EAChBH,KAAKF,QAAQuB,aAAa,eAAe,GAEjD,CACAK,aAAAA,CAAc9C,GACNA,GAEAoB,KAAKF,QAAQuB,aAAa,eAAe,GAE7C/B,EAAML,UAAU0C,OAAO,sBACvB3B,KAAKF,QAAQ2B,gBAAkB,IACnC,CACAI,MAAAA,CAAOC,GAAW,EAAOC,GAAY,EAAIC,GAAmB,GA6CxD,GA5CID,GAAa,GAAKC,GAAoB,GAIlCxC,IAAaQ,KAAKG,UAAUH,KAAKoB,OAEjCpB,KAAKM,iBAAmB,GAAKN,KAAKO,wBAA0B,GAAKwB,GAAa/B,KAAKM,iBAAmBN,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQ9B,UAAUH,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQL,MAAK,GAEtM5B,KAAKQ,MAAMuB,GAAWE,QAAQ9B,UAAUH,KAAKQ,MAAMuB,GAAWE,QAAQb,MAAqC,GAAhCpB,KAAKO,wBAEjF/B,EAAAA,gBAAgBC,QAAUqD,IACtB9B,KAAKQ,MAAMuB,GAAWE,QAAQzB,MAAMwB,GAAkBE,WACtDlC,KAAKQ,MAAMuB,GAAWE,QAAQzB,MAAMwB,GAAkBC,QAAQ/C,OAAOiD,QAErEnC,KAAKQ,MAAMuB,GAAWE,QAAQzB,MAAMwB,GAAkBI,KAAKD,UAI5DJ,GAAa,GAIhBvC,IAAaQ,KAAKG,UAAUH,KAAKoB,OAEjCpB,KAAKM,iBAAmB,GAAKN,KAAKQ,MAAMR,KAAKM,iBAAiB4B,YAC1DlC,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQ9B,UAAUH,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQL,MAAK,GAGrGpD,EAAAA,gBAAgBC,QAAUqD,IACtB9B,KAAKQ,MAAMuB,GAAWG,WACtBlC,KAAKQ,MAAMuB,GAAWE,QAAQ/C,OAAOiD,QAErCnC,KAAKQ,MAAMuB,GAAWK,KAAKD,WAK/BnC,KAAKM,iBAAmB,GAAKN,KAAKO,wBAA0B,GAAKP,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQ9B,UAAUH,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQL,MAAMpC,GACnKA,GAAYQ,KAAKG,WACjBH,KAAK4B,OACDpD,EAAAA,gBAAgBC,QAAUqD,GAAU9B,KAAKE,aAAaiC,UAI9DnC,KAAKM,iBAAmByB,EAAW,CAC/B/B,KAAKM,iBAAmB,IACpBN,KAAKQ,MAAMR,KAAKM,iBAAiB4B,WACjClC,KAAKQ,MAAMR,KAAKM,iBAAiB2B,QAAQ/C,OAAOmC,aAAa,WAAY,MAEzErB,KAAKQ,MAAMR,KAAKM,iBAAiB8B,KAAKf,aAAa,WAAY,OAGvE,IAAIgB,EAAeN,EACdvC,IAA6B,GAAjB6C,IAAoBA,EAAe,GAChDA,GAAgB,IACZrC,KAAKQ,MAAM6B,GAAcH,WACzBlC,KAAKQ,MAAM6B,GAAcJ,QAAQ/C,OAAOmC,aAAa,WAAY,KAEjErB,KAAKQ,MAAM6B,GAAcD,KAAKf,aAAa,WAAY,KAGnE,CAEArB,KAAKM,gBAAkByB,EACvB/B,KAAKO,uBAAyByB,CAClC,EAGJ,MAAMlB,EACFjB,WAAAA,CAAYkC,EAAWO,EAAKC,GACxBvC,KAAKuC,MAAQA,EACbvC,KAAKwC,MAAQT,EACb/B,KAAKyC,GAAKH,EACV,IAAII,EAASJ,EAAI/C,cAAc,0BAC3BoD,EAAML,EAAI/C,cAAc,eACxBmD,GAAUC,GACV3C,KAAKkC,YAAa,EAClBlC,KAAKiC,QAAU,IAAIW,EAAQD,EAAKD,EAAQH,KAExCvC,KAAKkC,YAAa,EAClBlC,KAAKoC,KAAOE,EAAI/C,cAAc,KAEtC,EAGJ,MAAMqD,EACF/C,WAAAA,CAAY8C,EAAKD,EAAQH,GACrBvC,KAAKG,UAAW,EAChBH,KAAKd,OAASwD,EACd1C,KAAKF,QAAU6C,EACf3C,KAAKuC,MAAQA,EACbvC,KAAK6C,MAAQ7C,KAAKF,QAAQP,cAAc,qBACxCS,KAAKQ,MAAQ,GACb,IAAIR,KAAKF,QAAQW,iBAAiB,2BAA2BC,SAAQC,IACjE,IAAIC,EAAIZ,KAAKQ,MAAMK,OACnBb,KAAKQ,MAAMI,GAAK,IAAIE,EAASF,EAAGD,EAAI4B,EAAQ,EAAG,GAEvD,CACAnB,IAAAA,CAAK0B,GACD9C,KAAKG,UAAW,GACZH,KAAKuC,MAAQ,GAAK/C,KAClBQ,KAAKF,QAAQiD,MAAMC,UAAYhD,KAAK6C,MAAMI,aAAe,MAEzDH,GACA9C,KAAKF,QAAQb,UAAUqC,IAAI,WAC3BtB,KAAKF,QAAQ2B,gBAAmBrC,IACzBA,EAAE8D,QAAUlD,KAAKF,UAChBE,KAAKF,QAAQb,UAAU0C,OAAO,YAC1B3B,KAAKuC,MAAQ,GAAK/C,KAClBQ,KAAKF,QAAQiD,MAAMC,UAAY,OAC/BhD,KAAKF,QAAQ2B,gBAAkB,MAEvC,GAGJzB,KAAKF,QAAQiD,MAAMC,UAAY,OAEnChD,KAAKF,QAAQuB,aAAa,eAAe,GACzCrB,KAAKd,OAAOmC,aAAa,iBAAiB,EAC9C,CACAO,IAAAA,CAAKkB,GACD9C,KAAKG,UAAW,GACZH,KAAKuC,MAAQ,GAAK/C,KAClBQ,KAAKF,QAAQiD,MAAMC,UAAYhD,KAAK6C,MAAMI,aAAe,KACzD1B,OAAOC,uBAAsB,KACzBxB,KAAKF,QAAQiD,MAAMC,UAAY,CAAC,KAGpCF,IACA9C,KAAKF,QAAQb,UAAUqC,IAAI,WAC3BtB,KAAKF,QAAQ2B,gBAAmBrC,IACzBA,EAAE8D,QAAUlD,KAAKF,SAASE,KAAKF,QAAQb,UAAU0C,OAAO,UAAU,GAG7E3B,KAAKF,QAAQuB,aAAa,eAAe,GACzCrB,KAAKd,OAAOmC,aAAa,iBAAiB,EAC9C,EAKJ,GAAuD,MAApDtC,SAASQ,cAAc,0BAAmC,CACzD,MAAM4D,EAAI,IAAIvD,EAAKb,SAASQ,cAAc,0BAA2BR,SAASQ,cAAc,yCAK5F4D,EAAEjD,aAAaf,iBAAiB,SAAS,KACjCK,IACI2D,EAAEhD,SAEFgD,EAAEtB,QAAO,GAGTsB,EAAEtB,QAAO,EAAM,GAEvB,IAKJ,MAAMuB,EAAkBC,IACpB,IAAK7D,GAAY2D,EAAE5C,wBAA0B,EAAG,CAC5C,IAAI+C,GAAS,EACb,KAAOD,GAAKtE,SAASC,MAAM,CACvB,GAAIqE,GAAKF,EAAErD,QAAS,CAChBwD,GAAS,EACT,KACJ,CACAD,EAAIA,EAAEE,UACV,CACKD,GACDH,EAAEtB,QAEV,GAEJ9C,SAASC,KAAKG,iBAAiB,SAAUC,IACrCgE,EAAehE,EAAE8D,OAAO,IAK5B,IAAK,IAAItC,EAAI,EAAG4C,EAAIL,EAAE3C,MAAMK,OAAQD,EAAI4C,EAAG5C,IAAK,CAC5C,IAAI6C,EAAIN,EAAE3C,MAAMI,GAChB,GAAI6C,EAAEvB,WAAY,CAEduB,EAAExB,QAAQ/C,OAAOC,iBAAiB,SAAS,KACnCsE,EAAExB,QAAQ9B,SACVgD,EAAEtB,QAAO,EAAM4B,EAAEjB,OAEjBW,EAAEtB,QAAO,EAAM4B,EAAEjB,MAAO,EAC5B,IAGJiB,EAAExB,QAAQ/C,OAAOC,iBAAiB,SAAS,KACnCgE,EAAEhD,UAAYgD,EAAE7C,iBAAmBmD,EAAEjB,OACrCW,EAAEtB,QAAO,EAAM4B,EAAEjB,MACrB,IAKJ,IAAK,IAAIkB,EAAK,EAAGC,EAAKF,EAAExB,QAAQzB,MAAMK,OAAQ6C,EAAKC,EAAID,IAAM,CACzD,IAAIE,EAAKH,EAAExB,QAAQzB,MAAMkD,GACrBE,EAAG1B,YACH0B,EAAG3B,QAAQ/C,OAAOC,iBAAiB,SAAS,KACxCgE,EAAEtB,QAAO,EAAM4B,EAAEjB,MAAOoB,EAAGpB,MAAM,GAG7C,CACJ,CACJ,CAGAW,EAAErD,QAAQX,iBAAiB,WAAYC,IACnC,OAAQA,EAAEC,KAEN,IAAK,SACDD,EAAEyE,iBACEV,EAAE5C,wBAA0B,EAC5B4C,EAAEtB,QAAO,EAAMsB,EAAE7C,iBAEjB6C,EAAEtB,QAAO,GAEb,MAEJ,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,aAED,GADAzC,EAAEyE,iBACEV,EAAE5C,wBAA0B,EAAG,CAC/B,IAAIuD,EAAOX,EAAE5C,uBAAyB,EAElCuD,GADOX,EAAE3C,MAAM2C,EAAE7C,iBAAiB2B,QAAQzB,MAC7BK,SAAQiD,EAAO,GAChCX,EAAEtB,QAAO,EAAMsB,EAAE7C,gBAAiBwD,EACtC,KAAO,CACH,IAAIA,EAAOX,EAAE7C,gBAAkB,EAE3BwD,GADOX,EAAE3C,MACIK,SAAQiD,EAAO,GAChCX,EAAEtB,QAAO,EAAMiC,EACnB,CACA,MAEJ,IAAK,KACL,IAAK,UACL,IAAK,OACL,IAAK,YAED,GADA1E,EAAEyE,iBACEV,EAAE5C,wBAA0B,EAAG,CAC/B,IAAIuD,EAAOX,EAAE5C,uBAAyB,EAClCwD,EAAOZ,EAAE3C,MAAM2C,EAAE7C,iBAAiB2B,QAAQzB,MAC1CsD,EAAO,IAAGA,EAAOC,EAAKlD,OAAS,GACnCsC,EAAEtB,QAAO,EAAMsB,EAAE7C,gBAAiBwD,EACtC,KAAO,CACH,IAAIA,EAAOX,EAAE7C,gBAAkB,EAC3ByD,EAAOZ,EAAE3C,MACTsD,EAAO,IAAGA,EAAOC,EAAKlD,OAAS,GACnCsC,EAAEtB,QAAO,EAAMiC,EACnB,CACA,MAEJ,IAAK,MACEtE,GACM2D,EAAEhC,WAAagC,EAAE7C,iBAAmB,GACrC6C,EAAEvB,OAGNuB,EAAEtB,SAEN,MAEJ,IAAK,WACL,IAAK,IACL,IAAK,QACL,IAAK,SACDzC,EAAEyE,iBACEV,EAAE5C,wBAA0B,EACxB4C,EAAE3C,MAAM2C,EAAE7C,iBAAiB2B,QAAQzB,MAAM2C,EAAE5C,wBAAwB2B,WACnEiB,EAAE3C,MAAM2C,EAAE7C,iBAAiB2B,QAAQzB,MAAM2C,EAAE5C,wBAAwB0B,QAAQ/C,OAAO8E,QAElFb,EAAE3C,MAAM2C,EAAE7C,iBAAiB2B,QAAQzB,MAAM2C,EAAE5C,wBAAwB6B,KAAK4B,QAGxEb,EAAE3C,MAAM2C,EAAE7C,iBAAiB4B,WAC3BiB,EAAE3C,MAAM2C,EAAE7C,iBAAiB2B,QAAQ/C,OAAO8E,QAE1Cb,EAAE3C,MAAM2C,EAAE7C,iBAAiB8B,KAAK4B,QAIhD,IAKJ,MAAMC,EAASA,KACX,IAAIC,EAAO1E,EAEX,GADAA,EAAW+B,OAAO4C,WAAaC,EAAAA,EAAWC,GACtC7E,IAAa0E,EAAM,CAEnBf,EAAEtB,SAEF,IAAK,IAAIjB,EAAI,EAAG4C,EAAIL,EAAE3C,MAAMK,OAAQD,EAAI4C,EAAG5C,IACnCuC,EAAE3C,MAAMI,GAAGsB,aAAYiB,EAAE3C,MAAMI,GAAGqB,QAAQnC,QAAQiD,MAAMC,UAAYG,EAAE3C,MAAMI,GAAGT,SAAW,OAAS,MAE/G,MAAO,IAAKX,GAAY0E,EAAM,CAErBf,EAAEhD,UAAUgD,EAAE/B,OACnB1B,EAAiBjB,QAAS,EAC1Ba,EAAML,UAAU0C,OAAO,sBAEvB,IAAK,IAAIf,EAAI,EAAG4C,EAAIL,EAAE3C,MAAMK,OAAQD,EAAI4C,EAAG5C,IACnCuC,EAAE3C,MAAMI,GAAGsB,aAAYiB,EAAE3C,MAAMI,GAAGqB,QAAQnC,QAAQiD,MAAMC,UAAY,OAEhF,GAIJzB,OAAOpC,iBAAiB,cAAc,KAE7BK,GAAU2D,EAAEtB,QAAQ,IAC1B,GAEHoC,IACA1C,OAAOpC,iBAAiB,UAAU,KAC1BM,IACAA,GAAkB,EAClBX,YAAW,KACPmF,IACAxE,GAAkB,CAAK,GACxB,KACP,GAGR,C,yBCtaA,MAAM6E,EAA0B,oBAAX/C,OAQrB,SAASgD,EAAUC,EAAOC,GACxB,IAAIC,EAAW,EACf,OAAO,YAAYC,GACjB,MAAMC,GAAM,IAAIC,MAAOC,UACvB,KAAIF,EAAMF,EAAWF,GAIrB,OADAE,EAAWE,EACJH,KAAME,EACf,CACF,CAMA,SAASI,EAAQC,GACf,OAAOC,KAAKC,MAAMF,EAAIG,QAAO,CAACC,EAAKC,IAC1BD,EAAMC,GACZ,GAAKL,EAAInE,OACd,CA8aA,MAAMyE,EAAS,IAzaf,MAEEzF,WAAAA,GAGMyE,IAEJtE,KAAKuF,MAAQ,EACbvF,KAAKwF,MAAQ,EACbxF,KAAKyF,UAAYlE,OAAO4C,WACxBnE,KAAK0F,WAAanE,OAAOoE,YACzB3F,KAAK4F,WAAa,EAClB5F,KAAK6F,WAAa,EAClB7F,KAAK8F,YAAcvE,OAAOwE,QAC1B/F,KAAKgG,YAAczE,OAAO0E,QAG1BjG,KAAKkG,UAAY,EACjBlG,KAAKmG,SAAW,EAChBnG,KAAKoG,UAAY,EACjBpG,KAAKqG,UAAY,EACjBrG,KAAKsG,SAAW,EAChBtG,KAAKuG,UAAY,EAEjBvG,KAAKwG,aAAezH,SAASC,KAAKwH,aAElCxG,KAAKyG,cAAe,EACpBzG,KAAK0G,YAAa,EAClB1G,KAAK2G,aAAc,EACnB3G,KAAK4G,gBAAiB,EACtB5G,KAAK6G,mBAAoB,EACzB7G,KAAK8G,wBAAyB,EAE9B9G,KAAK+G,MAAQ,EACb/G,KAAKgH,MAAQ,EACbhH,KAAKiH,UAAY1F,OAAO4C,WACxBnE,KAAKkH,WAAa3F,OAAOoE,YACzB3F,KAAKmH,WAAa,EAClBnH,KAAKoH,WAAa,EAClBpH,KAAKqH,YAAc,EAGnBrH,KAAKsH,qBAAuBtH,KAAKuH,qBAAuBtC,KAAKuC,IAAKjG,OAAOkG,kBAAoB,EAAK,GAGlGzH,KAAK0H,eAAiB,GACtB1H,KAAK2H,eAAiB,GACtB3H,KAAK4H,mBAAqB,EAC1B5H,KAAK6H,mBAAqB,EAG1B7H,KAAK8H,gBAAkB,GACvB9H,KAAK+H,gBAAkB,GACvB/H,KAAKgI,oBAAsB,EAC3BhI,KAAKiI,oBAAsB,EAI3BjI,KAAKkI,UAAW,EAGhBlI,KAAKmI,UAAY,GAGjBnI,KAAK6B,OAAS7B,KAAK6B,OAAOuG,KAAKpI,MAC/BA,KAAKqI,aAAerI,KAAKqI,aAAaD,KAAKpI,MAC3CA,KAAKsI,YAActI,KAAKsI,YAAYF,KAAKpI,MACzCA,KAAKuI,kBAAoBvI,KAAKuI,kBAAkBH,KAAKpI,MACrDA,KAAKwI,uBAAyBxI,KAAKwI,uBAAuBJ,KAAKpI,MAC/DA,KAAKyI,WAAazI,KAAKyI,WAAWL,KAAKpI,MACvCA,KAAK0I,MAAQ1I,KAAK0I,MAAMN,KAAKpI,MAC7BA,KAAK2I,QAAU3I,KAAK2I,QAAQP,KAAKpI,MAGjCA,KAAKqI,aAAe9D,EAAU,IAAKvE,KAAKqI,cACxCrI,KAAKsI,YAAc/D,EAAU,GAAIvE,KAAKsI,aAGtC/G,OAAOpC,iBAAiB,SAAUa,KAAKqI,cACvC9G,OAAOpC,iBAAiB,YAAaa,KAAKsI,aAC1C/G,OAAOpC,iBAAiB,oBAAqBa,KAAKuI,mBAGlD/G,sBAAsBxB,KAAK6B,QAC7B,CAKAwG,YAAAA,CAAajJ,GACXY,KAAKiH,UAAY1F,OAAO4C,WACxBnE,KAAKkH,WAAa3F,OAAOoE,WAC3B,CAKA2C,WAAAA,CAAYlJ,GACVY,KAAKmH,WAAa/H,EAAEwJ,QACpB5I,KAAKoH,WAAahI,EAAEyJ,OACtB,CAKAN,iBAAAA,CAAkBnJ,GAEXY,KAAK8I,eAAgB9I,KAAK8I,aAAe1J,EAAE2J,OAC3C/I,KAAKgJ,cAAehJ,KAAKgJ,YAAc5J,EAAE6J,MACzCjJ,KAAKkJ,eAAgBlJ,KAAKkJ,aAAe9J,EAAE+J,OAEhDnJ,KAAKqG,UAAYjH,EAAE2J,MACnB/I,KAAKsG,SAAWlH,EAAE6J,KAClBjJ,KAAKuG,UAAYnH,EAAE+J,KACrB,CAKAX,sBAAAA,GAEE,MAAMY,EAAc,CAClBlF,KAAM,CACJ6E,MAAO/I,KAAK8I,aACZG,KAAMjJ,KAAKgJ,YACXG,MAAOnJ,KAAKkJ,eAgBhB,OAXAlJ,KAAK8I,aAAe9I,KAAKkG,UACzBlG,KAAKgJ,YAAchJ,KAAKmG,SACxBnG,KAAKkJ,aAAelJ,KAAKoG,UAGzBgD,EAAYC,QAAU,CACpBN,MAAO/I,KAAK8I,aACZG,KAAMjJ,KAAKgJ,YACXG,MAAOnJ,KAAKkJ,cAGPE,CACT,CAKAX,UAAAA,GACE,MAAO,CACLa,OAAQ,CACNC,QAASvJ,KAAKyG,aACd+C,KAAMvE,KAAKC,MAAMlF,KAAKuF,OACtBkE,MAAOxE,KAAKC,MAAMlF,KAAKuF,MAAQvF,KAAKyF,WACpCiE,IAAKzE,KAAKC,MAAMlF,KAAKwF,OACrBmE,OAAQ1E,KAAKC,MAAMlF,KAAKwF,MAAQxF,KAAK0F,YACrCkE,SAAU,CACRhJ,EAAGqE,KAAKC,MAAMlF,KAAK6J,kBAAoB,EACvCC,EAAG7E,KAAKC,MAAMlF,KAAK+J,kBAAoB,IAG3CC,KAAM,CACJT,QAASvJ,KAAK0G,WACd9F,EAAGqE,KAAKC,MAAMlF,KAAKyF,WACnBqE,EAAG7E,KAAKC,MAAMlF,KAAK0F,YACnBuE,KAAMhF,KAAKC,MAAMlF,KAAKwG,eAExB0D,MAAO,CACLX,QAASvJ,KAAK2G,YACd/F,EAAGqE,KAAKC,MAAMlF,KAAK4F,YACnBkE,EAAG7E,KAAKC,MAAMlF,KAAK6F,YACnB+D,SAAU,CACRhJ,EAAGqE,KAAKC,MAAMlF,KAAK4H,qBAAuB,EAC1CkC,EAAG7E,KAAKC,MAAMlF,KAAK6H,qBAAuB,IAG9CsC,SAAU,CACRZ,QAASvJ,KAAK4G,eACd4C,KAAMvE,KAAKC,MAAMlF,KAAK8F,aACtB2D,MAAOxE,KAAKC,MAAMlF,KAAK8F,YAAc9F,KAAKyF,WAC1CiE,IAAKzE,KAAKC,MAAMlF,KAAKgG,aACrB2D,OAAQ1E,KAAKC,MAAMlF,KAAKgG,YAAchG,KAAK0F,YAC3CkE,SAAU,CACRhJ,EAAGqE,KAAKC,MAAMlF,KAAKgI,sBAAwB,EAC3C8B,EAAG7E,KAAKC,MAAMlF,KAAKiI,sBAAwB,IAG/CmC,YAAa,CACXb,QAASvJ,KAAK6G,kBAEdkC,MAAO9D,KAAKC,MAAMlF,KAAKkG,UAAYlG,KAAK8I,eAAiB,EACzDG,KAAMhE,KAAKC,MAAMlF,KAAKmG,SAAWnG,KAAKgJ,cAAgB,EACtDG,MAAOlE,KAAKC,MAAMlF,KAAKoG,UAAYpG,KAAKkJ,eAAiB,GAE3DzB,iBAAkB,CAChB8B,QAASvJ,KAAK8G,uBACduD,MAAOrK,KAAKsH,sBAGlB,CAKAzF,MAAAA,GACE,MAAM,UACJoF,EAAS,WACTC,EAAU,WACVC,EAAU,WACVC,EAAU,UACVf,EAAS,SACTC,EAAQ,UACRC,EAAS,qBACTe,GACEtH,KACJ,GAAIA,KAAKkI,SAAU,OAAO,EAG1BlI,KAAKyG,aAAezG,KAAK0G,WAAa1G,KAAK2G,YAAc3G,KAAK4G,eAAiB5G,KAAK6G,kBAAoB7G,KAAK8G,wBAAyB,EAGlI9G,KAAK8H,gBAAgBjH,OAAS,GAAKb,KAAK8H,gBAAgBwC,QAC5DtK,KAAK8H,gBAAgByC,KAAKhJ,OAAOwE,QAAU/F,KAAK8F,aAG5Cf,EAAQ/E,KAAK8H,kBAAoB9H,KAAKgI,sBACxChI,KAAKgI,oBAAsBjD,EAAQ/E,KAAK8H,iBACxC9H,KAAK4G,gBAAiB,GAIpBrF,OAAOwE,SAAW/F,KAAK8F,cACzB9F,KAAK4G,gBAAiB,EACtB5G,KAAK8F,YAAcvE,OAAOwE,SAIxB/F,KAAK+H,gBAAgBlH,OAAS,GAAKb,KAAK+H,gBAAgBuC,QAC5DtK,KAAK+H,gBAAgBwC,KAAKhJ,OAAO0E,QAAUjG,KAAKgG,aAG5CjB,EAAQ/E,KAAK+H,kBAAoB/H,KAAKiI,sBACxCjI,KAAKiI,oBAAsBlD,EAAQ/E,KAAK+H,iBACxC/H,KAAK4G,gBAAiB,GAIpBrF,OAAO0E,SAAWjG,KAAKgG,cACzBhG,KAAK4G,gBAAiB,EACtB5G,KAAKgG,YAAczE,OAAO0E,SAKxB1E,OAAOiJ,aAAexK,KAAKuF,OAAiC,GAAxBvF,KAAK6J,kBAC3C7J,KAAK6J,gBAAkB,EACvB7J,KAAKyG,cAAe,GAIlBlF,OAAOkJ,aAAezK,KAAKwF,OAAiC,GAAxBxF,KAAK+J,kBAC3C/J,KAAK+J,gBAAkB,EACvB/J,KAAKyG,cAAe,GAIlBlF,OAAOiJ,aAAexK,KAAKuF,QAC7BvF,KAAKyG,cAAe,EACpBzG,KAAK6J,gBAAkB5E,KAAKC,MAAM3D,OAAOiJ,YAAcxK,KAAKuF,OAC5DvF,KAAKuF,MAAQhE,OAAOiJ,aAIlBjJ,OAAOkJ,aAAezK,KAAKwF,QAC7BxF,KAAKyG,cAAe,EACpBzG,KAAK+J,gBAAkB9E,KAAKC,MAAM3D,OAAOkJ,YAAczK,KAAKwF,OAC5DxF,KAAKwF,MAAQjE,OAAOkJ,aAIlBxD,GAAajH,KAAKyF,YACpBzF,KAAKyF,UAAYwB,EACjBjH,KAAKwG,aAAezH,SAASC,KAAKwH,aAClCxG,KAAK0G,YAAa,GAIhBQ,GAAclH,KAAK0F,aACrB1F,KAAK0F,WAAawB,EAClBlH,KAAK0G,YAAa,GAKhB1G,KAAK0H,eAAe7G,OAAS,GAAKb,KAAK0H,eAAe4C,QAC1DtK,KAAK0H,eAAe6C,KAAKpD,EAAanH,KAAK4F,YAGvCb,EAAQ/E,KAAK0H,iBAAmB1H,KAAK4H,qBACvC5H,KAAK4H,mBAAqB7C,EAAQ/E,KAAK0H,gBACvC1H,KAAK2G,aAAc,GAIjBQ,GAAcnH,KAAK4F,aACrB5F,KAAK4F,WAAauB,EAClBnH,KAAK2G,aAAc,GAIjB3G,KAAK2H,eAAe9G,OAAS,GAAKb,KAAK2H,eAAe2C,QAC1DtK,KAAK2H,eAAe4C,KAAKnD,EAAapH,KAAK6F,YAGvCd,EAAQ/E,KAAK2H,iBAAmB3H,KAAK6H,qBACvC7H,KAAK6H,mBAAqB9C,EAAQ/E,KAAK2H,gBACvC3H,KAAK2G,aAAc,GAIjBS,GAAcpH,KAAK6F,YAA8C,GAAhCd,EAAQ/E,KAAK2H,kBAChD3H,KAAK6F,WAAauB,EAClBpH,KAAK2G,aAAc,GAIjBN,GAAarG,KAAKkG,YACpBlG,KAAKkG,UAAYG,EACjBrG,KAAK6G,mBAAoB,GAGvBP,GAAYtG,KAAKmG,WACnBnG,KAAKmG,SAAWG,EAChBtG,KAAK6G,mBAAoB,GAGvBN,GAAavG,KAAKoG,YACpBpG,KAAKoG,UAAYG,EACjBvG,KAAK6G,mBAAoB,IAItB7G,KAAK4G,gBAAkB5G,KAAK0G,cAE/B1G,KAAKsH,qBAAuBrC,KAAKuC,IAAKjG,OAAOkG,kBAAoB,EAAG,GAE/DzH,KAAKsH,uBAAyBtH,KAAKuH,uBAEtCvH,KAAK8G,wBAAyB,EAC9B9G,KAAKuH,qBAAuBvH,KAAKsH,wBAMnCtH,KAAKyG,cACLzG,KAAK0G,YACL1G,KAAK2G,aACL3G,KAAK4G,gBACL5G,KAAK6G,mBACL7G,KAAK8G,yBAGL9G,KAAKmI,UAAUzH,SAAQgK,GAAMA,EAAG1K,KAAKyI,gBAIvCzI,KAAKkI,UAAW,EAChB1G,sBAAsBxB,KAAK6B,OAC7B,CAQA6G,KAAAA,CAAMiC,EAAUC,GAAc,GAC5B,GAAwB,mBAAbD,EACT,MAAM,IAAIE,MAAM,2CAIlB,IAAIvG,EAAJ,CAEA,GAAIsG,EAAa,CAEf,MAAME,EAAe9K,KAAKyI,aAI1BqC,EAAaxB,OAAOC,SAAU,EAC9BuB,EAAaZ,MAAMX,SAAU,EAC7BuB,EAAad,KAAKT,SAAU,EAC5BuB,EAAaX,SAASZ,SAAU,EAChCuB,EAAaV,YAAYb,SAAU,EACnCuB,EAAarD,iBAAiB8B,SAAU,EAGxCoB,EAASG,EACX,CAGA9K,KAAKmI,UAAUoC,KAAKI,EApBH,CAqBnB,CAMAhC,OAAAA,CAAQgC,GACN,GAAwB,mBAAbA,EACT,MAAM,IAAIE,MAAM,iDAIdvG,IAGJtE,KAAKmI,UAAYnI,KAAKmI,UAAU4C,QAAOL,GAAMA,IAAOC,IACtD,GAQGrG,IAEH/C,OAAOyJ,SAAW,CAChBC,cAAe3F,EAAOoD,MACtBwC,gBAAiB5F,EAAOqD,QACxBwC,iBAAkB7F,EAAOmD,WACzBD,uBAAwBlD,EAAOkD,yBAK5B,MAAMyC,EAAgB3F,EAAOoD,MACLpD,EAAOqD,QACNrD,EAAOmD,WACDnD,EAAOkD,uB,0BCvdtC,MAAM4C,EAAe,CACxB3M,QAAQ,GAGZ,MAAM4M,EAEFxL,WAAAA,CAAYyL,EAASxL,EAASyL,EAAUC,GACpCxL,KAAKsL,QAAUA,EACftL,KAAKF,QAAUA,EACfE,KAAK6C,MAAQ7C,KAAKF,QAAQP,cAAc,mCACxCS,KAAKuL,SAAWA,EAChBvL,KAAKwL,YAAcA,EACnBxL,KAAKvB,QAAS,EAEduB,KAAKF,QAAQ2L,gBAAgB,UAE7BzL,KAAKsL,QAAQI,QAAU,KACf1L,KAAKvB,QAAQuB,KAAKoB,MAAM,EAEhCpB,KAAKuL,SAASG,QAAU,KACjB1L,KAAKvB,QAAQuB,KAAK4B,MAAM,EAG/B5B,KAAKF,QAAQX,iBAAiB,WAAYC,IACtC,GAES,WAFDA,EAAEC,IAGCW,KAAKvB,SACJW,EAAEyE,iBACF7D,KAAK4B,MAAK,GAGtB,IAGJ5B,KAAKuL,SAASpM,iBAAiB,WAAYC,IACvC,GAES,QAFDA,EAAEC,IAGCW,KAAKvB,SACJW,EAAEyE,iBACF7D,KAAKwL,YAAYrJ,QAG7B,GAER,CAEAf,IAAAA,GACIpB,KAAKF,QAAQ2B,gBAAkB,KAC/BzB,KAAKF,QAAQuB,aAAa,eAAe,GACzCrB,KAAKsL,QAAQjK,aAAa,iBAAiB,GAC3CrB,KAAKvB,QAAS,EACd2M,EAAa3M,QAAS,EACtB8C,OAAOC,uBAAsB,KACzBxB,KAAKF,QAAQb,UAAUqC,IAAI,uBAC3BtB,KAAKwL,YAAYrJ,OAAO,GAEhC,CAEAP,IAAAA,CAAK+J,GAAU,GACX3L,KAAKsL,QAAQjK,aAAa,iBAAiB,GAC3CrB,KAAKvB,QAAS,EACd2M,EAAa3M,QAAS,EACtBuB,KAAKF,QAAQb,UAAU0C,OAAO,uBAC9B3B,KAAKF,QAAQ2B,gBAAmBrC,IACzBA,EAAE8D,QAAUlD,KAAKF,SAASE,KAAK0B,cAAciK,EAAQ,CAEhE,CAEAjK,aAAAA,CAAciK,GAAU,GACpB3L,KAAKF,QAAQuB,aAAa,eAAe,GACzCrB,KAAKF,QAAQ2B,gBAAkB,KAC5BkK,GAAS3L,KAAKsL,QAAQnJ,OAC7B,EAGJ,MAAMyJ,EAAwB7M,SAASQ,cAAc,4BACjDsM,EAAsB9M,SAASQ,cAAc,kBAC7CuM,EAAuB/M,SAASQ,cAAc,6BAC9CwM,EAA4C,OAAxBF,EAA+BA,EAAoBtM,cAAc,wBAA0B,KAEvF,MAAzBqM,GAAwD,MAAvBC,GAAuD,MAAxBC,GAAqD,MAArBC,GAC/F,IAAIV,EAAmBO,EAAuBC,EAAqBC,EAAsBC,GCpF7F,MAAMC,EAAiBzK,OAAOyK,gBAAkBC,EAAAA,GAKhD,IAMI5I,EANA6I,EAAQnN,SAASQ,cAAc,oBAE/B4M,GAAe,EAEfC,EAAa,EACbC,EAAc,EAGlB,MAAMC,EAAkB,IAAIC,MAAM,cAC9BC,EAAkB,IAAID,MAAM,cAI1BE,EAAgB7N,IACdA,GAAQuN,GACRD,EAAMjN,UAAU0C,OAAO,iBACvBwK,GAAe,EACf5K,OAAOmL,cAAcF,IACb5N,GAASuN,IACjBD,EAAMjN,UAAUqC,IAAI,iBACpB6K,GAAe,EACf5K,OAAOmL,cAAcJ,GACzB,EAwBJrB,GApBqB0B,EAAGrD,SAAQU,YACxBA,EAAKT,SAAWD,EAAOC,WAEvB2C,EAAMjN,UAAUC,OAAO,gBAAiBoK,EAAOI,IAAM,GAErDwC,EAAMjN,UAAUC,OAAO,iBAAkBoK,EAAOI,IAAM,IAElDJ,EAAOI,IAAO2C,EAhCb,IAgCsC/C,EAAOI,IA9B1C,KA8B8DhK,EAAAA,iBAAiBjB,SAAWkB,EAAAA,kBAAkBlB,SAAW2M,EAAa3M,QACxII,aAAawE,GACbA,EAAIvE,WAAW2N,GAAa,GAAQ,KACpCJ,EAAc/C,EAAOI,KACdJ,EAAOK,OAASyC,IAAe9C,EAAOI,IAAO2C,EApCnD,IAoC4E/C,EAAOI,KAlChF,MAmCJ7K,aAAawE,GACbA,EAAIvE,WAAW2N,GAAa,GAAO,KACnCJ,EAAc/C,EAAOI,KAE7B,IAOO,IAAIsC,GAAe,KAC1BI,EAAaF,EAAMjJ,YAAY,IAEhC2J,QAAQV,E","sources":["webpack://Sports Governance/./wwwroot/app/src/js/keyboard-accessibility-check.js","webpack://Sports Governance/./wwwroot/app/src/js/main-navigation.js","webpack://Sports Governance/./node_modules/tornis/src/tornis.js","webpack://Sports Governance/./wwwroot/app/src/js/header-search.js","webpack://Sports Governance/./wwwroot/app/src/js/scrolling.js"],"sourcesContent":["// keyboard control detection\r\n\r\nexport const keyboardControl = {\r\n active: false\r\n}\r\n\r\nlet accessibilityTimeout = null;\r\nconst toggleAccessibilityClass = (mode) => {\r\n clearTimeout(accessibilityTimeout);\r\n accessibilityTimeout = setTimeout(() => {\r\n document.body.classList.toggle('keyboard-control', mode);\r\n keyboardControl.active = mode;\r\n }, 100);\r\n}\r\ndocument.body.addEventListener('keydown', function(e) {\r\n switch (e.key) {\r\n case 'Escape':\r\n case 'Up':\r\n case 'ArrowUp':\r\n case 'Down':\r\n case 'ArrowDown':\r\n case 'Left':\r\n case 'ArrowLeft':\r\n case 'Tab':\r\n case 'Right':\r\n case 'ArrowRight':\r\n case 'PageUp':\r\n case 'PageDown':\r\n case 'Spacebar':\r\n case ' ':\r\n case 'Enter':\r\n case 'Return':\r\n toggleAccessibilityClass(true);\r\n break;\r\n }\r\n});\r\ndocument.body.addEventListener('mousedown', function() {\r\n toggleAccessibilityClass(false);\r\n});\r\ndocument.body.addEventListener('touchstart', function() {\r\n toggleAccessibilityClass(false);\r\n});","// *****************************\r\n// ***** Main Navigation *****\r\n// *****************************\r\nimport { breakPoint } from './config';\r\nimport { keyboardControl } from './keyboard-accessibility-check';\r\n\r\nconst $html = document.querySelector('html');\r\nlet isMobile = true,\r\n resizeRequested = false;\r\n\r\nexport const mobileNavigation = {\r\n active: false\r\n}\r\nexport const desktopNavigation = {\r\n active: false\r\n}\r\n\r\nclass menu {\r\n constructor(wrapper, toggleButton) {\r\n this.wrapper = wrapper;\r\n this.navContent = wrapper.querySelector('nav');\r\n this.mobileToggle = toggleButton;\r\n this.expanded = false;\r\n this.hideTimeout = null;\r\n this.hideDelay = 500;\r\n this.activeItemIndex = -1;\r\n this.activeSubmenuItemIndex = -1;\r\n this.items = [];\r\n [...this.wrapper.querySelectorAll('nav > ul > li')].forEach(i => {\r\n let x = this.items.length;\r\n this.items[x] = new menuItem(x, i, 1);\r\n });\r\n // is there search functionality inside menu wrapper?\r\n this.search = {\r\n inputField : null,\r\n submitButton : null,\r\n form : this.wrapper.querySelector('.header--search')\r\n }\r\n this.hasSearch = this.search.form != null;\r\n if(this.hasSearch) {\r\n this.search.inputField = this.search.form.querySelector('input[type=\"search\"]');\r\n this.search.submitButton = this.search.form.querySelector('button[type=\"submit\"]');\r\n }\r\n }\r\n show() {\r\n this.expanded = true;\r\n this.wrapper.setAttribute('aria-hidden', false);\r\n if(isMobile) {\r\n this.mobileToggle.setAttribute('aria-expanded', true);\r\n $html.classList.add('mobile-menu-fading');\r\n mobileNavigation.active = true;\r\n window.requestAnimationFrame(() => {\r\n $html.classList.add('mobile-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.transitionEnd(true);\r\n };\r\n });\r\n } else {\r\n mobileNavigation.active = false;\r\n window.requestAnimationFrame(() => {\r\n $html.classList.remove('mobile-menu-active');\r\n });\r\n }\r\n }\r\n hide() {\r\n if(mobileNavigation.active) {\r\n this.expanded = false;\r\n mobileNavigation.active = false;\r\n this.mobileToggle.setAttribute('aria-expanded', false);\r\n $html.classList.add('mobile-menu-fading');\r\n $html.classList.remove('mobile-menu-active');\r\n this.wrapper.ontransitionend = () => {\r\n this.transitionEnd(false);\r\n };\r\n } else {\r\n this.expanded = false;\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n }\r\n }\r\n transitionEnd(mode) {\r\n if(!mode) {\r\n // menu has hidden\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n }\r\n $html.classList.remove('mobile-menu-fading');\r\n this.wrapper.ontransitionend = null;\r\n }\r\n update(setFocus = false, itemIndex = -1, submenuItemIndex = -1) {\r\n if (itemIndex > -1 && submenuItemIndex > -1) {\r\n\r\n // FOCUS TARGET IS SUBMENU MENU ITEM\r\n\r\n if (isMobile && !this.expanded) this.show();\r\n // close old submenu without animation?\r\n if (this.activeItemIndex > -1 && this.activeSubmenuItemIndex > -1 && itemIndex != this.activeItemIndex && this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(false);\r\n // open new submenu\r\n if (!this.items[itemIndex].submenu.expanded) this.items[itemIndex].submenu.show(this.activeSubmenuItemIndex == -1);\r\n // focus on item\r\n if (keyboardControl.active && setFocus) {\r\n if (this.items[itemIndex].submenu.items[submenuItemIndex].hasSubmenu) {\r\n this.items[itemIndex].submenu.items[submenuItemIndex].submenu.toggle.focus();\r\n } else {\r\n this.items[itemIndex].submenu.items[submenuItemIndex].link.focus();\r\n }\r\n }\r\n\r\n } else if (itemIndex > -1) {\r\n\r\n // FOCUS TARGET IS TOP-LEVEL MENU ITEM\r\n\r\n if (isMobile && !this.expanded) this.show();\r\n // close old submenu with animation?\r\n if (this.activeItemIndex > -1 && this.items[this.activeItemIndex].hasSubmenu) {\r\n if (this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(true);\r\n }\r\n // focus on item\r\n if (keyboardControl.active && setFocus) {\r\n if (this.items[itemIndex].hasSubmenu) {\r\n this.items[itemIndex].submenu.toggle.focus();\r\n } else {\r\n this.items[itemIndex].link.focus();\r\n }\r\n }\r\n\r\n } else {\r\n if (this.activeItemIndex > -1 && this.activeSubmenuItemIndex > -1 && this.items[this.activeItemIndex].submenu.expanded) this.items[this.activeItemIndex].submenu.hide(!isMobile);\r\n if (isMobile && this.expanded) {\r\n this.hide();\r\n if (keyboardControl.active && setFocus) this.mobileToggle.focus();\r\n }\r\n }\r\n // update tabIndex setting\r\n if (this.activeItemIndex != itemIndex) {\r\n if (this.activeItemIndex > -1) {\r\n if (this.items[this.activeItemIndex].hasSubmenu) {\r\n this.items[this.activeItemIndex].submenu.toggle.setAttribute('tabindex', '-1');\r\n } else {\r\n this.items[this.activeItemIndex].link.setAttribute('tabindex', '-1');\r\n }\r\n }\r\n let nextTabIndex = itemIndex;\r\n if (!isMobile && nextTabIndex == -1) nextTabIndex = 0;\r\n if (nextTabIndex > -1) {\r\n if (this.items[nextTabIndex].hasSubmenu) {\r\n this.items[nextTabIndex].submenu.toggle.setAttribute('tabindex', '0');\r\n } else {\r\n this.items[nextTabIndex].link.setAttribute('tabindex', '0');\r\n }\r\n }\r\n }\r\n // store new values\r\n this.activeItemIndex = itemIndex;\r\n this.activeSubmenuItemIndex = submenuItemIndex;\r\n }\r\n}\r\n\r\nclass menuItem {\r\n constructor(itemIndex, obj, level) {\r\n this.level = level;\r\n this.index = itemIndex;\r\n this.li = obj;\r\n let button = obj.querySelector('button.submenu--toggle');\r\n let sub = obj.querySelector('div.submenu');\r\n if (button && sub) {\r\n this.hasSubmenu = true;\r\n this.submenu = new subMenu(sub, button, level);\r\n } else {\r\n this.hasSubmenu = false;\r\n this.link = obj.querySelector('a');\r\n }\r\n }\r\n}\r\n\r\nclass subMenu {\r\n constructor(sub, button, level) {\r\n this.expanded = false;\r\n this.toggle = button;\r\n this.wrapper = sub;\r\n this.level = level;\r\n this.inner = this.wrapper.querySelector('ul.submenu--items');\r\n this.items = [];\r\n [...this.wrapper.querySelectorAll('ul.submenu--items > li')].forEach(i => {\r\n let x = this.items.length;\r\n this.items[x] = new menuItem(x, i, (level + 1));\r\n });\r\n }\r\n show(animate) {\r\n this.expanded = true;\r\n if (this.level > 1 || isMobile) {\r\n this.wrapper.style.maxHeight = this.inner.offsetHeight + 'px';\r\n }\r\n if (animate) {\r\n this.wrapper.classList.add('animate');\r\n this.wrapper.ontransitionend = (e) => {\r\n if(e.target == this.wrapper) {\r\n this.wrapper.classList.remove('animate');\r\n if (this.level > 1 || isMobile) {\r\n this.wrapper.style.maxHeight = 'none';\r\n this.wrapper.ontransitionend = null;\r\n }\r\n }\r\n };\r\n } else {\r\n this.wrapper.style.maxHeight = 'none';\r\n }\r\n this.wrapper.setAttribute('aria-hidden', false);\r\n this.toggle.setAttribute('aria-expanded', true);\r\n }\r\n hide(animate) {\r\n this.expanded = false;\r\n if (this.level > 1 || isMobile) {\r\n this.wrapper.style.maxHeight = this.inner.offsetHeight + 'px';\r\n window.requestAnimationFrame(() => {\r\n this.wrapper.style.maxHeight = 0;\r\n });\r\n }\r\n if (animate) {\r\n this.wrapper.classList.add('animate');\r\n this.wrapper.ontransitionend = (e) => {\r\n if(e.target == this.wrapper) this.wrapper.classList.remove('animate');\r\n };\r\n }\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.toggle.setAttribute('aria-expanded', false);\r\n }\r\n}\r\n\r\n// create instance of menu\r\n\r\nif(document.querySelector('.header--content--menu') != null) {\r\n const m = new menu(document.querySelector('.header--content--menu'), document.querySelector('.header--content--menu-toggle button'));\r\n\r\n\r\n // mobile 'whole menu toggle' functionality\r\n\r\n m.mobileToggle.addEventListener('click', () => {\r\n if (isMobile) {\r\n if (m.expanded) {\r\n // close\r\n m.update(true);\r\n } else {\r\n // open\r\n m.update(true, 0);\r\n }\r\n }\r\n });\r\n\r\n // close menu if user focus moves outside\r\n\r\n const bodyClickTouch = (t) => {\r\n if (!isMobile && m.activeSubmenuItemIndex > -1) {\r\n let inMenu = false;\r\n while (t != document.body) {\r\n if (t == m.wrapper) {\r\n inMenu = true;\r\n break\r\n }\r\n t = t.parentNode;\r\n }\r\n if (!inMenu) {\r\n m.update();\r\n }\r\n }\r\n }\r\n document.body.addEventListener('click', (e) => {\r\n bodyClickTouch(e.target);\r\n });\r\n\r\n // add menu item listeners\r\n\r\n for (let x = 0, l = m.items.length; x < l; x++) {\r\n let o = m.items[x];\r\n if (o.hasSubmenu) {\r\n\r\n o.submenu.toggle.addEventListener('click', () => {\r\n if (o.submenu.expanded) {\r\n m.update(true, o.index);\r\n } else {\r\n m.update(true, o.index, 0);\r\n }\r\n });\r\n\r\n o.submenu.toggle.addEventListener('focus', () => {\r\n if (m.expanded && m.activeItemIndex != o.index) {\r\n m.update(true, o.index);\r\n }\r\n });\r\n\r\n // add submenu expander listeners if required\r\n\r\n for (let xx = 0, ll = o.submenu.items.length; xx < ll; xx++) {\r\n let oo = o.submenu.items[xx];\r\n if (oo.hasSubmenu) {\r\n oo.submenu.toggle.addEventListener('click', () => {\r\n m.update(true, o.index, oo.index);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n // add keyboard accessibility\r\n m.wrapper.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // ESCAPE jumps out a level\r\n case 'Escape':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n m.update(true, m.activeItemIndex);\r\n } else {\r\n m.update(true);\r\n }\r\n break;\r\n // DOWN / RIGHT to move through items at current level\r\n case 'Down':\r\n case 'ArrowDown':\r\n case 'Right':\r\n case 'ArrowRight':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n let next = m.activeSubmenuItemIndex + 1,\r\n list = m.items[m.activeItemIndex].submenu.items;\r\n if (next >= list.length) next = 0;\r\n m.update(true, m.activeItemIndex, next);\r\n } else {\r\n let next = m.activeItemIndex + 1,\r\n list = m.items;\r\n if (next >= list.length) next = 0;\r\n m.update(true, next);\r\n }\r\n break;\r\n // UP / LEFT to move backwards through items at current level\r\n case 'Up':\r\n case 'ArrowUp':\r\n case 'Left':\r\n case 'ArrowLeft':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n let next = m.activeSubmenuItemIndex - 1,\r\n list = m.items[m.activeItemIndex].submenu.items;\r\n if (next < 0) next = list.length - 1;\r\n m.update(true, m.activeItemIndex, next);\r\n } else {\r\n let next = m.activeItemIndex - 1,\r\n list = m.items;\r\n if (next < 0) next = list.length - 1;\r\n m.update(true, next);\r\n }\r\n break;\r\n // TAB close menu (if open) and move to next tab element\r\n case 'Tab':\r\n if(isMobile) {\r\n if (!m.hasSearch && m.activeItemIndex > -1) {\r\n m.hide();\r\n }\r\n } else {\r\n m.update();\r\n }\r\n break;\r\n // SPACE/ENTER/RETURN to click a item\r\n case 'Spacebar':\r\n case ' ':\r\n case 'Enter':\r\n case 'Return':\r\n e.preventDefault();\r\n if (m.activeSubmenuItemIndex > -1) {\r\n if (m.items[m.activeItemIndex].submenu.items[m.activeSubmenuItemIndex].hasSubmenu) {\r\n m.items[m.activeItemIndex].submenu.items[m.activeSubmenuItemIndex].submenu.toggle.click();\r\n } else {\r\n m.items[m.activeItemIndex].submenu.items[m.activeSubmenuItemIndex].link.click();\r\n }\r\n } else {\r\n if (m.items[m.activeItemIndex].hasSubmenu) {\r\n m.items[m.activeItemIndex].submenu.toggle.click();\r\n } else {\r\n m.items[m.activeItemIndex].link.click();\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n\r\n // define and trigger resize check\r\n\r\n const resize = () => {\r\n let prev = isMobile;\r\n isMobile = window.innerWidth < breakPoint.LG;\r\n if (isMobile && !prev) {\r\n // switch from desktop to mobile (and hide menu)\r\n m.update();\r\n // reset max-heights\r\n for (let x = 0, l = m.items.length; x < l; x++) {\r\n if (m.items[x].hasSubmenu) m.items[x].submenu.wrapper.style.maxHeight = m.items[x].expanded ? 'none' : '0px';\r\n }\r\n } else if (!isMobile && prev) {\r\n // switch from mobile to desktop\r\n if (!m.expanded) m.show();\r\n mobileNavigation.active = false;\r\n $html.classList.remove('mobile-menu-active');\r\n // reset max-heights\r\n for (let x = 0, l = m.items.length; x < l; x++) {\r\n if (m.items[x].hasSubmenu) m.items[x].submenu.wrapper.style.maxHeight = 'none';\r\n }\r\n }\r\n };\r\n\r\n // handle 'headerHide' events if necessary\r\n window.addEventListener('headerHide', () => {\r\n // if in desktop mode, hide any open dropdown menus\r\n if (!isMobile) m.update();\r\n }, false);\r\n\r\n resize();\r\n window.addEventListener('resize', () => {\r\n if(!resizeRequested) {\r\n resizeRequested = true;\r\n setTimeout(() => {\r\n resize();\r\n resizeRequested = false;\r\n }, 200);\r\n }\r\n });\r\n\r\n}\r\n","// Check if the module is initialised during server-side rendering\nconst isSSR = typeof window === 'undefined';\n\n/**\n * Simple throttling helper that limits a \n * function to only run once every {delay}ms\n * @param {Number} delay The delay in ms\n * @param {Function} fn the function to throttle\n */\nfunction throttled(delay, fn) {\n let lastCall = 0;\n return function(...args) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n return fn(...args);\n };\n}\n\n/**\n * Calculates the mean value in an array\n * @param {Array} arr The array to average\n */\nfunction getMean(arr) {\n return Math.floor(arr.reduce((acc, curr) => {\n return acc + curr;\n }, 0) / arr.length);\n}\n\n/**\n * Main Tornis singleton class\n */\nclass Tornis {\n // set a whole load of initial values\n constructor() {\n\n // Exit out if this is running server-side\n if (isSSR) return;\n\n this.lastX = 0;\n this.lastY = 0;\n this.lastWidth = window.innerWidth;\n this.lastHeight = window.innerHeight;\n this.lastMouseX = 0;\n this.lastMouseY = 0;\n this.lastWindowX = window.screenX;\n this.lastWindowY = window.screenY;\n\n // device orientation\n this.lastAlpha = 0;\n this.lastBeta = 0;\n this.lastGamma = 0;\n this.currAlpha = 0;\n this.currBeta = 0;\n this.currGamma = 0;\n\n this.scrollHeight = document.body.scrollHeight;\n\n this.scrollChange = false;\n this.sizeChange = false;\n this.mouseChange = false;\n this.positionChange = false;\n this.orientationChange = false;\n this.devicePixelRatioChange = false;\n\n this.currX = 0;\n this.currY = 0;\n this.currWidth = window.innerWidth;\n this.currHeight = window.innerHeight;\n this.currMouseX = 0;\n this.currMouseY = 0;\n this.currWindowX = 0;\n \n // device pixel ratio (where able)\n this.currDevicePixelRatio = this.lastDevicePixelRatio = Math.max( window.devicePixelRatio || 1.0, 1.0 );\n \n // initialise array buffers for mouse velocity\n this.mouseXVelocity = [];\n this.mouseYVelocity = [];\n this.lastMouseXVelocity = 0;\n this.lastMouseYVelocity = 0;\n\n // initialise array buffers for window velocity\n this.windowXVelocity = [];\n this.windowYVelocity = [];\n this.lastWindowXVelocity = 0;\n this.lastWindowYVelocity = 0;\n\n\n // flag to limit rAF renders\n this.updating = false;\n\n // initialise the watched function queue\n this.callbacks = [];\n\n // bind this to ease class methods\n this.update = this.update.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouse = this.handleMouse.bind(this);\n this.handleOrientation = this.handleOrientation.bind(this);\n this.recalibrateOrientation = this.recalibrateOrientation.bind(this);\n this.formatData = this.formatData.bind(this);\n this.watch = this.watch.bind(this);\n this.unwatch = this.unwatch.bind(this);\n\n // throttled event handlers\n this.handleResize = throttled(110, this.handleResize); // resize is brutal, so throttle it more\n this.handleMouse = throttled(75, this.handleMouse);\n\n // bind event handlers to the window\n window.addEventListener('resize', this.handleResize);\n window.addEventListener('mousemove', this.handleMouse);\n window.addEventListener('deviceorientation', this.handleOrientation);\n\n // begin the update loop\n requestAnimationFrame(this.update);\n }\n\n /**\n * Event handler to capture screen size\n */\n handleResize(e) {\n this.currWidth = window.innerWidth;\n this.currHeight = window.innerHeight;\n }\n\n /**\n * Event handler to capture mouse position\n */\n handleMouse(e) {\n this.currMouseX = e.clientX;\n this.currMouseY = e.clientY;\n }\n\n /**\n * Event handler to capture device orientation\n */\n handleOrientation(e) {\n // cache initial position for calibration\n if (!this.initialAlpha) { this.initialAlpha = e.alpha; }\n if (!this.initialBeta) { this.initialBeta = e.beta; }\n if (!this.initialGamma) { this.initialGamma = e.gamma; }\n \n this.currAlpha = e.alpha;\n this.currBeta = e.beta;\n this.currGamma = e.gamma;\n }\n\n /** \n * Allow initial orientation to be reset to the last recorded values\n */\n recalibrateOrientation() {\n // cache the old values\n const calibration = {\n prev: {\n alpha: this.initialAlpha,\n beta: this.initialBeta,\n gamma: this.initialGamma,\n }\n };\n\n // reset the values to the last recorded position\n this.initialAlpha = this.lastAlpha;\n this.initialBeta = this.lastBeta;\n this.initialGamma = this.lastGamma;\n \n // add the new values to the cached calibration data\n calibration.current = {\n alpha: this.initialAlpha,\n beta: this.initialBeta,\n gamma: this.initialGamma,\n };\n\n return calibration;\n }\n\n /**\n * Returns a copy of the store data, formatted for public use\n */\n formatData() {\n return {\n scroll: {\n changed: this.scrollChange,\n left: Math.floor(this.lastX),\n right: Math.floor(this.lastX + this.lastWidth),\n top: Math.floor(this.lastY),\n bottom: Math.floor(this.lastY + this.lastHeight),\n velocity: {\n x: Math.floor(this.scrollXVelocity) || 0,\n y: Math.floor(this.scrollYVelocity) || 0\n }\n },\n size: {\n changed: this.sizeChange,\n x: Math.floor(this.lastWidth),\n y: Math.floor(this.lastHeight),\n docY: Math.floor(this.scrollHeight)\n },\n mouse: {\n changed: this.mouseChange,\n x: Math.floor(this.lastMouseX),\n y: Math.floor(this.lastMouseY),\n velocity: {\n x: Math.floor(this.lastMouseXVelocity) || 0,\n y: Math.floor(this.lastMouseYVelocity) || 0\n }\n },\n position: {\n changed: this.positionChange,\n left: Math.floor(this.lastWindowX),\n right: Math.floor(this.lastWindowX + this.lastWidth),\n top: Math.floor(this.lastWindowY),\n bottom: Math.floor(this.lastWindowY + this.lastHeight),\n velocity: {\n x: Math.floor(this.lastWindowXVelocity) || 0,\n y: Math.floor(this.lastWindowYVelocity) || 0\n }\n },\n orientation: {\n changed: this.orientationChange,\n // These values are relative to the first calibrated value\n alpha: Math.floor(this.lastAlpha - this.initialAlpha) || 0,\n beta: Math.floor(this.lastBeta - this.initialBeta) || 0,\n gamma: Math.floor(this.lastGamma - this.initialGamma) || 0\n },\n devicePixelRatio: {\n changed: this.devicePixelRatioChange,\n ratio: this.currDevicePixelRatio\n }\n };\n }\n\n /**\n * Update function to be looped by requestAnimationFrame\n */\n update() {\n const {\n currWidth,\n currHeight,\n currMouseX,\n currMouseY,\n currAlpha,\n currBeta,\n currGamma,\n currDevicePixelRatio\n } = this;\n if (this.updating) return false;\n\n // reset the flags\n this.scrollChange = this.sizeChange = this.mouseChange = this.positionChange = this.orientationChange = this.devicePixelRatioChange = false;\n\n // we need to grab a buffer of the last five values and average them\n if (this.windowXVelocity.length > 5) { this.windowXVelocity.shift(); }\n this.windowXVelocity.push(window.screenX - this.lastWindowX);\n\n // see if the average velocity changed\n if (getMean(this.windowXVelocity) != this.lastWindowXVelocity) {\n this.lastWindowXVelocity = getMean(this.windowXVelocity);\n this.positionChange = true;\n }\n\n // check window X position\n if (window.screenX != this.lastWindowX) {\n this.positionChange = true;\n this.lastWindowX = window.screenX;\n }\n\n // we need to grab a buffer of the last five values and average them\n if (this.windowYVelocity.length > 5) { this.windowYVelocity.shift(); }\n this.windowYVelocity.push(window.screenY - this.lastWindowY);\n\n // see if the average velocity changed\n if (getMean(this.windowYVelocity) != this.lastWindowYVelocity) {\n this.lastWindowYVelocity = getMean(this.windowYVelocity);\n this.positionChange = true;\n }\n\n // check window Y position\n if (window.screenY != this.lastWindowY) {\n this.positionChange = true;\n this.lastWindowY = window.screenY;\n }\n \n\n // reset scroll X velocity\n if (window.pageXOffset == this.lastX && this.scrollXVelocity != 0) {\n this.scrollXVelocity = 0;\n this.scrollChange = true;\n }\n\n // reset scroll Y velocity\n if (window.pageYOffset == this.lastY && this.scrollYVelocity != 0) {\n this.scrollYVelocity = 0;\n this.scrollChange = true;\n }\n \n // check scroll X\n if (window.pageXOffset != this.lastX) {\n this.scrollChange = true;\n this.scrollXVelocity = Math.floor(window.pageXOffset - this.lastX);\n this.lastX = window.pageXOffset;\n }\n \n // check scroll Y\n if (window.pageYOffset != this.lastY) {\n this.scrollChange = true;\n this.scrollYVelocity = Math.floor(window.pageYOffset - this.lastY);\n this.lastY = window.pageYOffset;\n }\n\n // check width\n if (currWidth != this.lastWidth) {\n this.lastWidth = currWidth;\n this.scrollHeight = document.body.scrollHeight;\n this.sizeChange = true;\n }\n\n // check height\n if (currHeight != this.lastHeight) {\n this.lastHeight = currHeight;\n this.sizeChange = true;\n }\n\n // Mouse input is throttled so in order to capture the velocity\n // we need to grab a buffer of the last five values and average them\n if (this.mouseXVelocity.length > 5) { this.mouseXVelocity.shift(); }\n this.mouseXVelocity.push(currMouseX - this.lastMouseX);\n\n // see if the average velocity changed\n if (getMean(this.mouseXVelocity) != this.lastMouseXVelocity) {\n this.lastMouseXVelocity = getMean(this.mouseXVelocity);\n this.mouseChange = true;\n }\n \n // check mouse X\n if (currMouseX != this.lastMouseX) {\n this.lastMouseX = currMouseX;\n this.mouseChange = true;\n }\n\n // grab the mouse Y velocity\n if (this.mouseYVelocity.length > 5) { this.mouseYVelocity.shift(); }\n this.mouseYVelocity.push(currMouseY - this.lastMouseY);\n\n // see if the average velocity changed\n if (getMean(this.mouseYVelocity) != this.lastMouseYVelocity) {\n this.lastMouseYVelocity = getMean(this.mouseYVelocity);\n this.mouseChange = true;\n }\n \n // check mouse y\n if (currMouseY != this.lastMouseY || getMean(this.mouseYVelocity) != 0) {\n this.lastMouseY = currMouseY;\n this.mouseChange = true;\n }\n\n // orientation\n if (currAlpha != this.lastAlpha) {\n this.lastAlpha = currAlpha;\n this.orientationChange = true;\n }\n\n if (currBeta != this.lastBeta) {\n this.lastBeta = currBeta;\n this.orientationChange = true;\n }\n\n if (currGamma != this.lastGamma) {\n this.lastGamma = currGamma;\n this.orientationChange = true;\n }\n \n // device pixel ratio, but only if the window has moved\n if ( this.positionChange || this.sizeChange )\n {\n this.currDevicePixelRatio = Math.max( window.devicePixelRatio || 1, 1 );\n \n if ( this.currDevicePixelRatio !== this.lastDevicePixelRatio )\n {\n this.devicePixelRatioChange = true;\n this.lastDevicePixelRatio = this.currDevicePixelRatio;\n }\n }\n\n // Finally, we can invoke the callbacks, but if something has changed\n if (\n this.scrollChange ||\n this.sizeChange ||\n this.mouseChange ||\n this.positionChange ||\n this.orientationChange ||\n this.devicePixelRatioChange\n ) {\n // pass the formatted data into each watched function\n this.callbacks.forEach(cb => cb(this.formatData()));\n }\n\n // reset and loop this method\n this.updating = false;\n requestAnimationFrame(this.update);\n }\n\n /**\n * Subscribes a function to the 'watched functions' list.\n * Watched functions will be automatically called on update\n * @param {Function} callback The function to call on update\n * @param {Boolean} callOnWatch Call the function on subscribe? defaults to true\n */\n watch(callback, callOnWatch = true) {\n if (typeof callback !== 'function') {\n throw new Error('Value passed to Watch is not a function');\n }\n\n // Exit out if this is running server-side\n if (isSSR) return;\n\n if (callOnWatch) {\n // get a copy of the store\n const firstRunData = this.formatData();\n\n // Most watch functions will have guard clauses that check for change\n // To cicumvent this, we simulate that all values have changed on first run\n firstRunData.scroll.changed = true;\n firstRunData.mouse.changed = true;\n firstRunData.size.changed = true;\n firstRunData.position.changed = true;\n firstRunData.orientation.changed = true;\n firstRunData.devicePixelRatio.changed = true;\n \n // run the callback using the simulated data\n callback(firstRunData);\n }\n\n // push the callback to the queue to ensure it runs on future updates\n this.callbacks.push(callback);\n }\n\n /**\n * Unsubscribe a function from the 'watched functions' list\n * @param {Function} callback The function to be removed\n */\n unwatch(callback) {\n if (typeof callback !== 'function') {\n throw new Error('The value passed to unwatch is not a function');\n }\n\n // Exit out if this is running server-side\n if (isSSR) return;\n\n // remove the callback from the list\n this.callbacks = this.callbacks.filter(cb => cb !== callback);\n }\n\n}\n\n\n// Create a singleton instance of Tornis\nconst TORNIS = new Tornis();\n\nif (!isSSR) {\n // Expose a limited set of functions to a global, in order to allow access for basic script usage with