{"version":3,"sources":["assets/images/acm-light.png","components/OrangeButton/OrangeButton.tsx","views/Message/GenericMessage.tsx","views/Message/Message404.tsx","components/Typeform/typeform.tsx","views/Message/Loading.tsx","api/actions/initialize.ts","api/actions/profile.ts","api/state.ts","views/Message/Unauthorized.tsx","views/Form.tsx","components/Navbar/DarkNavbar.tsx","views/Applications/Applications.tsx","views/Profile/Profile.tsx","views/Message/Welcome.tsx","config/typeform_config.ts","components/Actions/Logout.tsx","acmApi/cookieManager.ts","views/Calendar/Calendar.tsx","views/Message/Event.tsx","components/Actions/AuthRoute.tsx","App.tsx","config/auth0_config.ts","reducers/authReducer.ts","actions/authenticate.ts","reducers/rootReducer.ts","store/store.ts","views/Message/Error.tsx","index.tsx"],"names":["module","exports","Button","props","history","useHistory","className","onClick","redirectURL","push","text","MessageComponent","styled","div","GenericMessage","src","alt","title","loading","type","color","height","width","desc","buttonText","buttonAction","buttonURL","Error","Typeform","typeformRef","useRef","useEffect","typeformEmbed","current","tfLink","options","ref","style","Loading","verify","authToken","a","undefined","jwt","is_verified","decodedToken","complete","payload","user_email","Sentry","id","sub","email","config","headers","Authorization","axios","get","process","REACT_APP_CLOUD_FUNCTION_URL","then","res","decoded_jwt","idp","data","catch","err","auth","get_profile","exists","isLoading","profile","result","atom","key","default","token","isSet","selector","Unauthorized","Form","typeform_id","endpoint","useState","setLoading","isAuth","setIsAuth","signInAttempt","setSignInAttempt","url","setUrl","useAuth0","getAccessTokenSilently","isAuthenticated","user_profile","useRecoilValue","URLSearchParams","toString","load_data","Header","Layout","LogoComponent","DarkNavbar","selectedPage","logout","ACMLogo","window","location","href","theme","mode","defaultSelectedKeys","onSelect","MenuParams","Item","float","Content","currApps","name","link","extra","description","Applications","linkRedirect","includes","cardApps","map","app","index","Grid","item","xs","md","lg","bordered","hoverable","container","spacing","TabPane","Tabs","Profile","defaultActiveKey","tabPosition","tab","marginBottom","past_events","event","Date","submitted_at","toDateString","reverse","past_applications","fontSize","rel","target","first_name","last_name","net_id","major","university","classification","Welcome","user","useRecoilState","setToken","fn","media","REACT_APP_VANITY_TYPEFORM","REACT_APP_DEV_TYPEFORM","REACT_APP_EDU_TYPEFORM","REACT_APP_MEDIA_TYPEFORM","pro","REACT_APP_PROFILE_TYPEFORM","developer","REACT_APP_DEVELOPER_TYPEFORM","tip","REACT_APP_PARTICIPATION_TYPEFORM","REACT_APP_TIP_TYPEFORM","LogoutComponent","Logout","setJwt","useSetRecoilState","auth_status","date","setTime","getTime","document","cookie","toUTCString","deleteCookie","REACT_APP_AUTH0_PORTAL_CLIENTID","CalendarPage","paddingLeft","paddingRight","paddingBottom","dateCellRender","value","listData","year","month","content","getListData","Fragment","monthCellRender","num","getMonthData","EventPage","apiComplete","setApiComplete","setEvent","pathname","event_name","withRouter","Component","path","rest","loginWithRedirect","appState","targetUrl","render","App","component","exact","Event","Message404","auth0_config","domain","REACT_APP_AUTH0_DOMAIN","clientId","audience","REACT_APP_AUTH0_AUDIENCE","authenticateReducer","state","isLoggedIn","action","combineReducers","store","createStore","dsn","REACT_APP_SENTRY_DSN","autoSessionTracking","integrations","Integrations","BrowserTracing","tracesSampleRate","environment","release","npm_package_version","ReactDOM","redirectUri","origin","search","scope","fallback","getElementById"],"mappings":"qFAAAA,EAAOC,QAAU,IAA0B,uC,8lBCyB5BC,G,OAfA,SAACC,GACd,IAAMC,EAAUC,cAOhB,OACE,4BAAQC,UAAU,gBAAgBC,QANhB,WACdJ,EAAMI,SAASJ,EAAMI,UACrBJ,EAAMK,aAAaJ,EAAQK,KAAKN,EAAMK,eAKvCL,EAAMO,Q,4cCNb,IAkCMC,EAAmBC,IAAOC,IAAV,KAwBPC,EA1DQ,SAACX,GACtB,OACE,kBAACQ,EAAD,KACE,yBAAKL,UAAU,aACb,yBACEA,UAAU,WACVS,IAAI,+DACJC,IAAI,aAEN,wBAAIV,UAAU,QAAQH,EAAMc,OAC3Bd,EAAMe,QACL,kBAAC,IAAD,CACEC,KAAM,kBACNC,MAAO,QACPC,OAAQ,MACRC,MAAO,QAGT,yBAAKhB,UAAU,UACb,wBAAIA,UAAU,QAAQH,EAAMoB,MAC3BpB,EAAMqB,YACL,kBAAC,EAAD,CACEd,KAAMP,EAAMqB,WACZjB,QAASJ,EAAMsB,aACfjB,YAAaL,EAAMuB,gBCxBpBC,EAXD,WACZ,OACE,kBAAC,EAAD,CACEV,MAAM,UACNM,KAAK,uEACLC,WAAW,eACXE,UAAU,O,SC0BDE,EAVE,SAACzB,GACjB,IAAM0B,EAAcC,iBAAO,MAI3B,OAHAC,qBAAU,WACTC,aAAyBH,EAAYI,QAAmC9B,EAAM+B,OAAQ/B,EAAMgC,WAC1F,CAAChC,EAAM+B,OAAQ/B,EAAMgC,QAASN,IAEhC,yBAAKO,IAAKP,EAAavB,UAAWH,EAAMG,UAAW+B,MAAOlC,EAAMkC,SCxBnDC,EAJC,WACd,OAAO,kBAAC,EAAD,CAASrB,MAAM,sBAAsBC,SAAS,K,0CCuDxCqB,EAtDH,uCAAG,WAAOC,GAAP,qBAAAC,EAAA,8DAEKC,IAAdF,GAAyC,KAAdA,EAFlB,yCAGJ,CACLG,IAAKH,EACLI,aAAa,IALJ,cAUPC,EAA6BF,SAAWH,EAAW,CACvDM,UAAU,IACDC,QACLC,EAAaH,EAAa,2BAChCI,IAAe,CACbC,GAAIL,EAAaM,IACjBC,MAAOJ,IAGW,QAEdK,EAAS,CACbC,QAAS,CACPC,cAAc,UAAD,OAAYf,KAvBhB,SA0BmBgB,IAC7BC,IACEC,mHAAYC,6BAAZD,oBAIDL,GAEDO,MAAK,SAACC,GACL,MAAO,CACLlB,IAAKH,EACLsB,YAAajB,EACbkB,IAAKF,EAAIG,KAAKD,IACdnB,aAAa,MAIhBqB,OAAM,SAACC,GAEN,OADAjB,IAAwBiB,GACjB,CACLvB,IAAKH,EACLsB,YAAajB,EACbD,aAAa,MAhDN,cA0BPuB,EA1BO,yBAmDNA,GAnDM,4CAAH,sDCmCGC,EApCE,uCAAG,WAAO5B,GAAP,iBAAAC,EAAA,8DACAC,IAAdF,GAAyC,KAAdA,EADb,yCAET,CACL6B,QAAQ,EACRC,WAAW,IAJG,cAQZjB,EAAS,CACbC,QAAS,CACPC,cAAc,UAAD,OAAYf,KAVX,SAaYgB,IAC3BC,IACEC,mHAAYC,6BAA0C,iBACvDN,GAEDO,MAAK,SAACC,GACL,MAAO,CACLQ,OAAQR,EAAIG,KAAKK,OACjBC,WAAW,EACXC,QAASV,EAAIG,SAIhBC,OAAM,SAACC,GAEN,OADAjB,IAAwBiB,GACjB,CACLG,QAAQ,EACRC,WAAW,MA9BC,cAaZE,EAbY,yBAiCXA,GAjCW,2CAAH,sDCCJ7B,EAAM8B,YAAK,CACtBC,IAAK,MACLC,QAAS,CACPC,MAAO,GACPC,OAAO,KAKEV,EAAOW,YAAS,CACzBJ,IAAK,OACLjB,IAAI,WAAD,4BAAE,6BAAAhB,EAAA,6DAAQgB,EAAR,EAAQA,IAAR,SACYlB,EAAOkB,EAAId,GAAKiC,OAD5B,mFAAF,mDAAC,KAKKL,EAAUO,YAAS,CAC9BJ,IAAK,UACLjB,IAAI,WAAD,4BAAE,6BAAAhB,EAAA,6DAAQgB,EAAR,EAAQA,IAAR,SACUW,EAAYX,EAAId,GAAKiC,OAD/B,mFAAF,mDAAC,KCdSG,EANM,WACnB,OACE,kBAAC,EAAD,CAAS9D,MAAM,eAAeO,WAAW,cAAcE,UAAU,O,QCqFtDsD,EA1EF,SAAC,GAA8C,IAA5CC,EAA2C,EAA3CA,YAAaC,EAA8B,EAA9BA,SAA8B,EAC3BC,oBAAS,GADkB,mBAClDjE,EADkD,KACzCkE,EADyC,OAE7BD,oBAAS,GAFoB,mBAElDE,EAFkD,KAE1CC,EAF0C,OAGfH,oBAAS,GAHM,mBAGlDI,EAHkD,KAGnCC,EAHmC,OAInCL,mBAAS,IAJ0B,mBAIlDM,EAJkD,KAI7CC,EAJ6C,OAKMC,cAAvDC,EALiD,EAKjDA,uBAAwBC,EALyB,EAKzBA,gBAAiBvB,EALQ,EAKRA,UAC3CwB,EAAeC,YAAexB,GAC9BnE,EAAUC,cAwDhB,OAtDA0B,qBAAU,YACO,uCAAG,8BAAAU,EAAA,0DACZvB,IAAWqE,EADC,wDAIhBH,GAAW,GACXI,GAAiB,GALD,SAOQI,IAPR,eASElD,KAFZF,EAPU,gCAUd4C,GAAW,GAVG,2BAcV/B,EAAS,CACbC,QAAS,CACPC,cAAc,UAAD,OAAYf,KAG7BgB,IACGC,IACEC,mHAAYC,6BAA0CuB,EACvD7B,GAEDO,MAAK,SAACC,GACLyB,GAAU,GAEVI,EACE,kCACET,EACA,IACA,IAAIe,gBAAgBnC,EAAIG,MAAMiC,YAElCb,GAAW,MAEZnB,OAAM,SAACC,GACNjB,IAAwBiB,GACxBoB,GAAU,GACVF,GAAW,MAtCC,4CAAH,qDAyCfc,KACC,CAAChB,EAAUU,EAAwB1E,EAASqE,EAAeN,IAE9DlD,qBAAU,WACJuC,GAAawB,EAAazB,QAAUyB,EAAaxB,WAGjDuB,GACFzF,EAAQK,KAAK,iBAEd,CAAC6D,EAAWuB,EAAiBC,EAAc1F,IAE1Cc,EACK,kBAAC,EAAD,MAGJmE,EAIE,kBAAC,EAAD,CAAUnD,OAAQuD,EAAKpD,MAAO,CAAEhB,OAAQ,WAHtC,kBAAC,EAAD,O,+MC7EH8E,EAAWC,IAAXD,OA0CFE,EAAgBzF,IAAOC,IAAV,KAQJyF,EA5CI,SAAC,GAAmC,IAAjCC,EAAgC,EAAhCA,aACdnG,EAAUC,cACRmG,EAAWb,cAAXa,OAQR,OACE,kBAACL,EAAD,KACE,kBAACE,EAAD,KACE,yBACErF,IAAI,UACJD,IAAK0F,IACLlG,QAAS,kBAAOmG,OAAOC,SAASC,KAAO,6BAG3C,kBAAC,IAAD,CACEC,MAAM,OACNC,KAAK,aACLC,oBAAqB,CAACR,GACtBS,SAnBW,SAACC,GACO,WAAnBA,EAAWvC,IACb8B,IACKpG,EAAQK,KAAR,WAAiBwG,EAAWvC,QAmB/B,kBAAC,IAAKwC,KAAN,CAAWxC,IAAI,WAAf,WACA,kBAAC,IAAKwC,KAAN,CAAWxC,IAAI,YAAf,YACA,kBAAC,IAAKwC,KAAN,CAAW7E,MAAO,CAAE8E,MAAO,SAAWzC,IAAI,UAA1C,aC/BA0C,G,OAAYhB,IAAZgB,SAEFC,EAAW,CACf,CACEC,KAAM,+CACNC,KAAM,OACNC,MAAO,kCACPC,YACE,oFACyD,IACvD,4EAFF,gFAGgE,IAC9D,4DAJF,qLAWJ,CACEH,KAAM,gCACNC,KAAM,oCACNC,MAAO,kCACPC,YACE,0IAE2C,IACzC,yDAHF,gTAWJ,CACEH,KAAM,kCACNC,KAAM,aACNC,MAAO,4BACPC,YACE,qJAEkD,IAChD,wDAHF,kFAIkD,IAChD,wDALF,gMAYJ,CACEH,KAAM,4BACNC,KAAM,SACNE,YACE,8VASJ,CACEH,KAAM,WACNC,KAAM,UACNE,YACE,4QAIuB,qDAJvB,kJA0DSC,EA9CM,WAAO,IAAD,EACc/B,cAA/BrB,EADiB,EACjBA,UAAWuB,EADM,EACNA,gBACbC,EAAeC,YAAexB,GAC9BnE,EAAUC,cAEhB0B,qBAAU,WACJuC,GAAawB,EAAazB,QAAUyB,EAAaxB,WAGjDuB,GACFzF,EAAQK,KAAK,iBAEd,CAAC6D,EAAWuB,EAAiBC,EAAc1F,IAE9C,IAAMuH,EAAe,SAACJ,GAChBA,EAAKK,SAAS,QAChBlB,OAAOC,SAASC,KAAOW,EAClBnH,EAAQK,KAAK8G,IAGhBM,EAAWR,EAASS,KAAI,SAACC,EAAKC,GAAN,OAC5B,kBAACC,EAAA,EAAD,CAAMC,MAAI,EAACC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAG3D,IAAKsD,GACpC,kBAAC,IAAD,CAAM/G,MAAO8G,EAAIT,KAAMgB,UAAU,EAAOC,WAAS,GAC9CR,EAAIN,YACL,yBAAKnH,UAAU,QACb,kBAAC,EAAD,CAAQI,KAAK,cAAcH,QAAS,kBAAMoH,EAAaI,EAAIR,SAC1DQ,EAAIP,OACH,kBAAC,EAAD,CAAQ9G,KAAK,aAAaH,QAAS,kBAAMoH,EAAaI,EAAIP,gBAOpE,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAQjB,aAAa,iBACrB,kBAACa,EAAD,KACE,kBAACa,EAAA,EAAD,CAAMO,WAAS,EAACC,QAAS,GACtBZ,M,SCzHHT,G,OAAYhB,IAAZgB,SACAsB,EAAYC,IAAZD,QAqJOE,EAnJC,WAAO,IAAD,kBACdxI,EAAUC,cACVyF,EAAeC,YAAexB,GAFhB,EAGmBoB,cAA/BrB,EAHY,EAGZA,UAAWuB,EAHC,EAGDA,gBAWnB,OATA9D,qBAAU,WACJuC,GAAawB,EAAazB,QAAUyB,EAAaxB,WAGjDuB,GACFzF,EAAQK,KAAK,iBAEd,CAAC6D,EAAWuB,EAAiBC,EAAc1F,IAG5C,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAQmG,aAAa,YACrB,kBAAC,EAAD,KACE,kBAAC,IAAD,CAAMsC,iBAAiB,IAAIC,YAAY,QACrC,kBAACJ,EAAD,CAASK,IAAI,sBAAsBrE,IAAK,GACtC,wBAAIrC,MAAO,CAAEjB,MAAO,QAAS4H,aAAc,KAA3C,mBACC,UAAAlD,EAAavB,eAAb,eAAsB0E,aACrBnD,EAAavB,QAAQ0E,YAClBnB,KAAI,SAACoB,GAAD,OACH,yBAAK5I,UAAU,qBACb,wBAAI+B,MAAO,CAAEjB,MAAO,UAAY8H,EAAM5B,MACtC,wBAAIjF,MAAO,CAAEjB,MAAO,UAApB,gBAEG,IAAI+H,KAAKD,EAAME,cAAcC,oBAInCC,UAEH,uDAGJ,kBAACZ,EAAD,CAASK,IAAI,oBAAoBrE,IAAK,GACpC,wBAAIrC,MAAO,CAAEjB,MAAO,UAApB,2BACA,mIAIC,UAAA0E,EAAavB,eAAb,eAAsBgF,mBACrBzD,EAAavB,QAAQgF,kBAClBzB,KAAI,SAACC,GAAD,OACH,yBAAKzH,UAAU,qBACb,wBAAI+B,MAAO,CAAEjB,MAAO,UAAY2G,EAAIT,MACpC,wBAAIjF,MAAO,CAAEjB,MAAO,UAApB,gBAEG,IAAI+H,KAAKpB,EAAIqB,cAAcC,oBAIjCC,UAEH,8DAGJ,kBAACZ,EAAD,CAASK,IAAI,YAAYrE,IAAK,GAC5B,wBAAIrC,MAAO,CAAEjB,MAAO,QAAS4H,aAAc,KAA3C,gBACA,wBAAI1I,UAAU,WAAW+B,MAAO,CAAEmH,SAAU,KAC1C,4BACE,uBACEC,IAAI,sBACJC,OAAO,SACP9C,KAAK,6BAHP,gBAQF,4BACE,uBACE6C,IAAI,sBACJC,OAAO,SACP9C,KAAK,sCAHP,iBAQF,4BACE,uBACE6C,IAAI,sBACJC,OAAO,SACP9C,KAAK,qCAHP,kBAQF,4BACE,uBACE6C,IAAI,sBACJC,OAAO,SACP9C,KAAK,4CAHP,iBAQF,4BACE,uBACE6C,IAAI,sBACJC,OAAO,SACP9C,KAAK,0BAHP,kBAaN,kBAAC8B,EAAD,CAASK,IAAI,WAAWrE,IAAK,GAC3B,wBAAIrC,MAAO,CAAEjB,MAAO,QAAS4H,aAAc,KAA3C,qBACqB,KAErB,2BACE,0CADF,cAC2BlD,EAAavB,eADxC,aAC2B,EAAsBnB,OAEjD,2BACE,yCADF,cAC0B0C,EAAavB,eADvC,aAC0B,EAAsBoF,WAAY,IAD5D,UAEG7D,EAAavB,eAFhB,aAEG,EAAsBqF,WAEzB,2BACE,0CADF,cAC2B9D,EAAavB,eADxC,aAC2B,EAAsBsF,QAEjD,2BACE,0CADF,cAC2B/D,EAAavB,eADxC,aAC2B,EAAsBuF,OAEjD,2BACE,+CADF,cACgChE,EAAavB,eAD7C,aACgC,EAAsBwF,YAEtD,2BACE,mDAAiC,IADnC,UAEGjE,EAAavB,eAFhB,aAEG,EAAsByF,gBAEzB,kBAAC,EAAD,CACEtJ,KAAK,6BACLF,YAAY,qB,kBCzHXyJ,GAtBC,WAAO,IAAD,EACiDtE,cAA7DrB,EADY,EACZA,UAAWuB,EADC,EACDA,gBAAiBD,EADhB,EACgBA,uBAAwBsE,EADxC,EACwCA,KADxC,EAEMC,YAAexH,GAFrB,mBAEbiC,EAFa,KAENwF,EAFM,KAiBpB,OAbArI,qBAAU,YACA,uCAAG,sBAAAU,EAAA,0DACLoD,GAAoBjB,EAAMC,MADrB,4BAEPuF,EAFO,SAEiBxE,IAFjB,yBAEIhB,MAFJ,KAE2CC,OAAO,IAFlD,cAGP5B,IAAe,CACbG,MAAO8G,EAAK9G,MACZF,GAAIgH,EAAK/G,MALJ,2CAAH,qDASRkH,KACC,CAAC/F,EAAWuB,EAAiBjB,EAAOgB,EAAwBwE,EAAUF,IAGvE,kBAAC,EAAD,CAASjJ,MAAM,kBAAkBO,WAAW,eAAeE,UAAU,cCtB5D4I,IAHS5G,mHAAY6G,0BACf7G,mHAAY8G,uBACZ9G,mHAAY+G,uBACV/G,mHAAYgH,0BACpBC,GAAMjH,mHAAYkH,2BAClBC,GAAYnH,mHAAYoH,6BAExBC,IADSrH,mHAAYsH,iCACftH,mHAAYuH,wB,+uBCE/B,IA4CMC,GAAkBtK,IAAOC,IAAV,MAkCNsK,GA9EA,WACb,IAAMC,EAASC,YAAkB1I,GAC3B2I,EAAcvF,YAAe5B,GAC7B/D,EAAUC,cAqBhB,OAnBA0B,qBAAU,WACHuJ,EAAY1I,aACfxC,EAAQK,KAAK,OAEd,CAAC6K,EAAalL,IAEjB2B,qBAAU,WACJuJ,EAAY1I,eCIb,SAAsB0E,GACzB,IAAMiE,EAAO,IAAIpC,KAGjBoC,EAAKC,QAAQD,EAAKE,WAAa,OAG/BC,SAASC,OAASrE,EAAK,cAAciE,EAAKK,cAAc,WDVtDC,CAAa,oBACbT,EAAO,CAAExG,MAAO,GAAIC,OAAO,IAC3BrB,IAAMC,IAAI,4DACVD,IAAMC,IAAN,uDAEIC,mHAAYoI,gCAFhB,wCASF,kBAACZ,GAAD,KACE,yBAAK5K,UAAU,aACb,yBACEA,UAAU,WACVS,IAAI,+DACJC,IAAI,aAEN,wBAAIV,UAAU,QAAd,yBACA,kBAAC,IAAD,CACEa,KAAM,kBACNC,MAAO,QACPC,OAAQ,MACRC,MAAO,W,oBEmHFyK,I,OAtJM,WAyInB,OACE,kBAAC,IAAD,KACE,kBAAC,EAAD,CAAQxF,aAAa,aAErB,kBAAC,KAAD,CACElE,MAAO,CAAE2J,YAAa,GAAIC,aAAc,GAAIC,cAAe,IAC3DC,eArCiB,SAACC,GACtB,IAAMC,EA1GY,SAACD,GACnB,IAAIC,EAA4B,GAChC,OAAQD,EAAME,QACZ,KAAK,KACH,OAAQF,EAAMG,SACZ,KAAK,EACH,OAAQH,EAAMb,QACZ,KAAK,GACHc,EAAW,CACT,CACEjL,MAAO,SACPoL,QAAS,qBACTjF,KAAM,sBAMd,MACF,KAAK,EACH,OAAQ6E,EAAMb,QACZ,KAAK,GACHc,EAAW,CACT,CACEjL,MAAO,QACPoL,QAAS,mBACTjF,KAAM,sBAGV,MACF,KAAK,GACH8E,EAAW,CACT,CACEjL,MAAO,SACPoL,QAAS,sCACTjF,KAAM,8BAGV,MACF,KAAK,GACH8E,EAAW,CACT,CACEjL,MAAO,QACPoL,QAAS,wBACTjF,KAAM,sBAMd,MACF,KAAK,EACH,OAAQ6E,EAAMb,QACZ,KAAK,EASL,KAAK,GACHc,EAAW,CACT,CACEjL,MAAO,SACPoL,QAAS,sCACTjF,KAAM,8BAMd,MACF,KAAK,EACH,OAAQ6E,EAAMb,QACZ,KAAK,GACHc,EAAW,CACT,CACEjL,MAAO,SACPoL,QAAS,sCACTjF,KAAM,8BAGV,MACF,KAAK,GACH8E,EAAW,CACT,CACEjL,MAAO,OACPoL,QAAS,8BACTjF,KAAM,gCAYtB,OAAO8E,GAAY,GAIFI,CAAYL,GAC7B,OACE,yBAAK9L,UAAU,UACZ+L,EAASvE,KAAI,SAACI,GAAD,OACZ,kBAAC,IAAMwE,SAAP,CAAgBhI,IAAKwD,EAAKsE,SACxB,uBAAG5F,KAAMsB,EAAKX,KAAMkC,IAAI,sBAAsBC,OAAO,UACnD,kBAAC,KAAD,CAAOtI,MAAO8G,EAAK9G,MAAOV,KAAMwH,EAAKsE,iBA+B3CG,gBAjBkB,SAACP,GACvB,IAAMQ,EAPa,SAACR,GACpB,GAAsB,IAAlBA,EAAMG,QACR,OAAO,KAKGM,CAAaT,GACzB,OAAOQ,EACL,yBAAKtM,UAAU,eACb,iCAAUsM,GACV,mDAEA,WC5FOE,GA9CG,WAAO,IAAD,EACyCnH,cAAvDrB,EADc,EACdA,UAAWuB,EADG,EACHA,gBAAiBD,EADd,EACcA,uBADd,EAEIuE,YAAexH,GAFnB,mBAEfiC,EAFe,KAERwF,EAFQ,OAGgBjF,oBAAS,GAHzB,mBAGf4H,EAHe,KAGFC,EAHE,OAII7H,mBAAS,IAJb,mBAIf+D,EAJe,KAIR+D,EAJQ,KAmCtB,OA7BAlL,qBAAU,YACA,uCAAG,sBAAAU,EAAA,0DACLoD,GAAoBjB,EAAMC,MADrB,4BAEPuF,EAFO,SAEiBxE,IAFjB,yBAEIhB,MAFJ,KAE2CC,OAAO,IAFlD,yDAAH,qDAKRwF,KACC,CAAC/F,EAAWuB,EAAiBjB,EAAOwF,EAAUxE,IAEjD7D,qBAAU,YACA,uCAAG,8BAAAU,EAAA,qFAG0BmD,IAH1B,iEAGLrC,cAHK,MACHF,EADG,CAEPC,QAFO,eAMYE,IAAMC,IACxBC,mHAAYC,6BAAZD,4BAGCgD,OAAOC,SAASuG,SAClB7J,GAXO,OAMHmB,EANG,OAaTwI,GAAe,GACfC,EAASzI,EAAOR,KAAKmJ,YAdZ,4CAAH,qDAgBR9C,KACC,CAACzE,IAGF,kBAAC,EAAD,CACE3E,MAAM,wBACNC,SAAU6L,EACVxL,KAAI,gCAA2B2H,EAA3B,sBACJ1H,WAAW,eACXE,UAAU,c,UCID0L,gBA5CG,SAAC,GAA4C,IAA1CC,EAAyC,EAAzCA,UAAWC,EAA8B,EAA9BA,KAASC,EAAqB,uCAOxD5H,cALFrB,EAF0D,EAE1DA,UACAuB,EAH0D,EAG1DA,gBACA2H,EAJ0D,EAI1DA,kBACA5H,EAL0D,EAK1DA,uBACAsE,EAN0D,EAM1DA,KAEIE,EAAWiB,YAAkB1I,GAEnCZ,qBAAU,WACJuC,GAAauB,GAGT,uCAAG,sBAAApD,EAAA,sEACH+K,EAAkB,CACtBC,SAAU,CAAEC,UAAWJ,KAFhB,WAILzH,EAJK,6BAKPuE,EALO,SAKiBxE,IALjB,yBAKIhB,MALJ,KAK2CC,OAAO,IALlD,cAMP5B,IAAe,CACbG,MAAO8G,EAAK9G,MACZF,GAAIgH,EAAK/G,MARJ,4CAAH,oDAYRkH,KACC,CACD/F,EACAuB,EACA2H,EACAF,EACAlD,EACAxE,EACAsE,IAOF,OAAO,kBAAC,IAAD,eAAOoD,KAAMA,EAAMK,OAJX,WACb,OAA2B,IAApB9H,EAA2BwH,EAAY,kBAAC,EAAD,QAGFE,OCgDjCK,OAvEf,WAAgB,IAAD,EAMTjI,cAJFrB,EAFW,EAEXA,UACAuB,EAHW,EAGXA,gBACAD,EAJW,EAIXA,uBACAsE,EALW,EAKXA,KALW,EAOaC,YAAexH,GAP5B,mBAONiC,EAPM,KAOCwF,EAPD,KA6Bb,OApBArI,qBAAU,YACA,uCAAG,sBAAAU,EAAA,0DACLoD,GAAoBjB,EAAMC,MADrB,4BAEPuF,EAFO,SAEiBxE,IAFjB,yBAEIhB,MAFJ,KAE2CC,OAAO,IAFlD,cAGP5B,IAAe,CACbG,MAAO8G,EAAK9G,MACZF,GAAIgH,EAAK/G,MALJ,2CAAH,qDASRkH,KACC,CACD/F,EACAuB,EACAjB,EACAwF,EACAxE,EACAsE,IAIA,6BACE,kBAAC,KAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAOoD,KAAK,IAAIO,UAAW5D,GAAS6D,OAAK,IACzC,kBAAC,GAAD,CACER,KAAK,cACLD,UACE,kBAAC,EAAD,CAAMpI,YAAa0F,GAAKzF,SAAS,gCAEnC4I,OAAK,IAEP,kBAAC,GAAD,CAAWR,KAAK,YAAYD,UAAW,kBAAC,GAAD,MAAkBS,OAAK,IAC9D,kBAAC,GAAD,CAAWR,KAAK,WAAWD,UAAW,kBAAC,EAAD,MAAaS,OAAK,IACxD,kBAAC,GAAD,CAAWR,KAAK,gBAAgBD,UAAW,kBAAC,EAAD,MAAkBS,OAAK,IAClE,kBAAC,GAAD,CAAWR,KAAK,WAAWD,UAAW,kBAACU,GAAD,QACtC,kBAAC,GAAD,CACET,KAAK,OACLD,UAAW,kBAAC,EAAD,CAAMpI,YAAa8F,GAAK7F,SAAS,qBAC5C4I,OAAK,IAEP,kBAAC,GAAD,CACER,KAAK,SACLD,UAAW,kBAAC,EAAD,CAAMpI,YAAaqF,GAAOpF,SAAS,qBAC9C4I,OAAK,IAEP,kBAAC,GAAD,CACER,KAAK,aACLD,UACE,kBAAC,EAAD,CAAMpI,YAAa4F,GAAW3F,SAAS,qBAEzC4I,OAAK,IAGP,kBAAC,IAAD,CAAOR,KAAK,UAAUO,UAAW1C,GAAQ2C,OAAK,IAC9C,kBAAC,IAAD,CAAOR,KAAK,KAAKO,UAAWG,QCpFvBC,GANM,CACjBC,OAAQxK,mHAAYyK,uBACpBC,SAAU1K,mHAAYoI,gCACtBuC,SAAU3K,mHAAY4K,0B,kDCiBXC,GAlBa,WAGtB,IAFJC,EAEG,uDAFK,CAAEC,YAAY,GACtBC,EACG,uCACH,OAAQA,EAAOvN,MACb,ICPiB,QDQf,MAAO,CACLsN,YAAY,GAEhB,ICVkB,SDWhB,MAAO,CACLA,YAAY,GAEhB,QACE,OAAOD,IEJEf,GAJEkB,aAAgB,CAC7BJ,yBCJWK,GADDC,aAAYpB,ICUX9L,GAXD,WACZ,OACE,kBAAC,EAAD,CACEV,MAAM,iCACNM,KAAK,sIACLC,WAAW,cACXE,UAAU,OCiBhBuB,KAAY,CACV6L,IAAKpL,mHAAYqL,qBACjBC,qBAAqB,EACrBC,aAAc,CAAC,IAAIC,KAAaC,gBAIhCC,iBAAkB,EAClBC,YAAa3L,aACb4L,QAAS5L,mHAAY6L,sBAGvBC,IAAS7B,OACP,gBAAC,aAAD,KACE,gBAAC,IAAD,CACEO,OAAQ7K,GAAO6K,OACfE,SAAU/K,GAAO+K,SACjBqB,YAAa/I,OAAOC,SAAS+I,OAAShJ,OAAOC,SAASuG,SAAWxG,OAAOC,SAASgJ,OACjFtB,SAAUhL,GAAOgL,SACjBuB,MAAO,kDAEP,gBAAC,KAAD,CAAUhB,MAAOA,IACf,gBAAC,KAAD,CAAsBiB,SAAU,gBAAC,GAAD,OAC9B,gBAAC,WAAD,CAAgBA,SAAU,gBAAC,EAAD,OACxB,gBAAC,IAAD,KACE,gBAAC,GAAD,YAOZnE,SAASoE,eAAe,W","file":"static/js/main.dfb7886f.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/acm-light.42818f84.png\";","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport \"./OrangeButton.css\";\n\ninterface ButtonProps {\n text: string;\n onClick?: () => void;\n redirectURL?: string;\n}\n\nconst Button = (props: ButtonProps) => {\n const history = useHistory();\n\n const buttonClick = () => {\n if (props.onClick) props.onClick();\n if (props.redirectURL) history.push(props.redirectURL);\n };\n\n return (\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport ReactLoading from \"react-loading\";\nimport Button from \"../../components/OrangeButton/OrangeButton\";\nimport styled from \"styled-components\";\n\ninterface message {\n title: string;\n desc?: string;\n buttonText?: string; // if not defined, don't show button\n buttonAction?: () => void;\n buttonURL?: string;\n loading?: boolean;\n}\n\nconst GenericMessage = (props: message) => {\n return (\n \n
\n \n

{props.title}

\n {props.loading ? (\n \n ) : (\n
\n

{props.desc}

\n {props.buttonText && (\n \n )}\n
\n )}\n
\n
\n );\n};\n\nconst MessageComponent = styled.div`\n .container {\n display: flex;\n background-color: black;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100vh;\n }\n .acm-logo {\n width: 20%;\n }\n .text {\n color: white;\n margin: 30px;\n font-family: ;\n }\n .column {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n`;\n\nexport default GenericMessage;\n","import React from \"react\";\nimport Message from \"./GenericMessage\";\n\nconst Error = () => {\n return (\n \n );\n};\n\nexport default Error;\n","import React, { CSSProperties, useRef, useEffect } from \"react\";\nimport * as typeformEmbed from \"@typeform/embed\";\nimport { WidgetOptions } from \"typeform__embed\";\n\ninterface TypeformProps {\n\t/**\n\t * Link to Typeform form.\n\t * @example 'https://form.typeform.com/to/{id}'\n\t */\n\ttfLink: string;\n\t/**\n\t * Class names to assign to the generated
.\n\t */\n\tclassName?: string;\n\t/**\n\t * Custom styles to assign to the generated
.\n\t */\n\tstyle?: CSSProperties;\n\t/**\n\t * Typeform widget options, as defined by the Typeform library\n\t * @see https://github.com/Typeform/embed#widget\n\t */\n\toptions?: WidgetOptions;\n}\n\nconst Typeform = (props: TypeformProps): JSX.Element => {\n\tconst typeformRef = useRef(null);\n\tuseEffect(() => {\n\t\ttypeformEmbed.makeWidget(typeformRef.current as unknown as HTMLElement, props.tfLink, props.options);\n\t}, [props.tfLink, props.options, typeformRef]);\n\treturn (\n\t\t
\n\t);\n};\n\nexport default Typeform;\n","import React from \"react\";\nimport Message from \"./GenericMessage\";\n\nconst Loading = () => {\n return ;\n};\n\nexport default Loading;\n","import * as jwt from \"jsonwebtoken\";\nimport axios from \"axios\";\nimport * as Sentry from \"@sentry/react\";\nimport { decoded_jwt, auth_status } from \"../../config/interface\";\n\nconst verify = async (authToken: string): Promise => {\n\n if (authToken === undefined || authToken === \"\") {\n return {\n jwt: authToken,\n is_verified: false,\n };\n }\n\n // await new Promise(resolve => setTimeout(resolve, 5000));\n const decodedToken: decoded_jwt = (jwt.decode(authToken, {\n complete: true,\n }) as any).payload;\n const user_email = decodedToken[\"https://acmutd.co/email\"];\n Sentry.setUser({\n id: decodedToken.sub,\n email: user_email,\n });\n\n const decoded_idp = \"auth0\";\n\n const config = {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n };\n const auth: auth_status = await axios\n .get(\n (process.env.REACT_APP_CLOUD_FUNCTION_URL as string) +\n \"/\" +\n decoded_idp +\n \"/verify-idp\",\n config\n )\n .then((res) => {\n return {\n jwt: authToken,\n decoded_jwt: decodedToken,\n idp: res.data.idp,\n is_verified: true,\n };\n })\n // 401 Unauthorized Error\n .catch((err) => {\n Sentry.captureException(err);\n return {\n jwt: authToken,\n decoded_jwt: decodedToken,\n is_verified: false,\n };\n });\n return auth;\n};\n\nexport default verify;\n","import axios from \"axios\";\nimport * as Sentry from \"@sentry/react\";\nimport { profile } from \"../../config/interface\";\n\nconst get_profile = async (authToken: string): Promise => {\n if (authToken === undefined || authToken === \"\") {\n return {\n exists: false,\n isLoading: true,\n };\n }\n\n const config = {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n };\n const result: profile = await axios\n .get(\n (process.env.REACT_APP_CLOUD_FUNCTION_URL as string) + \"/auth0/profile\",\n config\n )\n .then((res) => {\n return {\n exists: res.data.exists,\n isLoading: false,\n profile: res.data,\n };\n })\n // 401 Unauthorized Error\n .catch((err) => {\n Sentry.captureException(err);\n return {\n exists: false,\n isLoading: false,\n };\n });\n return result;\n};\n\nexport default get_profile;\n","import { atom, selector } from \"recoil\";\n// import { getCookie } from \"../acmApi/cookieManager\";\nimport verify from \"./actions/initialize\";\nimport get_profile from \"./actions/profile\";\n\nexport const jwt = atom({\n key: \"jwt\",\n default: {\n token: \"\",\n isSet: false,\n },\n});\n\n// will automatically re-evaluate if the jwt changes\nexport const auth = selector({\n key: \"auth\",\n get: async ({get}) => {\n return await verify(get(jwt).token);\n },\n});\n\nexport const profile = selector({\n key: \"profile\",\n get: async ({get}) => {\n return await get_profile(get(jwt).token);\n }\n});","import React from \"react\";\nimport Message from \"./GenericMessage\";\n\nconst Unauthorized = () => {\n return (\n \n );\n};\n\nexport default Unauthorized;\n","import React, { useEffect, useState } from \"react\";\nimport Typeform from \"../components/Typeform/typeform\";\nimport Loading from \"./Message/Loading\";\nimport axios from \"axios\";\nimport { profile } from \"../api/state\";\nimport { useRecoilValue } from \"recoil\";\nimport { useHistory } from \"react-router-dom\";\nimport Unauthorized from \"./Message/Unauthorized\";\nimport * as Sentry from \"@sentry/react\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\n\ninterface typeform_info {\n typeform_id: string;\n endpoint: string;\n}\n\nconst Form = ({ typeform_id, endpoint }: typeform_info) => {\n const [loading, setLoading] = useState(false);\n const [isAuth, setIsAuth] = useState(false);\n const [signInAttempt, setSignInAttempt] = useState(false);\n const [url, setUrl] = useState(\"\");\n const { getAccessTokenSilently, isAuthenticated, isLoading } = useAuth0();\n const user_profile = useRecoilValue(profile);\n const history = useHistory();\n\n useEffect(() => {\n const load_data = async (): Promise => {\n if (loading || signInAttempt) {\n return;\n }\n setLoading(true);\n setSignInAttempt(true);\n\n const authToken = await getAccessTokenSilently();\n\n if (authToken === undefined) {\n setLoading(false);\n return;\n }\n\n const config = {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n };\n axios\n .get(\n (process.env.REACT_APP_CLOUD_FUNCTION_URL as string) + endpoint,\n config\n )\n .then((res) => {\n setIsAuth(true);\n\n setUrl(\n \"https://acmutd.typeform.com/to/\" +\n typeform_id +\n \"#\" +\n new URLSearchParams(res.data).toString()\n );\n setLoading(false);\n })\n .catch((err) => {\n Sentry.captureException(err);\n setIsAuth(false);\n setLoading(false);\n });\n };\n load_data();\n }, [endpoint, getAccessTokenSilently, loading, signInAttempt, typeform_id]);\n\n useEffect(() => {\n if (isLoading || user_profile.exists || user_profile.isLoading) {\n return;\n }\n if (isAuthenticated) {\n history.push(\"/newprofile\");\n }\n }, [isLoading, isAuthenticated, user_profile, history]);\n\n if (loading) {\n return ;\n }\n\n if (!isAuth) {\n return ;\n }\n\n return ;\n};\n\nexport default Form;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Layout, Menu } from \"antd\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport ACMLogo from \"../../assets/images/acm-light.png\";\nimport { useHistory } from \"react-router-dom\";\nimport \"./DarkNavbar.css\";\nconst { Header } = Layout;\n\ninterface NavbarProps {\n selectedPage: string;\n}\n\nconst DarkNavbar = ({ selectedPage }: NavbarProps) => {\n const history = useHistory();\n const { logout } = useAuth0();\n\n const navigate = (MenuParams: any) => {\n if (MenuParams.key === \"logout\") {\n logout();\n } else history.push(`/${MenuParams.key}`);\n };\n\n return (\n
\n \n (window.location.href = \"https://www.acmutd.co/\")}\n />\n \n \n {/*Applications*/}\n Profile\n Calendar\n \n Logout\n \n \n
\n );\n};\n\nconst LogoComponent = styled.div`\n img {\n height: 64px;\n float: left;\n padding: 10px;\n }\n`;\n\nexport default DarkNavbar;\n","import React, { useEffect } from \"react\";\nimport { Layout, Card } from \"antd\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Navbar from \"../../components/Navbar/DarkNavbar\";\nimport { useHistory } from \"react-router-dom\";\nimport \"./Applications.css\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport { useRecoilValue } from \"recoil\";\nimport { profile } from \"../../api/state\";\nimport Button from \"../../components/OrangeButton/OrangeButton\";\nconst { Content } = Layout;\n\nconst currApps = [\n {\n name: \"Technical Interview Prep Program Application\",\n link: \"/tip\",\n extra: \"https://www.acmutd.co/education\",\n description: (\n

