{"version":3,"file":"js/9708-d8a1ef5d81a38166650e.chunk.js","mappings":"4sCAMA,MAAMA,EAAkB,IAAIC,gBAAgBC,OAAOC,SAASC,QA6B5D,MAnBA,WACE,MAA4EC,EAAAC,GAAxCC,EAAAA,EAAAA,UAAS,CAAEC,MAAO,GAAIC,UAAMC,IAAY,GAArEC,EAAUN,EAAA,GAAEO,EAAaP,EAAA,GAehC,OAbAQ,EAAAA,EAAAA,YAAU,KACR,WACE,IACED,OAdoBE,WAC1B,MAAMC,EAAcf,EAAgBgB,IAAI,KACxC,OAAKD,SAEsBE,EAAAA,EAAID,IAAI,gBAAiB,CAAEE,OAAQ,CAAEH,kBAC5CI,KAHK,CAAEX,MAAO,GAGV,EASEY,GACtB,CAAE,MAAOC,GAEP,GAA8B,MAA1BA,EAAMC,SAASC,OACjB,MAAMF,CAEV,CACD,EATD,EASI,GACH,IAEIV,CACT,E,uFC3BA,MAAQa,EAAuBC,EAAAA,GAAvBD,mBAIKE,EAAaC,EAAAA,GAAOC,GAAG;;;;;EAOvBC,EAAgBF,EAAAA,GAAOC,GAAG;;;;;;;sBAOjBE,EAAAA,GAAOC;WAClBD,EAAAA,GAAOE;EAELC,EAAUN,EAAAA,GAAOC,GAAG;;;;;;;;;;IAnBN;;;EAiCdM,EAAOP,EAAAA,GAAOQ,GAAG;;;EAKjBC,EAAYT,EAAAA,GAAOC,GAAG;IAC/BS,EAAAA,GAAMC;;EAIGC,EAAWZ,EAAAA,GAAOC,GAAG;IAC9BS,EAAAA,GAAMG;EAGGC,EAAiBd,EAAAA,GAAOC,GAAG;;;;;EAO3Bc,GAAkBf,EAAAA,EAAAA,IAAOgB,EAAAA,EAAK;;;;;;;uBAOpBb,EAAAA,GAAOE;;;;;;;MAOxBR;;;;;;EAQOoB,EAAgBjB,EAAAA,GAAOC,GAAG;IACnCS,EAAAA,GAAMQ;;;;;;IAMNrB;;;;;;EAQSsB,EAAQnB,EAAAA,GAAOC,GAAG;IAC3BS,EAAAA,GAAMC;WACCR,EAAAA,GAAOiB;;;EAKLC,EAAarB,EAAAA,GAAOC,GAAG;IAChCS,EAAAA,GAAMY;WACCnB,EAAAA,GAAOiB;;;EAKLG,EAAWvB,EAAAA,GAAOC,GAAG;IAC9BS,EAAAA,GAAMQ;WACCf,EAAAA,GAAOiB;;EAILI,GAAaxB,EAAAA,EAAAA,IAAOyB,EAAAA,GAAK;;IAElCf,EAAAA,GAAMQ;;WAECf,EAAAA,GAAOuB;;;aAGLvB,EAAAA,GAAOuB;;EAIPC,GAAoB3B,EAAAA,EAAAA,IAAOgB,EAAAA,EAAKY,MAAM;WACvCC,GAAOA,EAAEC,KAAQ,MAAU;;IAEnCjC;;;EAKSkC,EAAa/B,EAAAA,GAAOC,GAAG;IAChCS,EAAAA,GAAMQ;WACCf,EAAAA,GAAOiB;;EAGLY,EAAQhC,EAAAA,GAAOiC,KAAK;;MAE3BvB,EAAAA,GAAMQ;;;;aAICf,EAAAA,GAAOiB;wBACKc,GAAWA,EAAMxC,MAAQS,EAAAA,GAAOgC,IAAMhC,EAAAA,GAAOiC;;;MAGhE,EAAGC,WACHA,GACA,kBACSlC,EAAAA,GAAOmC,8DAEInC,EAAAA,GAAOoC;;;aAKpBpC,EAAAA,GAAOmC;;EAgBPE,GAbaxC,EAAAA,GAAOiC,KAAK;;MAEhCvB,EAAAA,GAAMQ;;;;aAICf,EAAAA,GAAOmC;;;wBAGInC,EAAAA,GAAOoC;;;EAITvC,EAAAA,GAAOC,GAAG;;IAE5BS,EAAAA,GAAMQ;;WAECf,EAAAA,GAAOiB;;GAGLqB,EAAezC,EAAAA,GAAOC,GAAG;;IAElCS,EAAAA,GAAMQ;WACCf,EAAAA,GAAOgC;;;EAILO,EAAa1C,EAAAA,GAAO2C,CAAC;;IAE9BjC,EAAAA,GAAMQ;WACCf,EAAAA,GAAOuB;;aAELvB,EAAAA,GAAOuB;;EAYPkB,GARc5C,EAAAA,GAAOC,GAAG;;;;;;;EAQRD,EAAAA,GAAOC,GAAG;IACnCS,EAAAA,GAAMQ;;;WAGCf,EAAAA,GAAOiB;GASLyB,IANmB7C,EAAAA,EAAAA,IAAO4C,EAAc;IACjDlC,EAAAA,GAAMoC;;WAEC3C,EAAAA,GAAOmC;GAGatC,EAAAA,EAAAA,IAAO+C,EAAAA,EAAS;IAC3CrC,EAAAA,GAAMQ;;aAEGf,EAAAA,GAAOiB;;GAeP4B,IAXmBhD,EAAAA,EAAAA,IAAO6C,EAAgB;;EAI5B7C,EAAAA,GAAOC,GAAG;IACjCS,EAAAA,GAAMQ;;;;WAICf,EAAAA,GAAOiB;EAESpB,EAAAA,GAAOC,GAAG;IACjCS,EAAAA,GAAMG;WACCV,EAAAA,GAAOiB;;kBCvKlB,MAvEA,UAA0B,WAAEpC,IAC1B,MAAMiE,EAAWC,IACf3E,OAAOC,SAAS2E,KAAOD,CAAW,EAGpC,OACEE,EAAAA,EAAAA,MAACC,EAAY,CAAAC,SAAA,EACXC,EAAAA,EAAAA,KAACF,EAAe,CAAAC,UACdF,EAAAA,EAAAA,MAACC,EAAS,CAAAC,SAAA,EACRC,EAAAA,EAAAA,KAACF,EAAM,CAACG,IAAKC,KACbF,EAAAA,EAAAA,KAACF,EAAW,CAAAC,SAAC,0BACbC,EAAAA,EAAAA,KAACF,EAAU,CAAAC,SAAC,yDAGhBC,EAAAA,EAAAA,KAACF,EAAgB,CAAAC,UACfF,EAAAA,EAAAA,MAACC,EAAiB,CAAAC,SAAA,EAChBC,EAAAA,EAAAA,KAACF,EAAO,CAAAC,SAAC,2BACY,IAApBtE,EAAWF,OACVsE,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,EACEC,EAAAA,EAAAA,KAACF,EAAa,CAAAC,SAAC,4CACfC,EAAAA,EAAAA,KAACF,EAAa,CAAAC,SAAC,kGAIfC,EAAAA,EAAAA,KAACI,EAAAA,GAAM,CACLC,KAAK,SACLC,QAASA,IAAMZ,GAAQa,EAAAA,EAAAA,MACvB,cAAY,8BAA6BR,SAC1C,wBAKgB,IAApBtE,EAAWF,OACVsE,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,EACEF,EAAAA,EAAAA,MAACC,EAAa,CAAAC,SAAA,CAAC,uBACQtE,GAAY+E,YAAYC,cAAcC,WAAW,uBAGxEV,EAAAA,EAAAA,KAACF,EAAa,CAAAC,SAAC,6DACfC,EAAAA,EAAAA,KAACI,EAAAA,GAAM,CACLC,KAAK,SACLC,QAASA,IAAMZ,EAAQ,8BACvB,cAAY,8BAA6BK,SAC1C,sBAKgB,IAApBtE,EAAWF,OACVsE,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,EACEF,EAAAA,EAAAA,MAACC,EAAa,CAAAC,SAAA,CAAC,uBACQtE,GAAY+E,YAAYC,cAAcE,aAAa,uBAG1EX,EAAAA,EAAAA,KAACF,EAAa,CAAAC,SAAC,qDACfC,EAAAA,EAAAA,KAACI,EAAAA,GAAM,CACLC,KAAK,SACLC,QAASA,IAAMZ,EAAQ,uBACvB,cAAY,8BAA6BK,SAC1C,6BASf,E,ulCCyPA,OAlTA,UAAe,WAAEtE,EAAU,cAAEmF,IAC3B,MAAMC,OAAoCrF,IAApBC,EAAWF,KAC3BuF,EAAsBD,KAAkBE,EAAAA,EAAAA,IAAkBtF,EAAWH,OAEpE0F,EAAiC5F,GAAjB6F,EAAAA,EAAAA,KAAiB,GAArB,GACbC,EAAoBF,EAAalF,IAAI,SACrCqF,EACJD,GACAE,IAAAA,QAAkBF,MACjBH,EAAAA,EAAAA,IAAkBG,GAEiB/F,EAAAC,GAAZC,EAAAA,EAAAA,UAAS,IAAG,GAA/Bc,EAAKhB,EAAA,GAAEkG,EAAQlG,EAAA,GACiCmG,EAAAlG,GAAfC,EAAAA,EAAAA,WAAS,GAAM,GAAhDkG,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACmBG,EAAArG,GAAfC,EAAAA,EAAAA,WAAS,GAAM,GAAhDqG,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAEUG,EAAAxG,GAAZC,EAAAA,EAAAA,UAAS,IAAG,GAAvCwG,EAASD,EAAA,GAAEE,EAAYF,EAAA,GACcG,EAAA3G,GAAZC,EAAAA,EAAAA,UAAS,IAAG,GAArC2G,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GACgBG,GAAA9G,GAAZC,EAAAA,EAAAA,UAAS,IAAG,GAArC8G,GAAQD,GAAA,GAAEE,GAAWF,GAAA,GACwBG,GAAAjH,GAA5BC,EAAAA,EAAAA,UAASiH,EAAAA,EAASC,WAAU,GAA7ChH,GAAI8G,GAAA,GAAEG,GAAOH,GAAA,GACyCI,GAAArH,GAAnBC,EAAAA,EAAAA,eAASG,GAAU,GAAtDkH,GAAaD,GAAA,GAAEE,GAAgBF,GAAA,GACtCG,IAA8DC,EAAAA,EAAAA,GAC5D3B,GAAqB,IADf5F,GAAKsH,GAALtH,MAAOwH,GAAQF,GAARE,SAAUC,GAAiBH,GAAjBG,kBAAmBC,GAAaJ,GAAbI,cAGyBC,GAAA7H,GAA3BC,EAAAA,EAAAA,UAAS0H,IAAkB,GAA9DG,GAAaD,GAAA,GAAEE,GAAgBF,GAAA,IAEtCtH,EAAAA,EAAAA,YAAU,KACJF,EAAWH,OAAOwH,GAASrH,EAAWH,OAC1CkH,GAAQ/G,EAAWF,MACnBoH,GAAiBlH,EAAW2H,IAC5BC,GAAW5H,EAAWH,MAAM,GAC3B,CAACG,KAEJE,EAAAA,EAAAA,YAAU,KACJoH,IAAmBI,IAAiB,EAAK,GAC5C,CAACJ,KAEJ,MAAMM,GAAcC,IACblC,IAAAA,QAAkBkC,IAAgBlC,IAAAA,QAAkBkC,IAE9CvC,EAAAA,EAAAA,IAAkBuC,KAAgBnH,IAElC4E,EAAAA,EAAAA,IAAkBuC,GAD3BjC,EAAS,6CAITA,EAAS,IANTA,EAAS,2BAOX,EAyBIkC,GAAuBvC,EAAawC,KAAO,EAAI,IAAIxC,EAAayC,aAAe,GA8DrF,IAAIC,IAAmB1D,EAAAA,EAAAA,KAAAG,EAAAA,SAAA,CAAAJ,SAAE,qBACzB,GAAIc,EAAe,CACjB,MAAQ8C,EAAwBlI,EAAxBkI,QAASnD,EAAe/E,EAAf+E,WAEXoD,EAAc,GAAGpD,EAAWqD,cAAcrD,EAAWsD,YAC3DJ,IAAmB1D,EAAAA,EAAAA,KAAAG,EAAAA,SAAA,CAAAJ,SAAE,kCAEjB4D,EACFD,IACE7D,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,CACG6D,EAAY,oCAAkC,IAC9CD,EAAQI,mBAAqBC,EAAAA,GAAgBC,KAC5CjE,EAAAA,EAAAA,KAAC9B,EAAAA,GAAI,CACHgG,GAAI,aAAaP,EAAQQ,YAAYC,0BAA0BT,EAAQU,OACvEC,OAAO,SACPC,IAAI,aAAYxE,SAEf4D,EAAQa,SAGXxE,EAAAA,EAAAA,KAAA,QAAAD,SAAO4D,EAAQa,WAIQ,IAApBhE,EAAWjF,KACpBmI,IACE7D,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,CACG6D,EAAY,OAAKpD,EAAWC,aAAaC,WAAW,+BAG5B,IAApBF,EAAWjF,MAAkC,IAApBE,EAAWF,KAC7CmI,IACE7D,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,CACG6D,EAAY,wBAAsBpD,EAAWC,aAAaE,aAAa,0BAI/C,IAApBH,EAAWjF,MAAkC,IAApBE,EAAWF,OAC7CmI,IACE7D,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,CACG6D,EAAY,wBAAsBpD,EAAWC,aAAaE,aAAa,6BAKhF,CAEA,MAAM8D,GAA4BtD,GAA6BL,EAE/D,OACEjB,EAAAA,EAAAA,MAACC,EAAY,CAAAC,SAAA,EACXC,EAAAA,EAAAA,KAACF,EAAe,CAAAC,UACdF,EAAAA,EAAAA,MAACC,EAAS,CAAAC,SAAA,EACRC,EAAAA,EAAAA,KAACF,EAAM,CAACG,IAAKC,KACbF,EAAAA,EAAAA,KAACF,EAAW,CAAAC,SAAC,0BACbC,EAAAA,EAAAA,KAACF,EAAU,CAAAC,SAAC,yDAGhBC,EAAAA,EAAAA,KAACF,EAAgB,CAAAC,UACfF,EAAAA,EAAAA,MAACC,EAAiB,CAAC4E,SAvHF9I,UAKrB,GAJAyF,EAAS,IACTG,GAAgB,GAChBG,GAAgB,GAEZuB,GACF,OAAKH,QAMLC,MALE3B,EAAS,sDACTG,GAAgB,IAQpB,GAtCEJ,IAAAA,QAAkBS,IAClBT,IAAAA,QAAkBY,IAClBZ,IAAAA,QAAkB9F,KAClB8F,IAAAA,QAAkBe,KAElBd,EAAS,gDACF,GACGD,IAAAA,QAAkB9F,KAGnByF,EAAAA,EAAAA,IAAkBzF,KAC3B+F,EAAS,2CACF,IACGD,IAAAA,SAAmBe,GAAU,CAAEwC,IAAK,EAAGC,IAAK,OACtDvD,EAAS,mDACF,IAPPA,EAAS,uCACF,GA8BPG,GAAgB,QAIlB,UACQqD,EAAAA,EAAAA,IAAS,CACbhD,YACAG,WACA1G,SACA6G,YACA5G,QACAmH,mBAGG7B,EAGHD,IAFA5F,OAAOC,SAAS2E,KAAO,cAAc2D,IAIzC,CAAE,MAAOuB,GACPC,QAAQ5I,MAAM2I,GAEgB,MAA1BA,GAAK1I,UAAUC,OAEuB,mBAAtCyI,EAAI1I,SAASH,KAAK+I,OAAO1J,MAAM,IAC/BwJ,EAAI1I,SAASH,KAAK+I,QAAQ1J,MAAM,GAAG2J,SAAS,yCAE5C5D,EAAS,2CACAyD,EAAI1I,SAASH,KAAK+I,QAAQ1J,MAAM,IAAI2J,SAAS,yBACtD5D,EAAS,4BAETA,EAAS,iCAGXA,EADmC,MAA1ByD,GAAK1I,UAAUC,QACf6I,EAAAA,EAAAA,GAAE,uBAEF,0CAEb,CAAC,QACC1D,GAAgB,EAClB,GA8DiDrF,MAAiB,KAAVA,EAAa4D,SAAA,EAC/DC,EAAAA,EAAAA,KAACF,EAAO,CAAAC,SAAE2D,KACT7C,IACCb,EAAAA,EAAAA,KAACF,EAAU,CAAAC,SAAC,6DAEdC,EAAAA,EAAAA,KAACF,EAAY,CAACoE,GAAI,SAASX,KAAuBxD,SAAC,mCAGhDmD,IAAiBrB,GAAaG,KAC/BnC,EAAAA,EAAAA,MAAAM,EAAAA,SAAA,CAAAJ,SAAA,EACEF,EAAAA,EAAAA,MAACC,EAAmB,CAACvB,KAAM,EAAEwB,SAAA,EAC3BC,EAAAA,EAAAA,KAACF,EAAY,CAAAC,SAAC,gBACdC,EAAAA,EAAAA,KAACF,EAAO,CACNqF,KAAK,YACL9E,KAAK,OACL+E,MAAOvD,EACPwD,SAAWC,GAAMxD,EAAawD,EAAEhB,OAAOc,OACvCjJ,MAAOuF,GAA8B,KAAdG,EACvB,cAAY,qCAGhBhC,EAAAA,EAAAA,MAACC,EAAmB,CAACvB,KAAM,EAAEwB,SAAA,EAC3BC,EAAAA,EAAAA,KAACF,EAAY,CAAAC,SAAC,eACdC,EAAAA,EAAAA,KAACF,EAAO,CACNqF,KAAK,WACL9E,KAAK,OACL+E,MAAOpD,EACPqD,SAAWC,GAAMrD,EAAYqD,EAAEhB,OAAOc,OACtCjJ,MAAOuF,GAA6B,KAAbM,EACvB,cAAY,uCAKpBnC,EAAAA,EAAAA,MAACC,EAAmB,CAAAC,SAAA,EAClBC,EAAAA,EAAAA,KAACF,EAAY,CAAAC,SAAC,mBACdC,EAAAA,EAAAA,KAACF,EAAO,CACNqF,KAAK,QACL9E,KAAK,QACLgF,SAAWC,IACL5D,GAAc2B,GAAWiC,EAAEhB,OAAOc,OACtCtC,GAASwC,EAAEhB,OAAOc,MAAM,EAE1BA,MAAO9J,GACPiK,SAAUd,GACV3F,MAAO2F,GACPe,OAAQA,IAAMnC,GAAW/H,IACzBa,MAAOA,EAAM8I,SAAS,SACtBQ,SAAUhB,IAA6B,OAAIjJ,EAC3C,cAAY,mBAGf0H,IACClD,EAAAA,EAAAA,KAAC0F,EAAAA,EAAc,KAEf7F,EAAAA,EAAAA,MAACC,EAAmB,CAAAC,SAAA,EAClBC,EAAAA,EAAAA,KAACF,EAAY,CAAAC,SAAC,uBACdC,EAAAA,EAAAA,KAACF,EAAO,CACNqF,KAAK,WACLC,MAAOjD,GACP9B,KAAK,WACLgF,SAAWC,GAAMlD,GAAYkD,EAAEhB,OAAOc,OACtCjJ,OACGuF,GAAgBS,GAASwD,SAAWxD,GAASwD,OAAS,GAAKxD,GAASwD,OAAS,IAEhF,cAAY,mCAIlB3F,EAAAA,EAAAA,KAACF,EAAc,CAAAC,SAAE5D,KACjB0D,EAAAA,EAAAA,MAAC+F,GAAe,CAAA7F,SAAA,EACdC,EAAAA,EAAAA,KAACI,EAAAA,GAAM,CACLC,KAAK,SACLwF,SACEtE,GACC2B,KAAkB5H,KACjB4H,MAAmBrB,GAAaG,GAAY1G,IAAS6G,KACvDhG,EAAM8I,SAAS,SAEjB,cAAY,kCAAiClF,SAC9C,aAGAmD,IACCrD,EAAAA,EAAAA,MAACiG,GAAU,CACTxF,QAASA,KACHyC,IAAmBD,GAAS,IAChCK,IAAiB,EAAM,EACvBpD,SAAA,CACH,WACUgD,IAAqB,iCAGhClD,EAAAA,EAAAA,MAACiG,GAAU,CAACxF,QAASA,IAAM6C,IAAiB,GAAMpD,SAAA,EAChDC,EAAAA,EAAAA,KAAC+F,EAAAA,GAAI,CAACZ,KAAK,OAAO3B,KAAK,OAAO,0BAKpC3D,EAAAA,EAAAA,MAACC,EAAQ,CAAAC,SAAA,CAAC,sCAERC,EAAAA,EAAAA,KAACF,EAAY,CAACF,KAAK,SAAS0E,OAAO,SAAQvE,SAAC,sBAG5CC,EAAAA,EAAAA,KAAA,QAAAD,SAAO,SACPC,EAAAA,EAAAA,KAACF,EAAY,CAACF,KAAK,WAAW0E,OAAO,SAAQvE,SAAC,6BAQ1D,EAIA,MAAM6F,GAAkBnJ,EAAAA,GAAOC,GAAG;;;;EAM5BoJ,GAAarJ,EAAAA,GAAOC,GAAG;;;;;;WAMlBE,EAAAA,GAAOiB;IACdV,EAAAA,GAAMQ;;;;aAIGf,EAAAA,GAAOoJ;;sCC9UAC,OAAOC,OAAOC,GAAAA,GAAaC,KAAKC,IAAI,CACtDC,KAAKC,EAAAA,GAAAA,IAAmBF,GACxBA,KAAMA,EACNjB,MAAOiB,MAmGT,I,YCvGwBJ,OAAOC,OAAOM,GAAAA,GAAsBJ,KAAKC,IAAI,CACnEC,KAAKC,EAAAA,GAAAA,IAAmBF,GACxBA,KAAMA,EACNjB,MAAOiB,MAGgBJ,OAAOC,OAAOO,GAAAA,GAAqBL,KAAKC,IAAI,CACnEC,KAAKC,EAAAA,GAAAA,IAAmBF,GACxBA,KAAMA,EACNjB,MAAOiB,M,SCTe,CACtB,yBACA,yBACA,qBACA,iBACAD,KAAKC,IAAI,CACTC,KAAKC,EAAAA,GAAAA,IAAmBF,GACxBA,KAAMA,EACNjB,MAAOiB,MAgGT,I,0iEC4BA,OArGcK,EAAGjL,aAAYkL,oBAC3B,MAA0DxL,EAAAC,IAAxBC,EAAAA,EAAAA,WAAkB,GAAM,GAAnDuL,EAASzL,EAAA,GAAE0L,EAAY1L,EAAA,GAEiCmG,EAAAlG,IAAzBC,EAAAA,EAAAA,UAAsB,CAAC,GAAE,GAAxDyL,EAAWxF,EAAA,GAAEyF,EAAczF,EAAA,GAC1BkD,EACNsC,EADMtC,MAAOwC,EACbF,EADaE,YAAaC,EAC1BH,EAD0BG,iBAAkBvG,EAC5CoG,EAD4CpG,WAAYwG,EACxDJ,EADwDI,qBAAsBC,EAC9EL,EAD8EK,QAIhF,IAAIC,EAGAC,EAFAC,EAAmB,CAAC,EACpBzB,GAAW,EAGf,OAAQpK,EAAWF,MACjB,KAAK,EACH6L,EAAW,YACXvB,IAAamB,GAAarB,QAAUsB,GAAkBtB,QACnB,IAA/BlK,EAAW+E,WAAWjF,MAExBsK,MAAenF,IAAewG,GAAwBC,IACtDE,GACErH,EAAAA,EAAAA,KAACuH,GAAAA,EAA4B,CAACT,YAAaA,EAAaC,eAAgBA,MAI1EO,EAAc,CACZ5G,WAAYjF,EAAW+E,WAAWC,aAAaC,YAEjD2G,GACErH,EAAAA,EAAAA,KAACuH,GAAAA,EAA4B,CAC3BT,YAAaA,EACbC,eAAgBA,EAChBS,uBAAwBF,EAAY5G,cAI1C,MACF,KAAK,EAEH0G,EAAW,UACXE,EAAc,CACZG,QAAShM,EAAW+E,WAAWC,aAAaE,cAE9CkF,GAAYrB,GAAOmB,OACnB0B,GACErH,EAAAA,EAAAA,KAAC0H,GAAAA,EAAc,CACbZ,YAAaA,EACbC,eAAgBA,EAChBzL,MAAOG,EAAWH,MAClBqM,mBAAoBL,EAAYG,UAGpC,MACF,KAAK,EAEHL,EAAW,QACXE,EAAc,CACZ5G,WAAYjF,EAAW+E,WAAWC,aAAaC,YAEjDmF,GAAYmB,GAAarB,OACzB0B,GACErH,EAAAA,EAAAA,KAAC4H,GAAAA,EAAwB,CACvBd,YAAaA,EACbC,eAAgBA,EAChBS,uBAAwBF,EAAY5G,aAc5C,OACEb,EAAAA,EAAAA,MAACC,EAAY,CAAAC,SAAA,EACXC,EAAAA,EAAAA,KAACF,EAAe,CAAAC,UACdF,EAAAA,EAAAA,MAACC,EAAS,CAAAC,SAAA,EACRC,EAAAA,EAAAA,KAACF,EAAM,CAACG,IAAKC,KACbF,EAAAA,EAAAA,KAACF,EAAW,CAAAC,SAAC,0BACbC,EAAAA,EAAAA,KAACF,EAAU,CAAAC,SAAC,yDAGhBC,EAAAA,EAAAA,KAACF,EAAgB,CAAAC,UACfF,EAAAA,EAAAA,MAACC,EAAe,CAAAC,SAAA,EACdC,EAAAA,EAAAA,KAACF,EAAY,CAAAC,SAAC,8CACdC,EAAAA,EAAAA,KAACF,EAAU,CAAAC,SAAC,0DACXsH,GACDrH,EAAAA,EAAAA,KAACI,EAAAA,GAAM,CAACC,KAAK,SAASwF,SAAUA,GAAYe,EAAWtG,QAvB1C1E,UACnBiL,GAAa,SACPF,EAAcS,EAAQS,GAAAA,GAAA,GACvBP,GACAR,IAELD,GAAa,EAAM,EAiBgE9G,SAAC,kBAKrE,E,sgEC3FnB,OAnCA,WACE,MAGE5E,EAAAC,IAH8BC,EAAAA,EAAAA,UAAS,CACvCyM,eAAgBC,QAAQC,KAAKC,SAC7BC,gBAAgB,IAChB,GAHKC,EAAQhN,EAAA,GAAEiN,EAAWjN,EAAA,GAKtBM,EAAa4M,IAMb1B,EAAgB/K,MAAOwL,EAAUN,KACrC,MAAMwB,QAAaC,EAAAA,EAAAA,IAAQ,CAAEnB,WAAUN,gBAEtB,YAAbM,SAA8BoB,EAAAA,EAAAA,IAAiBF,IACnDG,EAAAA,EAAAA,IAASH,GAETF,EAAWP,GAAAA,GAAC,CAAC,EAAIM,GAAQ,IAAED,gBAAgB,IAAO,EAGpD,OAAKC,EAASL,eAGTK,EAASD,eAIVC,EAASL,gBAAkBK,EAASD,gBAC/BlI,EAAAA,EAAAA,KAAC0I,EAAgB,CAACjN,WAAYA,IAGhC,MAPEuE,EAAAA,EAAAA,KAAC0G,GAAK,CAACjL,WAAYA,EAAYkL,cAAeA,KAH9C3G,EAAAA,EAAAA,KAAC2I,GAAK,CAAClN,WAAYA,EAAYmF,cAdlBA,KACpBwH,EAAWP,GAAAA,GAAC,CAAC,EAAIM,GAAQ,IAAEL,gBAAgB,IAAO,GAwBtD,C","sources":["webpack://halo/./app/client/src/views/SignUp/Hooks/useInviteCode.js","webpack://halo/./app/client/src/views/SignUp/SignUp.styles.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/ConfirmationPage.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step1/Step1.tsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/Sponsor.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/UniversityAdmin.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/UniversityScientist.tsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/Step2.tsx","webpack://halo/./app/client/src/views/SignUp/SignUp.jsx"],"sourcesContent":["import api from \"@requests/request\";\nimport { useEffect, useState } from \"react\";\n\n// invite type: 0 = undefined state, 1 = company invite, 2 = opportunity invite\n// user role: 0 = scientist, 1 = sponsor, 2 = university admin\n\nconst urlSearchParams = new URLSearchParams(window.location.search);\n\nconst getInviteInfoByCode = async () => {\n const invite_code = urlSearchParams.get(\"i\");\n if (!invite_code) return { email: \"\" };\n\n const responseJson = await api.get(`/invited_user`, { params: { invite_code } });\n return responseJson.data;\n};\n\nfunction useInviteCode() {\n const [inviteInfo, setInviteInfo] = useState({ email: \"\", role: undefined });\n\n useEffect(() => {\n (async () => {\n try {\n setInviteInfo(await getInviteInfoByCode());\n } catch (error) {\n // Ignore 404 if can't find invite info\n if (error.response.status !== 404) {\n throw error;\n }\n }\n })();\n }, []);\n\n return inviteInfo;\n}\n\nexport default useInviteCode;\n","import { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { Link } from \"react-router-dom\";\nimport { Form } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\nimport Dropdown from \"../../components/libraryOld/SelectionMenus/Dropdown\";\n\nconst { TABLET_MEDIA_QUERY } = WINDOW_DIMENSIONS;\n\nconst CUSTOM_MEDIA_QUERY = `@media screen and (max-width: 930px)`;\n\nexport const SignUpPage = styled.div`\n display: flex;\n flex: 1;\n flex-direction: row;\n height: 100%;\n`;\n\nexport const LeftContainer = styled.div`\n max-width: 600px;\n width: 100%;\n display: inline-flex;\n justify-content: center;\n\n margin: 0;\n background-color: ${COLORS.NEUTRAL_900};\n color: ${COLORS.WHITE};\n`;\nexport const InfoBox = styled.div`\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n\n max-width: 500px;\n padding-top: 200px;\n padding-left: 45px;\n padding-right: 30px;\n\n ${CUSTOM_MEDIA_QUERY} {\n display: none;\n }\n`;\nexport const Logo = styled.img`\n width: 100px;\n padding-bottom: 30px;\n`;\n\nexport const LogoTitle = styled.div`\n ${FONTS.HEADING_4_SEMIBOLD};\n padding-bottom: 10px;\n`;\n\nexport const LogoDesc = styled.div`\n ${FONTS.REGULAR_1};\n`;\n\nexport const RightContainer = styled.div`\n display: flex;\n align-items: center;\n margin: 0;\n flex-shrink: 0;\n`;\n\nexport const SignUpContainer = styled(Form)`\n display: flex;\n flex: 1;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n background-color ${COLORS.WHITE};\n\n padding: 100px !important;\n padding-top: 150px;\n\n width: 660px !important;\n\n ${TABLET_MEDIA_QUERY} {\n align-items: center !important;\n padding: 30px !important;\n width: 100vw !important;\n max-width: 660px !important;\n }\n`;\n\nexport const StepContainer = styled.div`\n ${FONTS.REGULAR_2};\n padding: 100px;\n padding-top: 150px;\n\n width: 660px;\n\n ${TABLET_MEDIA_QUERY} {\n align-items: center;\n padding: 30px;\n width: 100vw;\n max-width: 660px;\n }\n`;\n\nexport const Title = styled.div`\n ${FONTS.HEADING_4_SEMIBOLD};\n color: ${COLORS.BLACK};\n width: 100%;\n margin-bottom: 20px;\n`;\n\nexport const SmallTitle = styled.div`\n ${FONTS.SEMIBOLD_1};\n color: ${COLORS.BLACK};\n width: 100%;\n margin-bottom: 15px;\n`;\n\nexport const Subtitle = styled.div`\n ${FONTS.REGULAR_2};\n color: ${COLORS.BLACK};\n padding-bottom: 16px;\n`;\n\nexport const SignInLink = styled(Link)`\n display: inline-block;\n ${FONTS.REGULAR_2};\n width: 100%;\n color: ${COLORS.HALO_BLUE};\n margin-bottom: 20px;\n &:hover {\n color: ${COLORS.HALO_BLUE};\n }\n`;\n\nexport const QuestionContainer = styled(Form.Field)`\n width: ${(p) => (p.half && \"49%\") || \"100%\"};\n margin-bottom: 20px !important;\n ${TABLET_MEDIA_QUERY} {\n width: 100% !important;\n }\n`;\n\nexport const InputTitle = styled.div`\n ${FONTS.REGULAR_2};\n color: ${COLORS.BLACK};\n padding-bottom: 5px;\n`;\nexport const Input = styled.input`\n &&&& {\n ${FONTS.REGULAR_2};\n height: 38px;\n margin: 0 auto;\n padding: 11px 28px 11px 10px;\n color: ${COLORS.BLACK};\n border: 1px solid ${(props) => (props.error ? COLORS.RED : COLORS.NEUTRAL_400)};\n border-radius: 3px;\n\n ${({ fixed }) =>\n fixed &&\n `\n color: ${COLORS.NEUTRAL_500};\n border: none;\n background-color: ${COLORS.NEUTRAL_200};\n pointer-events: none;\n `}\n }\n &&::placeholder {\n color: ${COLORS.NEUTRAL_500};\n }\n`;\nexport const FixedInput = styled.input`\n &&&& {\n ${FONTS.REGULAR_2};\n height: 38px;\n margin: 0 auto;\n padding: 11px 28px 11px 10px;\n color: ${COLORS.NEUTRAL_500};\n border: none;\n border-radius: 3px;\n background-color: ${COLORS.NEUTRAL_200};\n pointer-events: none;\n }\n`;\nexport const Footer = styled.div`\n display: inline-block;\n ${FONTS.REGULAR_2};\n width: 100%;\n color: ${COLORS.BLACK};\n margin-top: 24px;\n`;\nexport const ErrorMessage = styled.div`\n display: inline-block;\n ${FONTS.REGULAR_2};\n color: ${COLORS.RED};\n width: 100%;\n margin-bottom: 24px;\n`;\nexport const FooterLink = styled.a`\n display: inline-block;\n ${FONTS.REGULAR_2};\n color: ${COLORS.HALO_BLUE};\n &:hover {\n color: ${COLORS.HALO_BLUE};\n }\n`;\n\nexport const DropdownRow = styled.div`\n display: flex;\n flex-direction: column;\n position: relative;\n margin-bottom: 28px;\n width: 100%;\n max-width: 400px !important;\n`;\nexport const DropdownTitle = styled.div`\n ${FONTS.REGULAR_2};\n width: 100% !important;\n padding-bottom: 7px;\n color: ${COLORS.BLACK};\n`;\n\nexport const DropdownSubtitle = styled(DropdownTitle)`\n ${FONTS.REGULAR_3};\n margin-top: -4px;\n color: ${COLORS.NEUTRAL_500};\n`;\n\nexport const CompanyDropdown = styled(Dropdown)`\n ${FONTS.REGULAR_2};\n .select__indicator.select__indicator {\n color: ${COLORS.BLACK};\n }\n`;\n\nexport const CompanySelection = styled(CompanyDropdown)`\n margin-left: 0;\n`;\n\nexport const ContactLink = styled.div`\n ${FONTS.REGULAR_2};\n text-align: left;\n width: 90%;\n margin-top: 7px;\n color: ${COLORS.BLACK};\n`;\nexport const GeneralText = styled.div`\n ${FONTS.REGULAR_1};\n color: ${COLORS.BLACK};\n padding-bottom: 20px;\n`;\n","import { Button } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { marketplacePath } from \"@routes/utils\";\nimport * as S from \"../SignUp.styles\";\n\nfunction ConfirmationPage({ inviteInfo }) {\n const routeTo = (newLocation) => {\n window.location.href = newLocation;\n };\n\n return (\n <S.SignUpPage>\n <S.LeftContainer>\n <S.InfoBox>\n <S.Logo src={haloLogo} />\n <S.LogoTitle>Move Science Forward</S.LogoTitle>\n <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n </S.InfoBox>\n </S.LeftContainer>\n <S.RightContainer>\n <S.SignUpContainer>\n <S.Title>Registration complete!</S.Title>\n {inviteInfo.role === 0 && (\n <>\n <S.GeneralText>Thank you for creating a Halo account.</S.GeneralText>\n <S.GeneralText>\n Let’s head over to the marketplace where you can view our latest funding\n opportunities.\n </S.GeneralText>\n <Button\n type=\"button\"\n onClick={() => routeTo(marketplacePath())}\n data-testid=\"sign-up-confirmation-button\"\n >\n View marketplace\n </Button>\n </>\n )}\n {inviteInfo.role === 2 && (\n <>\n <S.GeneralText>\n You are now part of {inviteInfo?.invited_by?.profile_info?.university}'s team on\n Halo.\n </S.GeneralText>\n <S.GeneralText>Let’s head over to your university team dashboard.</S.GeneralText>\n <Button\n type=\"button\"\n onClick={() => routeTo(\"/university_dashboard/team\")}\n data-testid=\"sign-up-confirmation-button\"\n >\n View dashboard\n </Button>\n </>\n )}\n {inviteInfo.role === 1 && (\n <>\n <S.GeneralText>\n You are now part of {inviteInfo?.invited_by?.profile_info?.company_name}'s team on\n Halo.\n </S.GeneralText>\n <S.GeneralText>Let’s head over to your company dashboard.</S.GeneralText>\n <Button\n type=\"button\"\n onClick={() => routeTo(\"/reviewer_dashboard\")}\n data-testid=\"sign-up-confirmation-button\"\n >\n View dashboard\n </Button>\n </>\n )}\n </S.SignUpContainer>\n </S.RightContainer>\n </S.SignUpPage>\n );\n}\n\nexport default ConfirmationPage;\n","import { SSOEnabledHint } from \"@components/SSOEnabledHint\";\nimport { Button, Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { useSearchParams } from \"@hooks/router\";\nimport { useSSOSensitiveEmail } from \"@hooks/useSSOSensitiveEmail\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { RequestableType } from \"@tsTypes/requests\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { usedPersonalEmail } from \"@utils/appUtils\";\nimport { t } from \"@utils/i18n\";\nimport { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { register } from \"src/requests/users\";\nimport styled from \"styled-components\";\nimport Validator from \"validator\";\nimport * as S from \"../../SignUp.styles.jsx\";\n\nfunction Step1({ inviteInfo, completeStep1 }) {\n const hasInviteInfo = inviteInfo.role !== undefined;\n const hasValidInviteEmail = hasInviteInfo && !usedPersonalEmail(inviteInfo.email);\n\n const [searchParams] = useSearchParams();\n const searchParamsEmail = searchParams.get(\"email\");\n const hasValidSearchParamsEmail =\n searchParamsEmail &&\n Validator.isEmail(searchParamsEmail) &&\n !usedPersonalEmail(searchParamsEmail);\n\n const [error, setError] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [hasSubmitted, setHasSubmitted] = useState(false);\n\n const [firstName, setFirstName] = useState(\"\");\n const [lastName, setLastName] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [role, setRole] = useState(UserRole.SCIENTIST);\n const [invitedUserId, setInvitedUserId] = useState(undefined);\n const { email, setEmail, isEmailSSOEnabled, redirectToSSO } = useSSOSensitiveEmail(\n searchParamsEmail ?? \"\"\n );\n const [shouldShowSSO, setShouldShowSSO] = useState(isEmailSSOEnabled);\n\n useEffect(() => {\n if (inviteInfo.email) setEmail(inviteInfo.email);\n setRole(inviteInfo.role);\n setInvitedUserId(inviteInfo.id);\n checkEmail(inviteInfo.email);\n }, [inviteInfo]);\n\n useEffect(() => {\n if (isEmailSSOEnabled) setShouldShowSSO(true);\n }, [isEmailSSOEnabled]);\n\n const checkEmail = (emailValue: string) => {\n if (!Validator.isEmpty(emailValue) && !Validator.isEmail(emailValue)) {\n setError(\"Please use a valid email\");\n } else if (usedPersonalEmail(emailValue) && !error) {\n setError(\"Please use a company or university email.\");\n } else if (usedPersonalEmail(emailValue)) {\n setError(\"Please use a company or university email.\");\n } else {\n setError(\"\");\n }\n };\n\n const invalidSubmit = () => {\n if (\n Validator.isEmpty(firstName) ||\n Validator.isEmpty(lastName) ||\n Validator.isEmpty(email) ||\n Validator.isEmpty(password)\n ) {\n setError(\"Please fill in all fields before continuing.\");\n return true;\n } else if (!Validator.isEmail(email)) {\n setError(\"Please enter a valid email address.\");\n return true;\n } else if (usedPersonalEmail(email)) {\n setError(`Please use company or university email.`);\n return true;\n } else if (!Validator.isLength(password, { min: 8, max: 30 })) {\n setError(\"Passwords must be between 8-30 characters long.\");\n return true;\n }\n return false;\n };\n\n const urlParamsQueryString = searchParams.size > 0 ? `?${searchParams.toString()}` : \"\";\n\n const handleRegister = async () => {\n setError(\"\");\n setIsSubmitting(true);\n setHasSubmitted(true);\n\n if (shouldShowSSO) {\n if (!isEmailSSOEnabled) {\n setError(\"Your email/company is not enabled to use SSO.\");\n setIsSubmitting(false);\n return;\n }\n\n redirectToSSO();\n return;\n }\n\n if (invalidSubmit()) {\n setIsSubmitting(false);\n return;\n }\n\n try {\n await register({\n firstName,\n lastName,\n email,\n password,\n role,\n invitedUserId,\n });\n\n if (!hasInviteInfo) {\n window.location.href = `/onboarding${urlParamsQueryString}`;\n } else {\n completeStep1();\n }\n } catch (err) {\n console.error(err);\n\n if (err?.response?.status === 422) {\n if (\n err.response.data.errors.email[0] === \"is not allowed\" ||\n err.response.data.errors?.email[0].includes(\"must be a company or university email\")\n ) {\n setError(\"Please use company or university email.\");\n } else if (err.response.data.errors?.email[0]?.includes(\"valid e-email address\")) {\n setError(\"Please use a valid email\");\n } else {\n setError(\"This email is already in use.\");\n }\n } else if (err?.response?.status === 403) {\n setError(t(\"error.generic_retry\"));\n } else {\n setError(\"Something went wrong. Please try again.\");\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n let invitationHeader = <>Sign up for Halo</>;\n if (hasInviteInfo) {\n const { request, invited_by } = inviteInfo;\n\n const inviterName = `${invited_by.first_name} ${invited_by.last_name}`;\n invitationHeader = <>You were invited to join Halo</>;\n\n if (request) {\n invitationHeader = (\n <>\n {inviterName} invited you to be a reviewer for{\" \"}\n {request.requestable_type === RequestableType.RFP ? (\n <Link\n to={`/research/${request.requestable.rfp_program_identifier}/${request.slug}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {request.title}\n </Link>\n ) : (\n <span>{request.title}</span>\n )}\n </>\n );\n } else if (invited_by.role === 2) {\n invitationHeader = (\n <>\n {inviterName} at {invited_by.profile_info.university} invited you to join Halo\n </>\n );\n } else if (invited_by.role === 1 && inviteInfo.role === 1) {\n invitationHeader = (\n <>\n {inviterName} invited you to join {invited_by.profile_info.company_name}’s team on\n Halo\n </>\n );\n } else if (invited_by.role === 1 && inviteInfo.role === 0) {\n invitationHeader = (\n <>\n {inviterName} invited you to join {invited_by.profile_info.company_name}’s network\n on Halo\n </>\n );\n }\n }\n\n const hasValidPrepopulatedEmail = hasValidSearchParamsEmail || hasValidInviteEmail;\n\n return (\n <S.SignUpPage>\n <S.LeftContainer>\n <S.InfoBox>\n <S.Logo src={haloLogo} />\n <S.LogoTitle>Move Science Forward</S.LogoTitle>\n <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n </S.InfoBox>\n </S.LeftContainer>\n <S.RightContainer>\n <S.SignUpContainer onSubmit={handleRegister} error={error !== \"\"}>\n <S.Title>{invitationHeader}</S.Title>\n {hasInviteInfo && (\n <S.Subtitle>To get started, let’s quickly set up your account.</S.Subtitle>\n )}\n <S.SignInLink to={`/login${urlParamsQueryString}`}>\n Already have a Halo account?\n </S.SignInLink>\n {(!shouldShowSSO || firstName || lastName) && (\n <>\n <S.QuestionContainer half={1}>\n <S.InputTitle>First Name</S.InputTitle>\n <S.Input\n name=\"firstName\"\n type=\"text\"\n value={firstName}\n onChange={(e) => setFirstName(e.target.value)}\n error={hasSubmitted && firstName === \"\"}\n data-testid=\"user-invite-first-name-input\"\n />\n </S.QuestionContainer>\n <S.QuestionContainer half={1}>\n <S.InputTitle>Last Name</S.InputTitle>\n <S.Input\n name=\"lastName\"\n type=\"text\"\n value={lastName}\n onChange={(e) => setLastName(e.target.value)}\n error={hasSubmitted && lastName === \"\"}\n data-testid=\"user-invite-last-name-input\"\n />\n </S.QuestionContainer>\n </>\n )}\n <S.QuestionContainer>\n <S.InputTitle>Email Address</S.InputTitle>\n <S.Input\n name=\"email\"\n type=\"email\"\n onChange={(e) => {\n if (hasSubmitted) checkEmail(e.target.value);\n setEmail(e.target.value);\n }}\n value={email}\n readOnly={hasValidPrepopulatedEmail}\n fixed={hasValidPrepopulatedEmail}\n onBlur={() => checkEmail(email)}\n error={error.includes(\"email\")}\n tabIndex={hasValidPrepopulatedEmail ? -1 : undefined}\n data-testid=\"email-input\"\n />\n </S.QuestionContainer>\n {shouldShowSSO ? (\n <SSOEnabledHint />\n ) : (\n <S.QuestionContainer>\n <S.InputTitle>Create a Password</S.InputTitle>\n <S.Input\n name=\"password\"\n value={password}\n type=\"password\"\n onChange={(e) => setPassword(e.target.value)}\n error={\n !hasSubmitted && password.length && (password.length < 8 || password.length > 30)\n }\n data-testid=\"user-invite-password-input\"\n />\n </S.QuestionContainer>\n )}\n <S.ErrorMessage>{error}</S.ErrorMessage>\n <SubmitContainer>\n <Button\n type=\"submit\"\n disabled={\n isSubmitting ||\n (shouldShowSSO && !email) ||\n (!shouldShowSSO && !(firstName && lastName && email && password)) ||\n error.includes(\"email\")\n }\n data-testid=\"user-invite-step1-submit-button\"\n >\n Continue\n </Button>\n {shouldShowSSO ? (\n <SubmitText\n onClick={() => {\n if (isEmailSSOEnabled) setEmail(\"\");\n setShouldShowSSO(false);\n }}\n >\n Go back {isEmailSSOEnabled && \" and use a different email\"}\n </SubmitText>\n ) : (\n <SubmitText onClick={() => setShouldShowSSO(true)}>\n <Icon name=\"Lock\" size=\"sm\" />\n Sign in with SSO\n </SubmitText>\n )}\n </SubmitContainer>\n <S.Footer>\n By signing up you agree to the \n <S.FooterLink href=\"/terms\" target=\"_blank\">\n Terms of Service\n </S.FooterLink>\n <span>{\" & \"}</span>\n <S.FooterLink href=\"/privacy\" target=\"_blank\">\n Privacy Policy\n </S.FooterLink>\n </S.Footer>\n </S.SignUpContainer>\n </S.RightContainer>\n </S.SignUpPage>\n );\n}\n\nexport default Step1;\n\nconst SubmitContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n`;\n\nconst SubmitText = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n\n text-decoration: underline;\n color: ${COLORS.BLACK};\n ${FONTS.REGULAR_2}\n\n &:hover {\n cursor: pointer;\n color: ${COLORS.BLUE_900};\n }\n`;\n","import { Button, TextInput } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { SponsorRole } from \"@tsTypes/sponsorProfiles\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport { COMPANY_SPONSOR_TITLE_LIMIT } from \"src/views/Onboarding/Step3/Step3.jsx\";\nimport * as S from \"../../SignUp.styles\";\n\nconst roleOptions = Object.values(SponsorRole).map((text) => ({\n key: convertToSnakeCase(text),\n text: text,\n value: text,\n}));\n\nfunction SponsorStep(props) {\n const { inviteInfo, completeStep2 } = props;\n\n const [profileInfo, setProfileInfo] = useState({ role: \"\", title: \"\" });\n\n const handleRole = (e, selection) => {\n if (selection?.action == \"select-option\") {\n setProfileInfo({\n ...profileInfo,\n role: e.value,\n });\n }\n };\n\n const onContinue = () => {\n completeStep2({\n ...profileInfo,\n company: inviteInfo?.invited_by?.profile_info?.company_name ?? \"\",\n });\n };\n\n return (\n <S.SignUpPage>\n <S.LeftContainer>\n <S.InfoBox>\n <S.Logo src={haloLogo} />\n <S.LogoTitle>Move Science Forward</S.LogoTitle>\n <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n </S.InfoBox>\n </S.LeftContainer>\n <S.RightContainer>\n <S.SignUpContainer>\n <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n <S.DropdownRow>\n <S.DropdownTitle>Company Name</S.DropdownTitle>\n <S.FixedInput\n type=\"text\"\n name=\"company\"\n value={inviteInfo.invited_by.profile_info.company_name}\n error={!inviteInfo.invited_by.profile_info.company_name}\n readOnly\n />\n </S.DropdownRow>\n <S.DropdownRow>\n <S.DropdownTitle>Which of the following best describes your role?</S.DropdownTitle>\n <S.CompanyDropdown\n placeholder=\"Select your role\"\n options={roleOptions}\n onChange={handleRole}\n value={profileInfo.role}\n data-testid=\"user-invite-sponsor-role-dropdown\"\n />\n </S.DropdownRow>\n <S.DropdownRow>\n <S.DropdownTitle>What’s your job title?</S.DropdownTitle>\n <TextInput\n value={profileInfo.title || \"\"}\n placeholder=\"Enter your job title\"\n onChange={(e) => {\n setProfileInfo({\n ...profileInfo,\n title: e.target.value,\n });\n }}\n errors={[\n {\n hasError: profileInfo.title?.length > COMPANY_SPONSOR_TITLE_LIMIT,\n errorMessage: `Job title must be less than ${COMPANY_SPONSOR_TITLE_LIMIT} characters`,\n },\n ]}\n hideClearButton\n data-testid=\"user-invite-sponsor-title-input\"\n />\n </S.DropdownRow>\n <Button\n type=\"submit\"\n disabled={\n !(\n inviteInfo.invited_by.profile_info.company_name &&\n profileInfo.role &&\n profileInfo.title &&\n profileInfo.title.length <= COMPANY_SPONSOR_TITLE_LIMIT\n )\n }\n onClick={onContinue}\n data-testid=\"user-invite-sponsor-submit-button\"\n >\n Submit\n </Button>\n </S.SignUpContainer>\n </S.RightContainer>\n </S.SignUpPage>\n );\n}\n\nexport default SponsorStep;\n","import { Button } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { UniversityAdminRoles, UniversityExpertise } from \"@tsTypes/universityProfiles\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport * as S from \"../../SignUp.styles\";\n\nconst userRoleOptions = Object.values(UniversityAdminRoles).map((text) => ({\n key: convertToSnakeCase(text),\n text: text,\n value: text,\n}));\n\nconst expertiseOptions = Object.values(UniversityExpertise).map((text) => ({\n key: convertToSnakeCase(text),\n text: text,\n value: text,\n}));\n\nfunction UniversityAdminStep(props) {\n const { inviteInfo, completeStep2 } = props;\n\n const [role, setRole] = useState(\"\");\n const [expertise, setExpertise] = useState([]);\n\n const disabled = !(inviteInfo.invited_by.profile_info.university && role && expertise);\n\n const handleRole = (e, selection) => {\n if (selection?.action == \"select-option\") {\n setRole(e.value);\n }\n };\n\n const handleExpertise = (e, selection) => {\n if (selection?.action === \"select-option\" && e.length <= 3) {\n setExpertise(e.map((selection) => selection.value) || []);\n }\n };\n\n const onContinue = () => {\n completeStep2({\n role,\n universityExpertise: expertise,\n university: inviteInfo.invited_by.profile_info.university,\n });\n };\n\n return (\n <S.SignUpPage>\n <S.LeftContainer>\n <S.InfoBox>\n <S.Logo src={haloLogo} />\n <S.LogoTitle>Move Science Forward</S.LogoTitle>\n <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n </S.InfoBox>\n </S.LeftContainer>\n <S.RightContainer>\n <S.SignUpContainer>\n <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n <S.DropdownRow>\n <S.DropdownTitle>Research Institution</S.DropdownTitle>\n <S.FixedInput\n type=\"text\"\n name=\"university\"\n value={inviteInfo.invited_by.profile_info.university}\n error={!inviteInfo.invited_by.profile_info.university}\n readOnly\n />\n <S.ContactLink>\n <a style={{ textDecoration: \"underline\" }} href=\"/contact\" target=\"_blank\">\n Contact us\n </a>{\" \"}\n if you don't see your institution\n </S.ContactLink>\n </S.DropdownRow>\n <S.DropdownRow>\n <S.DropdownTitle>Which of the following best describes your role?</S.DropdownTitle>\n <S.CompanyDropdown\n placeholder=\"Select your role\"\n options={userRoleOptions}\n onChange={handleRole}\n value={role}\n data-testid=\"user-invite-admin-role-dropdown\"\n />\n </S.DropdownRow>\n <S.DropdownRow>\n <S.DropdownTitle>\n Where do you focus your efforts on behalf of your faculty?\n </S.DropdownTitle>\n <S.CompanyDropdown\n placeholder=\"Search areas of expertise\"\n isMulti\n closeMenuOnSelect={false}\n value={expertise || []}\n options={expertiseOptions}\n onChange={handleExpertise}\n maxOptions={3}\n data-testid=\"user-invite-admin-research-areas-dropdown\"\n />\n </S.DropdownRow>\n <Button\n type=\"submit\"\n disabled={disabled}\n onClick={onContinue}\n data-testid=\"user-invite-admin-submit-button\"\n >\n Submit\n </Button>\n </S.SignUpContainer>\n </S.RightContainer>\n </S.SignUpPage>\n );\n}\n\nexport default UniversityAdminStep;\n","import { Button } from \"@components/library\";\nimport KeywordsDropdown from \"@components/library/Dropdowns/KeywordsDropdown/KeywordsDropdown\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport * as S from \"../../SignUp.styles\";\n\nconst userRoleOptions = [\n \"Principal Investigator\",\n \"Postdoctoral Scientist\",\n \"Research Associate\",\n \"PhD Candidate\",\n].map((text) => ({\n key: convertToSnakeCase(text),\n text: text,\n value: text,\n}));\n\nfunction UniversityScientistStep(props) {\n const { inviteInfo, completeStep2 } = props;\n\n const [profileInfo, setProfileInfo] = useState<{ role: string; areasOfExpertise: string[] }>({\n role: \"\",\n areasOfExpertise: [],\n });\n\n const disabled = !(\n inviteInfo.invited_by.profile_info.university &&\n profileInfo.role &&\n profileInfo.areasOfExpertise.length\n );\n\n const handleRole = (e, selection) => {\n if (selection?.action == \"select-option\") {\n setProfileInfo({ ...profileInfo, role: e.value });\n }\n };\n\n const onContinue = () => {\n completeStep2({\n areasOfExpertise: profileInfo.areasOfExpertise,\n role: profileInfo.role,\n university: inviteInfo.invited_by.profile_info.university,\n });\n };\n\n return (\n <S.SignUpPage>\n <S.LeftContainer>\n <S.InfoBox>\n <S.Logo src={haloLogo} />\n <S.LogoTitle>Move Science Forward</S.LogoTitle>\n <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n </S.InfoBox>\n </S.LeftContainer>\n <S.RightContainer>\n <S.SignUpContainer>\n <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n <S.DropdownRow>\n <S.DropdownTitle>Research Institution</S.DropdownTitle>\n <S.FixedInput\n name=\"university\"\n value={inviteInfo.invited_by.profile_info.university}\n type=\"text\"\n readOnly\n error={!inviteInfo.invited_by.profile_info.university ? 1 : 0}\n />\n <S.ContactLink>\n <a style={{ textDecoration: \"underline\" }} href=\"/contact\" target=\"_blank\">\n Contact us\n </a>{\" \"}\n if you don’t see your institution\n </S.ContactLink>\n </S.DropdownRow>\n <S.DropdownRow>\n <S.DropdownTitle>Which of the following best describes your role?</S.DropdownTitle>\n <S.CompanyDropdown\n placeholder=\"Select your role\"\n options={userRoleOptions}\n onChange={handleRole}\n value={profileInfo.role}\n data-testid=\"user-invite-university-scientist-role-dropdown\"\n />\n </S.DropdownRow>\n <S.DropdownRow>\n <S.DropdownTitle>What are your areas of expertise?</S.DropdownTitle>\n <S.DropdownSubtitle>You can add up to 5.</S.DropdownSubtitle>\n <KeywordsDropdown\n keywordType=\"area_of_expertise\"\n targetType=\"scientist\"\n value={profileInfo.areasOfExpertise ?? []}\n onChange={(selection) =>\n setProfileInfo({ ...profileInfo, areasOfExpertise: selection })\n }\n />\n </S.DropdownRow>\n <Button\n type=\"submit\"\n disabled={disabled}\n onClick={onContinue}\n data-testid=\"user-invite-university-scientist-submit-button\"\n >\n Submit\n </Button>\n </S.SignUpContainer>\n </S.RightContainer>\n </S.SignUpPage>\n );\n}\n\nexport default UniversityScientistStep;\n","import { Button } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { ReactNode, useState } from \"react\";\nimport CompanySponsor from \"src/views/Onboarding/Step3/CompanySponsor\";\nimport ResearchInstitutionAdmin from \"src/views/Onboarding/Step3/ResearchInstitutionAdmin.jsx\";\nimport ResearchInstitutionScientist from \"src/views/Onboarding/Step3/ResearchInstitutionScientist\";\n\nimport * as S from \"../../SignUp.styles.jsx\";\n\ninterface ProfileInfo {\n company?: string;\n role?: string;\n title?: string;\n companyName?: string;\n companyURL?: string;\n country?: string;\n disciplines?: string[];\n areasOfExpertise?: string[];\n university?: string[];\n universityExpertise?: string;\n universityHasCountry?: boolean;\n}\n\ninterface Props {\n inviteInfo: {\n role: number;\n email: string;\n invited_by: {\n role: number;\n profile_info: {\n company_name?: string;\n university?: string;\n };\n };\n };\n completeStep2: (userType: string, profileInfo: ProfileInfo) => any;\n}\n\nconst Step2 = ({ inviteInfo, completeStep2 }: Props) => {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const [profileInfo, setProfileInfo] = useState<ProfileInfo>({});\n const { title, disciplines, areasOfExpertise, university, universityHasCountry, country } =\n profileInfo;\n\n // Role-specific variables\n let userType: string;\n let prefillData: any = {};\n let disabled = true;\n let StepInputs: ReactNode;\n\n switch (inviteInfo.role) {\n case 0:\n userType = \"scientist\";\n disabled = !(disciplines?.length && areasOfExpertise?.length);\n if (inviteInfo.invited_by.role === 1) {\n // Sponsor invited scientist to network\n disabled ||= !(university && (universityHasCountry || country));\n StepInputs = (\n <ResearchInstitutionScientist profileInfo={profileInfo} setProfileInfo={setProfileInfo} />\n );\n } else {\n // University admin invited scientist to university\n prefillData = {\n university: inviteInfo.invited_by.profile_info.university,\n };\n StepInputs = (\n <ResearchInstitutionScientist\n profileInfo={profileInfo}\n setProfileInfo={setProfileInfo}\n prefillInstitutionName={prefillData.university}\n />\n );\n }\n break;\n case 1:\n // Sponsor invited sponsor to company\n userType = \"sponsor\";\n prefillData = {\n company: inviteInfo.invited_by.profile_info.company_name,\n };\n disabled = !title?.length;\n StepInputs = (\n <CompanySponsor\n profileInfo={profileInfo}\n setProfileInfo={setProfileInfo}\n email={inviteInfo.email}\n prefillCompanyName={prefillData.company}\n />\n );\n break;\n case 2:\n // University admin invited university admin to university\n userType = \"admin\";\n prefillData = {\n university: inviteInfo.invited_by.profile_info.university,\n };\n disabled = !disciplines?.length;\n StepInputs = (\n <ResearchInstitutionAdmin\n profileInfo={profileInfo}\n setProfileInfo={setProfileInfo}\n prefillInstitutionName={prefillData.university}\n />\n );\n }\n\n const handleSubmit = async () => {\n setIsLoading(true);\n await completeStep2(userType, {\n ...prefillData,\n ...profileInfo,\n });\n setIsLoading(false);\n };\n\n return (\n <S.SignUpPage>\n <S.LeftContainer>\n <S.InfoBox>\n <S.Logo src={haloLogo} />\n <S.LogoTitle>Move Science Forward</S.LogoTitle>\n <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n </S.InfoBox>\n </S.LeftContainer>\n <S.RightContainer>\n <S.StepContainer>\n <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n {StepInputs}\n <Button type=\"submit\" disabled={disabled || isLoading} onClick={handleSubmit}>\n Submit\n </Button>\n </S.StepContainer>\n </S.RightContainer>\n </S.SignUpPage>\n );\n};\n\nexport default Step2;\n","import { identify } from \"@utils/appUtils\";\nimport { useState } from \"react\";\nimport { sponsorOnboarded } from \"src/requests/hubspot\";\nimport { onboard } from \"src/requests/users\";\nimport useInviteCode from \"./Hooks/useInviteCode\";\nimport ConfirmationPage from \"./SignUpFlows/ConfirmationPage\";\nimport Step1 from \"./SignUpFlows/Step1\";\nimport Step2 from \"./SignUpFlows/Step2\";\n\nfunction SignUp() {\n const [progress, setProgress] = useState({\n step1_complete: Boolean(gon?.user_id),\n step2_complete: false,\n });\n\n const inviteInfo = useInviteCode();\n\n const completeStep1 = () => {\n setProgress({ ...progress, step1_complete: true });\n };\n\n const completeStep2 = async (userType, profileInfo) => {\n const user = await onboard({ userType, profileInfo });\n\n if (userType === \"sponsor\") await sponsorOnboarded(user);\n identify(user);\n\n setProgress({ ...progress, step2_complete: true });\n };\n\n if (!progress.step1_complete)\n return <Step1 inviteInfo={inviteInfo} completeStep1={completeStep1} />;\n\n if (!progress.step2_complete) {\n return <Step2 inviteInfo={inviteInfo} completeStep2={completeStep2} />;\n }\n\n if (progress.step1_complete && progress.step2_complete) {\n return <ConfirmationPage inviteInfo={inviteInfo} />;\n }\n\n return null;\n}\n\nexport default SignUp;\n"],"names":["urlSearchParams","URLSearchParams","window","location","search","_useState2","_slicedToArray","useState","email","role","undefined","inviteInfo","setInviteInfo","useEffect","async","invite_code","get","api","params","data","getInviteInfoByCode","error","response","status","TABLET_MEDIA_QUERY","WINDOW_DIMENSIONS","SignUpPage","styled","div","LeftContainer","COLORS","NEUTRAL_900","WHITE","InfoBox","Logo","img","LogoTitle","FONTS","HEADING_4_SEMIBOLD","LogoDesc","REGULAR_1","RightContainer","SignUpContainer","Form","StepContainer","REGULAR_2","Title","BLACK","SmallTitle","SEMIBOLD_1","Subtitle","SignInLink","Link","HALO_BLUE","QuestionContainer","Field","p","half","InputTitle","Input","input","props","RED","NEUTRAL_400","fixed","NEUTRAL_500","NEUTRAL_200","Footer","ErrorMessage","FooterLink","a","DropdownTitle","CompanyDropdown","REGULAR_3","Dropdown","GeneralText","routeTo","newLocation","href","_jsxs","S","children","_jsx","src","haloLogo","_Fragment","Button","type","onClick","marketplacePath","invited_by","profile_info","university","company_name","completeStep1","hasInviteInfo","hasValidInviteEmail","usedPersonalEmail","searchParams","useSearchParams","searchParamsEmail","hasValidSearchParamsEmail","Validator","setError","_useState4","isSubmitting","setIsSubmitting","_useState6","hasSubmitted","setHasSubmitted","_useState8","firstName","setFirstName","_useState10","lastName","setLastName","_useState12","password","setPassword","_useState14","UserRole","SCIENTIST","setRole","_useState16","invitedUserId","setInvitedUserId","_useSSOSensitiveEmail","useSSOSensitiveEmail","setEmail","isEmailSSOEnabled","redirectToSSO","_useState18","shouldShowSSO","setShouldShowSSO","id","checkEmail","emailValue","urlParamsQueryString","size","toString","invitationHeader","request","inviterName","first_name","last_name","requestable_type","RequestableType","RFP","to","requestable","rfp_program_identifier","slug","target","rel","title","hasValidPrepopulatedEmail","onSubmit","min","max","register","err","console","errors","includes","t","name","value","onChange","e","readOnly","onBlur","tabIndex","SSOEnabledHint","length","SubmitContainer","disabled","SubmitText","Icon","BLUE_900","Object","values","SponsorRole","map","text","key","convertToSnakeCase","UniversityAdminRoles","UniversityExpertise","Step2","completeStep2","isLoading","setIsLoading","profileInfo","setProfileInfo","disciplines","areasOfExpertise","universityHasCountry","country","userType","StepInputs","prefillData","ResearchInstitutionScientist","prefillInstitutionName","company","CompanySponsor","prefillCompanyName","ResearchInstitutionAdmin","_objectSpread","step1_complete","Boolean","gon","user_id","step2_complete","progress","setProgress","useInviteCode","user","onboard","sponsorOnboarded","identify","ConfirmationPage","Step1"],"sourceRoot":""}