{"version":3,"file":"static/chunks/app/cw/[subdomain]/(app)/questboard/page-9676a84e154e17aa.js","mappings":"sFAAAA,QAAAC,OAAA,GAAAC,IAAA,CAAAC,EAAAC,IAAA,CAAAD,EAAA,+BCaA,IAAAE,EAAA,IAMAC,EAAA,aAGAC,EAAA,qBAGAC,EAAA,aAGAC,EAAA,cAGAC,EAAAC,SAGAC,EAAA,iBAAwBT,EAAAU,CAAM,EAAgBV,EAAAU,CAAM,EAAIV,EAAAU,CAAM,CAAAC,MAAA,GAAAA,QAAsBX,EAAAU,CAAM,CAG1FE,EAAA,iBAAAC,MAAAA,MAAAA,KAAAF,MAAA,GAAAA,QAAAE,KAGAC,EAAAL,GAAAG,GAAAG,SAAA,iBAUAC,EAAAC,OAPAC,SAAA,CAOAC,QAAA,CAGAC,EAAAC,KAAAC,GAAA,CACAC,EAAAF,KAAAG,GAAA,CAkBAC,EAAA,WACA,OAAAX,EAAAY,IAAA,CAAAD,GAAA,EACA,EA2MA,SAAAE,EAAAC,CAAA,EACA,IAAAC,EAAA,OAAAD,EACA,QAAAA,GAAAC,CAAAA,UAAAA,GAAAA,YAAAA,CAAA,CACA,CA2EA,SAAAC,EAAAF,CAAA,EACA,oBAAAA,EACA,OAAAA,EAEA,GA/BA,iBADAA,EAgCAA,IA9BAG,GAtBA,iBAsBAH,GAAAZ,mBAAAA,EAAAgB,IAAA,CAAAJ,GA+BA,OAAA1B,EAEA,GAAAyB,EAAAC,GAAA,CACA,IApCAA,EAoCAK,EAAA,mBAAAL,EAAAM,OAAA,CAAAN,EAAAM,OAAA,GAAAN,EACAA,EAAAD,EAAAM,GAAAA,EAAA,GAAAA,CACA,CACA,oBAAAL,EACA,OAAAA,IAAAA,EAAAA,EAAA,CAAAA,EAEAA,EAAAA,EAAAO,OAAA,CAAAhC,EAAA,IACA,IAAAiC,EAAA/B,EAAAgC,IAAA,CAAAT,GACA,UAAAtB,EAAA+B,IAAA,CAAAT,GACArB,EAAAqB,EAAAU,KAAA,IAAAF,EAAA,KACAhC,EAAAiC,IAAA,CAAAT,GAAA1B,EAAA,CAAA0B,CACA,CAEAW,EAAAC,OAAA,CAtPA,SAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,EACA,IAAAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAA,EACAC,EAAA,GACAC,EAAA,GACAC,EAAA,GAEA,sBAAAZ,EACA,gBArIA,uBA+IA,SAAAa,EAAAC,CAAA,EACA,IAAAC,EAAAZ,EACAa,EAAAZ,EAKA,OAHAD,EAAAC,EAAAa,KAAAA,EACAR,EAAAK,EACAR,EAAAN,EAAAkB,KAAA,CAAAF,EAAAD,EAEA,CAmBA,SAAAI,EAAAL,CAAA,EACA,IAAAM,EAAAN,EAAAN,EACAa,EAAAP,EAAAL,EAKA,OAAAD,KAAAS,IAAAT,GAAAY,GAAAnB,GACAmB,EAAA,GAAAT,GAAAU,GAAAhB,CACA,CAEA,SAAAiB,IACA,IAnBAF,EACAC,EACAf,EAiBAQ,EAAA9B,IACA,GAAAmC,EAAAL,GACA,OAAAS,EAAAT,GAGAP,EAAAiB,WAAAF,GAxBAF,EAAAN,EAAAN,EACAa,EAAAP,EAAAL,EACAH,EAAAL,EAAAmB,EAEAT,EAAA7B,EAAAwB,EAAAD,EAAAgB,GAAAf,GAqBA,CAEA,SAAAiB,EAAAT,CAAA,QAKA,CAJAP,EAAAU,KAAAA,EAIAL,GAAAT,GACAU,EAAAC,IAEAX,EAAAC,EAAAa,KAAAA,EACAX,EACA,CAcA,SAAAmB,IACA,IA9DAX,EA8DAA,EAAA9B,IACA0C,EAAAP,EAAAL,GAMA,GAJAX,EAAAwB,UACAvB,EAAA,KACAI,EAAAM,EAEAY,EAAA,CACA,GAAAnB,KAAAU,IAAAV,EACA,OArEAE,EAFAK,EAuEAN,EAnEAD,EAAAiB,WAAAF,EAAArB,GAEAS,EAAAG,EAAAC,GAAAR,EAmEA,GAAAK,EAGA,OADAJ,EAAAiB,WAAAF,EAAArB,GACAY,EAAAL,EAEA,CAIA,OAHAS,KAAAA,IAAAV,GACAA,CAAAA,EAAAiB,WAAAF,EAAArB,EAAA,EAEAK,CACA,CAGA,OAxGAL,EAAAZ,EAAAY,IAAA,EACAf,EAAAgB,KACAQ,EAAA,EAAAR,EAAAQ,OAAA,CAEAL,EAAAM,CADAA,EAAA,YAAAT,CAAA,EACAvB,EAAAU,EAAAa,EAAAG,OAAA,KAAAJ,GAAAI,EACAO,EAAA,aAAAV,EAAA,EAAAA,EAAAU,QAAA,CAAAA,GAiGAa,EAAAG,MAAA,CAnCA,WACAX,KAAAA,IAAAV,GACAsB,aAAAtB,GAEAE,EAAA,EACAN,EAAAK,EAAAJ,EAAAG,EAAAU,KAAAA,CACA,EA8BAQ,EAAAK,KAAA,CA5BA,WACA,OAAAvB,KAAAU,IAAAV,EAAAD,EAAAiB,EAAAvC,IACA,EA2BAyC,CACA,oFCzPe,SAASM,EAAYC,CAAK,EACrC,IAAIC,EAAMC,CAAAA,EAAAA,EAAAA,MAAAA,IAIV,MAHAC,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,WACNF,EAAIG,OAAO,CAAGJ,CAClB,GACOC,EAAIG,OAAO,oFCFtBC,EAHoB,SAAUC,CAAM,EAChCH,CAAAA,EAAAA,EAAAA,SAAAA,EAAUG,EAAQ,EAAE,CACxB,ECKAC,EANiB,SAAUC,CAAE,EACzB,IAAIC,EAAQP,CAAAA,EAAAA,EAAAA,MAAAA,EAAOM,EAEnBC,CAAAA,EAAML,OAAO,CAAGI,EAChBE,EAAc,WAAc,OAAO,WAAc,OAAOD,EAAML,OAAO,EAAI,CAAG,EAChF,ECSAO,EAdkB,SAAUC,CAAY,EACpC,IAAIC,EAAQX,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,GACfY,EAAKC,CAAAA,EAAAA,EAAAA,QAAAA,EAASH,GAAeZ,EAAQc,CAAE,CAAC,EAAE,CAAEE,EAAWF,CAAE,CAAC,EAAE,CAC5DG,EAAcC,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,SAAU/D,CAAK,EACzCgE,qBAAqBN,EAAMT,OAAO,EAClCS,EAAMT,OAAO,CAAGgB,sBAAsB,WAClCJ,EAAS7D,EACb,EACJ,EAAG,EAAE,EAIL,OAHAkE,EAAW,WACPF,qBAAqBN,EAAMT,OAAO,CACtC,GACO,CAACJ,EAAOiB,EAAY,aCsB/BK,EAjCgB,SAAUrB,CAAG,EAMzB,IAAIa,EAAKS,EAAY,CACjBC,EAAG,EACHC,EAAG,CACP,GAAIzB,EAAQc,CAAE,CAAC,EAAE,CAAEE,EAAWF,CAAE,CAAC,EAAE,CAsBnC,MArBAX,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,WACN,IAAIuB,EAAU,WACNzB,EAAIG,OAAO,EACXY,EAAS,CACLQ,EAAGvB,EAAIG,OAAO,CAACuB,UAAU,CACzBF,EAAGxB,EAAIG,OAAO,CAACwB,SAAS,EAGpC,EAOA,OANI3B,EAAIG,OAAO,EACXyB,CAAAA,EAAAA,EAAAA,EAAAA,EAAG5B,EAAIG,OAAO,CAAE,SAAUsB,EAAS,CAC/BI,QAAS,GACTC,QAAS,EACb,GAEG,WACC9B,EAAIG,OAAO,EACX4B,CAAAA,EAAAA,EAAAA,EAAAA,EAAI/B,EAAIG,OAAO,CAAE,SAAUsB,EAEnC,CACJ,EAAG,CAACzB,EAAI,EACDD,CACX,6NCjCO,IAAMiC,EAAkB,GAAWC,CAAAA,EAAAA,EAAAA,CAAAA,EAAaC,CAAAA,EAAAA,EAAAA,GAAAA,EAAK,MAAO,CAAEC,MAAO,GAAIC,OAAQ,GAAIC,QAAS,YAAaC,KAAM,OAAQC,KAAM,MAAOC,SAAUN,CAAAA,EAAAA,EAAAA,GAAAA,EAAK,OAAQ,CAAEO,EAAG,olEAAqlEH,KAAM,cAAe,EAAG,GAAII,EAC1xEV,CAAAA,EAAgBW,QAAQ,CAAG,aAC3BX,EAAgBY,WAAW,CAAG,kBCFvB,IAAMC,EAAe,GAAWZ,CAAAA,EAAAA,EAAAA,CAAAA,EAAaC,CAAAA,EAAAA,EAAAA,GAAAA,EAAK,MAAO,CAAEC,MAAO,GAAIC,OAAQ,GAAIC,QAAS,YAAaC,KAAM,OAAQC,KAAM,MAAOC,SAAUN,CAAAA,EAAAA,EAAAA,GAAAA,EAAK,OAAQ,CAAEY,SAAU,UAAWC,SAAU,UAAWN,EAAG,2jCAA4jCH,KAAM,cAAe,EAAG,GAAII,EACxyCG,CAAAA,EAAaF,QAAQ,CAAG,UACxBE,EAAaD,WAAW,CAAG,0ECa3B,IAAMI,EAAiB,IACrB,GAAAC,EAAAC,GAAA,EAAAD,EAAAE,QAAA,WACG,IAAIC,MAAM,GAAG,CAACC,GAAG,CAAC,CAACC,EAAGC,IACrB,GAAAN,EAAAC,GAAA,EAACM,EAAAA,CAAQA,CAAAA,CAASC,UAAU,kCAAbF,MAKRG,EAAc,SAuCJC,EAAyCA,EAtC9D,IAAMC,EAAIC,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,sBACpBF,EAAY1D,CAAAA,EAAAA,EAAAA,MAAAA,EAAuB,MACnC,CAAEsB,CAAC,CAAE,CAAGuC,CAAAA,EAAAA,EAAAA,CAAAA,EAAUH,GAClB,CAAEI,SAAAA,CAAQ,CAAEC,YAAAA,CAAW,CAAEC,QAAAA,CAAO,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IACrCC,EAAaC,CAAAA,EAAAA,EAAAA,GAAAA,EAAcH,GAC3BI,EAAWC,CAAAA,EAAAA,EAAAA,CAAAA,IAEXC,EAActD,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,KAC1B0C,EAAUxD,OAAO,EACnBwD,EAAUxD,OAAO,CAACqE,QAAQ,CAAC,CAAEC,KAAM,IAAKC,SAAU,QAAS,EAE/D,EAAG,CAACf,EAAU,EAERjC,EAAaT,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,KACzB0C,EAAUxD,OAAO,EACnBwD,EAAUxD,OAAO,CAACqE,QAAQ,CAAC,CAAEC,KAAM,KAAMC,SAAU,QAAS,EAEhE,EAAG,CAACf,EAAU,EAEd,MACE,GAAAV,EAAA0B,IAAA,EAACC,MAAAA,CAAInB,UAAU,6EACZlC,IAAAA,GACC,GAAA0B,EAAAC,GAAA,EAAC2B,EAAAA,CAAMA,CAAAA,CACLC,QAASpD,EACTqD,aAAYnB,EAAE,eACdH,UAAU,uBACVuB,QAAQ,QACRC,SAAQ,GACRC,KAAK,KACLC,SAAU,GAAAlC,EAAAC,GAAA,EAACkC,EAAAA,CAAaA,CAAAA,CAAAA,KAG5B,GAAAnC,EAAAC,GAAA,EAAC0B,MAAAA,CACCnB,UAAU,kEACVzD,IAAK2D,WAEJQ,EAAWkB,SAAS,CAAG,GAAApC,EAAAC,GAAA,EAACF,EAAAA,CAAAA,GAAoB,GAAAC,EAAAC,GAAA,EAACoC,EAAAA,CAAeA,CAAAA,CAAAA,KAE9D/D,EAAI,GAAKgE,OAAAA,OAAO5B,CAAAA,EAAAA,EAAUxD,OAAO,GAAjBwD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAmB6B,WAAW,EAAID,OAAAA,OAAO5B,CAAAA,EAAAA,EAAUxD,OAAO,GAAjBwD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAmB8B,WAAW,GACtF,GAAAxC,EAAAC,GAAA,EAAC2B,EAAAA,CAAMA,CAAAA,CACLC,QAASP,EACTQ,aAAYnB,EAAE,gBACdH,UAAU,uBACVuB,QAAQ,QACRC,SAAQ,GACRC,KAAK,KACLC,SAAU,GAAAlC,EAAAC,GAAA,EAACwC,EAAAA,CAAcA,CAAAA,CAAAA,KAI7B,GAAAzC,EAAA0B,IAAA,EAACgB,EAAAA,eAAeA,CAAAA,WACd,GAAA1C,EAAAC,GAAA,EAAC0C,EAAAA,aAAaA,CAAAA,CAACnC,UAAU,gBAAgByB,KAAK,KAAKF,QAAQ,UAE1DX,GACC,GAAApB,EAAA0B,IAAA,EAACC,MAAAA,CAAInB,UAAU,iBACb,GAAAR,EAAAC,GAAA,EAAC2C,EAAAA,CAAUA,CAAAA,CACTC,KAAM,GAAA7C,EAAAC,GAAA,EF7ELlB,EE6EqBA,CAAAA,GACtB+D,QAASnC,EAAE,QACXoB,QAAQ,QACRvB,UAAWuC,CAAAA,EAAAA,EAAAA,OAAAA,EACT,iBACA,EAAiB,kEAAL,IAEdd,KAAK,KACLe,UAAW,CAAClC,EACZe,QAAS,IAAMd,EAAY,MAE7B,GAAAf,EAAAC,GAAA,EAAC2C,EAAAA,CAAUA,CAAAA,CACTC,KAAM,GAAA7C,EAAAC,GAAA,EDzFLL,ECyFkBA,CAAAA,GACnBkD,QAASnC,EAAE,WACXoB,QAAQ,QACRvB,UAAWuC,CAAAA,EAAAA,EAAAA,OAAAA,EACT,iBACAjC,EAAW,GAAK,mEAElBmB,KAAK,KACLe,UAAWlC,EACXe,QAAS,IAAMd,EAAY,cAOzC,4PE/FO,IAAMkC,EAAqB,IAChChG,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KAC+C,eAAlBiG,EAAAA,CAASA,CAACC,GAAG,EAChDC,EAAAA,CAAUA,CAACC,2BAA2B,EAE1C,EAAG,EAAE,kDCZA,IAAMC,EAAW,OAAC,CACvBpC,WAAAA,CAAU,CACVqC,2BAAAA,CAA0B,CAI3B,CAAAC,EACOC,EAAeC,CAAAA,EAAAA,EAAAA,GAAAA,KAAeC,OAAOC,UAAU,CAAC,uBAAuBC,OAAO,CAE9EC,EAAoB,GACjBL,EAAeM,EAAQzB,OAAOpB,MAAAA,EAAAA,KAAAA,EAAAA,EAAY8C,MAAM,EAAI,EAAI,CAAED,CAAAA,EAAQ,GAG3E,MACE,GAAA/D,EAAA0B,IAAA,EAACC,MAAAA,CAAInB,UAAU,uHACb,GAAAR,EAAAC,GAAA,EAAC0B,MAAAA,CAAInB,UAAU,oFACZU,GACC,GAAAlB,EAAAC,GAAA,EAAAD,EAAAE,QAAA,WACGgB,EAAWd,GAAG,CAAC,CAAC6D,EAAU3D,IACzB,EAAuBA,GAGrB,GAAAN,EAAAC,GAAA,EAACiE,EAAAA,CAAMA,CAAAA,CAELD,SAAUA,EACVV,2BAA4BA,GAFvBU,EAASE,EAAE,EAJc,UAa1C,GAAAnE,EAAAC,GAAA,EAAC0B,MAAAA,CAAInB,UAAU,6EACZU,GACC,GAAAlB,EAAAC,GAAA,EAAAD,EAAAE,QAAA,WACGgB,EAAWd,GAAG,CAAC,CAAC6D,EAAU3D,IACzB,EAAsBA,GAAW,KAG/B,GAAAN,EAAAC,GAAA,EAACiE,EAAAA,CAAMA,CAAAA,CAELD,SAAUA,EACVV,2BAA4BA,GAFvBU,EAASE,EAAE,SAWlC,wIC3CA,IAAMC,EAAoB,CACxBC,gBAAkB,0EAClBC,UAAW,OACb,EAEMC,EAAsB,CAC1BF,gBAAiB,cACnB,EAEMG,EAAe,OAAC,CACpB5J,OAAAA,CAAM,CACN6J,aAAAA,CAAY,CACZC,YAAAA,CAAW,CACXnB,2BAAAA,CAA0B,CAM3B,CAAAC,EACO7C,EAAIC,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,6BAE1B,MACE,GAAAZ,EAAAC,GAAA,EAAC0B,MAAAA,CACCgD,MAAO,CACL,GAAIpB,EACAxH,KAAAA,EACA,EAEAwI,EADAH,CACmB,CACvBQ,mBAAoB,aAA0CC,MAAA,CAA7BjK,EAAOkK,qBAAqB,CAAC,IAChE,EACAtE,UAAWuE,CAAAA,EAAAA,EAAAA,EAAAA,EACT,sGACA,kBACA,0CACAxB,EAA6B,cAAgB,aAG/C,GAAAvD,EAAA0B,IAAA,EAACC,MAAAA,CAAInB,UAAU,kCACb,GAAAR,EAAA0B,IAAA,EAACsD,IAAAA,CAAExE,UAAU,uDACX,GAAAR,EAAAC,GAAA,EAACgF,OAAAA,UAAMrK,EAAOsK,KAAK,GAClBtK,cAAAA,EAAOuK,MAAM,EACZ,GAAAnF,EAAAC,GAAA,EAACmF,EAAAA,KAAKA,CAAAA,CAAC5E,UAAU,qBAAqBqC,KAAM,GAAA7C,EAAAC,GAAA,EAACoF,EAAAA,CAAiBA,CAAAA,CAAAA,YAC3D1E,EAAE,eAGN/F,cAAAA,EAAOuK,MAAM,EAAoB5B,GAChC,GAAAvD,EAAAC,GAAA,EAACmF,EAAAA,KAAKA,CAAAA,CAAC5E,UAAU,qBAAqBqC,KAAM,GAAA7C,EAAAC,GAAA,EAACqF,EAAAA,CAAaA,CAAAA,CAAAA,GAAKvD,QAAQ,gBACpEpB,EAAE,sBAKR+D,GAAe,GAAA1E,EAAAC,GAAA,EAAC+E,IAAAA,CAAExE,UAAU,mDAA2CkE,IAEvE9J,cAAAA,EAAOuK,MAAM,EAAoBvK,EAAO2K,eAAe,CAAG,GACzD,GAAAvF,EAAAC,GAAA,EAACuF,EAAAA,CAAWA,CAAAA,CACVzD,QAAQ,UACR9H,MAAOW,EAAO6K,iBAAiB,CAC/B9L,IAAKiB,EAAO2K,eAAe,CAC3BG,aAAa,kBAMzB,EAEaC,EAAgB,OAAC,CAC5B/K,OAAAA,CAAM,CACN2I,2BAAAA,CAA0B,CAI3B,CAAAC,EACOoC,EAAO5I,CAAAA,EAAAA,EAAAA,MAAAA,EACsB2G,OAAOC,UAAU,CAAC,uBAAuBC,OAAO,EAE7EgC,EAAWC,CAAAA,EAAAA,EAAAA,WAAAA,IAEXC,EAAU,GAA0DlB,MAAA,CAAvDgB,EAASG,SAAS,CAAC,EAAGH,EAASI,OAAO,CAAC,gBAAgB,eAEpEC,EAAoB,CAACtL,EAAOuL,QAAQ,EAAI,CAACvL,EAAOwL,KAAK,CAErDC,EAAgBH,EAClBI,EAAAA,CAAa,CAAC1L,EAAO2L,QAAQ,CAAGD,EAAAA,CAAaA,CAACtC,MAAM,CAAC,CACrDjI,KAAAA,EAEEoK,EAAWvL,EAAOuL,QAAQ,CAC5BvL,EAAOuL,QAAQ,CACfP,EAAK1I,OAAO,CACZmJ,MAAAA,EAAAA,KAAAA,EAAAA,EAAeG,UAAU,CAACC,GAAG,CAC7BJ,MAAAA,EAAAA,KAAAA,EAAAA,EAAeF,QAAQ,CAACM,GAAG,CAEzB9B,EAAQ+B,CAAAA,EAAAA,EAAAA,OAAAA,EACZ,SAMQL,QALL,CACC,OACE,EAASD,KAAK,EAAMxL,EAAOuL,QAAQ,CAAGvL,EAAOwL,KAAK,EAAI,2BAA6B,GACrF,iBAAkBxL,EAAOwL,KAAK,CAC1BO,CAAAA,EAAAA,EAAAA,CAAAA,EAAe/L,EAAOwL,KAAK,EAC3BC,OAAAA,CAAAA,EAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAeD,KAAK,GAApBC,KAAAA,IAAAA,EAAAA,EAAwB,YAC5B,UAAW,OAAgBxB,MAAA,CAATsB,EAAS,IAC7B,GACF,CAACvL,EAAOwL,KAAK,CAAExL,EAAOuL,QAAQ,CAAEA,EAAUE,MAAAA,EAAAA,KAAAA,EAAAA,EAAeD,KAAK,CAAC,EAGjE,MACE,GAAApG,EAAA0B,IAAA,EAACC,MAAAA,CACCgD,MAAOA,EACPnE,UAAWuC,CAAAA,EAAAA,EAAAA,OAAAA,EAAK,eAAgBnI,WAAAA,EAAOuK,MAAM,CAAgB,YAAc,cAE3E,GAAAnF,EAAAC,GAAA,EAACuE,EAAAA,CACC5J,OAAQA,EACR6J,aAAcyB,EACd3C,2BAA4BA,IAE7B3I,cAAAA,EAAOuK,MAAM,EACZ,GAAAnF,EAAAC,GAAA,EAAC0B,MAAAA,CAAInB,UAAU,qKACZ5F,EAAOgM,MAAM,CAACxG,GAAG,CAACyG,GACjB,GAAA7G,EAAAC,GAAA,EAAC6G,EAAAA,CAASA,CAAAA,CAERC,KAAM,GAAcnM,MAAAA,CAAXmL,EAAQ,KAAgBc,MAAAA,CAAbjM,EAAOuJ,EAAE,CAAC,KAAYU,MAAA,CAATgC,EAAM1C,EAAE,EACzC0C,MAAOA,EACPtD,2BAA4BA,GAHvBsD,EAAM1C,EAAE,OAU3B,EC1Ia6C,EAAc,OAAC,CAC1B9F,WAAAA,CAAU,CACVqC,2BAAAA,CAA0B,CAI3B,CAAAC,EACO7C,EAAIC,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,cAEpBqG,EAAmB/F,MAAAA,EAAAA,KAAAA,EAAAA,EAAYgG,SAAS,CAACtM,GAAUA,WAAAA,EAAOuK,MAAM,EAChEgC,EAAsBjG,MAAAA,EAAAA,KAAAA,EAAAA,EAAYgG,SAAS,CAACtM,GAAUA,cAAAA,EAAOuK,MAAM,EAEzE,MACE,GAAAnF,EAAAC,GAAA,EAAC0B,MAAAA,CAAInB,UAAU,yBACZU,MAAAA,EAAAA,KAAAA,EAAAA,EAAYd,GAAG,CAAC,CAACxF,EAAQmJ,IACxB,GAAA/D,EAAA0B,IAAA,EAAC0F,EAAAA,QAAc,YACZD,IAAwBpD,GACvB,GAAA/D,EAAAC,GAAA,EAACmF,EAAAA,KAAKA,CAAAA,CAAC5E,UAAU,qCAAqCuB,QAAQ,oBAC3DpB,EAAE,kBAAmB,CACpBwE,OAAQxE,EAAE,2BACZ,KAGHsG,IAAqBlD,GACpB,GAAA/D,EAAAC,GAAA,EAACmF,EAAAA,KAAKA,CAAAA,CAAC5E,UAAU,qCAAqCuB,QAAQ,oBAC3DpB,EAAE,kBAAmB,CACpBwE,OAAQxE,EAAE,sBACZ,KAGJ,GAAAX,EAAAC,GAAA,EAAC0F,EAAaA,CAAC/K,OAAQA,EAAQ2I,2BAA4BA,MAfxC3I,EAAOuJ,EAAE,IAoBtC,ECYMkD,EAAgB,OAAC,CAAEvG,SAAAA,EAAW,EAAK,CAAE,CAAA0C,SACzC1C,EACE,GAAAd,EAAAC,GAAA,EAACqH,EAAAA,CAASA,CAACC,UAAU,EAACC,iBAAkB,IAExC,GAAAxH,EAAAC,GAAA,EAACqH,EAAAA,CAASA,CAACN,WAAW,EAACQ,iBAAkB,KAOhCC,EAAY,OAAC,CAAEzG,QAAAA,CAAO,CAAkB,CAAAwC,EACnDP,IACA,IAAM7B,EAAWC,CAAAA,EAAAA,EAAAA,CAAAA,IACX,CAAEP,SAAAA,CAAQ,CAAE,CAAGG,CAAAA,EAAAA,EAAAA,EAAAA,IACf,CAAEyG,KAAMC,CAAgB,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,GAAAA,IAE7B,CACJxF,UAAAA,CAAS,CACTyF,QAASC,CAAkB,CAC3BvC,gBAAAA,CAAe,CAChB,CAAGwC,CAAAA,EAAAA,EAAAA,CAAAA,EAAsB,CACxBC,cAAehH,CACjB,UAEA,EAEIoB,EAAkB,GAAApC,EAAAC,GAAA,EAACoH,EAAAA,CAAcvG,SAAUA,IAE3CgH,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAoB9D,MAAM,IAAK,EAAU,GAAAhE,EAAAC,GAAA,EAACgI,EAAAA,UAAUA,CAAAA,CAAC1C,gBAAiBA,IAGxE,GAAAvF,EAAAC,GAAA,EAAC0B,MAAAA,CAAInB,UAAU,uCACZM,EACC,GAAAd,EAAAC,GAAA,EAACqD,EAAQA,CACPpC,WAAY4G,EACZvE,2BAA4BoE,MAAAA,EAAAA,KAAAA,EAAAA,EAAkBO,cAAc,GAG9D,GAAAlI,EAAAC,GAAA,EAAC+G,EAAWA,CACV9F,WAAY4G,EACZvE,2BAA4BoE,MAAAA,EAAAA,KAAAA,EAAAA,EAAkBO,cAAc,KAhB9C,IAqBxB,6MCvFO,IAAMD,EAAa,OAAC,CACzBE,KAAAA,EAAO,OAAO,CACd3H,UAAAA,EAAY,EAAE,CACd+E,gBAAAA,CAAe,CAKhB,CAAA/B,EACO7C,EAAIC,CAAAA,EAAAA,EAAAA,eAAAA,IACJwH,EAAKxH,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,qBAErB,CAAEyH,SAAAA,CAAQ,CAAEC,QAAAA,CAAO,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,SAAAA,IAExBC,EAAYC,CAAAA,EAAAA,EAAAA,CAAAA,EAAaJ,EAAUC,GACnCI,EAAUC,CAAAA,EAAAA,EAAAA,CAAAA,IACVC,EAAe,GAAA/D,MAAA,CAAG6D,EAAQ,gBAAA7D,MAAA,CAAc2D,MAAAA,EAAAA,KAAAA,EAAAA,EAAWK,UAAU,CAAC,KAAiBhE,MAAA,CAAd2D,MAAAA,EAAAA,KAAAA,EAAAA,EAAWrE,EAAE,EAE9E,CAAE2E,sBAAAA,CAAqB,CAAEC,aAAAA,CAAY,CAAE,CAAG9H,CAAAA,EAAAA,EAAAA,EAAAA,IAOhD,MACE,GAAA+H,EAAAtH,IAAA,EAACC,MAAAA,CACCnB,UAAWuE,CAAAA,EAAAA,EAAAA,EAAAA,EACT,yGACAvE,aAGF,GAAAwI,EAAA/I,GAAA,EAACgJ,EAAAA,OAAKA,CAAAA,CAAC/J,MAAO,IAAKC,OAAQ,IAAKsH,IAAI,6BAA6ByC,IAAI,KACrE,GAAAF,EAAA/I,GAAA,EAAC+E,IAAAA,CAAExE,UAAU,8EACVG,EAAE,oBAAyBkE,MAAA,CAALsD,MAGxBK,GACC,GAAAQ,EAAA/I,GAAA,EAAC2B,EAAAA,CAAMA,CAAAA,CAACuH,GAAIC,EAAAA,OAAIA,CAAErC,KAAM6B,EAAc7G,QAAQ,iBAC3CpB,EAAE,uBAIN,CAAC,CAAC4E,GACD,GAAAyD,EAAAtH,IAAA,EAACC,MAAAA,CAAInB,UAAU,8GACb,GAAAwI,EAAA/I,GAAA,EAAC+E,IAAAA,CAAExE,UAAU,4CACV4H,EAAGiB,IAAI,CAAC,gBAAiB,CACxBC,EAAG/J,GAAY,GAAAyJ,EAAA/I,GAAA,EAACqJ,IAAAA,CAAE9I,UAAU,+CAAuCjB,IACnEgK,MAAOhE,CACT,KAEF,GAAAyD,EAAA/I,GAAA,EAAC2B,EAAAA,CAAMA,CAAAA,CAACK,KAAK,KAAKF,QAAQ,QAAQF,QA/BlB,KACtBiH,EAAsB,EAAE,EACxBC,GACF,WA6BWX,EAAG,gBAMhB,uLC7DO,IAAMoB,EAAa,KACxB,IAAM7I,EAAIC,CAAAA,EAAAA,EAAAA,eAAAA,IACJ6I,EAAWC,CAAAA,EAAAA,EAAAA,CAAAA,IACXC,EAASC,CAAAA,EAAAA,EAAAA,GAAAA,IACT,CAAEC,WAAAA,CAAU,CAAEC,cAAAA,CAAa,CAAE,CAAG7I,CAAAA,EAAAA,EAAAA,EAAAA,WAEtC,GAAkB0I,EAAOjC,IAAI,CAG3B,GAAAsB,EAAAtH,IAAA,EAACqI,EAAAA,CAAIA,CAAAA,CAACC,YAAY,aAAa/P,MAAO4P,EAAa,SAAW,gBAC5D,GAAAb,EAAA/I,GAAA,EAACgK,EAAAA,CAAOA,CAAAA,CACNhQ,MAAM,MACNkP,GAAG,SACHe,SAAU,CAACL,EACXM,MAAOxJ,EAAE,yBACTkB,QAAS,IAAMiI,EAAc,MAG/B,GAAAd,EAAA/I,GAAA,EAACgK,EAAAA,CAAOA,CAAAA,CACN/H,SAAU,GAAA8G,EAAA/I,GAAA,EAACmK,EAAAA,CAAUA,CAAAA,CAAAA,GACrBnQ,MAAM,SACNkP,GAAG,SACHe,SAAUL,EACVM,MAAOxJ,EAAE,yBACTkB,QAAS,IAAMiI,EAAc,SAlBG,IAsBxC,2MC9BO,IAAMO,EAAiC,QAK/BC,EAMRA,EAWqBC,KAtBmB,CAAEC,UAAAA,CAAS,CAAyB,CAAAhH,EAC3E8G,EAAOG,CAAAA,EAAAA,EAAAA,GAAAA,IACP9J,EAAIC,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,4BAEpB2J,EAAqB3C,CAAAA,EAAAA,EAAAA,GAAAA,EAAsB,CAC/C8C,QAAS,CAAC,SAACJ,CAAAA,EAAAA,EAAK5C,IAAI,GAAT4C,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWhL,IAAI,CAC5B,SAKA,CAAI,OAACgL,CAAAA,EAAAA,EAAK5C,IAAI,GAAT4C,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWhL,IAAI,GAAKiL,EAAmB7C,IAAI,EAAK6C,EAAmB7C,IAAI,CAACQ,cAAc,CAIzF,GAAAc,EAAAtH,IAAA,EAACC,MAAAA,CAAInB,UAAU,gGACb,GAAAwI,EAAAtH,IAAA,EAACC,MAAAA,CAAInB,UAAU,gDACb,GAAAwI,EAAA/I,GAAA,EAAC0K,EAAAA,EAAIA,CAAAA,CAAC9H,KAAM,GAAAmG,EAAA/I,GAAA,EAAC2K,EAAAA,CAAQA,CAAAA,CAAAA,GAAKpK,UAAU,yBACpC,GAAAwI,EAAA/I,GAAA,EAAC+E,IAAAA,CAAExE,UAAU,0CACVqK,CAAAA,EAAAA,EAAAA,GAAAA,EAAcP,EAAK5C,IAAI,CAACpI,IAAI,CAAE,SAC3BqB,EAAE,eACFA,EAAE,aAAc,CACdmK,KAAMC,CAAAA,EAAAA,EAAAA,GAAAA,EAAKA,OAACR,CAAAA,EAAAA,EAAmB7C,IAAI,GAAvB6C,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAyBS,OAAO,EAAEC,IAAI,CAACF,CAAAA,EAAAA,EAAAA,GAAAA,IAAS,OAC9D,QAGR,GAAA/B,EAAA/I,GAAA,EAAC0B,MAAAA,CAAInB,UAAU,gCACZqK,CAAAA,EAAAA,EAAAA,GAAAA,EAAcP,EAAK5C,IAAI,CAACpI,IAAI,CAAE,UAC7B,GAAA0J,EAAA/I,GAAA,EAAC2B,EAAAA,CAAMA,CAAAA,CAACG,QAAQ,QAAQE,KAAK,KAAKkH,GAAIC,EAAAA,OAAIA,CAAErC,KApBnC,OAAiBlC,MAAA,CAAV2F,EAAU,4BAqBvB7J,EAAE,wBAjBJ,IAwBX,qMC3Be,SAASuK,EAAe1H,CAA+C,KAA/C,CAAE2H,OAAQ,CAAEX,UAAAA,CAAS,CAAE,CAAwB,CAA/ChH,EAC/B,CAAE4H,cAAAA,CAAa,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,CAAAA,IAEpBC,EACJF,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAeG,QAAQ,CAAC,OAAiB1G,MAAA,CAAV2F,EAAU,mBAAkB,CAACY,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAeG,QAAQ,CAAC,WAEhF,CAAEC,aAAAA,CAAY,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,CAAAA,EACvB,uBACAH,GAGF,MACE,GAAAtC,EAAAtH,IAAA,EAACC,MAAAA,CAAInB,UAAU,+DACb,GAAAwI,EAAA/I,GAAA,EAACyL,EAAAA,kBAAkBA,CAAAA,CAAClB,UAAWA,IAE/B,GAAAxB,EAAA/I,GAAA,EAACoK,EAAAA,8BAA8BA,CAAAA,CAACG,UAAWA,IAE3C,GAAAxB,EAAA/I,GAAA,EAAC0C,EAAAA,aAAaA,CAAAA,CAACnC,UAAU,kDAAkDuB,QAAQ,UACnF,GAAAiH,EAAAtH,IAAA,EAACC,MAAAA,CACC5E,IAAKyO,EACLhL,UAAU,iFAEV,GAAAwI,EAAA/I,GAAA,EAACQ,EAAAA,CAAWA,CAAAA,CAAAA,GACZ,GAAAuI,EAAA/I,GAAA,EAACuJ,EAAAA,UAAUA,CAAAA,CAAAA,GACX,GAAAR,EAAA/I,GAAA,EAACwH,EAAAA,SAASA,CAAAA,CAAAA,QAIlB,2ICpCA,GAAM,CAACkE,EAAkCN,EAAqB,CAC5DO,CAAAA,EAAAA,SAAAA,CAAAA,EAAwC,CACtCC,KAAM,4BACNC,SAAU,uBACVC,aANiB,CAAEX,cAAe,IAAK,CAOzC,GAEWY,EAA4B,QAEjBnP,KAFkB,CAAE0C,SAAAA,CAAQ,CAAiC,CAAAiE,EAC7E,CAACyI,EAAcC,EAAgB,CAAG9E,EAAAA,QAAc,CAAgB,MAChEgE,EAAgBvO,OAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAYoP,EAAAA,GAAZpP,KAAAA,IAAAA,EAAAA,EAA6B,KAE7CgJ,EAAWC,CAAAA,EAAAA,EAAAA,WAAAA,IACXqG,EAAeC,CAAAA,EAAAA,EAAAA,eAAAA,IAAkB5S,QAAQ,GAO/C,MALAyD,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KAERiP,EADc,GAAcC,MAAAA,CAAXtG,GAAkDhB,MAAA,CAAvCsH,EAAe,IAAiBtH,MAAA,CAAbsH,GAAiB,IAElE,EAAG,CAACtG,EAAUsG,EAAcf,EAAc,EAGxC,GAAApL,EAAAC,GAAA,EAAC0L,EAAAA,CAAiC1R,MAAO,CAAEmR,cAAAA,CAAc,WACtD7L,GAGP,0GE5BO,IAAMkJ,EAAe,CAACJ,EAAmBC,KAC9C,GAAM,CAAEZ,KAAAA,CAAI,CAAE,CAAGvG,CAAAA,EAAAA,EAAAA,GAAAA,IAEXkL,EAAerO,CAAAA,EAAAA,EAAAA,WAAAA,EACnB,CAACsO,EAAqBC,SAMFC,EALlB,IAAMA,EAAc9E,MAAAA,EAAAA,KAAAA,EAAAA,EAAM+E,EAAE,CAACH,GAC7B,GAAI,CAACE,EACH,OAGF,IAAMhE,EAAAA,OAAYgE,CAAAA,EAAAA,EAAY5F,MAAM,GAAlB4F,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAoBE,IAAI,CAACC,GAAKA,EAAEpG,QAAQ,CAAGgG,UAC7D,EAMKpH,CAFUyH,EAAAA,EAAAA,CAAAA,EAAepE,EAAW,IAE7BqE,QAAQ,CAIbrE,EAHE6D,EAAaC,EAAa9D,EAAUjC,QAAQ,EAN5C8F,EAAaC,EAAc,EAAG,EAUzC,EACA,CAAC5E,EAAK,EAGR,MAAOhB,CAAAA,EAAAA,EAAAA,OAAAA,EAAQ,SAOQgB,EAJMA,EAMEoF,EAR7B,GAAI,CAACzE,GAAY,CAACX,EAAM,OAExB,IAAMqF,EAAqBrF,OAAAA,CAAAA,EAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAMR,SAAS,CAAC8F,GAAKA,EAAE7I,EAAE,GAAKkE,EAAAA,GAA9BX,KAAAA,IAAAA,EAAAA,EAA2C,GAEtE,GAAIqF,KAAAA,EAA2B,OAE/B,IAAMD,EAAAA,OAAepF,CAAAA,EAAAA,EAAK+E,EAAE,CAACM,EAAAA,GAARrF,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA6Bd,MAAM,CAAC8F,IAAI,CAACC,GAAKA,EAAExI,EAAE,GAAKmE,GAI5E,OAAO+D,EAAaU,EAFSD,OAAAA,CAAAA,EAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAcvG,QAAQ,GAAtBuG,KAAAA,IAAAA,EAAAA,EAA0B,EAIzD,EAAG,CAACzE,EAAUC,EAAS+D,EAAa,CACtC,mHC5CO,IAAMZ,EAA6B,SAAwBwB,CAAAA,MAAaC,EAAAA,CAAAA,CAAAA,UAAAA,MAAAA,CAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CACvE,CACJjT,MAAOkT,CAAc,CACrBC,IAAKC,CAAiB,CACtBC,OAAQC,CAAoB,CAC7B,CAAGC,CAAAA,EAAAA,EAAAA,CAAAA,EAAsCP,GAEpC,CAACQ,EAAsB,CAAG5P,CAAAA,EAAAA,EAAAA,QAAAA,EAASsP,GAEnC,CAACO,EAAeC,EAAiB,CAAG9P,CAAAA,EAAAA,EAAAA,QAAAA,EAAmB,MAEvD2N,EAAexN,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,IAClB,OAAT4P,GACFD,EAAiBC,EAErB,EAAG,EAAE,EAsBL,MApBA3Q,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACR,GAAI,CAACyQ,EAAe,OAEhBR,EACFQ,EAAchP,SAAS,CAAG+O,MAAAA,EAAAA,EAAyB,EAEnDF,IAGF,IAAMM,EAAgBC,IAAS,SACXJ,EAAlBL,EAAkBK,OAAAA,CAAAA,EAAAA,EAAchP,SAAS,GAAvBgP,KAAAA,IAAAA,EAAAA,EAA2B,EAC/C,EAAG,KAIH,OAFAA,EAAcK,gBAAgB,CAAC,SAAUF,GAElC,KACLH,EAAcM,mBAAmB,CAAC,SAAUH,EAC9C,CACF,EAAG,CAACH,EAAeR,EAASO,EAAuBF,EAAsBF,EAAkB,EAEpF,CAAE7B,aAAAA,CAAa,CACxB","sources":["webpack://_N_E/?5411","webpack://_N_E/../../node_modules/lodash.debounce/index.js","webpack://_N_E/../../node_modules/react-use/esm/usePrevious.js","webpack://_N_E/../../node_modules/react-use/esm/useEffectOnce.js","webpack://_N_E/../../node_modules/react-use/esm/useUnmount.js","webpack://_N_E/../../node_modules/react-use/esm/useRafState.js","webpack://_N_E/../../node_modules/react-use/esm/useScroll.js","webpack://_N_E/../icons/dist/icons/Elements5Filled.js","webpack://_N_E/../icons/dist/icons/Grid04Filled.js","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/BoardHeader/BoardHeader.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/BoardHeader/index.ts","webpack://_N_E/./hooks/useSessionRecorder.ts","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/GridView/GridView.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/SectionView/ModuleSection.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/SectionView/SectionView.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/BoardView.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/EmptyState.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/_components/MobileTabs.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/admin/_components/SubscriptionLimitReachedBanner.tsx","webpack://_N_E/./app/cw/[subdomain]/(app)/questboard/page.tsx","webpack://_N_E/./context/NavigationHistory/NavigationHistory.tsx","webpack://_N_E/./context/NavigationHistory/index.tsx","webpack://_N_E/./hooks/useNextQuest.ts","webpack://_N_E/./hooks/usePersistedScrollPosition.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/codebuild/output/src2572144987/src/web-app/packages/webapp/app/cw/[subdomain]/(app)/questboard/page.tsx\");\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import { useEffect, useRef } from 'react';\nexport default function usePrevious(state) {\n var ref = useRef();\n useEffect(function () {\n ref.current = state;\n });\n return ref.current;\n}\n","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n var fnRef = useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n","import { useCallback, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useRafState = function (initialState) {\n var frame = useRef(0);\n var _a = useState(initialState), state = _a[0], setState = _a[1];\n var setRafState = useCallback(function (value) {\n cancelAnimationFrame(frame.current);\n frame.current = requestAnimationFrame(function () {\n setState(value);\n });\n }, []);\n useUnmount(function () {\n cancelAnimationFrame(frame.current);\n });\n return [state, setRafState];\n};\nexport default useRafState;\n","import { useEffect } from 'react';\nimport useRafState from './useRafState';\nimport { off, on } from './misc/util';\nvar useScroll = function (ref) {\n if (process.env.NODE_ENV === 'development') {\n if (typeof ref !== 'object' || typeof ref.current === 'undefined') {\n console.error('`useScroll` expects a single ref argument.');\n }\n }\n var _a = useRafState({\n x: 0,\n y: 0,\n }), state = _a[0], setState = _a[1];\n useEffect(function () {\n var handler = function () {\n if (ref.current) {\n setState({\n x: ref.current.scrollLeft,\n y: ref.current.scrollTop,\n });\n }\n };\n if (ref.current) {\n on(ref.current, 'scroll', handler, {\n capture: false,\n passive: true,\n });\n }\n return function () {\n if (ref.current) {\n off(ref.current, 'scroll', handler);\n }\n };\n }, [ref]);\n return state;\n};\nexport default useScroll;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { withBaseIcon } from '../src/Icons.utils';\nexport const Elements5Filled = (props) => withBaseIcon(_jsx(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", role: \"img\", children: _jsx(\"path\", { d: \"M1.25 5.25C1.25 3.84987 1.25 3.1498 1.52248 2.61502 1.76217 2.14462 2.14462 1.76217 2.61502 1.52248 3.1498 1.25 3.84987 1.25 5.25 1.25H6.75C8.15013 1.25 8.8502 1.25 9.38498 1.52248 9.85538 1.76217 10.2378 2.14462 10.4775 2.61502 10.75 3.1498 10.75 3.84987 10.75 5.25V8.75C10.75 10.1501 10.75 10.8502 10.4775 11.385 10.2378 11.8554 9.85538 12.2378 9.38498 12.4775 8.8502 12.75 8.15013 12.75 6.75 12.75H5.25C3.84987 12.75 3.1498 12.75 2.61502 12.4775 2.14462 12.2378 1.76217 11.8554 1.52248 11.385 1.25 10.8502 1.25 10.1501 1.25 8.75V5.25ZM5 15.25C3.83515 15.25 3.25272 15.25 2.79329 15.4403 2.18072 15.694 1.69404 16.1807 1.4403 16.7933 1.25 17.2527 1.25 17.8351 1.25 19V19C1.25 20.1649 1.25 20.7473 1.4403 21.2067 1.69404 21.8193 2.18072 22.306 2.79329 22.5597 3.25272 22.75 3.83515 22.75 5 22.75H7C8.16485 22.75 8.74728 22.75 9.20671 22.5597 9.81928 22.306 10.306 21.8193 10.5597 21.2067 10.75 20.7473 10.75 20.1649 10.75 19V19C10.75 17.8351 10.75 17.2527 10.5597 16.7933 10.306 16.1807 9.81928 15.694 9.20671 15.4403 8.74728 15.25 8.16485 15.25 7 15.25H5ZM13.25 5C13.25 3.83515 13.25 3.25272 13.4403 2.79329 13.694 2.18072 14.1807 1.69404 14.7933 1.4403 15.2527 1.25 15.8351 1.25 17 1.25H19C20.1649 1.25 20.7473 1.25 21.2067 1.4403 21.8193 1.69404 22.306 2.18072 22.5597 2.79329 22.75 3.25272 22.75 3.83515 22.75 5V5C22.75 6.16485 22.75 6.74728 22.5597 7.20671 22.306 7.81928 21.8193 8.30596 21.2067 8.5597 20.7473 8.75 20.1649 8.75 19 8.75H17C15.8351 8.75 15.2527 8.75 14.7933 8.5597 14.1807 8.30596 13.694 7.81928 13.4403 7.20671 13.25 6.74728 13.25 6.16485 13.25 5V5ZM17.25 11.25C15.8499 11.25 15.1498 11.25 14.615 11.5225 14.1446 11.7622 13.7622 12.1446 13.5225 12.615 13.25 13.1498 13.25 13.8499 13.25 15.25V18.75C13.25 20.1501 13.25 20.8502 13.5225 21.385 13.7622 21.8554 14.1446 22.2378 14.615 22.4775 15.1498 22.75 15.8499 22.75 17.25 22.75H18.75C20.1501 22.75 20.8502 22.75 21.385 22.4775 21.8554 22.2378 22.2378 21.8554 22.4775 21.385 22.75 20.8502 22.75 20.1501 22.75 18.75V15.25C22.75 13.8499 22.75 13.1498 22.4775 12.615 22.2378 12.1446 21.8554 11.7622 21.385 11.5225 20.8502 11.25 20.1501 11.25 18.75 11.25H17.25Z\", fill: \"currentColor\" }) }), props);\nElements5Filled.iconName = 'elements-5';\nElements5Filled.displayName = 'Elements5Filled';\nexport default Elements5Filled;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { withBaseIcon } from '../src/Icons.utils';\nexport const Grid04Filled = (props) => withBaseIcon(_jsx(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", role: \"img\", children: _jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M2.85 12.75C2.28995 12.75 2.00992 12.75 1.79601 12.859C1.60785 12.9549 1.45487 13.1078 1.35899 13.296C1.25 13.5099 1.25 13.7899 1.25 14.35V14.75C1.25 17.5503 1.25 18.9504 1.79497 20.02C2.27433 20.9608 3.03924 21.7257 3.98005 22.205C5.04961 22.75 6.44974 22.75 9.25 22.75H14.75C17.5503 22.75 18.9504 22.75 20.02 22.205C20.9608 21.7257 21.7257 20.9608 22.205 20.02C22.75 18.9504 22.75 17.5503 22.75 14.75V14.35C22.75 13.7899 22.75 13.5099 22.641 13.296C22.5451 13.1078 22.3922 12.9549 22.204 12.859C21.9901 12.75 21.7101 12.75 21.15 12.75H2.85ZM1.25 9.65C1.25 10.2101 1.25 10.4901 1.35899 10.704C1.45487 10.8922 1.60785 11.0451 1.79601 11.141C2.00992 11.25 2.28995 11.25 2.85 11.25H21.15C21.7101 11.25 21.9901 11.25 22.204 11.141C22.3922 11.0451 22.5451 10.8922 22.641 10.704C22.75 10.4901 22.75 10.2101 22.75 9.65V9.25C22.75 6.44974 22.75 5.04961 22.205 3.98005C21.7257 3.03924 20.9608 2.27433 20.02 1.79497C18.9504 1.25 17.5503 1.25 14.75 1.25H9.25C6.44974 1.25 5.04961 1.25 3.98005 1.79497C3.03924 2.27433 2.27433 3.03924 1.79497 3.98005C1.25 5.04961 1.25 6.44974 1.25 9.25V9.65Z\", fill: \"currentColor\" }) }), props);\nGrid04Filled.iconName = 'grid-04';\nGrid04Filled.displayName = 'Grid04Filled';\nexport default Grid04Filled;\n","'use client';\n\nimport React, { useCallback, useRef } from 'react';\nimport { useScroll } from 'react-use';\nimport clsx from 'clsx';\nimport { useTranslations } from 'next-intl';\n\nimport { Button, IconButton, Skeleton, TooltipProvider } from '@zealy/design-system';\nimport { ArrowLeftLine, ArrowRightLine, Elements5Filled, Grid04Filled } from '@zealy/icons';\nimport { useQuestBoard } from '@zealy/queries';\n\nimport { useDidMount } from '#hooks/useDidMount';\n\nimport { useQuestboardContext } from '../QuestboardContext';\nimport { CategoryFilters } from './CategoryFilters';\nimport { StatusFilters } from './StatusFilters';\n\nconst FilterSkeleton = () => (\n <>\n {[...Array(6)].map((_, i) => (\n \n ))}\n \n);\n\nexport const BoardHeader = () => {\n const t = useTranslations('questboard.filters');\n const scrollRef = useRef(null);\n const { x } = useScroll(scrollRef);\n const { gridView, setGridView, filters } = useQuestboardContext();\n const questboard = useQuestBoard(filters);\n const didMount = useDidMount();\n\n const scrollRight = useCallback(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollBy({ left: 300, behavior: 'smooth' });\n }\n }, [scrollRef]);\n\n const scrollLeft = useCallback(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollBy({ left: -300, behavior: 'smooth' });\n }\n }, [scrollRef]);\n\n return (\n
\n {x !== 0 && (\n }\n />\n )}\n \n {questboard.isLoading ? : }\n
\n {x + 15 < Number(scrollRef.current?.scrollWidth) - Number(scrollRef.current?.clientWidth) && (\n }\n />\n )}\n\n \n \n\n {didMount && (\n
\n }\n tooltip={t('grid')}\n variant=\"muted\"\n className={clsx(\n 'rounded-r-none',\n !gridView ? '' : 'bg-component-quaternary-press border-component-quaternary-press',\n )}\n size=\"sm\"\n mutedText={!gridView}\n onClick={() => setGridView(true)}\n />\n }\n tooltip={t('section')}\n variant=\"muted\"\n className={clsx(\n 'rounded-l-none',\n gridView ? '' : 'bg-component-quaternary-press border-component-quaternary-press',\n )}\n size=\"sm\"\n mutedText={gridView}\n onClick={() => setGridView(false)}\n />\n
\n )}\n
\n \n );\n};\n","export * from './BoardHeader';\n","'use client';\n\n/*\n From Datadog documentation: https://docs.datadoghq.com/real_user_monitoring/guide/monitor-your-nextjs-app-with-rum/?tab=npm\n Because the RUM SDK needs to run on the client to collect telemetry data, the file where it is initialized through the NPM package must be a client component.\n*/\n\n/*\n Insert this component everywhere you want to record user session.\n*/\nimport { useEffect } from 'react';\nimport { datadogRum } from '@datadog/browser-rum';\n\nimport { envConfig } from '#app/config';\n\nexport const useSessionRecorder = () =>\n useEffect(() => {\n if (typeof window !== 'undefined' && envConfig.env === 'production') {\n datadogRum.startSessionReplayRecording();\n }\n }, []);\n","'use client';\n\nimport React from 'react';\n\nimport { canUseDOM, GetQuestboardOutput } from '@zealy/utils';\n\nimport { Module } from './Module';\n\nexport const GridView = ({\n questboard,\n isSubscriptionLimitReached,\n}: {\n questboard: GetQuestboardOutput;\n isSubscriptionLimitReached?: boolean;\n}) => {\n const hasOneColumn = canUseDOM() && window.matchMedia('(max-width: 1280px)').matches;\n\n const showInFirstColumn = (index: number) => {\n return hasOneColumn ? index < Number(questboard?.length) / 2 : !(index % 2);\n };\n\n return (\n
\n
\n {questboard && (\n <>\n {questboard.map((category, i) => {\n if (!showInFirstColumn(i)) return null;\n\n return (\n \n );\n })}\n \n )}\n
\n
\n {questboard && (\n <>\n {questboard.map((category, i) => {\n if (showInFirstColumn(i)) return null;\n\n return (\n \n );\n })}\n \n )}\n
\n
\n );\n};\n","import type { CSSProperties } from 'react';\nimport React, { useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport { useTranslations } from 'next-intl';\nimport { useParams, usePathname } from 'next/navigation';\n\nimport type { GetQuestboardOutput } from '@zealy/utils';\nimport { Badge, ProgressBar } from '@zealy/design-system';\nimport { CheckCircleFilled, SnowflakeLine } from '@zealy/icons';\n\nimport { QuestCard } from '#components/QuestCard';\nimport { DEFAULT_THEME } from '#constants/questboard';\nimport { cn } from '#utils/utils';\n\nimport { hexToRgbString } from '../GridView/ModuleCard/ModuleCard.utils';\n\nconst moduleHeaderStyle = {\n backgroundImage: `linear-gradient(to bottom left, #00000000, var(--bg) 80%), var(--cover)`,\n minHeight: '238px',\n};\n\nconst fallbackHeaderStyle = {\n backgroundImage: 'var(--cover)',\n};\n\nconst ModuleHeader = ({\n module,\n defaultTheme,\n description,\n isSubscriptionLimitReached,\n}: {\n module: GetQuestboardOutput[number];\n description?: string;\n isSubscriptionLimitReached?: boolean;\n defaultTheme?: boolean;\n}) => {\n const t = useTranslations('questboard.badge.statuses');\n\n return (\n \n
\n

\n {module.title}\n {module.status === 'completed' && (\n }>\n {t('completed')}\n \n )}\n {module.status !== 'completed' && isSubscriptionLimitReached && (\n } variant=\"info\">\n {t('limit-reached')}\n \n )}\n

\n\n {description &&

{description}

}\n\n {module.status !== 'completed' && module.totalQuestCount > 0 && (\n \n )}\n
\n \n );\n};\n\nexport const ModuleSection = ({\n module,\n isSubscriptionLimitReached,\n}: {\n module: GetQuestboardOutput[number];\n isSubscriptionLimitReached?: boolean;\n}) => {\n const isXl = useRef(\n typeof window !== 'undefined' && window.matchMedia('(min-width: 1280px)').matches,\n );\n const pathname = usePathname();\n\n const baseUrl = `${pathname.substring(0, pathname.indexOf('/questboard'))}/questboard`;\n\n const shouldUseFallback = !module.coverUrl && !module.color;\n\n const fallbackTheme = shouldUseFallback\n ? DEFAULT_THEME[module.position % DEFAULT_THEME.length]\n : undefined;\n\n const coverUrl = module.coverUrl\n ? module.coverUrl\n : isXl.current\n ? fallbackTheme?.coverUrlXL.src\n : fallbackTheme?.coverUrl.src;\n\n const style = useMemo(\n () =>\n ({\n '--bg':\n !!module.color || !!module.coverUrl ? module.color || 'var(--color-bg-tertiary)' : '',\n '--module-color': module.color\n ? hexToRgbString(module.color)\n : fallbackTheme?.color ?? '96,47,214',\n '--cover': `url(${coverUrl})`,\n } as CSSProperties),\n [module.color, module.coverUrl, coverUrl, fallbackTheme?.color],\n );\n\n return (\n \n \n {module.status !== 'completed' && (\n
\n {module.quests.map(quest => (\n \n ))}\n
\n )}\n \n );\n};\n","'use client';\n\nimport React from 'react';\nimport { useTranslations } from 'next-intl';\n\nimport type { GetQuestboardOutput } from '@zealy/utils';\nimport { Badge } from '@zealy/design-system';\n\nimport { ModuleSection } from './ModuleSection';\n\nexport const SectionView = ({\n questboard,\n isSubscriptionLimitReached,\n}: {\n questboard: GetQuestboardOutput;\n isSubscriptionLimitReached?: boolean;\n}) => {\n const t = useTranslations('questboard');\n\n const indexLockedStart = questboard?.findIndex(module => module.status === 'locked');\n const indexCompletedStart = questboard?.findIndex(module => module.status === 'completed');\n\n return (\n
\n {questboard?.map((module, index) => (\n \n {indexCompletedStart === index && (\n \n {t('modules-section', {\n status: t('badge.statuses.completed'),\n })}\n \n )}\n {indexLockedStart === index && (\n \n {t('modules-section', {\n status: t('badge.statuses.lock'),\n })}\n \n )}\n \n \n ))}\n
\n );\n};\n","'use client';\n\nimport React from 'react';\n\nimport type { GetQuestboardOutput, QuestContributorFilters } from '@zealy/utils';\nimport { useSubscriptionStatus } from '@zealy/queries';\n\nimport Skeletons from '#components/Skeletons';\nimport { useDidMount } from '#hooks/useDidMount';\nimport { useSessionRecorder } from '#hooks/useSessionRecorder';\n\nimport { useFilteredQuestboard } from './Board.hooks';\nimport { EmptyState } from './EmptyState';\nimport { GridView } from './GridView/GridView';\nimport { useQuestboardContext } from './QuestboardContext';\nimport { SectionView } from './SectionView/SectionView';\n\nconst questFilters = {\n byId: (allowedIds: string[]) => (quest: GetQuestboardOutput[number]['quests'][number]) =>\n allowedIds.includes(quest.id),\n};\n\nexport const useQuestboardFilters = (\n board?: GetQuestboardOutput,\n categoryIds?: string[],\n questIds?: string[],\n) => {\n return React.useMemo(\n () =>\n (board ?? []).reduce(\n (acc, curr) => {\n const quests = questIds ? curr.quests.filter(questFilters.byId(questIds)) : curr.quests;\n\n const currentModule = {\n ...curr,\n quests,\n };\n\n const shouldIncludeModule =\n quests.length && (!categoryIds?.length || categoryIds.includes(curr.id));\n\n const modules = shouldIncludeModule ? [...acc.modules, currentModule] : acc.modules;\n\n return {\n totalQuestCount: acc.totalQuestCount + curr.totalQuestCount,\n modules,\n };\n },\n {\n modules: [] as GetQuestboardOutput,\n totalQuestCount: 0,\n },\n ),\n [board, categoryIds, questIds],\n );\n};\n\nconst BoardSkeleton = ({ gridView = false }) =>\n gridView ? (\n \n ) : (\n \n );\n\nexport interface BoardViewProps {\n filters?: Array;\n}\n\nexport const BoardView = ({ filters }: BoardViewProps) => {\n useSessionRecorder();\n const didMount = useDidMount();\n const { gridView } = useQuestboardContext();\n const { data: subscriptionData } = useSubscriptionStatus();\n\n const {\n isLoading,\n modules: filteredQuestboard,\n totalQuestCount,\n } = useFilteredQuestboard({\n customFilters: filters,\n });\n\n if (!didMount) return null;\n\n if (isLoading) return ;\n\n if (filteredQuestboard?.length === 0) return ;\n\n return (\n
\n {gridView ? (\n \n ) : (\n \n )}\n
\n );\n};\n","'use client';\n\nimport React from 'react';\nimport { useTranslations } from 'next-intl';\nimport Image from 'next/image';\nimport Link from 'next/link';\nimport { useParams } from 'next/navigation';\n\nimport { Button } from '@zealy/design-system';\n\nimport { useCommunityURL } from '#hooks/useCommunityURL';\nimport { useNextQuest } from '#hooks/useNextQuest';\nimport { cn } from '#utils/utils';\n\nimport { useQuestboardContext } from './QuestboardContext';\n\nexport const EmptyState = ({\n view = 'board',\n className = '',\n totalQuestCount,\n}: {\n view?: 'board' | 'module';\n className?: string;\n totalQuestCount?: number;\n}) => {\n const t = useTranslations();\n const tS = useTranslations('questboard.search');\n\n const { moduleId, questId } = useParams<{ moduleId: string; questId: string }>();\n\n const nextQuest = useNextQuest(moduleId, questId);\n const baseURL = useCommunityURL();\n const nextQuestURL = `${baseURL}/questboard/${nextQuest?.categoryId}/${nextQuest?.id}`;\n\n const { setSelectedCategories, clearFilters } = useQuestboardContext();\n\n const clearAllFilters = () => {\n setSelectedCategories([]);\n clearFilters();\n };\n\n return (\n \n \"\"\n

\n {t(`questboard.empty.${view}`)}\n

\n\n {nextQuest && (\n \n )}\n\n {!!totalQuestCount && (\n
\n

\n {tS.rich('hidden-quests', {\n b: children => {children},\n count: totalQuestCount,\n })}\n

\n \n
\n )}\n \n );\n};\n","'use client';\n\nimport React from 'react';\nimport { useTranslations } from 'next-intl';\n\nimport { TabItem, Tabs } from '@zealy/design-system';\nimport { Timer2Line } from '@zealy/icons';\nimport { useCurrentSprint } from '@zealy/queries';\n\nimport { useIsMobile } from '#hooks/useIsMobile';\n\nimport { useQuestboardContext } from './QuestboardContext';\n\nexport const MobileTabs = () => {\n const t = useTranslations();\n const isMobile = useIsMobile();\n const sprint = useCurrentSprint();\n const { sprintView, setSprintView } = useQuestboardContext();\n\n if (!isMobile || !sprint.data) return null;\n\n return (\n \n setSprintView(false)}\n />\n\n }\n value=\"sprint\"\n as=\"button\"\n selected={sprintView}\n label={t('sidebar.items.sprints')}\n onClick={() => setSprintView(true)}\n />\n \n );\n};\n","'use client';\n\nimport React from 'react';\nimport { useTranslations } from 'next-intl';\nimport Link from 'next/link';\n\nimport { Button, Icon } from '@zealy/design-system';\nimport { InfoLine } from '@zealy/icons';\nimport { CommunityMember, useAuthenticatedUser, useSubscriptionStatus } from '@zealy/queries';\nimport { dayjs, roleIsAtLeast } from '@zealy/utils';\n\nexport const SubscriptionLimitReachedBanner = ({ subdomain }: { subdomain: string }) => {\n const user = useAuthenticatedUser();\n const t = useTranslations('questboard.limit-reached');\n\n const subscriptionStatus = useSubscriptionStatus({\n enabled: !!user.data?.role,\n });\n\n const baseHref = `/cw/${subdomain}/settings/plans`;\n\n // When there is no role, we show the join community banner already\n if (!user.data?.role || !subscriptionStatus.data || !subscriptionStatus.data.isLimitReached)\n return null;\n\n return (\n
\n
\n } className=\"invisible lg:visible\" />\n

