{"version":3,"file":"8733.4c537238.js","mappings":"imCAaO,SAASA,EAAUC,GAA6C,IAA5C,SAAEC,EAAQ,MAAEC,EAAK,KAAEC,EAAI,SAAEC,GAAiBJ,EACnE,OACEK,EAAAA,EAAAA,MAAA,OAAKC,UAAU,gCAA+BL,SAAA,CAC3CC,IACCK,EAAAA,EAAAA,KAACC,EAAAA,GAAS,CAACL,KAAK,QAAQG,UAAU,iCAAgCL,SAC/DC,IAIJO,EAAAA,SAAeC,IAAIT,GAAWU,IAC6B,IAAAC,EAA1D,OAAIH,EAAAA,eAAqBE,IAAUA,EAAME,OAASC,EAAAA,GACzCL,EAAAA,aAAmBE,EAAO,CAC/BR,OACAC,WACAW,MAAwB,QAAnBH,EAAED,EAAMK,MAAMD,aAAK,IAAAH,EAAAA,EAAI,kBAC5BN,UAAWW,IAAWN,EAAMK,MAAMV,UAAW,CAE3C,iBAAkBK,EAAMK,MAAME,WAAaP,EAAMK,MAAMG,OACvD,iBAAkBR,EAAMK,MAAME,UAAYP,EAAMK,MAAMG,OACtD,kBAAmBR,EAAMK,MAAME,WAAaP,EAAMK,MAAMG,OACxD,sGACER,EAAMK,MAAME,UAAYP,EAAMK,MAAMG,WAKrCR,CAAK,MAIpB,CAEO,MAAMS,EAAmBN,EAAAA,E,0kBC3BzB,SAASO,EAAQrB,GAA8F,IAAAsB,EAAA,IAArE,MAAEC,EAAQ,UAAWP,GAA8ChB,EAClH,MAAMwB,EAA+B,mBAAVD,EAAuBA,EAAMP,EAAMS,MAAoBT,EAAMU,SAAYH,EAC9FI,EAAyC,QAAjCL,EAAGM,EAAAA,GAAkBJ,UAAY,IAAAF,EAAAA,EAAIM,EAAAA,GAAkBC,KAErE,OAAOtB,EAAAA,EAAAA,KAACuB,EAAAA,EAAS,IAAKd,EAAOV,UAAWyB,IAAWf,EAAMV,UAAW,eAAgBqB,IACtF,CAKO,MAAMK,UAAoEvB,EAAAA,UAE/EwB,WAAAA,GAAA,SAAAC,WAAAC,EAAA,uBAaAC,MAAAA,GACE,MAAM,aAAEC,GAAiBC,KAAKC,SACxB,MAAEhB,EAAK,MAAEiB,EAAQnB,KAAaL,GAAUsB,KAAKtB,MAEnD,OACET,EAAAA,EAAAA,KAACkC,EAAAA,EAAW,IACNzB,EACJ0B,KAAM,KACNF,MACEA,EACK/B,EAAAA,cAAoB+B,EAA0D,CAC7EjB,eAEFoB,EAENC,aAAcA,KACZP,EAAarB,EAAM6B,QAAkB,EAEvCC,aAAcA,KACZT,EAAa,KAAK,GAI1B,EACDF,EAvCYH,EAAG,kBAGWS,EAAAA,EAAYM,iBAAeZ,EAHzCH,EAAG,cAIOS,EAAAA,EAAYO,aAAWb,EAJjCH,EAAG,cAKOiB,EAAAA,IAAmBd,EAL7BH,EAAG,eAQQ,IACjBS,EAAAA,EAAYS,aACfC,OAAQ,CAAC,EAAG,EAAG,EAAG,GAClBC,WAAW,EACXC,mBAAmB,G,2FCrChB,MAAMJ,EAAsBxC,EAAAA,cAIhC,CACD6C,iBAAiB,EACjBC,UAAW,KACXlB,aAAcA,SAOT,SAASmB,EAAYxD,GAAoF,IAAnF,iBAAEyD,GAAmB,KAASzC,GAAmDhB,EAC5G,MAAOsD,EAAiBI,GAAoBjD,EAAAA,UAAe,IACpD8C,EAAWlB,GAAgB5B,EAAAA,SAA8B,MAE1DkD,EAAelD,EAAAA,SACnB,KAAM,CACJ6C,kBACAC,YACAlB,aAAcoB,EAAmBpB,EAAe,UAElD,CAACkB,EAAWE,EAAkBH,IAGhC,OACE/C,EAAAA,EAAAA,KAAA,UACMS,EAKJ4B,aAAcA,IAAMc,GAAiB,GACrCZ,aAAcA,IAAMY,GAAiB,GAAOzD,UAE5CM,EAAAA,EAAAA,KAAC0C,EAAoBW,SAAQ,CAACnC,MAAOkC,EAAa1D,SAAEe,EAAMf,YAGhE,CAEO,SAAS4D,EAAYC,GAGsE,IAHrE,iBAC3BL,KACGzC,GAC2F8C,EAC9F,OACEvD,EAAAA,EAAAA,KAACiD,EAAY,CAACC,iBAAkBA,EAAiBxD,UAC/CM,EAAAA,EAAAA,KAACwD,EAAAA,EAAmB,CAACC,MAAM,UAAWhD,KAG5C,C,2FC7CO,SAASiD,EAASjE,GAMqC,IANpC,mBACxBkE,EAAkB,OAClBC,EACAC,EAAGC,EACHC,EAAGC,KACAvD,GACuDhB,EAC1D,MAAM,gBAAEsD,GAAoB7C,EAAAA,WAAiBwC,EAAAA,IAE7C,IAAKK,EAAiB,OAAO,KAE7B,MAAMkB,EAAcN,EAAqBlD,EAAMgD,MAASE,EAAqBlD,EAAMgD,MAC7EI,EAAIC,QAAAA,EAAUF,EAAQ,GAAGC,EAAII,EAAc,EAC3CF,EAAIC,QAAAA,EAAUJ,EAAQ,GAAGG,EAC/B,OACE/D,EAAAA,EAAAA,KAACuB,EAAAA,EAAS,IACJd,EACJoD,EAAGA,EACHE,EAAGA,EACHN,MAAOQ,EACPlE,UAAU,qDAGhB,CAEO,SAASmE,EAAUX,GAAgE,IAA/D,OAAEK,EAAQC,EAAGC,EAAQC,EAAGC,KAAWvD,GAA0B8C,EACtF,MAAM,gBAAER,GAAoB7C,EAAAA,WAAiBwC,EAAAA,IAE7C,IAAKK,EAAiB,OAAO,KAE7B,MAAMc,EAAIC,QAAAA,EAAUF,EAAQ,GAAGC,EAAI,EAC7BE,EAAIC,QAAAA,EAAUJ,EAAQ,GAAGG,EAC/B,OAAO/D,EAAAA,EAAAA,KAACuB,EAAAA,EAAS,IAAKd,EAAOoD,EAAGA,EAAGE,EAAGA,EAAGN,MAAO,EAAG1D,UAAU,gDAC/D,C,4iBChCO,MAAMoE,UAAajE,EAAAA,UAcxB2B,MAAAA,GACE,MAAM,MAAEb,EAAQ,UAAWP,GAAUsB,KAAKtB,MAC1C,OACET,EAAAA,EAAAA,KAACoE,EAAAA,EAAY,IACP3D,EACJ4D,OAAQ,KACRtE,UAAWyB,IAAWf,EAAMV,UAAW,8BAA+BsB,EAAAA,GAAkBL,KAG9F,EACDY,EAxBYuC,EAAI,kBACUC,EAAAA,EAAa5B,iBAAeZ,EAD1CuC,EAAI,cAEMC,EAAAA,EAAa3B,aAAWb,EAFlCuC,EAAI,eAIO,IACjBC,EAAAA,EAAazB,aAChBrC,KAAM,SACNgE,KAAK,EACLC,WAAW,EACXzB,mBAAmB,EACnB0B,cAAc,EACdH,OAAQ,M,8lBCgDL,SAASI,EAAUhF,GAYkB,IAAAiF,EAAAC,EAAAC,EAAAC,EAAA,IAZiB,SAC3DC,EAAQ,UACRC,EAAS,MACTpF,EAAK,QACL2C,EAAO,eACP0C,EAAc,mBACdC,EAAkB,YAClBC,EAAW,eACXC,EAAc,WACdC,EAAU,WACVC,EAAU,qBACVC,GAAuB,GACiB7F,EACxC,MAAM8F,EAAaD,EAAuBN,aAAc,EAAdA,EAAgB9D,MAAQ+D,SAAuB,QAALP,EAAlBO,EAAqB,UAAE,IAAAP,GAAS,QAATA,EAAvBA,EAAyBvD,eAAO,IAAAuD,OAAA,EAAhCA,EAAmCpC,GAE/FkD,EAAuB,CAAElD,UAASnB,QADfmE,EAAwBN,QAAAA,EAAkB,CAAC,EAAKC,SAAuB,QAALN,EAAlBM,EAAqB,UAAE,IAAAN,OAAA,EAAvBA,EAAyBxD,QAC/B8D,sBAE7DQ,EAAiC,mBAAT9F,EAAsBA,EAAM4F,EAAYC,GAAwB7F,EACxF+F,EAAgE,QAAlDd,EAAGM,aAAW,EAAXA,EAAcK,EAAYC,UAAqB,IAAAZ,EAAAA,EAAIW,EAE1E,OACEzF,EAAAA,EAAAA,MAAA6F,EAAAA,SAAA,CAAAjG,SAAA,EACEM,EAAAA,EAAAA,KAAA,OAAKD,UAAWyB,IAAW2D,EAAgB,CAAE,SAAUJ,IAAarF,UAChEqF,GAAa7E,EAAAA,eAAqB6E,GAClCA,GAEA/E,EAAAA,EAAAA,KAAA,OACED,UAAWyB,IACT,uDACkD,QADIqD,EACtDxD,EAAAA,GAAkB0D,UAAgC,IAAAF,EAAAA,EAAIxD,EAAAA,GAAkBC,WAKhFtB,EAAAA,EAAAA,KAAA,OACED,UAAWyB,IAAW,yBAA0B4D,EAAY,CAAE,2BAA4BN,IAC1F,YAAWW,EAAe/F,SAEzB+F,KAEHzF,EAAAA,EAAAA,KAAA,OAAKD,UAAWyB,IAAW6D,EAAY,6CAA6C3F,SAAEgG,MAG5F,CAUO,SAASE,EAAYrC,GAQ2C,IAAAsC,EAAA,IARlB,QACnD1E,EAAO,MACPxB,EAAK,YACLmG,EAAW,YACXZ,EAAW,UACXa,IAAcpG,EAAK,YACnBqG,KACGvF,GACgE8C,EACnE,MAAM,gBAAER,EAAe,UAAEC,GAAc9C,EAAAA,WAAiBwC,EAAAA,IAExD,OACE5C,EAAAA,EAAAA,MAAA,OACEC,UAAWyB,IACTf,EAAMV,UACN,mIACA,CAAE,aAAcgD,EAAiB,iCAAkCiD,IACnEtG,SAAA,CAEDqG,IACC/F,EAAAA,EAAAA,KAAA,OAAKD,UAAU,6DAA4DL,SACpC,QADoCmG,EACxEC,aAAW,EAAXA,EAAcnG,EAAOwB,UAAe,IAAA0E,EAAAA,EAAIlG,KAI7CK,EAAAA,EAAAA,KAAA,OAAKD,UAAU,sEAAqEL,SACjFQ,EAAAA,SAAeC,IAAIM,EAAMf,UAAWU,IAAU,IAAA6F,EAAAC,EAC7C,IAAKhG,EAAAA,eAAqBE,IAAUA,EAAME,OAASmE,EAAY,OAAOrE,EAEtE,MAAM4E,EAAiB7D,aAAO,EAAPA,EAASgF,MAAMhF,GAAYA,EAAQmB,UAAYlC,EAAMK,MAAM6B,UAElF,OAAOpC,EAAAA,aAAmBE,EAAO,CAC/B0E,SAA8B,QAAtBmB,EAAE7F,EAAMK,MAAMqE,gBAAQ,IAAAmB,EAAAA,EAAIjD,IAAc5C,EAAMK,MAAM6B,QAC5D0C,iBACAC,mBAAoB9D,EACpB+D,YAAoC,QAAzBgB,EAAE9F,EAAMK,MAAMyE,mBAAW,IAAAgB,EAAAA,EAAIhB,GACH,QAKjD,CAEO,MAAMkB,UAAwClG,EAAAA,UAenD2B,MAAAA,GACE,MAAM,UAAE9B,EAAS,UAAEgG,EAAWD,YAAaO,EAAW,YAAEnB,EAAW,YAAEc,EAAW,SAAEtG,KAAae,GAAUsB,KAAKtB,MAE9G,OACET,EAAAA,EAAAA,KAACsG,EAAAA,EAAe,CACdC,SACEvG,EAAAA,EAAAA,KAAC4F,EAAY,CACX7F,UAAWA,EACX+F,YAAaO,EACbnB,YAAaA,EACba,UAAWA,EACXC,YAAaA,EAAYtG,SAExBA,OAGDe,GAGV,EAGK,SAAS+F,IACd,OAAO,IACT,CAJC5E,EAnCYwE,EAAO,cAGGE,EAAAA,EAAgB7D,aAAWb,EAHrCwE,EAAO,eAKI,IACjBE,EAAAA,EAAgB3D,aACnB8D,OAAQ,GACRC,SAAU,CAAE3C,EAAG,GACfjB,mBAAmB,EACnB6D,aAAc,CAAEC,QAAS,OAAQC,OAAQ,IACzC9G,UAAW,WACX+G,QAAQ9G,EAAAA,EAAAA,KAACkE,EAAAA,EAAU,K,yhBC5KhB,MAAM6C,UAAc7G,EAAAA,UAkBzB2B,MAAAA,GACE,OAAO7B,EAAAA,EAAAA,KAACgH,EAAAA,EAAa,IAAMjF,KAAKtB,OAClC,EACDmB,EArBYmF,EAAK,cAGKC,EAAAA,EAAcvE,aAAWb,EAHnCmF,EAAK,eAKM,IACjBC,EAAAA,EAAcrE,aACjB5C,UAAW,mCACXkH,UAAU,EACVC,UAAU,EACVC,KAAM,CACJC,SAAU,GACVC,WAAY,IACZlF,KAAM,IAERmF,cAAeC,EAAAA,I,6CCQZ,MAAMlG,EAAwD,CACnEmG,YAAa,mBACbC,KAAM,mCACNC,UAAW,gBACXC,SAAU,mCACVrG,KAAM,gBACNsG,SAAU,gBACVC,IAAK,eACLC,QAAS,eACTC,SAAU,iCACVC,MAAO,iBACPC,UAAW,iBACXC,WAAY,qCACZC,KAAM,mCACNC,OAAQ,kBACRC,OAAQ,kBACRC,QAAS,yCACTC,OAAQ,kBACRC,YAAa,sCACbC,MAAO,iBACPC,KAAM,gBACNC,KAAM,mCACNC,OAAQ,uCACRC,WAAY,mBAGDC,EAAmB,sC,6FClCzB,MAAMC,EAAyB7I,EAAAA,cAA8E,CAClH8I,SAAU,CAAC,EACXC,YAAaA,IAAM,KACnBC,gBAAY9G,IAOP,SAAS+G,IACd,OAAOjJ,EAAAA,WAAiB6I,EAC1B,CAYO,MAAMK,EAAiC3J,IAAqD,IAApD,SAAEC,EAAQ,UAAE2J,EAAS,gBAAEC,GAAwB7J,EAC5F,MAAOyJ,EAAYK,GAAiBrJ,EAAAA,YAC7B8I,EAAUC,GAAe/I,EAAAA,UAAe,KAC7C,MAAMsJ,EAAcC,oBAAmBC,EAAAA,EAAAA,IAAUL,IACjD,GAA2B,IAAvBG,EAAYG,OAAc,OAAOL,EAErC,IACE,MAAO,IAAKA,KAAoBM,KAAKC,MAAML,GAC7C,CAAE,MACA,OAAOF,CACT,KASF,OACEtJ,EAAAA,EAAAA,KAAC+I,EAAuB1F,SAAQ,CAACnC,MAAO,CAAE8H,WAAUC,YAPrBD,IAC/BO,EAAc,CAAEO,UAAWC,OAAOC,UAClCf,EAAYD,IACZiB,EAAAA,EAAAA,IAAiBZ,EAAWO,KAAKM,UAAUlB,GAAU,EAIqCE,cAAaxJ,SACpGA,GAC+B,C,2KC1CvB,SAASyK,EAAkB1K,GAWsC,IAP9E,KACA2K,EAAI,QACJC,EAAO,WACPC,EAAU,mBACVC,EAAkB,QAClBC,EAAO,OACPC,GAC4EhL,EAC5E,MAAM,GAAEiL,EAAE,MAAE/K,EAAK,aAAEgL,EAAY,qBAAEC,EAAoB,WAAEC,EAAU,MAAE7J,EAAK,QAAE8J,EAAO,oBAAEC,GAAwBX,EAE3G,OACEtK,EAAAA,EAAAA,MAACkL,EAAAA,GAAS,CACRjL,UAAU,oBACVkL,YAAaA,KACXV,EAAmBG,GAAKG,EAAW,EACnCnL,SAAA,EAEFI,EAAAA,EAAAA,MAACoL,EAAAA,GAAQ,CACPnL,UAAWyB,IAAW,2BAA4B,CAChD,gBAAiBgJ,EACjB,oCAAqCC,KAAWK,SAAAA,EAASnB,UACxDjK,SAAA,EAEHM,EAAAA,EAAAA,KAACmL,EAAAA,GAAS,CACRC,YAAY,EACZC,MAAOC,EAAAA,GAAWC,KAClBxL,UAAWyB,IAAWoJ,EAAsB,0BAC5CY,SAAUT,EAAoBrL,UAE9BM,EAAAA,EAAAA,KAACyL,EAAAA,GAAQ,CACPC,UAAQ,EACRC,QAASd,EACTlL,MAAOgL,QAAAA,GAAgB3K,EAAAA,EAAAA,KAAA,QAAMD,UAAU,kDAAiDL,SAAEC,IAC1FI,UAAU,iBACViB,MAAOA,EACPpB,KAAK,WAIRyK,EAAQlK,KAAKyL,IAAM,IAAAC,EAAA,OAClB7L,EAAAA,EAAAA,KAACmL,EAAAA,GAAS,CAERE,MAAOO,EAAOP,MACdD,YAAY,EACZrL,UAAWyB,IAAWoK,EAAO7L,UAAoC,QAA3B8L,EAAED,EAAOE,0BAAkB,IAAAD,OAAA,EAAzBA,EAAAE,KAAAH,EAA4BxB,GAAO,eAAe1K,SAEzFkM,EAAOI,aAAa5B,EAAMwB,EAAOlB,KAL7BkB,EAAOlB,GAMF,OAGfI,aAAO,EAAPA,EAAS3K,KAAI,CAAC8L,EAAMC,EAAOC,KAC1BrM,EAAAA,EAAAA,MAACoL,EAAAA,GAAQ,CAEPnL,UAAWyB,IAAW,CACpB,oCAAqC0K,IAAUC,EAAMxC,OAAS,GAAKc,IAClE/K,SAAA,EAEHM,EAAAA,EAAAA,KAACmL,EAAAA,GAAS,CAACC,YAAY,EAAOC,MAAOC,EAAAA,GAAWC,KAAMxL,UAAU,sBAAqBL,SAClFuM,EAAKtM,QAEP2K,aAAU,EAAVA,EAAa2B,EAAKvB,IAAIvK,KAAKyL,IAC1B5L,EAAAA,EAAAA,KAACmL,EAAAA,GAAS,CAERE,MAAOO,EAAOP,MACdD,YAAY,EACZrL,UAAWyB,IAAWoK,EAAO7L,UAAW,eAAeL,SAEtDkM,EAAOI,aAAaC,EAA6BL,EAAOlB,KALpDkB,EAAOlB,QAVXuB,EAAKvB,QAsBpB,CC5Ee,SAAS0B,EAAe3M,GAYsC,IAR3E,UACA4M,EAAS,YACTC,EAAW,QACXjC,EAAO,WACPC,EAAU,KACVF,EAAI,aACJmC,GAAe,EAAI,mBACnBhC,GACyE9K,EACzE,OACEK,EAAAA,EAAAA,MAAC0M,EAAAA,GAAK,CAACzM,UAAWW,IAAW,oDAAqD,CAAE,cAAe6L,IAAgB7M,SAAA,CAChH2M,EACAjC,EAAKjK,KAAI,CAACsM,EAAKP,KAAK,IAAAQ,EAAA,OACnB1M,EAAAA,EAAAA,KAACmK,EAAkB,CAEjBC,KAAMqC,EACNpC,QAASA,EACTC,WAAYA,EACZC,mBAAoBA,EACpBC,QAAmB,IAAV0B,EACTzB,OAAQyB,IAAU9B,EAAKT,OAAS,GANrB,QAMuB+C,EAN7BD,EAAI/B,UAAE,IAAAgC,EAAAA,EAAID,EAAI9M,MAOnB,IAEH2M,IAGP,CC5BO,SAASK,EAAgBlN,GAe8C,IAAAmN,EAAAC,EAAA,IAX5E,SACAnN,EAAQ,UACR2M,EAAS,YACTC,EAAW,QACXjC,EAAO,WACPC,EAAU,OACVwC,EAAM,KACN1C,EAAI,aACJmC,EAAY,uBACZQ,EAAsB,mBACtBxC,GAC0E9K,EAC1E,MAAMuN,GACJhN,EAAAA,EAAAA,KAACoM,EAAe,CACdC,UAAWA,EACXC,YAAaA,EACblC,KAAMA,EACNC,QAASA,EACTC,WAAYA,EACZiC,aAAcA,EACdhC,mBAAoBA,IAGxB,OACEzK,EAAAA,EAAAA,MAAA,OAAKC,UAAU,uBAAsBL,SAAA,EACnCI,EAAAA,EAAAA,MAAA,OAAKC,UAAU,qBAAoBL,SAAA,CAChCoN,EACApN,KAEFqN,GACC/M,EAAAA,EAAAA,KAACiN,EAAAA,EAAwB,CAAmCC,WAAS,EAACC,mBAAiB,EAAAzN,SACpFsN,GADkD,QACnCJ,EADoB,QACpBC,EADazC,EAAK,UAAE,IAAAyC,OAAA,EAAPA,EAASO,OAAOzD,cAAM,IAAAiD,EAAAA,EAAI,GAIzDI,IAIR,C,SClEO,SAASK,EAAyCjD,EAAWkD,GAClE,MAAMC,EAAa,IAAInD,GAAMoD,MAAK,CAACC,EAAGC,IAAMC,OAAOC,SAASH,EAAEI,MAAQF,OAAOC,SAASF,EAAEG,QACxF,OAAON,EAAWO,QAChB,CAACC,EAAGtO,EAAmBuO,KAAM,IAAAC,EAAAC,EAAA,IAAvB,KAAEL,EAAI,MAAE3M,GAAOzB,EACnB,MAAM0O,EAA+B,QAA3BF,EAAoB,QAApBC,EAAGX,EAAWS,EAAI,UAAE,IAAAE,OAAA,EAAjBA,EAAmBhN,aAAK,IAAA+M,EAAAA,EAAI,KACzC,IAAIG,EAAwB,KACxBC,EAA2B,KAC3BC,EAAgC,KAChCC,EAAmC,KAEvC,GAAc,OAAVrN,GAA2B,OAATiN,IACpBC,EAASlN,EAAQiN,EACjBE,EAAqB,IAATF,EAAcC,EAASI,KAAKC,IAAIN,GAAS,IAAM,KAEvDb,GAAiB,CACnB,MAAOoB,EAAIC,GAAMd,EAAKe,MAAM,MACtBC,EAAStB,EAAWpH,MAAM2I,GAAMA,EAAEjB,OAAS,GAAGa,MAAOf,OAAOC,SAASe,GAAM,MACjFL,EAAiBX,OAAOoB,SAASF,aAAM,EAANA,EAAQ3N,OAASA,EAAQ2N,EAAQ3N,MAAS,KAC3EqN,EACEM,SAAAA,EAAQ3N,OAA4B,OAAnBoN,EAA2BA,EAAiBE,KAAKC,IAAII,EAAO3N,OAAU,IAAM,IACjG,CAGF,MAAO,CACLkN,OAAQ,IACHL,EAAIK,OACP,CAACP,GAAOO,GAEVC,UAAW,IACNN,EAAIM,UACP,CAACR,GAAOQ,GAEVC,eAAgBhB,EACZ,IACKS,EAAIO,eACP,CAACT,GAAOS,GAEVP,EAAIO,eACRC,kBAAmBjB,EACf,IACKS,EAAIQ,kBACP,CAACV,GAAOU,GAEVR,EAAIQ,kBACT,GAEH,CAAEH,OAAQ,CAAC,EAAGC,UAAW,CAAC,EAAGC,eAAgB,CAAC,EAAGC,kBAAmB,CAAC,GAEzE,CAEO,SAASS,EAAmD5E,GACjE,MAAMmD,EAAa,IAAInD,GAAMoD,MAAK,CAACC,EAAGC,IAAMC,OAAOC,SAASH,EAAEI,MAAQF,OAAOC,SAASF,EAAEG,QACxF,OAAON,EAAWO,QAAsC,CAACC,EAAGxK,EAAmByK,KAAM,IAAAiB,EAAAC,EAAA,IAAvB,KAAErB,EAAI,MAAE3M,GAAOqC,EAC3E,MAAM4K,EAA+B,QAA3Bc,EAAoB,QAApBC,EAAG3B,EAAWS,EAAI,UAAE,IAAAkB,OAAA,EAAjBA,EAAmBhO,aAAK,IAAA+N,EAAAA,EAAI,KACzC,IAAIZ,EAA2B,KAM/B,OAJc,OAAVnN,GAA2B,OAATiN,GAA2B,IAAVjN,GAAwB,IAATiN,IACpDE,GAAcnN,EAAQiN,GAAQK,KAAKC,IAAIN,GAAS,KAG3C,IACFJ,EACH,CAACF,GAAOQ,EACT,GACA,CAAC,EACN,CAEO,SAASc,EAAaC,EAAmBC,GAK9C,OAD8BA,EAAWD,EAFfZ,KAAKc,IAAIvF,OAAOwF,WAAY,MAGxB,GAChC,CAEO,SAASC,IAAkD,IAA7BtO,EAAoBS,UAAAgI,OAAA,QAAAvH,IAAAT,UAAA,GAAAA,UAAA,GAAG,KAC1D,OAAc,OAAVT,GAA4B,IAAVA,EAAoB,0BAGtCA,GAAS,GAAW,4BACpBA,GAAS,GAAW,4BACpBA,GAAS,GAAW,4BACpBA,GAAS,GAAW,4BACpBA,EAAQ,EAAU,4BAGlBA,EAAQ,GAAW,8BACnBA,EAAQ,GAAW,8BACnBA,EAAQ,GAAW,8BACnBA,EAAQ,GAAW,8BACnBA,EAAQ,EAAU,mCAAtB,CACF,C","sources":["webpack://@finviz/website/./js/main/components/ChipSwitch.tsx","webpack://@finviz/website/./js/main/components/chart/Bar.tsx","webpack://@finviz/website/./js/main/components/chart/ChartWrapper.tsx","webpack://@finviz/website/./js/main/components/chart/Cursor.tsx","webpack://@finviz/website/./js/main/components/chart/Line.tsx","webpack://@finviz/website/./js/main/components/chart/Tooltip.tsx","webpack://@finviz/website/./js/main/components/chart/YAxis.tsx","webpack://@finviz/website/./js/main/components/chart/constants.ts","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableContext.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableRow.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTable.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsWidget.tsx","webpack://@finviz/website/./js/main/components/financials-table/utils.ts"],"sourcesContent":["import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, ButtonComponentProps, ButtonProps } from './button'\r\nimport { Paragraph } from './typography'\r\n\r\ninterface Props {\r\n children: (React.ReactElement | null)[]\r\n label?: string\r\n size?: ButtonProps['size']\r\n rounding?: ButtonProps['rounding']\r\n}\r\n\r\nexport function ChipSwitch({ children, label, size, rounding }: Props) {\r\n return (\r\n
\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n\r\n {React.Children.map(children, (child: React.ReactElement | null) => {\r\n if (React.isValidElement(child) && child.type === Button) {\r\n return React.cloneElement(child, {\r\n size,\r\n rounding,\r\n theme: child.props.theme ?? 'chipTransparent',\r\n className: classnames(child.props.className, {\r\n // @todo - these style should be applied globally onto all chipTransparent buttons\r\n '!text-muted-2': !child.props.disabled && !child.props.active,\r\n '!text-default': !child.props.disabled && child.props.active,\r\n '!text-disabled ': child.props.disabled && !child.props.active,\r\n '!text-disabled !bg-gray-200 !bg-opacity-30 !border-gray-100 dark:!bg-gray-600 dark:!border-gray-500':\r\n child.props.disabled && child.props.active,\r\n }),\r\n })\r\n }\r\n\r\n return child\r\n })}\r\n
\r\n )\r\n}\r\n\r\nexport const ChipSwitchButton = Button\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Bar as RechartsBar, BarProps as RechartsBarProps, Rectangle } from 'recharts'\r\nimport { BarRectangleItem } from 'recharts/types/cartesian/Bar'\r\nimport { ActiveShape } from 'recharts/types/util/types'\r\n\r\nimport { ChartWrapperContext } from './ChartWrapper'\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ninterface ColorProps {\r\n color?: ChartItemColorType | ((value: ValueType | null, payload: PayloadType) => ChartItemColorType)\r\n}\r\n\r\ntype BarInnerProps = ColorProps &\r\n Omit & {\r\n payload?: PayloadType\r\n }\r\n\r\nexport function BarInner({ color = 'blue', ...props }: BarInnerProps) {\r\n const colorResult = typeof color === 'function' ? color(props.value as ValueType, props.payload!) : color\r\n const barColor = CHART_ITEM_COLORS[colorResult] ?? CHART_ITEM_COLORS.blue\r\n\r\n return \r\n}\r\n\r\ntype BarProps = ColorProps &\r\n React.PropsWithoutRef, 'color'>>\r\n\r\nexport class Bar extends React.Component<\r\n BarProps\r\n> {\r\n static getComposedData = RechartsBar.getComposedData\r\n static displayName = RechartsBar.displayName\r\n static contextType = ChartWrapperContext\r\n context!: React.ContextType\r\n\r\n static defaultProps = {\r\n ...RechartsBar.defaultProps,\r\n radius: [2, 2, 0, 0],\r\n activeBar: false,\r\n isAnimationActive: false,\r\n }\r\n\r\n render() {\r\n const { setActiveKey } = this.context\r\n const { color, shape = BarInner, ...props } = this.props\r\n\r\n return (\r\n >, {\r\n color,\r\n }) as ActiveShape)\r\n : undefined\r\n }\r\n onMouseEnter={() => {\r\n setActiveKey(props.dataKey as string)\r\n }}\r\n onMouseLeave={() => {\r\n setActiveKey(null)\r\n }}\r\n />\r\n )\r\n }\r\n}\r\n","import * as React from 'react'\r\nimport { ResponsiveContainer } from 'recharts'\r\n\r\nexport const ChartWrapperContext = React.createContext<{\r\n isTooltipActive: boolean\r\n activeKey: string | null\r\n setActiveKey: (key: string | null) => void\r\n}>({\r\n isTooltipActive: true,\r\n activeKey: null,\r\n setActiveKey: () => {},\r\n})\r\n\r\ninterface ChartContextProps extends React.HTMLProps {\r\n isHoverHighlight?: boolean\r\n}\r\n\r\nexport function ChartContext({ isHoverHighlight = true, ...props }: React.PropsWithChildren) {\r\n const [isTooltipActive, setTooltipActive] = React.useState(false)\r\n const [activeKey, setActiveKey] = React.useState(null)\r\n\r\n const contextValue = React.useMemo(\r\n () => ({\r\n isTooltipActive,\r\n activeKey,\r\n setActiveKey: isHoverHighlight ? setActiveKey : () => {},\r\n }),\r\n [activeKey, isHoverHighlight, isTooltipActive]\r\n )\r\n\r\n return (\r\n setTooltipActive(true)}\r\n onMouseLeave={() => setTooltipActive(false)}\r\n >\r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport function ChartWrapper({\r\n isHoverHighlight,\r\n ...props\r\n}: ChartContextProps & React.PropsWithChildren>) {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Rectangle, RectangleProps } from 'recharts'\r\n\r\nimport { ChartWrapperContext } from './ChartWrapper'\r\n\r\ninterface CustomCursorProps extends Partial> {\r\n points?: [{ x: number; y: number }]\r\n}\r\n\r\nexport function CursorBar({\r\n numberOfDatapoints,\r\n points,\r\n x: givenX,\r\n y: givenY,\r\n ...props\r\n}: CustomCursorProps & { numberOfDatapoints: number | null }) {\r\n const { isTooltipActive } = React.useContext(ChartWrapperContext)\r\n\r\n if (!isTooltipActive) return null\r\n\r\n const cursorWidth = numberOfDatapoints ? props.width! / numberOfDatapoints : props.width!\r\n const x = givenX ?? points![0].x - cursorWidth / 2\r\n const y = givenY ?? points![0].y\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport function CursorLine({ points, x: givenX, y: givenY, ...props }: CustomCursorProps) {\r\n const { isTooltipActive } = React.useContext(ChartWrapperContext)\r\n\r\n if (!isTooltipActive) return null\r\n\r\n const x = givenX ?? points![0].x - 1\r\n const y = givenY ?? points![0].y\r\n return \r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Line as RechartsLine } from 'recharts'\r\n\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ninterface LineProps extends React.PropsWithoutRef> {\r\n color?: ChartItemColorType\r\n}\r\n\r\nexport class Line extends React.Component {\r\n static getComposedData = RechartsLine.getComposedData\r\n static displayName = RechartsLine.displayName\r\n\r\n static defaultProps = {\r\n ...RechartsLine.defaultProps,\r\n type: 'linear',\r\n dot: false,\r\n activeDot: false,\r\n isAnimationActive: false,\r\n connectNulls: false,\r\n stroke: null,\r\n }\r\n\r\n render() {\r\n const { color = 'blue', ...props } = this.props\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import classNames from 'classnames'\r\nimport * as React from 'react'\r\nimport { Tooltip as RechartsTooltip } from 'recharts'\r\n\r\nimport { ChartWrapperContext } from './ChartWrapper'\r\nimport { CursorLine } from './Cursor'\r\nimport { CHART_ITEM_COLORS, ChartItemColorType } from './constants'\r\n\r\ntype TooltipPayload = {\r\n color?: string\r\n name?: string | number\r\n value?: ValueType\r\n unit?: React.ReactNode\r\n dataKey?: string | number\r\n payload?: PayloadType\r\n chartType?: string\r\n className?: string\r\n}\r\n\r\ntype TooltipValueFormatter = (\r\n value: ValueType,\r\n extra: {\r\n dataKey: string\r\n payload?: PayloadType & { dataKey: string }\r\n fullTooltipPayload: Array>\r\n }\r\n) => React.ReactNode\r\n\r\ninterface TooltipRowProps {\r\n /**\r\n * When active the row is more prominent\r\n */\r\n isActive?: boolean\r\n\r\n /**\r\n * Value getter key\r\n */\r\n dataKey: string\r\n\r\n /**\r\n * Whether or not the `dataKey` prop represents data visible as series on the chart\r\n * If false, the value will be parsed from the payload of the first series\r\n *\r\n * @default true\r\n */\r\n isChartSeriesDataKey?: boolean\r\n\r\n label: React.ReactNode | TooltipValueFormatter\r\n labelClass?: string\r\n\r\n formatValue?: TooltipValueFormatter\r\n valueClass?: string\r\n\r\n /**\r\n * Color or element\r\n */\r\n indicator?: ChartItemColorType | JSX.Element\r\n /**\r\n * Additional classes on indicator wrapper\r\n */\r\n indicatorClass?: string\r\n\r\n /**\r\n * Set by parent component do not set manually\r\n */\r\n dataKeyPayload?: any\r\n fullTooltipPayload?: any\r\n}\r\n\r\nexport function TooltipRow({\r\n isActive,\r\n indicator,\r\n label,\r\n dataKey,\r\n dataKeyPayload,\r\n fullTooltipPayload,\r\n formatValue,\r\n indicatorClass,\r\n labelClass,\r\n valueClass,\r\n isChartSeriesDataKey = true,\r\n}: TooltipRowProps) {\r\n const valueToUse = isChartSeriesDataKey ? dataKeyPayload?.value : fullTooltipPayload?.[0]?.payload?.[dataKey]\r\n const formatterPayload = isChartSeriesDataKey ? (dataKeyPayload ?? {}) : fullTooltipPayload?.[0]?.payload\r\n const formatterExtraParams = { dataKey, payload: formatterPayload, fullTooltipPayload }\r\n\r\n const formattedLabel = typeof label == 'function' ? label(valueToUse, formatterExtraParams) : label\r\n const formattedValue = formatValue?.(valueToUse, formatterExtraParams) ?? valueToUse\r\n\r\n return (\r\n <>\r\n
\r\n {!indicator || React.isValidElement(indicator) ? (\r\n indicator\r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n {formattedLabel}\r\n \r\n
{formattedValue}
\r\n \r\n )\r\n}\r\n\r\ninterface TooltipInnerProps extends React.ComponentProps {\r\n className?: string\r\n showLabel?: boolean\r\n formatLabel?: (value: ValueType, payload?: Array>) => React.ReactNode\r\n formatValue?: TooltipValueFormatter\r\n translucent?: boolean\r\n}\r\n\r\nexport function TooltipInner({\r\n payload,\r\n label,\r\n formatLabel,\r\n formatValue,\r\n showLabel = !!label,\r\n translucent,\r\n ...props\r\n}: React.PropsWithChildren>) {\r\n const { isTooltipActive, activeKey } = React.useContext(ChartWrapperContext)\r\n\r\n return (\r\n \r\n {showLabel && (\r\n
\r\n {formatLabel?.(label, payload as any) ?? label}\r\n
\r\n )}\r\n\r\n
\r\n {React.Children.map(props.children, (child) => {\r\n if (!React.isValidElement(child) || child.type !== TooltipRow) return child\r\n\r\n const dataKeyPayload = payload?.find((payload) => payload.dataKey === child.props.dataKey)\r\n\r\n return React.cloneElement(child, {\r\n isActive: child.props.isActive ?? activeKey === child.props.dataKey,\r\n dataKeyPayload,\r\n fullTooltipPayload: payload,\r\n formatValue: child.props.formatValue ?? formatValue,\r\n } as TooltipRowProps)\r\n })}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport class Tooltip extends React.Component<\r\n React.PropsWithChildren>\r\n> {\r\n static displayName = RechartsTooltip.displayName\r\n\r\n static defaultProps = {\r\n ...RechartsTooltip.defaultProps,\r\n offset: 40,\r\n position: { y: 4 },\r\n isAnimationActive: false,\r\n wrapperStyle: { outline: 'none', zIndex: 10 },\r\n className: 'min-w-70',\r\n cursor: ,\r\n }\r\n\r\n render() {\r\n const { className, showLabel, formatLabel: formatTitle, formatValue, translucent, children, ...props } = this.props\r\n\r\n return (\r\n \r\n className={className}\r\n formatLabel={formatTitle}\r\n formatValue={formatValue}\r\n showLabel={showLabel}\r\n translucent={translucent}\r\n >\r\n {children}\r\n \r\n }\r\n {...props}\r\n />\r\n )\r\n }\r\n}\r\n\r\nexport function EmptyTooltip() {\r\n return null\r\n}\r\n","import * as React from 'react'\r\nimport { YAxis as RechartsYAxis } from 'recharts'\r\n\r\nimport { shortFormatNumber } from '../../util'\r\n\r\nexport class YAxis extends React.Component<\r\n Omit, 'tickCount'> & { tickCount?: number | null }\r\n> {\r\n static displayName = RechartsYAxis.displayName\r\n\r\n static defaultProps = {\r\n ...RechartsYAxis.defaultProps,\r\n className: 'fill-gray-500 dark:fill-gray-300',\r\n tickLine: false,\r\n axisLine: false,\r\n tick: {\r\n fontSize: 10,\r\n fontWeight: 500, // Different from XAxis\r\n fill: '',\r\n },\r\n tickFormatter: shortFormatNumber,\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n","export enum ChartItemColor {\r\n transparent,\r\n gray,\r\n lightGray,\r\n darkGray,\r\n blue,\r\n darkBlue,\r\n red,\r\n darkRed,\r\n redMuted,\r\n green,\r\n darkGreen,\r\n greenMuted,\r\n teal,\r\n purple,\r\n violet,\r\n emerald,\r\n orange,\r\n orangeLight,\r\n amber,\r\n pink,\r\n lime,\r\n yellow,\r\n darkYellow,\r\n}\r\n\r\nexport type ChartItemColorType = keyof typeof ChartItemColor\r\n\r\nexport const CHART_ITEM_COLORS: Record = {\r\n transparent: 'text-transparent',\r\n gray: 'text-gray-200 dark:text-gray-700',\r\n lightGray: 'text-gray-400',\r\n darkGray: 'text-gray-700 dark:text-gray-300',\r\n blue: 'text-blue-400',\r\n darkBlue: 'text-blue-500',\r\n red: 'text-red-400',\r\n darkRed: 'text-red-500',\r\n redMuted: 'text-red-300 dark:text-red-600',\r\n green: 'text-green-400',\r\n darkGreen: 'text-green-500',\r\n greenMuted: 'text-green-200 dark:text-green-500',\r\n teal: 'text-teal-400 dark:text-teal-300',\r\n purple: 'text-purple-400',\r\n violet: 'text-violet-400',\r\n emerald: 'text-emerald-400 dark:text-emerald-300',\r\n orange: 'text-orange-300',\r\n orangeLight: 'text-amber-100 dark:text-orange-500',\r\n amber: 'text-amber-300',\r\n pink: 'text-pink-400',\r\n lime: 'text-lime-400 dark:text-lime-300',\r\n yellow: 'text-yellow-300 dark:text-yellow-200',\r\n darkYellow: 'text-yellow-400',\r\n}\r\n\r\nexport const CARTESIAN_STROKE = 'stroke-gray-100 dark:stroke-gray-700'\r\n","import * as React from 'react'\r\n\r\nimport { getCookie } from '../../../app/shared/cookie'\r\nimport { setCookieRequest } from '../../services/api'\r\n\r\n/*\r\n * Context.\r\n */\r\nexport type FinancialsTableSettingsType = Record\r\n\r\nexport type FinancialsTableScrollInfo = {\r\n yPosition: number\r\n}\r\n\r\nexport interface FinancialsTableContextProps {\r\n settings: T\r\n setSettings: (settings: T) => void\r\n scrollInfo?: FinancialsTableScrollInfo\r\n}\r\n\r\nexport const FinancialsTableContext = React.createContext>({\r\n settings: {},\r\n setSettings: () => null,\r\n scrollInfo: undefined,\r\n})\r\n\r\n/*\r\n * Hook.\r\n */\r\n\r\nexport function useFinancialsTableContext() {\r\n return React.useContext(FinancialsTableContext) as FinancialsTableContextProps\r\n}\r\n\r\n/*\r\n * Component.\r\n */\r\n\r\ninterface Props {\r\n children: React.ReactNode\r\n defaultSettings: FinancialsTableSettingsType\r\n cookieKey: string\r\n}\r\n\r\nexport const FinancialsTableContextProvider = ({ children, cookieKey, defaultSettings }: Props) => {\r\n const [scrollInfo, setScrollInfo] = React.useState()\r\n const [settings, setSettings] = React.useState(() => {\r\n const cookieValue = decodeURIComponent(getCookie(cookieKey))\r\n if (cookieValue.length === 0) return defaultSettings\r\n\r\n try {\r\n return { ...defaultSettings, ...JSON.parse(cookieValue) } as FinancialsTableSettingsType\r\n } catch {\r\n return defaultSettings\r\n }\r\n })\r\n\r\n const handleSetSettingsChange = (settings: FinancialsTableSettingsType) => {\r\n setScrollInfo({ yPosition: window.scrollY })\r\n setSettings(settings)\r\n setCookieRequest(cookieKey, JSON.stringify(settings))\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import classNames from 'classnames'\r\n\r\nimport { TableAlign, TableBody, TableCell, TableRow } from '../Table'\r\nimport { Checkbox } from '../checkbox'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableRowProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n data: RowDataType\r\n columns: ColumnDefinition[]\r\n subColumns?: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n isFirst: boolean\r\n isLast: boolean\r\n}\r\n\r\nexport default function FinancialsTableRow<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n data,\r\n columns,\r\n subColumns,\r\n onVisibilityChange,\r\n isFirst,\r\n isLast,\r\n}: FinancialsTableRowProps) {\r\n const { id, label, labelElement, labelColumnClassName, isSelected, color, subData, isLabelColumnSticky } = data\r\n\r\n return (\r\n {\r\n onVisibilityChange(id, !isSelected)\r\n }}\r\n >\r\n \r\n \r\n {label}}\r\n className=\"cursor-pointer\"\r\n color={color}\r\n size=\"none\"\r\n />\r\n \r\n\r\n {columns.map((column) => (\r\n \r\n {column.renderColumn(data, column.id)}\r\n \r\n ))}\r\n \r\n {subData?.map((item, index, array) => (\r\n \r\n \r\n {item.label}\r\n \r\n {subColumns?.[item.id].map((column) => (\r\n \r\n {column.renderColumn(item as SubColumnDefinition, column.id)}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { Table } from '../Table'\r\nimport FinancialsTableRow from './FinancialsTableRow'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n subColumns?: Record[]>\r\n isTableFixed?: boolean\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport default function FinancialsTable<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n subColumns,\r\n data,\r\n isTableFixed = true,\r\n onVisibilityChange,\r\n}: FinancialsTableProps) {\r\n return (\r\n \r\n {tableHead}\r\n {data.map((row, index) => (\r\n \r\n ))}\r\n {tableFooter}\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { TableStickyColumnWrapper } from '../Table/TableStickyColumnWrapper'\r\nimport FinancialsTable from './FinancialsTable'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsWidgetProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n children: React.ReactNode\r\n header?: React.ReactNode\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n hasStickyColumnWrapper?: boolean\r\n subColumns?: Record[]>\r\n isTableFixed?: boolean\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport function FinancialsWidget<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n children,\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n subColumns,\r\n header,\r\n data,\r\n isTableFixed,\r\n hasStickyColumnWrapper,\r\n onVisibilityChange,\r\n}: FinancialsWidgetProps) {\r\n const financialsTable = (\r\n \r\n )\r\n return (\r\n
\r\n
\r\n {header}\r\n {children}\r\n
\r\n {hasStickyColumnWrapper ? (\r\n \r\n {financialsTable}\r\n \r\n ) : (\r\n financialsTable\r\n )}\r\n
\r\n )\r\n}\r\n","import { FinancialsRowValue } from './types'\r\n\r\ntype DataKeys = 'change' | 'changePct' | 'yoyOnQoqChange' | 'yoyOnQoqChangePct'\r\n\r\nexport function getYoYData(data: T[], isQuarterlyData?: boolean) {\r\n const sortedData = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n return sortedData.reduce>>(\r\n (acc, { year, value }, i) => {\r\n const prev = sortedData[i - 1]?.value ?? null\r\n let change: number | null = null\r\n let changePct: number | null = null\r\n let yoyOnQoqChange: number | null = null\r\n let yoyOnQoqChangePct: number | null = null\r\n\r\n if (value !== null && prev !== null) {\r\n change = value - prev\r\n changePct = prev !== 0 ? (change / Math.abs(prev)) * 100 : null\r\n\r\n if (isQuarterlyData) {\r\n const [qt, yr] = year.split(` '`)\r\n const prevQt = sortedData.find((d) => d.year === `${qt} '${Number.parseInt(yr) - 1}`)\r\n yoyOnQoqChange = Number.isFinite(prevQt?.value) ? value - prevQt!.value! : null\r\n yoyOnQoqChangePct =\r\n prevQt?.value && yoyOnQoqChange !== null ? (yoyOnQoqChange / Math.abs(prevQt.value)) * 100 : null\r\n }\r\n }\r\n\r\n return {\r\n change: {\r\n ...acc.change,\r\n [year]: change,\r\n },\r\n changePct: {\r\n ...acc.changePct,\r\n [year]: changePct,\r\n },\r\n yoyOnQoqChange: isQuarterlyData\r\n ? {\r\n ...acc.yoyOnQoqChange,\r\n [year]: yoyOnQoqChange,\r\n }\r\n : acc.yoyOnQoqChange,\r\n yoyOnQoqChangePct: isQuarterlyData\r\n ? {\r\n ...acc.yoyOnQoqChangePct,\r\n [year]: yoyOnQoqChangePct,\r\n }\r\n : acc.yoyOnQoqChangePct,\r\n }\r\n },\r\n { change: {}, changePct: {}, yoyOnQoqChange: {}, yoyOnQoqChangePct: {} }\r\n )\r\n}\r\n\r\nexport function getMoMPercentageData(data: T[]) {\r\n const sortedData = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n return sortedData.reduce>((acc, { year, value }, i) => {\r\n const prev = sortedData[i - 1]?.value ?? null\r\n let changePct: number | null = null\r\n\r\n if (value !== null && prev !== null && value !== 0 && prev !== 0) {\r\n changePct = ((value - prev) / Math.abs(prev)) * 100\r\n }\r\n\r\n return {\r\n ...acc,\r\n [year]: changePct,\r\n }\r\n }, {})\r\n}\r\n\r\nexport function getIsCompact(numOfCols: number, barWidth: number) {\r\n // ~1400 is max container width\r\n const maxContainerWidth = Math.min(window.innerWidth, 1400)\r\n\r\n const barsWindowWidthRatio = (barWidth * numOfCols) / maxContainerWidth\r\n return barsWindowWidthRatio > 0.65\r\n}\r\n\r\nexport function getHeatmapClassNames(value: number | null = null) {\r\n if (value === null || value === 0) return 'bg-neutral text-neutral'\r\n\r\n // Negative\r\n if (value < -80) return 'bg-danger-5 text-danger-5'\r\n if (value < -60) return 'bg-danger-4 text-danger-4'\r\n if (value < -40) return 'bg-danger-3 text-danger-3'\r\n if (value < -20) return 'bg-danger-2 text-danger-2'\r\n if (value < 0) return 'bg-danger-1 text-danger-1'\r\n\r\n // Positive\r\n if (value > 80) return 'bg-success-5 text-success-5'\r\n if (value > 60) return 'bg-success-4 text-success-4'\r\n if (value > 40) return 'bg-success-3 text-success-3'\r\n if (value > 20) return 'bg-success-2 text-success-2'\r\n if (value > 0) return 'bg-success-1 text-success-1'\r\n}\r\n"],"names":["ChipSwitch","_ref","children","label","size","rounding","_jsxs","className","_jsx","Paragraph","React","map","child","_child$props$theme","type","Button","theme","props","classnames","disabled","active","ChipSwitchButton","BarInner","_CHART_ITEM_COLORS$co","color","colorResult","value","payload","barColor","CHART_ITEM_COLORS","blue","Rectangle","classNames","Bar","constructor","arguments","_defineProperty","render","setActiveKey","this","context","shape","RechartsBar","fill","undefined","onMouseEnter","dataKey","onMouseLeave","getComposedData","displayName","ChartWrapperContext","defaultProps","radius","activeBar","isAnimationActive","isTooltipActive","activeKey","ChartContext","isHoverHighlight","setTooltipActive","contextValue","Provider","ChartWrapper","_ref2","ResponsiveContainer","width","CursorBar","numberOfDatapoints","points","x","givenX","y","givenY","cursorWidth","CursorLine","Line","RechartsLine","stroke","dot","activeDot","connectNulls","TooltipRow","_fullTooltipPayload$","_fullTooltipPayload$2","_formatValue","_CHART_ITEM_COLORS","isActive","indicator","dataKeyPayload","fullTooltipPayload","formatValue","indicatorClass","labelClass","valueClass","isChartSeriesDataKey","valueToUse","formatterExtraParams","formattedLabel","formattedValue","_Fragment","TooltipInner","_formatLabel","formatLabel","showLabel","translucent","_child$props$isActive","_child$props$formatVa","find","Tooltip","formatTitle","RechartsTooltip","content","EmptyTooltip","offset","position","wrapperStyle","outline","zIndex","cursor","YAxis","RechartsYAxis","tickLine","axisLine","tick","fontSize","fontWeight","tickFormatter","shortFormatNumber","transparent","gray","lightGray","darkGray","darkBlue","red","darkRed","redMuted","green","darkGreen","greenMuted","teal","purple","violet","emerald","orange","orangeLight","amber","pink","lime","yellow","darkYellow","CARTESIAN_STROKE","FinancialsTableContext","settings","setSettings","scrollInfo","useFinancialsTableContext","FinancialsTableContextProvider","cookieKey","defaultSettings","setScrollInfo","cookieValue","decodeURIComponent","getCookie","length","JSON","parse","yPosition","window","scrollY","setCookieRequest","stringify","FinancialsTableRow","data","columns","subColumns","onVisibilityChange","isFirst","isLast","id","labelElement","labelColumnClassName","isSelected","subData","isLabelColumnSticky","TableBody","onMouseDown","TableRow","TableCell","hasLeading","align","TableAlign","Left","isSticky","Checkbox","readOnly","checked","column","_column$getColumnClas","getColumnClassName","call","renderColumn","item","index","array","FinancialsTable","tableHead","tableFooter","isTableFixed","Table","row","_row$id","FinancialsWidget","_data$0$values$length","_data$","header","hasStickyColumnWrapper","financialsTable","TableStickyColumnWrapper","hasBorder","shouldScrollToEnd","values","getYoYData","isQuarterlyData","sortedData","sort","a","b","Number","parseInt","year","reduce","acc","i","_sortedData$value","_sortedData","prev","change","changePct","yoyOnQoqChange","yoyOnQoqChangePct","Math","abs","qt","yr","split","prevQt","d","isFinite","getMoMPercentageData","_sortedData$value2","_sortedData2","getIsCompact","numOfCols","barWidth","min","innerWidth","getHeatmapClassNames"],"sourceRoot":""}