\n Trying to land an internship? Most tech companies have{\" \"}\n both behavioral and technical interviews. Our technical\n interview prep program will prepare you for both and help you{\" \"}\n nail your next interview! We are piloting the program\n this Spring with a small cohort. The program consists of three parts\n every week, one of which is weekly workshops on Thursdays from 8:30-10pm\n CST.\n

\n ),\n },\n {\n name: \"Education Officer Application\",\n link: \"https://apply.acmutd.co/education\",\n extra: \"https://www.acmutd.co/education\",\n description: (\n

\n Want to gain leadership experience, give back to the community, and\n become more involved with ACM? Become an{\" \"}\n ACM Education Officer! ACM Education runs the Mentor\n program, Technical Interview Prep, and various technical workshops\n throughout the semester. We are looking for creative individuals who are\n passionate about CS, understand the logistics of event planning, work\n well in a team, and want to lend a hand to the community!\n

\n ),\n },\n {\n name: \"Development Officer Application\",\n link: \"/developer\",\n extra: \"https://github.com/acmutd\",\n description: (\n

\n ACM Development provides students a platform to follow their passion in\n developing the next generation of software that{\" \"}\n powers our community to new heights. Using advanced\n cutting edge new technology, we seek to deliver{\" \"}\n innovative solutions to simplify and accelerate student\n growth and engagement within ACM. If you are interested in building\n applications like this portal and the several others then fill out our\n application!\n

\n ),\n },\n {\n name: \"Media Officer Application\",\n link: \"/media\",\n description: (\n

\n ACM Media is our newest creative team behind all the marketing and\n design responsibilities that encompass ACM at UTD. We're building a team\n of talented designers and marketing specialists to help conduct\n marketing campaigns and maximize attendance. Join us to help shape the\n brand and identity of the ACM organization!\n

\n ),\n },\n {\n name: \"Win $30!\",\n link: \"/survey\",\n description: (\n

\n Fill out the ACM Participation Survey so that we can help better support\n you with improved opportunities at ACM! This survey will cover questions\n about all the various divisions in ACM. By filling out this survey you\n will be entered in a raffle to win $30!!! Your feedback\n about events at ACM will be taken into consideration and if you have\n more to share feel free to engage with us on Discord!\n

\n ),\n },\n];\n\nconst Applications = () => {\n const { isLoading, isAuthenticated } = useAuth0();\n const user_profile = useRecoilValue(profile);\n const history = useHistory();\n\n useEffect(() => {\n if (isLoading || user_profile.exists || user_profile.isLoading) {\n return;\n }\n if (isAuthenticated) {\n history.push(\"/newprofile\");\n }\n }, [isLoading, isAuthenticated, user_profile, history]);\n\n const linkRedirect = (link: string) => {\n if (link.includes(\"http\")) {\n window.location.href = link;\n } else history.push(link);\n };\n\n const cardApps = currApps.map((app, index) => (\n \n \n {app.description}\n
\n
\n
\n
\n ));\n\n return (\n \n \n \n \n {cardApps}\n \n \n \n );\n};\n\nexport default Applications;\n","import React, { useEffect } from \"react\";\nimport { Tabs, Layout } from \"antd\";\nimport Navbar from \"../../components/Navbar/DarkNavbar\";\nimport \"./Profile.css\";\nimport Button from \"../../components/OrangeButton/OrangeButton\";\nimport { profile } from \"../../api/state\";\nimport { useRecoilValue } from \"recoil\";\nimport { useHistory } from \"react-router-dom\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nconst { Content } = Layout;\nconst { TabPane } = Tabs;\n\nconst Profile = () => {\n const history = useHistory();\n const user_profile = useRecoilValue(profile);\n const { isLoading, isAuthenticated } = useAuth0();\n\n useEffect(() => {\n if (isLoading || user_profile.exists || user_profile.isLoading) {\n return;\n }\n if (isAuthenticated) {\n history.push(\"/newprofile\");\n }\n }, [isLoading, isAuthenticated, user_profile, history]);\n\n return (\n \n \n \n \n \n

Event History:

\n {user_profile.profile?.past_events ? (\n user_profile.profile.past_events\n .map((event) => (\n
\n

{event.name}

\n

\n |   \n {new Date(event.submitted_at).toDateString()}\n

\n
\n ))\n .reverse()\n ) : (\n

No events attended yet.

\n )}\n
\n \n

Submitted Applications:

\n

\n Note: If you recently submitted an application, it may take a\n short period of time before appearing\n

\n {user_profile.profile?.past_applications ? (\n user_profile.profile.past_applications\n .map((app) => (\n
\n

{app.name}

\n

\n |   \n {new Date(app.submitted_at).toDateString()}\n

\n
\n ))\n .reverse()\n ) : (\n

No applications submitted yet.

\n )}\n
\n \n

Quick Links:

\n
    \n
  • \n \n ACM Discord\n \n
  • \n
  • \n \n ACM Facebook\n \n
  • \n
  • \n \n ACM Instagram\n \n
  • \n
  • \n \n ACM LinkedIn\n \n
  • \n
  • \n \n ACM Website\n \n
  • \n
\n
\n {/*\n Content 3\n */}\n \n

\n Your Profile Data:{\" \"}\n

\n

\n Email: {user_profile.profile?.email}\n

\n

\n Name: {user_profile.profile?.first_name}{\" \"}\n {user_profile.profile?.last_name}\n

\n

\n NetID: {user_profile.profile?.net_id}\n

\n

\n Major: {user_profile.profile?.major}\n

\n

\n University: {user_profile.profile?.university}\n

\n

\n Classification:{\" \"}\n {user_profile.profile?.classification}\n

\n \n
\n
\n
\n
\n );\n};\n\nexport default Profile;\n\n/* const data = [\n {\n title: \"Ant Design Title 1\",\n },\n {\n title: \"Ant Design Title 2\",\n },\n {\n title: \"Ant Design Title 3\",\n },\n {\n title: \"Ant Design Title 4\",\n },\n]; */\n","import React, { useEffect } from \"react\";\nimport Message from \"./GenericMessage\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport { jwt } from \"../../api/state\";\nimport { useRecoilState } from \"recoil\";\nimport * as Sentry from \"@sentry/react\";\n\nconst Welcome = () => {\n const { isLoading, isAuthenticated, getAccessTokenSilently, user } = useAuth0();\n const [token, setToken] = useRecoilState(jwt);\n\n useEffect(() => {\n const fn = async () => {\n if (isAuthenticated && !token.isSet) {\n setToken({ token: await getAccessTokenSilently(), isSet: true });\n Sentry.setUser({\n email: user.email,\n id: user.sub,\n });\n }\n };\n fn();\n }, [isLoading, isAuthenticated, token, getAccessTokenSilently, setToken, user]);\n\n return (\n \n );\n};\n\nexport default Welcome;\n","export const vanity = process.env.REACT_APP_VANITY_TYPEFORM as string;\nexport const dev = process.env.REACT_APP_DEV_TYPEFORM as string;\nexport const edu = process.env.REACT_APP_EDU_TYPEFORM as string;\nexport const media = process.env.REACT_APP_MEDIA_TYPEFORM as string;\nexport const pro = process.env.REACT_APP_PROFILE_TYPEFORM as string;\nexport const developer = process.env.REACT_APP_DEVELOPER_TYPEFORM as string;\nexport const survey = process.env.REACT_APP_PARTICIPATION_TYPEFORM as string;\nexport const tip = process.env.REACT_APP_TIP_TYPEFORM as string;\n","import React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { useRecoilValue, useSetRecoilState } from \"recoil\";\nimport { jwt, auth } from \"../../api/state\";\nimport { deleteCookie } from \"../../acmApi/cookieManager\";\nimport ReactLoading from \"react-loading\";\nimport axios from \"axios\";\nimport { useHistory } from \"react-router-dom\";\n\nconst Logout = () => {\n const setJwt = useSetRecoilState(jwt);\n const auth_status = useRecoilValue(auth);\n const history = useHistory();\n\n useEffect(() => {\n if (!auth_status.is_verified) {\n history.push(\"/\");\n }\n }, [auth_status, history]);\n\n useEffect(() => {\n if (auth_status.is_verified) {\n deleteCookie(\"CF_Authorization\");\n setJwt({ token: \"\", isSet: false });\n axios.get(\"http://acmutd.cloudflareaccess.com/cdn-cgi/access/logout\");\n axios.get(\n `https://acmutd.auth0.com/v2/logout?client_id=${\n process.env.REACT_APP_AUTH0_PORTAL_CLIENTID as string\n }&returnTo=https://app.acmutd.co`\n );\n }\n });\n\n return (\n \n
\n \n

Logout in Progress...

\n \n
\n
\n );\n};\n\nconst LogoutComponent = styled.div`\n .container {\n display: flex;\n background-color: black;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100vh;\n }\n .acm-logo {\n width: 20%;\n }\n .text {\n color: white;\n margin: 30px;\n font-family: ;\n }\n .retry-button {\n outline: none;\n border: 1px solid transparent;\n margin: 0px;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 3px 12px 0px;\n padding: 8px 18px;\n min-height: 48px;\n background-color: rgb(243, 126, 3);\n color: rgb(255, 255, 255);\n border-radius: 4px;\n font-size: 20px;\n }\n .retry-button:hover {\n background-color: rgb(247, 152, 52);\n }\n`;\n\nexport default Logout;\n","/*\n * General utils for managing cookies in Typescript.\n * Copied off of a gist attached to stack overflow & it works pretty well\n */\nexport function setCookie(name: string, val: string) {\n const date = new Date();\n const value = val;\n\n // Set it expire in 7 days\n date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000));\n\n // Set it\n document.cookie = name+\"=\"+value+\"; expires=\"+date.toUTCString()+\"; path=/\";\n}\n\nexport function getCookie(name: string) {\n const value = \"; \" + document.cookie;\n const parts = value.split(\"; \" + name + \"=\");\n \n if (parts.length === 2) {\n //@ts-ignore\n return parts.pop().split(\";\").shift();\n }\n}\n\nexport function deleteCookie(name: string) {\n const date = new Date();\n\n // Set it expire in -1 days\n date.setTime(date.getTime() + (-1 * 24 * 60 * 60 * 1000));\n\n // Set it\n document.cookie = name+\"=; expires=\"+date.toUTCString()+\"; path=/\";\n}","import React from \"react\";\nimport { Layout, Calendar, Badge } from \"antd\";\nimport Navbar from \"../../components/Navbar/DarkNavbar\";\nimport \"./Calendar.css\";\n\ninterface calendarEvent {\n color: string;\n content: string;\n link?: string;\n}\n\nconst CalendarPage = () => {\n const getListData = (value: any) => {\n let listData: calendarEvent[] = [];\n switch (value.year()) {\n case 2021:\n switch (value.month()) {\n case 0:\n switch (value.date()) {\n case 29:\n listData = [\n {\n color: \"orange\",\n content: \"ACM Spring Kickoff\",\n link: \"https://acmutd.co\",\n },\n ];\n break;\n default:\n }\n break;\n case 1:\n switch (value.date()) {\n case 11:\n listData = [\n {\n color: \"green\",\n content: \"Intern Fair Prep\",\n link: \"https://acmutd.co\",\n },\n ];\n break;\n case 12:\n listData = [\n {\n color: \"purple\",\n content: \"Fireside Talks with ACM Development\",\n link: \"https://github.com/acmutd\",\n },\n ];\n break;\n case 24:\n listData = [\n {\n color: \"green\",\n content: \"Hacking the Hackathon\",\n link: \"https://acmutd.co\",\n },\n ];\n break;\n default:\n }\n break;\n case 2:\n switch (value.date()) {\n case 5:\n listData = [\n {\n color: \"purple\",\n content: \"Fireside Talks with ACM Development\",\n link: \"https://github.com/acmutd\",\n },\n ];\n break;\n case 26:\n listData = [\n {\n color: \"purple\",\n content: \"Fireside Talks with ACM Development\",\n link: \"https://github.com/acmutd\",\n },\n ];\n break;\n default:\n }\n break;\n case 3:\n switch (value.date()) {\n case 16:\n listData = [\n {\n color: \"purple\",\n content: \"Fireside Talks with ACM Development\",\n link: \"https://github.com/acmutd\",\n },\n ];\n break;\n case 28:\n listData = [\n {\n color: \"blue\",\n content: \"Projects Presentation Night\",\n link: \"https://github.com/acmutd\",\n },\n ];\n break;\n default:\n }\n break;\n default:\n }\n break;\n default:\n }\n return listData || [];\n };\n\n const dateCellRender = (value: any) => {\n const listData = getListData(value) as calendarEvent[];\n return (\n
\n {listData.map((item: any) => (\n \n \n \n \n \n ))}\n
\n );\n };\n\n const getMonthData = (value: any) => {\n if (value.month() === 8) {\n return 1394;\n }\n };\n\n const monthCellRender = (value: any) => {\n const num = getMonthData(value);\n return num ? (\n
\n
{num}
\n ACM Fall Kickoff\n
\n ) : null;\n };\n\n return (\n \n \n\n \n \n );\n};\n\nexport default CalendarPage;\n","import React, { useEffect, useState } from \"react\";\nimport Message from \"./GenericMessage\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport { jwt } from \"../../api/state\";\nimport { useRecoilState } from \"recoil\";\nimport axios from \"axios\";\n\nconst EventPage = () => {\n const { isLoading, isAuthenticated, getAccessTokenSilently } = useAuth0();\n const [token, setToken] = useRecoilState(jwt);\n const [apiComplete, setApiComplete] = useState(false);\n const [event, setEvent] = useState(\"\");\n\n useEffect(() => {\n const fn = async () => {\n if (isAuthenticated && !token.isSet) {\n setToken({ token: await getAccessTokenSilently(), isSet: true });\n }\n };\n fn();\n }, [isLoading, isAuthenticated, token, setToken, getAccessTokenSilently]);\n\n useEffect(() => {\n const fn = async () => {\n const config = {\n headers: {\n Authorization: `Bearer ${await getAccessTokenSilently()}`,\n },\n };\n const result = await axios.get(\n (process.env.REACT_APP_CLOUD_FUNCTION_URL as string) +\n \"/auth0/checkin\" +\n \"?checkpath=\" +\n window.location.pathname,\n config\n );\n setApiComplete(true);\n setEvent(result.data.event_name);\n };\n fn();\n }, [getAccessTokenSilently]);\n\n return (\n \n );\n};\n\nexport default EventPage;\n","import React, { useEffect } from \"react\";\nimport { Route, withRouter } from \"react-router-dom\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport { useSetRecoilState } from \"recoil\";\nimport { jwt } from \"../../api/state\";\nimport Loading from \"../../views/Message/Loading\";\nimport * as Sentry from \"@sentry/react\";\n\nconst AuthRoute = ({ Component, path, ...rest }: any): any => {\n const {\n isLoading,\n isAuthenticated,\n loginWithRedirect,\n getAccessTokenSilently,\n user,\n } = useAuth0();\n const setToken = useSetRecoilState(jwt);\n\n useEffect(() => {\n if (isLoading || isAuthenticated) {\n return;\n }\n const fn = async () => {\n await loginWithRedirect({\n appState: { targetUrl: path },\n });\n if (isAuthenticated) {\n setToken({ token: await getAccessTokenSilently(), isSet: true });\n Sentry.setUser({\n email: user.email,\n id: user.sub,\n });\n }\n };\n fn();\n }, [\n isLoading,\n isAuthenticated,\n loginWithRedirect,\n path,\n setToken,\n getAccessTokenSilently,\n user,\n ]);\n\n const render = () => {\n return isAuthenticated === true ? Component : ;\n };\n\n return ;\n};\n\nexport default withRouter(AuthRoute);\n","import React, { useEffect } from \"react\";\nimport Message404 from \"./views/Message/Message404\";\nimport Form from \"./views/Form\";\nimport Applications from \"./views/Applications/Applications\";\nimport Profile from \"./views/Profile/Profile\";\nimport \"./App.css\";\nimport { Route, Switch, BrowserRouter } from \"react-router-dom\";\nimport Welcome from \"./views/Message/Welcome\";\nimport { media, pro, developer, tip } from \"./config/typeform_config\";\nimport Logout from \"./components/Actions/Logout\";\nimport CalendarPage from \"./views/Calendar/Calendar\";\nimport EventPage from \"./views/Message/Event\";\nimport * as Sentry from \"@sentry/react\";\nimport { useAuth0 } from \"@auth0/auth0-react\";\nimport AuthRoute from \"./components/Actions/AuthRoute\";\nimport { jwt } from \"./api/state\";\nimport { useRecoilState } from \"recoil\";\n\n/**\n * Note: Use Component with Capital C when using a protected route\n * AProtectedRoute = protected by Auth0\n * GProtectedRoute = protected by GSuite\n * Refactor at some point so that we have one protected route with prop?\n * Now that we have protected routes there's no point in protecting individual components\n *
has built in authentication verification, results in 2 api calls to the same endpoint\n */\nfunction App() {\n const {\n isLoading,\n isAuthenticated,\n getAccessTokenSilently,\n user,\n } = useAuth0();\n const [token, setToken] = useRecoilState(jwt);\n\n useEffect(() => {\n const fn = async () => {\n if (isAuthenticated && !token.isSet) {\n setToken({ token: await getAccessTokenSilently(), isSet: true });\n Sentry.setUser({\n email: user.email,\n id: user.sub,\n });\n }\n };\n fn();\n }, [\n isLoading,\n isAuthenticated,\n token,\n setToken,\n getAccessTokenSilently,\n user,\n ]);\n\n return (\n
\n \n \n \n \n }\n exact\n />\n } exact />\n } exact />\n } exact />\n } />\n }\n exact\n />\n }\n exact\n />\n \n }\n exact\n />\n\n \n \n \n \n
\n );\n}\n\nexport default App;\n","const auth0_config = {\n domain: process.env.REACT_APP_AUTH0_DOMAIN as string,\n clientId: process.env.REACT_APP_AUTH0_PORTAL_CLIENTID as string,\n audience: process.env.REACT_APP_AUTH0_AUDIENCE as string,\n}\n\nexport default auth0_config;","import { LOGIN, LOGOUT, authInterface } from \"../actions/authenticate\";\n\nconst authenticateReducer = (\n state = { isLoggedIn: false },\n action: authInterface\n) => {\n switch (action.type) {\n case LOGIN:\n return {\n isLoggedIn: true,\n };\n case LOGOUT:\n return {\n isLoggedIn: false,\n };\n default:\n return state;\n }\n};\n\nexport default authenticateReducer;\n","export const LOGIN = \"LOGIN\";\nexport const LOGOUT = \"LOGOUT\";\n\nexport interface authInterface {\n type: typeof LOGIN | typeof LOGOUT\n}\n\nexport const loginAction = (): authInterface => {\n return {\n type: LOGIN\n }\n}\n\nexport const logoutAction = (): authInterface => {\n return {\n type: LOGOUT\n }\n}","import { combineReducers } from \"redux\";\nimport authenticateReducer from \"./authReducer\";\n\n// mirror firestore\nexport interface RootReducer {\n isLoggedIn: boolean;\n}\n\nconst appState = combineReducers({\n authenticateReducer\n});\n\nexport default appState;","import { createStore } from 'redux';\nimport appState from \"../reducers/rootReducer\";\n\n\nconst store = createStore(appState);\nexport default store;","import React from \"react\";\nimport Message from \"./GenericMessage\";\n\nconst Error = () => {\n return (\n \n );\n};\n\nexport default Error;\n","import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport { Auth0Provider } from \"@auth0/auth0-react\";\nimport config from \"./config/auth0_config\";\nimport { Provider } from \"react-redux\";\nimport { Integrations } from \"@sentry/tracing\";\nimport * as Sentry from \"@sentry/react\";\nimport store from \"./store/store\";\nimport Loading from \"./views/Message/Loading\";\nimport { RecoilRoot as GlobalState } from \"recoil\";\nimport Error from \"./views/Message/Error\";\n\n/*\nSentry Initialization:\n\nSentry acts to organize error reports in an intuitive fashion.\nIt is a catch all that records most issues that take place in\nyour application on the sentry dashboard. The set up for sentry in this application is \nseen below. For more info go to:\n\nACM Sentry how to guide: https://docs.google.com/document/d/1jD4rd2_0TvC2RyjU3XNs1HudUsQBH8kBFLHsKOEvPgc\nSentry docs: https://docs.sentry.io/\n*/\n\nSentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n autoSessionTracking: true,\n integrations: [new Integrations.BrowserTracing()],\n\n // We recommend adjusting this value in production, or using tracesSampler\n // for finer control\n tracesSampleRate: 1.0,\n environment: process.env.NODE_ENV,\n release: process.env.npm_package_version,\n});\n\nReactDOM.render(\n \n \n \n }>\n }>\n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}