\n {roleIsAtLeast(user.data.role, 'admin')\n ? t('admin.label')\n : t('user.label', {\n days: dayjs(subscriptionStatus.data?.resetAt).diff(dayjs(), 'days'),\n })}\n

\n
\n
\n {roleIsAtLeast(user.data.role, 'admin') && (\n \n // Add the notify CTA once the feature is ready\n )}\n
\n
\n );\n};\n","'use client';\n\nimport React from 'react';\n\nimport { useNavigationHistory } from '#context/NavigationHistory';\nimport { usePersistedScrollPosition } from '#hooks/usePersistedScrollPosition';\n\nimport { BoardHeader } from './_components/BoardHeader';\nimport { StatusFilters } from './_components/BoardHeader/StatusFilters';\nimport { BoardView } from './_components/BoardView';\nimport { MobileTabs } from './_components/MobileTabs';\nimport { SubscriptionLimitReachedBanner } from './admin/_components/SubscriptionLimitReachedBanner';\nimport { AdminPreviewBanner } from './AdminPreviewBanner';\n\ntype CommunityLayoutProps = {\n params: {\n subdomain: string;\n };\n};\n\nexport default function QuestBoardPage({ params: { subdomain } }: CommunityLayoutProps) {\n const { previousRoute } = useNavigationHistory();\n\n const shouldRecoverScroll =\n previousRoute?.includes(`/cw/${subdomain}/questboard/`) && !previousRoute?.includes('/admin');\n\n const { setScrollRef } = usePersistedScrollPosition(\n 'questboard:scrollTop',\n shouldRecoverScroll,\n );\n\n return (\n
\n \n\n \n\n \n \n \n \n \n
\n \n );\n}\n","'use client';\n\nimport React, { useEffect } from 'react';\nimport { usePrevious } from 'react-use';\nimport { usePathname, useSearchParams } from 'next/navigation';\n\nimport { createContext } from '../createContext';\n\ntype NavigationHistoryContext = { previousRoute: string | null };\n\nconst defaultValue = { previousRoute: null };\n\nconst [NavigationHistoryContextProvider, useNavigationHistory] =\n createContext({\n name: 'NavigationHistoryProvider',\n hookName: 'useNavigationHistory',\n defaultValue,\n });\n\nexport const NavigationHistoryProvider = ({ children }: { children: React.ReactNode }) => {\n const [currentRoute, setCurrentRoute] = React.useState(null);\n const previousRoute = usePrevious(currentRoute) ?? null;\n\n const pathname = usePathname();\n const searchParams = useSearchParams().toString();\n\n useEffect(() => {\n const route = `${pathname}${searchParams ? `?${searchParams}` : ''}`;\n setCurrentRoute(route);\n }, [pathname, searchParams, previousRoute]);\n\n return (\n \n {children}\n \n );\n};\n\nexport { useNavigationHistory };\n","export * from './NavigationHistory';\n","'use client';\n\nimport { useCallback, useMemo } from 'react';\n\nimport { useQuestBoard } from '@zealy/queries';\n\nimport { getQuestStatus } from '#components/QuestCard/components/QuestStatus/QuestStatus.utils';\n\nexport const useNextQuest = (moduleId?: string, questId?: string) => {\n const { data } = useQuestBoard();\n\n const getNextQuest = useCallback(\n (moduleIndex: number, questPosition: number) => {\n const questModule = data?.at(moduleIndex);\n if (!questModule) {\n return undefined;\n }\n\n const nextQuest = questModule.quests?.find(q => q.position > questPosition);\n if (!nextQuest) {\n return getNextQuest(moduleIndex + 1, 0);\n }\n\n const status = getQuestStatus(nextQuest, false);\n\n if (!status.canClaim) {\n return getNextQuest(moduleIndex, nextQuest.position);\n }\n\n return nextQuest;\n },\n [data],\n );\n\n return useMemo(() => {\n if (!moduleId || !data) return undefined;\n\n const currentModuleIndex = data?.findIndex(m => m.id === moduleId) ?? -1;\n\n if (currentModuleIndex === -1) return undefined;\n\n const currentQuest = data.at(currentModuleIndex)?.quests.find(q => q.id === questId);\n\n const currentQuestPosition = currentQuest?.position ?? 0;\n\n return getNextQuest(currentModuleIndex, currentQuestPosition);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [moduleId, questId, getNextQuest]);\n};\n","import { useSessionStorageValue } from '@react-hookz/web';\nimport { useCallback, useEffect, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nexport const usePersistedScrollPosition = (key: string, recover = true) => {\n const {\n value: scrollPosition,\n set: setScrollPosition,\n remove: removeScrollPosition,\n } = useSessionStorageValue(key);\n\n const [initialScrollPosition] = useState(scrollPosition);\n\n const [scrollElement, setScrollElement] = useState(null);\n\n const setScrollRef = useCallback((node: T) => {\n if (node !== null) {\n setScrollElement(node);\n }\n }, []);\n\n useEffect(() => {\n if (!scrollElement) return;\n\n if (recover) {\n scrollElement.scrollTop = initialScrollPosition ?? 0;\n } else {\n removeScrollPosition();\n }\n\n const scrollHandler = debounce(() => {\n setScrollPosition(scrollElement.scrollTop ?? 0);\n }, 200);\n\n scrollElement.addEventListener('scroll', scrollHandler);\n\n return () => {\n scrollElement.removeEventListener('scroll', scrollHandler);\n };\n }, [scrollElement, recover, initialScrollPosition, removeScrollPosition, setScrollPosition]);\n\n return { setScrollRef };\n};\n"],"names":["Promise","resolve","then","__webpack_require__","bind","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","objectToString","objectProto","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timeSinceLastInvoke","timerExpired","trailingEdge","setTimeout","debounced","isInvoking","arguments","cancel","clearTimeout","flush","usePrevious","state","ref","useRef","useEffect","current","esm_useEffectOnce","effect","esm_useUnmount","fn","fnRef","useEffectOnce","esm_useRafState","initialState","frame","_a","useState","setState","setRafState","useCallback","cancelAnimationFrame","requestAnimationFrame","useUnmount","esm_useScroll","useRafState","x","y","handler","scrollLeft","scrollTop","on","capture","passive","off","Elements5Filled","withBaseIcon","_jsx","width","height","viewBox","fill","role","children","d","props","iconName","displayName","Grid04Filled","fillRule","clipRule","FilterSkeleton","jsx_runtime","jsx","Fragment","Array","map","_","i","Skeleton","className","BoardHeader","scrollRef","t","useTranslations","useScroll","gridView","setGridView","filters","useQuestboardContext","questboard","useQuestBoard","didMount","useDidMount","scrollRight","scrollBy","left","behavior","jsxs","div","Button","onClick","aria-label","variant","onlyIcon","size","leftIcon","ArrowLeftLine","isLoading","CategoryFilters","Number","scrollWidth","clientWidth","ArrowRightLine","TooltipProvider","StatusFilters","IconButton","icon","tooltip","clsx","mutedText","useSessionRecorder","envConfig","env","datadogRum","startSessionReplayRecording","GridView","isSubscriptionLimitReached","param","hasOneColumn","canUseDOM","window","matchMedia","matches","showInFirstColumn","index","length","category","Module","id","moduleHeaderStyle","backgroundImage","minHeight","fallbackHeaderStyle","ModuleHeader","defaultTheme","description","style","backgroundPosition","concat","coverVerticalPosition","cn","p","span","title","status","Badge","CheckCircleFilled","SnowflakeLine","totalQuestCount","ProgressBar","claimedQuestCount","fillShadowBg","ModuleSection","isXl","pathname","usePathname","baseUrl","substring","indexOf","shouldUseFallback","coverUrl","color","fallbackTheme","DEFAULT_THEME","position","coverUrlXL","src","useMemo","hexToRgbString","quests","quest","QuestCard","href","SectionView","indexLockedStart","findIndex","indexCompletedStart","React","BoardSkeleton","Skeletons","ModuleList","totalOfSkeletons","BoardView","data","subscriptionData","useSubscriptionStatus","modules","filteredQuestboard","useFilteredQuestboard","customFilters","EmptyState","isLimitReached","view","tS","moduleId","questId","useParams","nextQuest","useNextQuest","baseURL","useCommunityURL","nextQuestURL","categoryId","setSelectedCategories","clearFilters","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","Image","alt","as","Link","rich","b","count","MobileTabs","isMobile","useIsMobile","sprint","useCurrentSprint","sprintView","setSprintView","Tabs","orientation","TabItem","selected","label","Timer2Line","SubscriptionLimitReachedBanner","user","subscriptionStatus","subdomain","useAuthenticatedUser","enabled","Icon","InfoLine","roleIsAtLeast","days","dayjs","resetAt","diff","QuestBoardPage","params","previousRoute","useNavigationHistory","shouldRecoverScroll","includes","setScrollRef","usePersistedScrollPosition","AdminPreviewBanner","NavigationHistoryContextProvider","createContext","name","hookName","defaultValue","NavigationHistoryProvider","currentRoute","setCurrentRoute","searchParams","useSearchParams","getNextQuest","moduleIndex","questPosition","questModule","at","find","q","getQuestStatus","canClaim","currentQuest","currentModuleIndex","m","key","recover","scrollPosition","set","setScrollPosition","remove","removeScrollPosition","useSessionStorageValue","initialScrollPosition","scrollElement","setScrollElement","node","scrollHandler","debounce","addEventListener","removeEventListener"],"sourceRoot":""}