{"version":3,"sources":["media/images/patterns/section-header-pattern-2.png","media/images/patterns/connect-pattern.png","media/images/logos/symphony-logo.jpg","media/images/icons/icon-breakout-sessions.png","media/images/icons/icon-leaderboard.png","media/images/photos/recap-image.jpg","components/section/Section.js","components/connect/Connect.js","components/footer/Footer.js","components/header/Header.js","scenes/countdown/Countdown.js","animations/fade/Fade.js","data/agendaItems.js","data/charts.js","utils/miscUtils.js","utils/fetchUtils.js","platforms/api.js","utils/agendaUtils.js","utils/apiUtils.js","components/loading/LoadingSpinner.js","scenes/dashboard/DashboardAgenda.js","utils/chartUtils.js","scenes/dashboard/DashboardLeaderboard.js","scenes/dashboard/DashboardTwitter.js","scenes/dashboard/Dashboard.js","data/learnMore.js","scenes/learn-more/LearnMore.js","data/programming.js","scenes/programming/ProgrammingCarousel.js","scenes/programming/ProgrammingSelected.js","scenes/programming/Programming.js","scenes/recap/Recap.js","data/speakers.js","scenes/speakers/Speakers.js","data/sponsors.js","scenes/sponsors/Sponsors.js","data/videos.js","scenes/videos/Videos.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Section","props","children","classes","header","id","theme","text","sectionHeaderPatternSrc","require","useState","backgroundImage","patternStyle","setPatternStyle","headerRef","useRef","patternRef","useEffect","current","height","prevPatternStyle","offsetHeight","themeClass","className","ref","style","patternSrc","Connect","buttonRef","src","alt","href","rel","target","Footer","symphonyLogoSrc","Header","phase","isPhaseOne","headerNavPhaseClass","renderButton","deviceType","buttonText","buttonLink","pinStart","Countdown","Fade","duration","show","shouldRender","setShouldRender","animation","onAnimationEnd","agendaItemsBackup","acf","title","image","link","description","breakout_session","start_time","end_time","speakers","leaderboardsBackup","icon","row_1","name","value","row_2","row_3","row_4","emptyFunction","get","url","headers","onSuccess","onError","fetch","then","response","json","res","ok","catch","error","baseUrl","Api","Headers","baseTime","DateTime","local","areBreakoutSessionsActive","breakoutSessionsStartTime","fromISO","filterAgendaItems","items","agendaItems","filter","item","breakoutSessions","generateAgendaButtonText","start","end","startTime","ISOifyTime","isUpcomingAgendaItem","time","replace","sortAgendaItemsByTime","sort","a","b","toJSDate","formatAcfResponse","LoadingSpinner","iconBreakoutSessionsSrc","DashboardAgenda","hasAgendaItems","length","hasBreakoutSessions","map","i","index","key","type","breakoutSessionsActiveClass","sessions","renderBreakoutSessions","DashboardAgendaItem","html","__html","dangerouslySetInnerHTML","calculateEntryWidthPercentageValue","entry","entries","entryValue","parseInt","reduce","acc","calculateTotalEntriesValue","iconLeaderboard","DashboardLeaderboard","leaderboards","hasLeaderboards","selectedLeaderboard","setSelectedLeaderboard","renderChart","curr","concat","generateEntriesArray","barWidth","highestValue","calculateEntryWidthPercentageDisplay","highest","calculateHighestEntryValue","barValue","barStyle","width","minWidth","random","Math","floor","renderChartBody","renderHeader","leaderboard","isActiveClass","onClick","hasSelectedLeaderboard","obj","hasOwnProperty","isEmptyObject","renderContent","DashboardTwitter","data-chrome","data-theme","Dashboard","dashboardPhaseClass","isActivePhase","setAgendaItems","setBreakoutSessions","setLeaderboards","onFetchAgendaItemsError","agendaItem","onFetchAgendaItemsSuccess","onFetchLeaderboardsError","responseFormatted","onFetchLeaderboardsSuccess","getAgendaItems","getLeaderboards","learnMoreItemsBackup","video","fadeStyle","display","LearnMore","isActive","learnMoreLinks","setLearnMoreLinks","learnMoreVideos","setLearnMoreVideos","selectedOption","setSelectedOption","shouldDisplay","setShouldDisplay","startingIndex","setStartingIndex","hasLearnMoreVideos","onDropdownChange","altered","onFetchLearnMoreItemsError","learnMoreItem","links","videos","onFetchLearnMoreItemsSuccess","renderArrow","direction","nextOptionLeft","nextOptionRight","arrowDirectionClass","arrowDisabledClass","setTimeout","handleClickArrow","getLearnMoreItems","isSelectedOption","dropdownOptions","caretIcon","modalCloseButton","onChange","options","selectedValue","renderDropdown","slice","renderLinks","LearnMoreVideo","itemStyle","setItemStyle","itemRef","prevItemStyle","offsetWidth","programmingBackup","ProgrammingCarousel","option","ProgrammingCarouselItem","itemClass","iconWrapperStyle","setIconWrapperStyle","iconRef","window","addEventListener","ProgrammingSelected","imageStyle","setImageStyle","imageRef","multiplier","innerWidth","calculateHeightMultiplier","prevImageStyle","Programming","setOptions","hasOptions","onFetchProgrammingSuccess","onFetchProgrammingError","getProgramming","videoBackgroundStyle","Recap","videoStyle","videoRef","speakersBackup","email","speakersPerPage","calculatePagination","Speakers","setSpeakers","hasSpeakers","onFetchSpeakersError","speaker","onFetchSpeakersSuccess","getSpeakers","Speaker","sponsorsBackup","Sponsors","sponsors","setSponsors","hasSponsors","pagination","arr","onFetchSponsorsError","sponsor","onFetchSponsorsSuccess","getSponsors","renderSponsors","SponsorItem","videosBackup","embed_code","slug","flexDirection","alignItems","Videos","setVideos","hasVideos","onFetchVideosError","onFetchVideosSuccess","renderSelectedOption","getVideos","list","renderVideos","Video","App","Boolean","location","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","console","message"],"mappings":"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JiD,IAAK,CACDY,KAAM,iBACNX,MAAO,2DACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,WACNX,MAAO,4DACPC,MACI,yEACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,eACNX,MAAO,mCACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,YACNX,MAAO,wCACPC,MACI,2EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,eACNX,MACI,oEACJC,MACI,4EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,gBACNX,MAAO,6CACPC,MACI,+EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,YACNX,MACI,gEACJC,MACI,yEACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,mBACNX,MAAO,iCACPC,MACI,2FACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,oBACNX,MAAO,kDACPC,MACI,iFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,gBACNX,MACI,8DACJC,MACI,4EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,qBACNX,MACI,iEACJC,MACI,mEACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,eACNX,MACI,6FACJC,MACI,wEACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,cACNX,MAAO,kCACPC,MACI,2EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,iBACNX,MAAO,iDACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,aACNX,MACI,wFACJC,MACI,0EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,iBACNX,MAAO,yDACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,oBACNX,MACI,yFACJC,MACI,0FACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,oBACNX,MACI,kFACJC,MACI,mFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,eACNX,MAAO,oCACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,YACNX,MAAO,8BACPC,MACI,0EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,iBACNX,MAAO,yCACPC,MACI,uGACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,iBACNX,MAAO,kCACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,cACNX,MAAO,6CACPC,MACI,4EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,uBACNX,MAAO,gBACPC,MACI,0FACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,oBACNX,MAAO,wCACPC,MACI,mFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,gBACNX,MAAO,qCACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,iBACNX,MACI,uEACJC,MACI,kFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,iBACNX,MAAO,mCACPC,MACI,gFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,mBACNX,MAAO,yCACPC,MACI,gFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,mBACNX,MAAO,yCACPC,MACI,iFACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,eACNX,MAAO,0CACPC,MACI,8EACJmN,MAAO,KAGf,CACItQ,GAAI,KACJiD,IAAK,CACDY,KAAM,gBACN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","file":"static/js/main.c889b1c2.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/section-header-pattern-2.081bc04a.png\";","module.exports = __webpack_public_path__ + \"static/media/connect-pattern.dfc87d68.png\";","module.exports = __webpack_public_path__ + \"static/media/symphony-logo.83615907.jpg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAACuCAYAAABAzl3QAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDktMTZUMTA6NTE6MTYtMDQ6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA5LTE2VDExOjUyOjQ0LTA0OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA5LTE2VDExOjUyOjQ0LTA0OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAzZjQ0OTRiLTM2MDUt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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAYAAAA9zQYyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF6WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDktMTZUMTA6NTE6MzktMDQ6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA5LTE2VDExOjU0OjIyLTA0OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA5LTE2VDExOjU0OjIyLTA0OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIzZDc5NzhkLWQ1MTUtNDQ1YS05YmFkLTI4Y2E5Yzk0YWVmZSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOGI3OTQwMC01YTRhLTRlYjQtYjAyMS0xNWFkODNhY2ZmYTAiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozOGI3OTQwMC01YTRhLTRlYjQtYjAyMS0xNWFkODNhY2ZmYTAiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM4Yjc5NDAwLTVhNGEtNGViNC1iMDIxLTE1YWQ4M2FjZmZhMCIgc3RFdnQ6d2hlbj0iMjAyMC0wOS0xNlQxMDo1MTozOS0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjIzZDc5NzhkLWQ1MTUtNDQ1YS05YmFkLTI4Y2E5Yzk0YWVmZSIgc3RFdnQ6d2hlbj0iMjAyMC0wOS0xNlQxMTo1NDoyMi0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lwd34wAABpdJREFUeJzt3V1227oOQGE4q3Pr6DqyDsp9KbNkRbb4A4IAuL/ne2OZ2kFhO8l5/P7zV9Dkafx4D+PHC+3X6gtwzjreK1fXQORvEPQrDwHXOF8ngf+3e9BRAr5D4P/tGHSWiD85Pset4t4l6B0ifmeruLMHvXPIV8p5pA07a9CzQ7YKYtbzSBt2pqBn3fyVN/3qsTWfZ7p1JEPQ2iF7v7Hn69N6/immduSgNUOOfBOP165xJqHDjhq0xo0LecNuaMb9lIBnFC3o0ZsU7gYN0Ig73LSOEjQhjynPP33YX6svoMJIzA8JcBMMjZ6H+/f1PU/o0ZDx3sjEdj2tvU7o3piZyG1GzsvltPYYdM9BEfKY3vNzF7WnlaM3ZOjpWUVcrSBeJjQx+xJ2WnsIuvUgWC9s9Jzz8qhXB90TM2yFinrVDk3IsbTu1ss+Nl8xoYk5rpZ78ZQF09o6aGKOz/UKYhl0yxPjhZ9vrffHLGqroFtjRgzuorYImphzcxX17KCJeQ9uop4ZNDHvxcU9XP3BioiTg4CK2ns5bUrPCrr2gok5n6VRzwiamLEsau2giRnFkqg1gyZmnJlHbf2ikJj3Y3rPtYKu+Q4j5n3V3HuVKa0RNDGjhknUo0Ev/w0FpDPUlMUOzXRGMb2FkaBZNdBj6urRGzQxY8S0qD38LAegpidopjM0TJnSMyY0MaOWeiutQfM2Haw1NdcSNKsGZlBdPTT/0MwOMa/6Fyr72T7E+KNvVo21Z8D5V56B1ovC7BPEQ1AermEmlYZqgs5+kIjjtkWNCZ19OsPOcEt8UohU7oK+G/FMZ2i7a+pjk0xopPIpaKYzVume0kxopPIuaKYzVuua0kxopNITNNMZVppbuwqaTwYRxY9WWTmQSmvQrBuw1tTcOWjWDUTz0iwrB1JpCZp1A6tUt8eERirHoNmfEdV3u7UTmnUDq1U1yMqBVDT/jAHWs1ob3f6LXSY0+3NsT7G9h9aPV+MpUrdyuP1uhIjs9fdCbltkh47Nw5T0cA3fCBqpEDRS+RJn/2QAA553E5oXhPDmY5OsHEiFoJEKQSMVgkYqBI1UCBqpEDRSIWikQtBIhaCRCkEjFYJGKp5/p9Ddb0PAP48TetXvq/FjtAl4C3p1VKsfH4O8Be0BUQdG0EiFoJEKQSMVgkYqBI1UCBqpEDRSIWikQtBI5S5oPjWDNx+b/BJ+ygx5PFg5kApBIxWCRio1QfPCEF7ctliC5oUhonuIsHIgGYJGKrVBs0djtaoGj0GzRyOq73ZZOZBKS9CsHViluj0mNFI5B80ejWhemm2d0KwdsNbUHCsHUrkKmrUDUfxotWdCs3bASnNrrBxI5V3Qd2sHUxqz3TV22SgTGql8CpopjVW6prMIExrJ3AXNlIa17ukswoRGMhpBM6WhZbilmqB3++Qw0vONdK0abp+v1sqhNaW93iAP1+XhGq5oXZdKQ7VBWx7mqhv3uHnslUHdXdfKM3P1WJr/aeRn7YNWyD6NZvB8bXeG3tk4alk5ar4oLxDRSrWZ1h068hRATE3NzXgfmimNWuqt9ATN6gENNY00bwR8UohUeoNmSmPElOksMjahiRo9psUsYrNyEDWK6S2MBs3beNA21JTGhGb1QI2pq0ahtXIQNT4xiVnE/m07ot6P6T3XDLr2O4yo91F7r9Vei2lPaKJGYR6zyJyVg6ixJGaReTs0Ue9rWcwic18UEvV+lsYs4ueHk4g6Phf3cHbQLd+JLg4EXVru3dRPly0mNFHn5iZmEbuVg6hzchWziO0O3Ro1YfvVen/MfojN+kVh6xMjan9a74npT2SueJej9Q+jELUfrVPZ/MeLV75txwoSh9sV42z1+9CsIP65XjHOVgct0hc1Yc/Xc87Lf4PJQ9AifQdB1PP0nO3ymEV0/1jjqHIgLYdZ/rcuDjOBsCEXXib0Ue+0ZmL36z0/VzGL+AxapP+gCLvNyHm5i1nE18px1rOCFKwin41807s+U68T+mjkAJnYr0bPw3XMIr4n9NHItD7+/9zfkElGv6nDnFuUoAutsI9fKyuNf5nCnVG0oIuHjN+wjHFrrlchzyRq0CLj0/ooctzarxGiPf8XkYMuNMO++jrebvCsF7nenmeXDEEXxxuiedOvvpbVzZ/9Dk2KiI8yBX2kPbXPor8VmC7kImvQxeywo0kbcpE96GLWOhJB+oiPdgn6aIe4t4r4aMegj843Pmrg2wZ8tnvQZ1ECJ+A3CPqzq3CsIyfeBv8AmgsHWY1DLcMAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/recap-image.6ffc17ac.jpg\";","import React, { useEffect, useRef, useState } from \"react\";\n\n// CSS\nimport \"../../css/components/section/section.scss\";\n\n// Constants\n\nexport const Section = (props) => {\n const { children, classes, header = {}, id, theme } = props;\n const { text } = header;\n const sectionHeaderPatternSrc = require(\"../../media/images/patterns/section-header-pattern-2.png\");\n\n /**********************************\n * useState\n **********************************/\n\n const [patternStyle, setPatternStyle] = useState({\n backgroundImage: `url(${sectionHeaderPatternSrc})`,\n });\n\n /**********************************\n * useRef\n **********************************/\n\n const headerRef = useRef(null);\n const patternRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (patternRef.current && headerRef.current && !patternStyle.height) {\n setPatternStyle((prevPatternStyle) => ({\n ...prevPatternStyle,\n height: headerRef.current.offsetHeight,\n }));\n }\n }, [patternRef, patternStyle, headerRef]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n const themeClass =\n theme === \"dark\" ? \"section--theme-dark\" : \"section--theme-light\";\n\n function renderHeader() {\n return (\n header &&\n header.text && (\n <div className=\"section__header\" ref={headerRef}>\n <h2 className=\"section__header__text\">{text}</h2>\n <div\n className=\"section__header__pattern\"\n ref={patternRef}\n style={patternStyle}\n />\n </div>\n )\n );\n }\n\n return (\n <section className={`section ${classes} ${themeClass}`} id={id}>\n {renderHeader()}\n {children}\n </section>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\n\n// Components\nimport { Section } from \"../section/Section\";\n\n// CSS\nimport \"../../css/components/connect/connect.scss\";\n\n// Constants\nconst patternSrc = require(\"../../media/images/patterns/connect-pattern.png\");\n\nexport const Connect = (props) => {\n /**********************************\n * useState\n **********************************/\n\n const [patternStyle, setPatternStyle] = useState({});\n\n /**********************************\n * useRef\n **********************************/\n\n const buttonRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (!patternStyle.height) {\n setPatternStyle({ height: buttonRef.current.offsetHeight });\n }\n }, [buttonRef, patternStyle]);\n\n /**********************************\n * End Hooks\n **********************************/\n return (\n <Section classes=\"connect\" theme=\"dark\">\n <img\n src={patternSrc}\n alt=\"Orange pattern\"\n className=\"connect__pattern\"\n style={patternStyle}\n />\n <a\n className=\"connect__button\"\n href=\"https://symphony.com/contact/\"\n ref={buttonRef}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Connect with Symphony\n </a>\n <img\n src={patternSrc}\n alt=\"Orange pattern\"\n className=\"connect__pattern\"\n style={patternStyle}\n />\n </Section>\n );\n};\n","import React from \"react\";\n\n// CSS\nimport \"../../css/components/footer/footer.scss\";\n\nexport const Footer = (props) => {\n return (\n <footer className=\"footer\">\n <div className=\"footer__links\">\n <a\n className=\"footer__links__link\"\n href=\"https://symphony.com/legal/privacy\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Privacy Policy\n </a>\n <a\n className=\"footer__links__link\"\n href=\"https://symphony.com/legal/cookie-policy\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Cookie Policy\n </a>\n <a\n className=\"footer__links__link\"\n href=\"https://symphony.com/legal/terms-of-service\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Terms of Service\n </a>\n </div>\n <div className=\"footer__copyright\">\n <span>\n Copyright © 2020 Symphony Communication Services, LLC. All\n Rights Reserved.\n </span>\n </div>\n <div className=\"footer__disclaimer\">\n <span>\n By attending Symphony Innovate 2020, you consent to (i) the\n recording of your questions and comments posted during the\n live sessions; (ii) be included in Symphony’s newsletter\n distribution list (which distribution will contain an\n unsubscribe option if you no longer desire to receive the\n newsletters); and (iii) the use and publication by Symphony\n Communication Services, LLC, its affiliates and any\n applicable media agency acting on Symphony’s behalf of (1)\n your name, statements & voice (if applicable), (2) a live\n stream of Symphony Innovate 2020 and portions thereof, and\n (3) images, descriptions (whether verbal or written) and\n videos of any developments you create for purposes of\n participating in the event, in each case as such information\n or media is received or recorded by Symphony at Symphony\n Innovate 2020, for any purpose in which Symphony engages,\n including any promotion, advertisement or other conduct of\n trade.\n </span>\n </div>\n </footer>\n );\n};\n","import React from \"react\";\nimport Headroom from \"react-headroom\";\n\n// CSS\nimport \"../../css/components/header/header.scss\";\n\n// Constants\nconst symphonyLogoSrc = require(\"../../media/images/logos/symphony-logo.jpg\");\n\nexport const Header = (props) => {\n const { phase } = props;\n\n const isPhaseOne = phase === 1;\n const headerNavPhaseClass = `header__nav--phase-${phase}`;\n\n function renderButton(deviceType) {\n const buttonText = isPhaseOne ? \"Register Now\" : \"Watch Now\";\n const buttonLink = isPhaseOne\n ? \"https://event.on24.com/eventRegistration/EventLobbyServlet?target=reg30.jsp&referrer=https%3A%2F%2Fwcc.on24.com%2F&eventid=2738328&sessionid=1&key=303C4684D5BA9D2B2DAE80E205DF3712®Tag=&sourcepage=register\"\n : \"https://event.on24.com/wcc/r/2738328/303C4684D5BA9D2B2DAE80E205DF3712\";\n return (\n <a\n className={`header__button header__button--${deviceType}`}\n href={buttonLink}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <i className=\"fas fa-video\" />\n {buttonText}\n </a>\n );\n }\n\n return (\n <Headroom pinStart={256}>\n <header className=\"header\">\n <div className=\"header__divider\">\n <div className=\"header__divider__line\" />\n <div className=\"header__divider__line\" />\n <div className=\"header__divider__line\" />\n </div>\n <div className=\"header__wrapper\">\n <div className=\"header__brand\">\n <img\n src={symphonyLogoSrc}\n alt=\"Symphony Innovate logo\"\n className=\"header__brand__logo\"\n />\n {renderButton(\"mobile\")}\n </div>\n <div className=\"header__actions\">\n <nav\n className={`header__nav header__nav--first ${headerNavPhaseClass}`}\n >\n {!isPhaseOne && (\n <a className=\"header__nav__link\" href=\"#agenda\">\n Agenda\n </a>\n )}\n {!isPhaseOne && (\n <a\n className=\"header__nav__link\"\n href=\"#speakers\"\n >\n Speakers\n </a>\n )}\n {!isPhaseOne && (\n <a\n className=\"header__nav__link\"\n href=\"#learn-more\"\n >\n Resources\n </a>\n )}\n {isPhaseOne && (\n <a\n className=\"header__nav__link\"\n href=\"https://innovate.symphony.com/2020-nyc-hackathons/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Hackathons\n </a>\n )}\n {isPhaseOne && (\n <a\n className=\"header__nav__link\"\n href=\"#sponsors\"\n >\n Sponsors\n </a>\n )}\n </nav>\n {renderButton(\"desktop\")}\n </div>\n </div>\n </header>\n </Headroom>\n );\n};\n","import React from \"react\";\n\n// CSS\nimport \"../../css/scenes/countdown/countdown.scss\";\n\n// Components\nimport { Section } from \"../../components/section/Section\";\n\nexport const Countdown = (props) => {\n const { phase } = props;\n\n return (\n (phase === 1 || phase === 4) && (\n <Section classes=\"countdown\" id=\"countdown\" theme=\"dark\">\n <div className=\"countdown__info\">\n <h2 className=\"countdown__info__header\">\n Connectivity in the Collaboration Economy\n </h2>\n <p className=\"countdown__info__description\">\n Symphony Innovate 2020 brought together hundreds of\n attendees digitally to hear financial services\n executives and technology experts discuss new global\n markets workflows, how to connect the virtual workforce,\n and the role of security in remote collaboration.\n </p>\n <p className=\"countdown__info__description\" style=\"Display: none;\">\n Be sure to{\" \"}\n <a\n href=\"https://www.addevent.com/event/dE5351737 \"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n save the date\n </a>{\" \"}\n for Symphony Innovate Asia 2021 [Digital] on 28 January!\n </p>\n </div>\n </Section>\n )\n );\n};\n","import React, { useEffect, useState } from \"react\";\n\nexport const Fade = ({ children, classes, duration = \"2s\", show, style }) => {\n const [shouldRender, setShouldRender] = useState(show);\n\n useEffect(() => {\n if (show) setShouldRender(true);\n }, [show]);\n\n const onAnimationEnd = () => {\n if (!show) setShouldRender(false);\n };\n\n return (\n shouldRender && (\n <div\n className={classes}\n style={{\n ...style,\n animation: `${show ? \"fadeIn\" : \"fadeOut\"} ${duration}`,\n }}\n onAnimationEnd={onAnimationEnd}\n >\n {children}\n </div>\n )\n );\n};\n","export const agendaItemsBackup = [\n {\n id: 2755,\n acf: {\n title: \"Front Office Use Cases\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727041/04A1836882041FBBB95BA7F53C14FF85\",\n description:\n \"Led by Ralph Pfitzer, Regional Head of Client Strategy, Symphony\",\n breakout_session: true,\n start_time: \"2020-10-08 13:00:00\",\n end_time: \"2020-10-08 15:00:00\",\n speakers:\n '<p class=\"p1\"><span class=\"s1\"><b>Jefferies: JEFQuants</b></span></p> <ul> <li><b></b><span class=\"s1\">Jatin Suryawanshi, </span><span class=\"s2\">Head of Global Quantitative Strategy, Jefferies</span></li> </ul> <p class=\"p1\"><span class=\"s1\"><b>Asset class spotlight: FX</b></span></p> <p class=\"p2\"><span class=\"s2\">Moderated by Olivia Knocker, </span><span class=\"s1\">Regional Head of Client Strategy</span></p> <ul> <li class=\"p2\"><span class=\"s1\">Mauricio Sada-Paz, Global Head of eFICC Product and Distribution, Barclays</span></li> <li class=\"p2\"><span class=\"s3\">Gordon Noonan, </span><span class=\"s1\">Head of FX and Rates Trading, London</span><span class=\"s3\">, Schroders</span></li> <li class=\"p4\"><span class=\"s1\">Brendan McMurtray, Vice President, FX Market Structure & Electronic Trading Analyst, T. Rowe Price</span></li> </ul> <p class=\"p1\"><span class=\"s1\"><b>Schroders and Barclays: FX Swaps Axes bot </b></span></p> <ul> <li class=\"p2\"><span class=\"s1\">Natasha Lauder, </span><span class=\"s2\">Trading Engagement Analyst, Trading Support, Schroders</span></li> <li class=\"p2\"><span class=\"s1\">Robin Wiseman, Head of Client Analytics, Barclays</span></li> </ul> <p class=\"p1\"><span class=\"s1\"><b>Morgan Stanley: Ask Research</b></span></p> <p><span class=\"s2\">Jennifer Casas,</span><span class=\"s3\"> Research Technology Management, Morgan Stanley </span></p> <p><span class=\"s2\">Eden Kidner, </span><span class=\"s1\">CTO of Research, Morgan Stanley</span></p> ',\n },\n },\n {\n id: 2754,\n acf: {\n title: \"Community Viewpoints: Future of Markets\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727038/B16855FBE1DC3E7FC72103011AE053CB\",\n description: \"Moderated by Brad Levy\",\n breakout_session: false,\n start_time: \"2020-10-08 11:55:00\",\n end_time: \"2020-10-08 12:30:00\",\n speakers:\n '<ul> <li>Yannig Loyer, Global Head of Trading, Securities Financing and Derivatives, AXA IM</li> <li>Fidelis Oruche, Head of Investment Advisory and Sales, Bank of Singapore</li> <li>Sarah Schaffer, Head of Aladdin Product Management, BlackRock</li> <li>Brian Steele, Managing Director, Global Head of Market Solutions, Goldman Sachs</li> <li><span class=\"s1\">Adam Wall, Head of Autobahn Group, Deutsche Bank</span></li> </ul> ',\n },\n },\n {\n id: 2753,\n acf: {\n title: \"Future of Markets: Demos and Discussion\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727038/B16855FBE1DC3E7FC72103011AE053CB\",\n description: \"\",\n breakout_session: false,\n start_time: \"2020-10-08 11:20:00\",\n end_time: \"2020-10-08 11:55:00\",\n speakers:\n \"<ul> <li> Brad Levy, President and CCO, Symphony</li> <li> Goutam Nadella, EVP, Client Solutions, Symphony</li> <li> Bhavin Rawal, SVP, Product Management, Symphony</li> </ul> \",\n },\n },\n {\n id: 2752,\n acf: {\n title: \"Transformation of the Global Financial Industry\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727038/B16855FBE1DC3E7FC72103011AE053CB\",\n description:\n \" A conversation between Benjamin Fuchs, CEO/CIO of BFAM and David Gurlé\",\n breakout_session: false,\n start_time: \"2020-10-08 10:55:00\",\n end_time: \"2020-10-08 11:20:00\",\n speakers:\n '<ul> <li>Benjamin Fuchs, CEO/CIO of BFAM<br /> <section class=\"elementor-section elementor-top-section elementor-element elementor-element-2e19645 time-wrapper elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2e19645\" data-element_type=\"section\"> <div class=\"elementor-container elementor-column-gap-default\"> <div class=\"elementor-row\"> <div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-8513b48\" data-id=\"8513b48\" data-element_type=\"column\"> <div class=\"elementor-column-wrap elementor-element-populated\"> <div class=\"elementor-widget-wrap\"> <div class=\"elementor-element elementor-element-a7266ac elementor-widget elementor-widget-text-editor\" data-id=\"a7266ac\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"> <div class=\"elementor-widget-container\"></div> </div> </div> </div> </div> </div> </div> </section> <section class=\"elementor-section elementor-top-section elementor-element elementor-element-25f016f time-wrapper elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"25f016f\" data-element_type=\"section\"> <div class=\"elementor-container elementor-column-gap-default\"> <div class=\"elementor-row\"> <div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a18bf0f Time123\" data-id=\"a18bf0f\" data-element_type=\"column\"> <div class=\"elementor-column-wrap elementor-element-populated\"> <div class=\"elementor-widget-wrap\"> <div class=\"elementor-element elementor-element-2a23475 elementor-widget elementor-widget-text-editor\" data-id=\"2a23475\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"></div> </div> </div> </div> </div> </div> </section> </li> <li>David Gurlé, Founder and CEO, Symphony</li> </ul> ',\n },\n },\n {\n id: 2751,\n acf: {\n title:\n \" “Where are they now?†– Updates from Crowd Favorite Innovations from Past Showcases\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727038/B16855FBE1DC3E7FC72103011AE053CB\",\n description:\n \"Moderated by Sashi Dias Valtz and Queenie Chan, Head of APAC, General Manager, Symphony\",\n breakout_session: false,\n start_time: \"2020-10-08 09:55:00\",\n end_time: \"2020-10-08 10:45:00\",\n speakers:\n '<ul> <li><strong>From internal to external:</strong> Andrew Mosson, Executive Director, CIB Digital Strategy, J.P. Morgan</li> <li><strong>The original cross-firm automation, Selina and Debbie: </strong><span class=\"s1\">Jordan Barnett, Head of Program Trading & Execution Services, BNY Mellon </span>and Andrew Donnelly, Director, Head of Transformation, Security Services Technology, Global Transaction Banking, Deutsche Bank AG, Singapore</li> <li><strong>Asset class expansion of BETSI:</strong> Ashwin Venkatraman, Executive Director, J.P. Morgan Asset Management and Damien Lodge, Executive Director, Global Head of Currency Trading, J.P. Morgan Asset Management</li> <li><strong>Izzy 2.0:</strong> Brittany Garland, Executive Director, IHS Markit</li> <li><strong>The latest from our 2020 hackathon: </strong>Alexandre Gabriel, Innovation Leader – SG Global Securities Operations, Société Générale and Thierry Weidenmann, CEO, Accenture Post Trade Processing</li> </ul> ',\n },\n },\n {\n id: 2750,\n acf: {\n title: \"The Future Platform for Financial Services\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727038/B16855FBE1DC3E7FC72103011AE053CB\",\n description: \"\",\n breakout_session: false,\n start_time: \"2020-10-08 09:30:00\",\n end_time: \"2020-10-08 09:55:00\",\n speakers:\n \"<ul> <li> Dietmar Fauser, EVP of Product & Engineering, Symphony</li> <li> Jonathan Christensen, CXO, Symphony</li> <li> Manish Sharma, VP Product & Engineering, Symphony</li> <li> Savvithri Sivaraamakrishnan, Senior Director, Product Management, Symphony</li> </ul> \",\n },\n },\n {\n id: 2749,\n acf: {\n title: \"Keynote: Connectivity in the Collaboration Economy\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727038/B16855FBE1DC3E7FC72103011AE053CB\",\n description: \"\",\n breakout_session: false,\n start_time: \"2020-10-08 09:05:00\",\n end_time: \"2020-10-08 09:30:00\",\n speakers:\n '<ul> <li> <section class=\"elementor-section elementor-top-section elementor-element elementor-element-2e19645 time-wrapper elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2e19645\" data-element_type=\"section\"> <div class=\"elementor-container elementor-column-gap-default\"> <div class=\"elementor-row\"> <div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-8513b48\" data-id=\"8513b48\" data-element_type=\"column\"> <div class=\"elementor-column-wrap elementor-element-populated\"> <div class=\"elementor-widget-wrap\"> <div class=\"elementor-element elementor-element-a7266ac elementor-widget elementor-widget-text-editor\" data-id=\"a7266ac\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"> <div class=\"elementor-widget-container\"> <div class=\"elementor-text-editor elementor-clearfix\"> <p>David Gurlé, Founder and CEO, Symphony</p> </div> </div> </div> </div> </div> </div> </div> </div> </section> <section class=\"elementor-section elementor-top-section elementor-element elementor-element-25f016f time-wrapper elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"25f016f\" data-element_type=\"section\"> <div class=\"elementor-container elementor-column-gap-default\"> <div class=\"elementor-row\"> <div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a18bf0f Time123\" data-id=\"a18bf0f\" data-element_type=\"column\"> <div class=\"elementor-column-wrap elementor-element-populated\"> <div class=\"elementor-widget-wrap\"> <div class=\"elementor-element elementor-element-2a23475 elementor-widget elementor-widget-text-editor\" data-id=\"2a23475\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"></div> </div> </div> </div> </div> </div> </section> </li> </ul> ',\n },\n },\n {\n id: 2748,\n acf: {\n title:\n \"Welcome Remarks from Sashi Dias Valtz, Global Head of Client Strategy, Symphony\",\n image: false,\n link:\n \"https://www.eventbrite.com/e/symphony-innovate-2020-tickets-110639349272\",\n description: \"\",\n breakout_session: false,\n start_time: \"2020-10-08 09:00:00\",\n end_time: \"2020-10-08 09:05:00\",\n speakers:\n \"<ul> <li>Sashi Dias Valtz, Global Head of Client Strategy, Symphony</li> </ul> \",\n },\n },\n {\n id: 2683,\n acf: {\n title: \"Operations Workflow\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727041/04A1836882041FBBB95BA7F53C14FF85\",\n description:\n \"Led by Kate Chatzopoulos, Head of Operations Workflow, Symphony\",\n breakout_session: true,\n start_time: \"2020-10-08 13:00:00\",\n end_time: \"2020-10-08 15:00:00\",\n speakers:\n '<p class=\"p1\"><span class=\"s1\"><b>Accenture: AskCaly – Calypso integration</b></span></p> <ul> <li class=\"p1\"> <p class=\"p1\"><span class=\"s1\">Alexandre Abehsira</span><span class=\"s1\">, </span><span class=\"s1\">Managing Director, Capital Markets</span></p> </li> </ul> <p class=\"p1\"><span class=\"s1\"><b>Panel Discussion: Operations</b></span></p> <p class=\"p1\"><em><span class=\"s1\">Moderated by Brad Levy</span></em></p> <ul> <li class=\"p2\"><span class=\"s1\">Lou Rosato, Director – Investment Operations, Global Business Strategy and Relationship Management, BlackRock</span></li> <li class=\"p2\">Raj Iyer, Director, Core Digitization and Reimagination, BNY Mellon</li> <li class=\"p2\"><span class=\"s1\">Karen Newton, Managing Director, Credit Suisse</span></li> </ul> <p class=\"p1\"><span class=\"s1\"><b>HSBC and Schroders: River bot</b></span></p> <ul> <li class=\"p1\"><span class=\"s1\">Janice Ku, Director, Digital & Data, HSBC</span></li> <li class=\"p1\"><span class=\"s1\">Chwee Chua, Global Head for Operations Innovation, Schroders</span></li> </ul> ',\n },\n },\n {\n id: 2682,\n acf: {\n title: \"Technology & Developer Forum\",\n image: false,\n link:\n \"https://event.on24.com/wcc/r/2727041/04A1836882041FBBB95BA7F53C14FF85\",\n description:\n \"Led by Ivana Polim, Global Head of Client Engagement, Symphony\",\n breakout_session: true,\n start_time: \"2020-10-08 13:00:00\",\n end_time: \"2020-10-08 15:00:00\",\n speakers:\n '<p><span class=\"s1\"><b>Tech Deep-Dive: The Risks to Mitigate when Balancing Security & Compliance with Productivity</b></span></p> <ul> <li><span class=\"s1\">Pravir Ramtekkar, Director, Product Management, Symphony</span></li> <li><span class=\"s1\">Ravi Varanasi, VP of Engineering, Platform, Symphony</span></li> <li>Special guest: Philip Fry, VP of Product Strategy, Verint</li> </ul> <p><b>Partner Spotlight: GreenKey Technologies</b></p> <ul> <li><span class=\"s3\">Tejas Shastry, </span><span class=\"s1\">Co-Founder, Chief Data Scientist, GreenKey</span></li> </ul> <p><span class=\"s1\"><b>Build a bot in Seconds: Introducing the Bot Developer Kit 2.0</b></span></p> <ul> <li><span class=\"s1\">Olivier Poupeney, Manager, Developer Relations, Symphony</span></li> <li><span class=\"s1\">Mario Orphanou, Director Product Management – Enterprise Integrations, Symphony</span></li> </ul> ',\n },\n },\n];\n","export const leaderboardsBackup = [\n {\n id: 2823,\n acf: {\n title: \"Device Tuning Into Percentage\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/icon-pinpoint.png\",\n row_1: {\n name: \"Android\",\n value: \"14\",\n },\n row_2: {\n name: \"iPhone/iPad\",\n value: \"23\",\n },\n row_3: {\n name: \"Mac\",\n value: \"32\",\n },\n row_4: {\n name: \"Windows\",\n value: \"23\",\n },\n },\n },\n {\n id: 2821,\n acf: {\n title: \"Viewers Watching From Percentage\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/icon-at.png\",\n row_1: {\n name: \"AMER\",\n value: \"51\",\n },\n row_2: {\n name: \"APAC\",\n value: \"16\",\n },\n row_3: {\n name: \"EMEA\",\n value: \"21\",\n },\n row_4: {\n name: \"LATAM\",\n value: \"12\",\n },\n },\n },\n];\n","export const emptyFunction = () => {};\n\nexport function isEmptyObject(obj) {\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) return false;\n }\n return true;\n}\n","// Utils\nimport { emptyFunction } from \"../utils/miscUtils\";\n\nexport function get(\n url,\n headers,\n onSuccess = emptyFunction,\n onError = emptyFunction\n) {\n return fetch(url, { headers })\n .then(function (response) {\n return response.json().then((res) => {\n if (response.ok) {\n return onSuccess(res);\n } else {\n return onError(res);\n }\n });\n })\n .catch(function (error) {\n return onError(error);\n });\n}\n","// Utils\nimport { get } from \"../utils/fetchUtils\";\n\n// Constants\n// const baseUrl = \"https://innovate.symphony.com/wp-json/acf/v3\";\nconst baseUrl = \"https://innovate.symphony.com/wp-json/wp/v2\";\n\nexport class Api {\n static setHeaders() {\n const headers = new Headers();\n return headers;\n }\n\n static getAgendaItems(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/agenda_items?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n\n static getLeaderboards(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/leaderboards?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n\n static getLearnMoreItems(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/learn_more?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n\n static getProgramming(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/programming?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n\n static getSpeakers(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/speakers?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n\n static getSponsors(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/sponsors?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n\n static getVideos(onSuccess, onError) {\n const headers = new Headers();\n const url = `${baseUrl}/videos?per_page=100`;\n return get(url, headers, onSuccess, onError);\n }\n}\n","import { DateTime } from \"luxon\";\n\nconst baseTime = DateTime.local();\n// const baseTime = DateTime.fromISO(\n// \"2020-10-08T12:45:01-04:00\"\n// );\n\nexport function areBreakoutSessionsActive() {\n const breakoutSessionsStartTime = DateTime.fromISO(\n \"2020-10-08T12:50:00-04:00\"\n );\n return baseTime > breakoutSessionsStartTime;\n}\n\nexport function filterAgendaItems(items) {\n return {\n agendaItems: items.filter((item) => !item.breakout_session),\n breakoutSessions: items.filter((item) => item.breakout_session),\n };\n}\n\nexport function generateAgendaButtonText(start, end, phase) {\n if (phase === 1) {\n return \"Add to Calendar\";\n }\n if (isUpcomingAgendaItem(start)) {\n return \"Coming Up\";\n }\n return \"Watch Now\";\n}\n\nexport function isActiveAgendaItem(start, end) {\n const startTime = ISOifyTime(start);\n const endTime = ISOifyTime(end);\n return baseTime > startTime && baseTime < endTime;\n}\n\nexport function isPastAgendaItem(end) {\n const endTime = ISOifyTime(end);\n return baseTime > endTime;\n}\n\nexport function isUpcomingAgendaItem(start) {\n const startTime = ISOifyTime(start);\n return baseTime < startTime;\n}\n\nexport function ISOifyTime(time) {\n return DateTime.fromISO(time.replace(/\\s+/g, \"T\") + \"-04:00\");\n}\n\nexport function prettifyTime(time) {\n const timeFormatted = ISOifyTime(time);\n return timeFormatted.toLocaleString(DateTime.TIME_SIMPLE);\n}\n\nexport function sortAgendaItemsByTime(items) {\n return items.sort((a, b) => {\n const startTimeA = ISOifyTime(a.start_time).toJSDate();\n const startTimeB = ISOifyTime(b.start_time).toJSDate();\n return startTimeA - startTimeB;\n });\n}\n","export function formatAcfResponse({ acf, id }) {\n return { ...acf, id };\n}\n","import React from \"react\";\n\nexport const LoadingSpinner = (props) => {\n return (\n <div className=\"loading-spinner\">\n <div className=\"loadingio-spinner-ripple-48ohh70vr0s\">\n <div className=\"ldio-4dam26x3ikl\">\n <div></div>\n <div></div>\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\n\n// Utils\nimport {\n areBreakoutSessionsActive,\n generateAgendaButtonText,\n sortAgendaItemsByTime,\n} from \"../../utils/agendaUtils\";\n\n// Constants\nconst iconBreakoutSessionsSrc = require(\"../../media/images/icons/icon-breakout-sessions.png\");\n\nexport const DashboardAgenda = (props) => {\n const { agendaItems, breakoutSessions, phase } = props;\n\n const hasAgendaItems = !!agendaItems.length;\n const hasBreakoutSessions = !!breakoutSessions.length;\n\n function renderAgendaItems() {\n const sortedAgendaItems = sortAgendaItemsByTime(agendaItems);\n return sortedAgendaItems.map((item, i) => {\n return (\n <DashboardAgendaItem\n index={i}\n item={item}\n key={i}\n phase={phase}\n type=\"agenda-item\"\n />\n );\n });\n }\n\n function renderBreakoutSessions() {\n const breakoutSessionsActiveClass = areBreakoutSessionsActive()\n ? \"dashboard__agenda__breakout-sessions--active\"\n : \"\";\n const header = areBreakoutSessionsActive() ? (\n \"\"\n ) : (\n <div className=\"dashboard__agenda__breakout-sessions__header\">\n <h3 className=\"dashboard__agenda__breakout-sessions__header__title\">\n BREAKOUT SESSIONS\n </h3>\n <span className=\"dashboard__agenda__breakout-sessions__header__note\">\n TRACKS RUN CONCURRENTLY\n </span>\n </div>\n );\n const sortedSessions = sortAgendaItemsByTime(breakoutSessions);\n const sessions = sortedSessions.map((item, i) => (\n <DashboardAgendaItem\n item={item}\n index={i}\n key={i}\n phase={phase}\n type=\"breakout-session\"\n />\n ));\n return (\n hasBreakoutSessions && (\n <div\n className={`dashboard__agenda__breakout-sessions ${breakoutSessionsActiveClass}`}\n >\n {header}\n {sessions}\n </div>\n )\n );\n }\n\n function renderContent() {\n return hasAgendaItems ? (\n <>\n {renderAgendaItems()}\n {renderBreakoutSessions()}\n </>\n ) : (\n <LoadingSpinner />\n );\n }\n\n return (\n <div className=\"dashboard__agenda dashboard__panel\" id=\"agenda\">\n <div className=\"dashboard__panel__header\">\n <img\n alt=\"Bar graph icon\"\n className=\"dashboard__panel__header__icon\"\n src={iconBreakoutSessionsSrc}\n />\n <span className=\"dashboard__panel__header__text\">AGENDA</span>\n </div>\n <div className=\"dashboard__agenda__items dashboard__panel__body\">\n {renderContent()}\n </div>\n </div>\n );\n};\n\nconst DashboardAgendaItem = (props) => {\n const { item, phase } = props;\n const { end_time, link, speakers, start_time, title } = item;\n\n /**********************************\n * End Hooks\n **********************************/\n\n const buttonText = generateAgendaButtonText(start_time, end_time, phase);\n const html = { __html: speakers };\n\n return (\n <div className=\"dashboard__agenda__items__item\">\n <div className=\"dashboard__agenda__items__item__right\">\n <span className=\"dashboard__agenda__items__item__title\">\n {title}\n </span>\n <span className=\"dashboard__agenda__items__item__description\">\n <div dangerouslySetInnerHTML={html} />\n </span>\n <div className=\"dashboard__agenda__items__item__button__container\">\n <a\n className=\"dashboard__agenda__items__item__button dashboard__agenda__items__item__button--active\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {buttonText}\n </a>\n </div>\n </div>\n </div>\n );\n};\n","export function calculateEntryWidthPercentageDisplay(entry, highestValue) {\n const entryValue = parseInt(entry.value, 10);\n return parseInt((entryValue / highestValue) * 100, 10);\n}\n\nexport function calculateEntryWidthPercentageValue(entry, entries) {\n const entryValue = parseInt(entry.value, 10);\n return parseInt(\n (entryValue / calculateTotalEntriesValue(entries)) * 100,\n 10\n );\n}\n\nexport function calculateHighestEntryValue(entries) {\n const entriesSorted = entries.sort((a, b) => {\n return parseInt(b.value, 10) - parseInt(a.value, 10);\n });\n const highest = entriesSorted[0];\n return parseInt(highest.value, 10);\n}\n\nexport function calculateTotalEntriesValue(entries) {\n return entries.reduce((acc, entry) => {\n const entryNum = parseInt(entry.value, 10);\n return acc + entryNum;\n }, 0);\n}\n\nexport function generateEntriesArray(entries) {\n return entries.reduce((acc, curr) => {\n const { name, value } = curr;\n return name && value ? acc.concat(curr) : acc;\n }, []);\n}\n","import React, { useEffect, useState } from \"react\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\n\n// Utils\nimport {\n calculateEntryWidthPercentageDisplay,\n calculateEntryWidthPercentageValue,\n calculateHighestEntryValue,\n generateEntriesArray,\n} from \"../../utils/chartUtils\";\nimport { isEmptyObject } from \"../../utils/miscUtils\";\n\n// Constants\nconst iconLeaderboard = require(\"../../media/images/icons/icon-leaderboard.png\");\n\nexport const DashboardLeaderboard = (props) => {\n const { leaderboards } = props;\n const hasLeaderboards = !!leaderboards.length;\n\n /**********************************\n * useState\n **********************************/\n\n const [selectedLeaderboard, setSelectedLeaderboard] = useState({});\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (hasLeaderboards) {\n setSelectedLeaderboard(leaderboards[0]);\n }\n }, [hasLeaderboards, leaderboards]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function handleTabClick(newChart) {\n setSelectedLeaderboard(newChart);\n }\n\n function renderChart() {\n return (\n <div className=\"dashboard__leaderboard__chart dashboard__panel__body\">\n {renderChartHeaders()}\n {renderChartBody()}\n </div>\n );\n }\n\n function renderChartBody() {\n const { id, row_1, row_2, row_3, row_4 } = selectedLeaderboard;\n const entries = generateEntriesArray([row_1, row_2, row_3, row_4]);\n return [row_1, row_2, row_3, row_4].map((entry, i) => {\n const { name } = entry;\n const highestValue = calculateHighestEntryValue(entries);\n const barWidth = calculateEntryWidthPercentageDisplay(\n entry,\n highestValue\n );\n const barValue = calculateEntryWidthPercentageValue(entry, entries);\n const barStyle = { width: `${barWidth}%`, minWidth: \"50%\" };\n const random = Math.floor(id * (Math.random() * 19 + 1));\n return (\n <div\n className=\"dashboard__leaderboard__chart__row\"\n key={random}\n >\n <div className=\"dashboard__leaderboard__chart__column dashboard__leaderboard__chart__column--entry\">\n <div\n className=\"dashboard__leaderboard__chart__bar\"\n style={barStyle}\n >\n <span>{name}</span>\n </div>\n </div>\n <div className=\"dashboard__leaderboard__chart__column dashboard__leaderboard__chart__column--entry\">\n <span>{barValue}%</span>\n </div>\n </div>\n );\n });\n }\n\n function renderChartHeaders() {\n return (\n <div className=\"dashboard__leaderboard__chart__row\">\n <div className=\"dashboard__leaderboard__chart__column dashboard__leaderboard__chart__column--header\">\n <span>{selectedLeaderboard.title}</span>\n </div>\n <div className=\"dashboard__leaderboard__chart__column dashboard__leaderboard__chart__column--header\">\n <span>VIEWERS</span>\n </div>\n </div>\n );\n }\n\n function renderHeader() {\n return (\n <div className=\"dashboard__panel__header dashboard__panel__header--split\">\n <div>\n <img\n alt=\"Bar graph icon\"\n className=\"dashboard__panel__header__icon\"\n src={iconLeaderboard}\n />\n <span className=\"dashboard__panel__header__text\">\n LEADERBOARD\n </span>\n </div>\n <div className=\"dashboard__panel__header__tabs\">\n {renderHeaderTabs()}\n </div>\n </div>\n );\n }\n\n function renderHeaderTabs() {\n return leaderboards.map((leaderboard) => {\n const { id, icon, title } = leaderboard;\n const isActive = title === selectedLeaderboard.title;\n const isActiveClass = isActive\n ? \"dashboard__panel__header__tabs__tab--active\"\n : \"\";\n const onClick = () => handleTabClick(leaderboard);\n return (\n <div\n className={`dashboard__panel__header__tabs__tab ${isActiveClass}`}\n key={id}\n onClick={onClick}\n >\n <img\n alt=\"Leaderboard icon\"\n className=\"dashboard__panel__header__tabs__tab__icon\"\n src={icon}\n />\n </div>\n );\n });\n }\n\n function renderContent() {\n const hasSelectedLeaderboard = !isEmptyObject(selectedLeaderboard);\n return hasLeaderboards && hasSelectedLeaderboard ? (\n <>\n {renderHeader()}\n {renderChart()}\n </>\n ) : (\n <LoadingSpinner />\n );\n }\n\n return (\n <div className=\"dashboard__leaderboard dashboard__panel\">\n {renderContent()}\n </div>\n );\n};\n","import React from \"react\";\n\nexport const DashboardTwitter = (props) => {\n return (\n <div className=\"dashboard__twitter dashboard__panel\">\n <div className=\"dashboard__panel__header\">\n <i className=\"panel__header__icon fab fa-twitter\"></i>\n <span className=\"dashboard__panel__header__text\">TWITTER</span>\n </div>\n <div className=\"dashboard__twitter__embed dashboard__panel__body\">\n <a\n className=\"twitter-timeline\"\n href=\"https://twitter.com/Symphony?ref_src=twsrc%5Etfw\"\n data-chrome=\"noborders nofooter noheader transparent\"\n data-theme=\"dark\"\n >\n Tweets by Symphony\n </a>{\" \"}\n </div>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport ReactTooltip from \"react-tooltip\";\n\n// Animations\nimport { Fade } from \"../../animations/fade/Fade\";\n\n// Components\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/dashboard/dashboard.scss\";\n\n// Data\nimport { agendaItemsBackup } from \"../../data/agendaItems\";\nimport { leaderboardsBackup } from \"../../data/charts\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { filterAgendaItems } from \"../../utils/agendaUtils\";\nimport { formatAcfResponse } from \"../../utils/apiUtils\";\n\n// Scenes\nimport { DashboardAgenda } from \"../../scenes/dashboard/DashboardAgenda\";\nimport { DashboardLeaderboard } from \"../../scenes/dashboard/DashboardLeaderboard\";\nimport { DashboardTwitter } from \"../../scenes/dashboard/DashboardTwitter\";\n\n// Constants\n// const isMobile = window.innerWidth < 575.98;\n// const tooltipPlacement = isMobile ? \"bottom\" : \"right\";\n\nexport const Dashboard = (props) => {\n const { phase } = props;\n const dashboardPhaseClass = `dashboard--phase-${phase}`;\n const isActivePhase = phase === 1 || phase === 2 || phase === 4;\n\n /**********************************\n * useState\n **********************************/\n\n const [agendaItems, setAgendaItems] = useState([]);\n const [breakoutSessions, setBreakoutSessions] = useState([]);\n const [leaderboards, setLeaderboards] = useState([]);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n fetchAgendaItems();\n fetchLeaderboards();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function fetchAgendaItems() {\n Api.getAgendaItems(onFetchAgendaItemsSuccess, onFetchAgendaItemsError);\n }\n\n function fetchLeaderboards() {\n Api.getLeaderboards(\n onFetchLeaderboardsSuccess,\n onFetchLeaderboardsError\n );\n }\n\n function onFetchAgendaItemsError() {\n const responseFormatted = agendaItemsBackup.map((agendaItem) =>\n formatAcfResponse(agendaItem)\n );\n const { agendaItems, breakoutSessions } = filterAgendaItems(\n responseFormatted\n );\n setAgendaItems(agendaItems);\n setBreakoutSessions(breakoutSessions);\n }\n\n function onFetchAgendaItemsSuccess(res) {\n const responseFormatted = res.map((agendaItem) =>\n formatAcfResponse(agendaItem)\n );\n const { agendaItems, breakoutSessions } = filterAgendaItems(\n responseFormatted\n );\n setAgendaItems(agendaItems);\n setBreakoutSessions(breakoutSessions);\n }\n\n function onFetchLeaderboardsError() {\n const responseFormatted = leaderboardsBackup.map((agendaItem) =>\n formatAcfResponse(agendaItem)\n );\n setLeaderboards(responseFormatted);\n }\n\n function onFetchLeaderboardsSuccess(res) {\n const responseFormatted = res.map((agendaItem) =>\n formatAcfResponse(agendaItem)\n );\n setLeaderboards(responseFormatted);\n }\n\n return (\n isActivePhase && (\n <Section\n classes={`dashboard ${dashboardPhaseClass}`}\n id=\"dashboard\"\n theme=\"dark\"\n >\n {/* {renderButton()} */}\n <Fade show={true}>\n <div className=\"dashboard__grid\">\n <DashboardLeaderboard\n leaderboards={leaderboards}\n phase={phase}\n />\n <DashboardTwitter phase={phase} />\n <DashboardAgenda\n agendaItems={agendaItems}\n breakoutSessions={breakoutSessions}\n phase={phase}\n />\n </div>\n </Fade>\n <ReactTooltip />\n </Section>\n )\n );\n};\n","export const learnMoreItemsBackup = [\n {\n id: 2976,\n acf: {\n title: \"A Look Back: J.P. Morgan's BETSI\",\n image: false,\n link: \"https://goto.symphony.com/JPMORGAN_BETSI.html\",\n video: false,\n },\n },\n {\n id: 2975,\n acf: {\n title: \"Developer Newsletter\",\n image: false,\n link:\n \"https://goto.symphony.com/developer-newsletter-archive.html?from=developers\",\n video: false,\n },\n },\n {\n id: 2974,\n acf: {\n title: \"Developer Site\",\n image: false,\n link: \"https://developers.symphony.com/\",\n video: false,\n },\n },\n {\n id: 2973,\n acf: {\n title: \"Symphony Developer Resources\",\n image: false,\n link: \"https://symphony.com/resource/developers/\",\n video: false,\n },\n },\n {\n id: 2972,\n acf: {\n title: \"Symphony for WhatsApp: Wealth Management\",\n image: false,\n link: \"https://bit.ly/WhatsApp_Advisors\",\n video: false,\n },\n },\n {\n id: 2971,\n acf: {\n title: \"Community CONNECT\",\n image: false,\n link:\n \"https://goto.symphony.com/rs/945-HBF-959/images/Symphony_Community_Connect %283%29.pdf\",\n video: false,\n },\n },\n {\n id: 2970,\n acf: {\n title: \"Get Your Team on Symphony \",\n image: false,\n link: \"https://goto.symphony.com/EarlyAccess.html\",\n video: false,\n },\n },\n {\n id: 2952,\n acf: {\n title: \"Introducing Symphony 2.0\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Introducing_Symphony_2.0.png\",\n link: \"https://goto.symphony.com/Introduction_Symphony_2.0.html\",\n video: true,\n },\n },\n {\n id: 2724,\n acf: {\n title: \"Symphony for WhatsApp: Trading Desks\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/photo-1454165804606-c3d57bc86b40.jpeg\",\n link: \"https://bit.ly/WhatsApp_TradingDesks\",\n video: false,\n },\n },\n {\n id: 2723,\n acf: {\n title: \"SPARC Overview\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/photo-1519389950473-47ba0277781c.jpeg\",\n link:\n \"https://goto.symphony.com/rs/945-HBF-959/images/Symphony_1PGR_SPARC_July2020_.pdf\",\n video: false,\n },\n },\n {\n id: 2722,\n acf: {\n title: \"Cloud Security & Compliance Overview\",\n image: false,\n link:\n \"https://goto.symphony.com/rs/945-HBF-959/images/2020.Symphony.Cloud.Security.PRE-NDA_v0603.pdf\",\n video: false,\n },\n },\n {\n id: 2721,\n acf: {\n title: \"Symphony Security: How it works\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-06-at-4.03.54-PM.png\",\n link: \"https://symphony.com/security/\",\n video: true,\n },\n },\n {\n id: 2720,\n acf: {\n title: \"Weekly Training Webinars 2.0\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-06-at-4.15.12-PM.png\",\n link: \"https://goto.symphony.com/monthly-training-webinars.html\",\n video: true,\n },\n },\n {\n id: 2719,\n acf: {\n title: \"Spotlight Series Meetings 2.0\",\n image: false,\n link: \"https://goto.symphony.com/Spotlight_Series_Overview.html\",\n video: false,\n },\n },\n {\n id: 2718,\n acf: {\n title: \"Symphony Innovation Award\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Symphony_Innovation_Award.png\",\n link: \"https://symphony.com/company/innovation-award\",\n video: true,\n },\n },\n {\n id: 2717,\n acf: {\n title: \"Symphony Elements\",\n image: false,\n link:\n \"https://goto.symphony.com/rs/945-HBF-959/images/Symphony_Elements_vFinal.pdf\",\n video: false,\n },\n },\n {\n id: 2716,\n acf: {\n title: \"A Look Back: IHS Markit's Izzy\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Screen-Shot-2020-10-06-at-4.07.04-PM.png\",\n link: \"https://goto.symphony.com/day_in_the_life_2018.html\",\n video: false,\n },\n },\n {\n id: 2715,\n acf: {\n title: \"Symphony Jira Integration\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/photo-1517245386807-bb43f82c33c4.jpeg\",\n link: \"https://goto.symphony.com/Jiraform.html\",\n video: false,\n },\n },\n {\n id: 2714,\n acf: {\n title: \"Symphony Integrations: Jira and Confluence\",\n image: false,\n link:\n \"https://goto.symphony.com/rs/945-HBF-959/images/2020.Symphony.JIRA.v0609.pdf\",\n video: false,\n },\n },\n {\n id: 2617,\n acf: {\n title: \"SPARC: Streamline Buy-side RFQ Voice OTC Workflow\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/Screen-Shot-2020-10-06-at-3.55.52-PM.png\",\n link: \"https://bit.ly/SPARC_ondemand\",\n video: false,\n },\n },\n {\n id: 2614,\n acf: {\n title: \"Symphony 2.0 & Ruthless Simiplification\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/Screen-Shot-2020-10-06-at-3.48.35-PM.png\",\n link:\n \"https://symphony.com/2020/08/19/how-we-are-making-symphony-2-0-ruthlessly-simple/\",\n video: false,\n },\n },\n];\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Select, CaretIcon, ModalCloseButton } from \"react-responsive-select\";\n\n// Animations\nimport { Fade } from \"../../animations/fade/Fade\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/learn-more/learn-more.scss\";\n\n// Data\nimport { learnMoreItemsBackup } from \"../../data/learnMore\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { formatAcfResponse } from \"../../utils/apiUtils\";\nimport { emptyFunction } from \"../../utils/miscUtils\";\n\n// Constants\nconst duration = \"0.5s\";\nconst fadeStyle = { display: \"flex\", width: \"100%\" };\nconst header = { text: \"Resources\" };\n\nexport const LearnMore = (props) => {\n const { phase } = props;\n const isActive = phase !== 1;\n\n /**********************************\n * useState\n **********************************/\n\n const [learnMoreLinks, setLearnMoreLinks] = useState([]);\n const [learnMoreVideos, setLearnMoreVideos] = useState([]);\n const [selectedOption, setSelectedOption] = useState(null);\n const [shouldDisplay, setShouldDisplay] = useState(true);\n const [startingIndex, setStartingIndex] = useState(0);\n\n const hasLearnMoreVideos = !!learnMoreVideos.length;\n\n /**********************************\n * useState\n **********************************/\n\n useEffect(() => {\n fetchLearnMoreItems();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function fetchLearnMoreItems() {\n Api.getLearnMoreItems(\n onFetchLearnMoreItemsSuccess,\n onFetchLearnMoreItemsError\n );\n }\n\n function handleClickArrow(direction) {\n setShouldDisplay(false);\n setTimeout(() => {\n const isLeft = direction === \"left\";\n isLeft\n ? setStartingIndex(startingIndex - 4)\n : setStartingIndex(startingIndex + 4);\n setShouldDisplay(true);\n }, 500);\n }\n\n function onDropdownChange({ altered, value }) {\n altered && setSelectedOption(value);\n }\n\n function onFetchLearnMoreItemsError() {\n const responseFormatted = learnMoreItemsBackup.map((learnMoreItem) =>\n formatAcfResponse(learnMoreItem)\n );\n const links = responseFormatted.filter(({ video }) => !video);\n const videos = responseFormatted.filter(({ video }) => video);\n setLearnMoreLinks(links);\n setLearnMoreVideos(videos);\n setSelectedOption(videos[0]);\n }\n\n function onFetchLearnMoreItemsSuccess(res) {\n const responseFormatted = res.map((learnMoreItem) =>\n formatAcfResponse(learnMoreItem)\n );\n const links = responseFormatted.filter(({ video }) => !video);\n const videos = responseFormatted.filter(({ video }) => video);\n setLearnMoreLinks(links);\n setLearnMoreVideos(videos);\n setSelectedOption(videos[0]);\n }\n\n function renderArrow(direction) {\n const nextOptionLeft = learnMoreVideos[startingIndex - 1];\n const nextOptionRight = learnMoreVideos[startingIndex + 4];\n const isActive =\n direction === \"left\" ? nextOptionLeft : nextOptionRight;\n const arrowDirectionClass = `learn-more__carousel__arrow--${direction}`;\n const arrowDisabledClass = isActive\n ? \"\"\n : \"learn-more__carousel__arrow--disabled\";\n const onClick = isActive\n ? () => handleClickArrow(direction)\n : emptyFunction;\n return (\n <div\n className={`learn-more__carousel__arrow ${arrowDirectionClass} ${arrowDisabledClass}`}\n onClick={onClick}\n />\n );\n }\n\n function renderDropdown() {\n const dropdownOptions =\n hasLearnMoreVideos &&\n learnMoreVideos.map((learnMoreItem) => ({\n value: learnMoreItem,\n text: learnMoreItem.title,\n }));\n return (\n hasLearnMoreVideos && (\n <Select\n caretIcon={<CaretIcon />}\n modalCloseButton={<ModalCloseButton />}\n name=\"programming-select\"\n onChange={onDropdownChange}\n options={dropdownOptions}\n selectedValue={selectedOption}\n />\n )\n );\n }\n\n function renderLinks() {\n const links = learnMoreLinks.map(({ id, link, title }) => {\n return (\n <li key={id}>\n <a\n className=\"learn-more__links__link\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {title}\n </a>\n </li>\n );\n });\n return (\n <div className=\"learn-more__links\">\n <h3 className=\"learn-more__header\">LINKS</h3>\n <ul className=\"learn-more__links__list\">{links}</ul>\n </div>\n );\n }\n\n function renderSelectedOption() {\n return (\n selectedOption && (\n <LearnMoreVideo\n classes=\"learn-more__selected-option\"\n key={selectedOption.id}\n item={selectedOption}\n isSelectedOption\n />\n )\n );\n }\n\n function renderVideos() {\n return learnMoreVideos\n .slice(startingIndex, startingIndex + 4)\n .map((item) => {\n return <LearnMoreVideo item={item} key={item.id} />;\n });\n }\n\n function renderContent() {\n return hasLearnMoreVideos ? (\n <>\n {renderSelectedOption()}\n {renderDropdown()}\n <div className=\"learn-more__carousel\">\n {renderArrow(\"left\")}\n <Fade\n duration={duration}\n show={shouldDisplay}\n style={fadeStyle}\n >\n {renderVideos()}\n </Fade>\n {renderArrow(\"right\")}\n </div>\n {renderLinks()}\n </>\n ) : (\n <LoadingSpinner />\n );\n }\n\n return (\n isActive && (\n <Section\n classes=\"learn-more\"\n header={header}\n id=\"learn-more\"\n theme=\"dark\"\n >\n <div className=\"section__subheader\">\n <span>\n Explore Innovate with exclusive content, news and\n updates below\n </span>\n </div>\n {renderContent()}\n </Section>\n )\n );\n};\n\nconst LearnMoreVideo = (props) => {\n const { classes = \"\", item, isSelectedOption } = props;\n const { image, link, title } = item;\n\n /**********************************\n * useState\n **********************************/\n\n const [itemStyle, setItemStyle] = useState({\n backgroundImage: `url(${image})`,\n });\n\n /**********************************\n * useRef\n **********************************/\n\n const itemRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (!itemStyle.height) {\n setItemStyle((prevItemStyle) => ({\n ...prevItemStyle,\n height: 0.8 * itemRef.current.offsetWidth,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemRef]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function renderOverlay() {\n return (\n isSelectedOption && (\n <>\n <div className=\"learn-more__selected-option__overlay\" />\n <div className=\"learn-more__selected-option__play\">\n <div className=\"learn-more__selected-option__play__icon\"></div>\n </div>\n </>\n )\n );\n }\n\n return (\n <div className={`learn-more__carousel__item ${classes}`}>\n <a\n className=\"learn-more__carousel__item__link\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <div className=\"learn-more__carousel__item__image__container\">\n <div\n className=\"learn-more__carousel__item__image\"\n ref={itemRef}\n style={itemStyle}\n />\n {renderOverlay()}\n </div>\n <div className=\"learn-more__carousel__item__title\">{title}</div>\n </a>\n </div>\n );\n};\n","export const programmingBackup = [\n {\n id: 2942,\n acf: {\n title: \"IHS Markit Virtual Booth\",\n description:\n \"IHS Markit combines information, analytics and expertise to provide solutions for business, finance and government. The company helps its customers see why things happen and focus on what really matters so they can make confident decisions to improve efficiency, outpace competitors and drive growth. Jump to their virtual booth to see IHS Markit solutions and contact the team to learn more. \",\n link:\n \"https://event.on24.com/wcc/r/2750399/30294C636DD3AF578F8EA4EFFD3760DD\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/IHS-2.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Dir-1.svg\",\n },\n },\n {\n id: 2645,\n acf: {\n title: \"Cosaic Virtual Booth\",\n description:\n \"Cosaic provides state-of-the art software for firms that want to promote ingenuity, evolve intelligently, and improve end-user efficiency. As a workflow solutions provider, Cosaic is revolutionizing the way people work with over 300 global customers around the world. Visit the virtual booth to learn more about Cosaic’s solutions and contact the team. Jump to their virtual booth to see Cosaic's solutions and contact the team to learn more.\",\n link:\n \" https://event.on24.com/wcc/r/2750653/A132C52EEFB8336F944F5AD02503A82C\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/Cosaic-1.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/link.svg\",\n },\n },\n {\n id: 2622,\n acf: {\n title: \"Become a Certified Developer\",\n description:\n \"Sign up to become a Symphony certified developer and join an elite group of experts. This exclusive program reflects insights Symphony has gathered from developing its own solutions: from capital markets applications, to enterprise integrations, automations, and specialized workflows.\",\n link: \"https://learn.symphony.com/\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/devloper-1.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/download.png\",\n },\n },\n {\n id: 2621,\n acf: {\n title: \"Digital Hackathons\",\n description:\n \"Think you have what it takes to win a Digital Symphony Hackathon? Compete against teams to develop scalable, innovative solutions to bring progress and efficiency to your firm. Winning developments will break down silos across firms, as well as internally across front, middle, and back offices.\",\n link: \"https://innovate.symphony.com/2020-nyc-hackathons/\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/Hackathon.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/download-1.png\",\n },\n },\n {\n id: 2620,\n acf: {\n title: \"Connect with InnovateBot! \",\n description:\n \"Make sure you connect with InnovateBot to get the latest agenda updates, receive event reminders, and ask questions during the event. Just open your Symphony, search ‘InnovateBot’ and connect! \",\n link: \"https://www.symphony.com\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/Bot.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/icon-developer.17ede270.png\",\n },\n },\n {\n id: 2596,\n acf: {\n title: \"FlexTrade Virtual Booth\",\n description:\n \"FlexTrade Systems is the global leader in high-performance execution management and order management systems for equities, foreign exchange, options, futures and fixed income. Visit their virtual booth to connect with the team and find out more about the FlexTRADER.\",\n link:\n \" https://event.on24.com/wcc/r/2750051/1959BF56C9268B4E6962482FC8598AF0\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/Flextrade.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/clip.svg\",\n },\n },\n {\n id: 2590,\n acf: {\n title: \"Smarsh Virtual Booth\",\n description:\n \"Smarsh is the recognized global leader in electronic communications archiving solutions for regulated organizations. The Smarsh Connected Suite provides innovative capture, archiving, e-discovery, and supervision solutions across the industry’s widest breadth of communication channels. Click through to dive into their solution or connect with the Smarsh team. Jump to their virtual booth to see Smarsh's solutions and contact the team to learn more.\",\n link:\n \"https://event.on24.com/wcc/r/2750464/D4B7314A2EEF0BC5D5AF169013659195\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/smarsh-1.svg\",\n icon:\n \"https://innovate.symphony.com/wp-content/uploads/2020/09/dail.svg\",\n },\n },\n];\n","import React, { useEffect, useRef, useState } from \"react\";\n\n// Animations\nimport { Fade } from \"../../animations/fade/Fade\";\n\n// Utils\nimport { emptyFunction } from \"../../utils/miscUtils\";\n\n// Constants\nconst duration = \"0.5s\";\nconst fadeStyle = { display: \"flex\" };\n\nexport const ProgrammingCarousel = (props) => {\n const { options, selectedOption, setSelectedOption } = props;\n\n /**********************************\n * useState\n **********************************/\n\n const [shouldDisplay, setShouldDisplay] = useState(true);\n const [startingIndex, setStartingIndex] = useState(0);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function handleClickArrow(direction) {\n setShouldDisplay(false);\n setTimeout(() => {\n const isLeft = direction === \"left\";\n isLeft\n ? setStartingIndex(startingIndex - 3)\n : setStartingIndex(startingIndex + 3);\n setShouldDisplay(true);\n }, 500);\n }\n\n function renderArrow(direction) {\n const nextOptionLeft = options[startingIndex - 1];\n const nextOptionRight = options[startingIndex + 3];\n const isActive =\n direction === \"left\" ? nextOptionLeft : nextOptionRight;\n const arrowDirectionClass = `programming__carousel__arrow--${direction}`;\n const arrowDisabledClass = isActive\n ? \"\"\n : \"programming__carousel__arrow--disabled\";\n const onClick = isActive\n ? () => handleClickArrow(direction)\n : emptyFunction;\n return (\n <div\n className={`programming__carousel__arrow ${arrowDirectionClass} ${arrowDisabledClass}`}\n onClick={onClick}\n />\n );\n }\n\n function renderCarouselItems() {\n return options\n .slice(startingIndex, startingIndex + 3)\n .map((option, i) => (\n <ProgrammingCarouselItem\n key={i}\n option={option}\n selectedOption={selectedOption}\n setSelectedOption={setSelectedOption}\n />\n ));\n }\n\n return (\n <div className=\"programming__carousel\">\n {renderArrow(\"left\")}\n <Fade duration={duration} show={shouldDisplay} style={fadeStyle}>\n {renderCarouselItems()}\n </Fade>\n {renderArrow(\"right\")}\n </div>\n );\n};\n\nconst ProgrammingCarouselItem = (props) => {\n const { option, selectedOption, setSelectedOption } = props;\n const { description, icon, title } = option;\n const isActiveItem = option.id === selectedOption.id;\n const itemClass = isActiveItem ? \"programming__carousel__item--active\" : \"\";\n const itemOnClick = () => setSelectedOption(option);\n\n /**********************************\n * useState\n **********************************/\n\n const [iconWrapperStyle, setIconWrapperStyle] = useState({});\n\n /**********************************\n * useRef\n **********************************/\n\n const iconRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n const onResize = () => {\n if (iconRef) {\n setIconWrapperStyle({ height: iconRef.current.offsetWidth });\n }\n };\n window.addEventListener(\"resize\", onResize);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!iconWrapperStyle.height) {\n setIconWrapperStyle({ height: iconRef.current.offsetWidth });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iconRef]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n return (\n <div\n className={`programming__carousel__item ${itemClass}`}\n onClick={itemOnClick}\n >\n <div className=\"programming__carousel__item__icon\" ref={iconRef}>\n <div\n className=\"programming__carousel__item__icon__wrapper\"\n style={iconWrapperStyle}\n >\n <img\n alt=\"Carousel icon\"\n className=\"programming__carousel__item__icon__image\"\n src={icon}\n />\n </div>\n </div>\n <div className=\"programming__carousel__item__info\">\n <span className=\"programming__carousel__item__info__title\">\n {title}\n </span>\n <p className=\"programming__carousel__item__info__description\">\n {description}\n </p>\n </div>\n </div>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Select, CaretIcon, ModalCloseButton } from \"react-responsive-select\";\n\nexport const ProgrammingSelected = (props) => {\n const { options, selectedOption, setSelectedOption } = props;\n const { description, image, link, title } = selectedOption;\n\n /**********************************\n * useState\n **********************************/\n\n const [imageStyle, setImageStyle] = useState({\n backgroundImage: `url(${image})`,\n });\n\n /**********************************\n * useRef\n **********************************/\n\n const imageRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (!imageStyle.height) {\n const multiplier = calculateHeightMultiplier();\n setImageStyle((prevImageStyle) => ({\n ...prevImageStyle,\n height: multiplier * imageRef.current.offsetWidth,\n }));\n }\n }, [imageRef, imageStyle]);\n\n useEffect(() => {\n setImageStyle((prevImageStyle) => ({\n ...prevImageStyle,\n backgroundImage: `url(${image})`,\n }));\n }, [image]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function onDropdownChange({ altered, value }) {\n altered && setSelectedOption(value);\n }\n\n function renderDropdown() {\n const dropdownOptions = options.map((option) => ({\n value: option,\n text: option.title,\n }));\n return (\n <Select\n caretIcon={<CaretIcon />}\n modalCloseButton={<ModalCloseButton />}\n name=\"programming-select\"\n onChange={onDropdownChange}\n options={dropdownOptions}\n selectedValue={selectedOption}\n />\n );\n }\n\n return (\n <div className=\"programming__selected\">\n <div\n className=\"programming__selected__image\"\n ref={imageRef}\n style={imageStyle}\n />\n <div className=\"programming__selected__info\">\n <div className=\"programming__selected__info__top\">\n {renderDropdown()}\n <span className=\"programming__selected__info__title\">\n {title}\n </span>\n <p className=\"programming__selected__info__description\">\n {description}\n </p>\n </div>\n <div className=\"programming__selected__info__bottom\">\n <a\n className=\"programming__selected__info__button\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Learn More\n </a>\n </div>\n </div>\n </div>\n );\n};\n\nfunction calculateHeightMultiplier() {\n if (window.innerWidth < 991.98) {\n return 0.5625;\n }\n return 1;\n}\n","import React, { useEffect, useState } from \"react\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/programming/programming.scss\";\n\n// Data\nimport { programmingBackup } from \"../../data/programming\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { formatAcfResponse } from \"../../utils/apiUtils\";\n\n// Scenes\nimport { ProgrammingCarousel } from \"./ProgrammingCarousel\";\nimport { ProgrammingSelected } from \"./ProgrammingSelected\";\n\n// Constants\nconst header = { text: \"Learn More\" };\n\nexport const Programming = (props) => {\n const { phase } = props;\n const isActive = phase !== 1 && phase !== 4;\n\n /**********************************\n * useState\n **********************************/\n\n const [options, setOptions] = useState([]);\n const [selectedOption, setSelectedOption] = useState(options[0]);\n\n const hasOptions = selectedOption && !!options.length;\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n fetchProgramming();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function fetchProgramming() {\n Api.getProgramming(onFetchProgrammingSuccess, onFetchProgrammingError);\n }\n\n function onFetchProgrammingSuccess(res) {\n const responseFormatted = res.map((option) =>\n formatAcfResponse(option)\n );\n setOptions(responseFormatted);\n setSelectedOption(responseFormatted[0]);\n }\n\n function onFetchProgrammingError() {\n const responseFormatted = programmingBackup.map((option) =>\n formatAcfResponse(option)\n );\n setOptions(responseFormatted);\n setSelectedOption(responseFormatted[0]);\n }\n\n function renderContent() {\n return hasOptions ? (\n <>\n <ProgrammingSelected\n options={options}\n selectedOption={selectedOption}\n setSelectedOption={setSelectedOption}\n />\n\n <ProgrammingCarousel\n options={options}\n selectedOption={selectedOption}\n setSelectedOption={setSelectedOption}\n />\n </>\n ) : (\n <LoadingSpinner />\n );\n }\n\n return (\n isActive && (\n <Section\n classes=\"programming\"\n header={header}\n id=\"programming\"\n theme=\"dark\"\n >\n {renderContent()}\n </Section>\n )\n );\n};\n","import React, { useRef, useState } from \"react\";\n\n// Components\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/recap/recap.scss\";\n\n// Constants\nconst videoBackgroundStyle = {\n backgroundImage: `url(${require(\"../../media/images/photos/recap-image.jpg\")})`,\n};\n\nexport const Recap = (props) => {\n const { phase } = props;\n\n /**********************************\n * useState\n **********************************/\n\n const [videoStyle] = useState({});\n\n /**********************************\n * useRef\n **********************************/\n\n const videoRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n // useEffect(() => {\n // if (videoRef.current && !videoStyle.height) {\n // setVideoStyle((prevVideoStyle) => ({\n // ...prevVideoStyle,\n // height: 0.5625 * videoRef.current.offsetWidth,\n // }));\n // }\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, [videoRef]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function renderBlurb() {\n return (\n <div className=\"recap__blurb\">\n <span className=\"recap__blurb__header\">THANK YOU</span>\n <span className=\"recap__blurb__description\">\n That's a wrap on Symphony Innovate 2020 [Digital]! Session\n videos will be made available in the coming days so check\n back regularly. In the meantime take a look at the livecast,\n speakers, and resources below.\n </span>\n </div>\n );\n }\n\n // function renderButton() {\n // return (\n // <a\n // className=\"recap__button\"\n // href=\"/\"\n // rel=\"noopener noreferrer\"\n // target=\"_blank\"\n // >\n // <i className=\"fas fa-video\" />\n // Watch Innovate on Demand\n // </a>\n // );\n // }\n\n function renderVideo() {\n return (\n <a\n className=\"recap__video__wrapper\"\n href=\"https://event.on24.com/wcc/r/2738328/303C4684D5BA9D2B2DAE80E205DF3712\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <div className=\"recap__video\" ref={videoRef} style={videoStyle}>\n <div\n className=\"recap__video__background\"\n style={videoBackgroundStyle}\n />\n <div className=\"recap__video__play\">\n <div className=\"recap__video__play__icon\" />\n </div>\n </div>\n </a>\n );\n }\n\n function renderTwitter() {\n return (\n <div className=\"recap__twitter dashboard__panel\">\n <div className=\"dashboard__panel__header\">\n <i className=\"panel__header__icon fab fa-twitter\"></i>\n <span className=\"dashboard__panel__header__text\">\n TWITTER\n </span>\n </div>\n <div className=\"dashboard__twitter__embed dashboard__panel__body\">\n <a\n className=\"twitter-timeline\"\n href=\"https://twitter.com/Symphony?ref_src=twsrc%5Etfw\"\n data-chrome=\"noborders nofooter noheader transparent\"\n data-theme=\"dark\"\n >\n Tweets by Symphony\n </a>{\" \"}\n </div>\n </div>\n );\n }\n\n return (\n phase === 3 && (\n <Section classes=\"recap\" id=\"recap\" theme=\"dark\">\n {renderBlurb()}\n <div className=\"recap__grid\">\n {renderVideo()}\n {renderTwitter()}\n </div>\n </Section>\n )\n );\n};\n","export const speakersBackup = [\n {\n id: 2967,\n acf: {\n name: \"Philip Fry\",\n title: \"VP Product Strategy, Verint\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Philip-Fry_Verint.png\",\n email: \"\",\n },\n },\n {\n id: 2928,\n acf: {\n name: \"David Gurlé\",\n title: \"Founder and CEO, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/David-Gurle-2019_headshot-1-1-1-scaled.jpg\",\n email: \"\",\n },\n },\n {\n id: 2926,\n acf: {\n name: \"Benjamin Fuchs\",\n title: \"CEO/CIO of BFAM\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Benjamin-Fuchs.jpg\",\n email: \"\",\n },\n },\n {\n id: 2924,\n acf: {\n name: \"Yannig Loyer\",\n title:\n \"Global Head of Trading, Securities Financing and Derivatives, AXA IM\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Yannig-Loyer.png\",\n email: \"\",\n },\n },\n {\n id: 2922,\n acf: {\n name: \"Mauricio Sada-Paz\",\n title: \"Global Head of eFICC Product and Distribution, Barclays\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/mauricio-Sada-Paz.png\",\n email: \"\",\n },\n },\n {\n id: 2920,\n acf: {\n name: \"Lou Rosato\",\n title:\n \"Director – Investment Operations, Global Business Strategy and Relationship Management, BlackRock\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Lou-Rosato.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2918,\n acf: {\n name: \"Jordan Barnett\",\n title: \"Head of Program Trading & Execution Services, BNY Mellon\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Jordan-Barnett.jpg\",\n email: \"\",\n },\n },\n {\n id: 2909,\n acf: {\n name: \"Raj Iyer\",\n title: \"Director, Core Digitization and Reimagination, BNY Mellon\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Raj-Iyer.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2907,\n acf: {\n name: \"Karen Newton\",\n title: \"Managing Director, Credit Suisse\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Karen-Newton-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2904,\n acf: {\n name: \"Adam Wall\",\n title: \"Head of Autobahn Group, Deutsche Bank\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Adam-Wall-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2902,\n acf: {\n name: \"Brian Steele\",\n title:\n \"Managing Director, Global Head of Market Solutions, Goldman Sachs\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Brian-Steele.jpg\",\n email: \"\",\n },\n },\n {\n id: 2898,\n acf: {\n name: \"Tejas Shastry\",\n title: \"Co-Founder, Chief Data Scientist, GreenKey\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Tejas-Shastry-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2896,\n acf: {\n name: \"Janice Ku\",\n title:\n \"Director, Digital & Data, Markets & Securities Services, HSBC\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Janice-Ku.jpg\",\n email: \"\",\n },\n },\n {\n id: 2894,\n acf: {\n name: \"Brittany Garland\",\n title: \"Executive Director, IHS Markit\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Garland-Brittany-IHS-Markit.jpg\",\n email: \"\",\n },\n },\n {\n id: 2892,\n acf: {\n name: \"Jatin Suryawanshi\",\n title: \"Head of Global Quantitative Strategy, Jefferies\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Jatin-Suryawanshi.png\",\n email: \"\",\n },\n },\n {\n id: 2889,\n acf: {\n name: \"Andrew Mosson\",\n title:\n \"Executive Director, Strategic Client Solutions, J.P. Morgan\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Andy-Mosson.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2887,\n acf: {\n name: \"Ashwin Venkatraman\",\n title:\n \"Global Head of Liquidity Trading, J.P. Morgan Asset Management\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Ash.jpg\",\n email: \"\",\n },\n },\n {\n id: 2885,\n acf: {\n name: \"Damien Lodge\",\n title:\n \"Head of Global Currency Trading and Trading Market Structure, J.P. Morgan Asset Management\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Damien-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2884,\n acf: {\n name: \"Eden Kidner\",\n title: \"CTO of Research, Morgan Stanley\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Eden-Kidner.jpg\",\n email: \"\",\n },\n },\n {\n id: 2882,\n acf: {\n name: \"Jennifer Casas\",\n title: \"Research Technology Management, Morgan Stanley\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Jennifer-Casas.jpg\",\n email: \"\",\n },\n },\n {\n id: 2879,\n acf: {\n name: \"Chwee Chua\",\n title:\n \"Global Head of Operations Innovations, Schroder Investment Management (Singapore) Ltd\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Chwee-Chua.jpg\",\n email: \"\",\n },\n },\n {\n id: 2876,\n acf: {\n name: \"Natasha Lauder\",\n title: \"Trading Engagement Analyst, Trading Support, Schroders\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Natasha-Lauder.jpg\",\n email: \"\",\n },\n },\n {\n id: 2873,\n acf: {\n name: \"Alexandre Gabriel\",\n title:\n \"Innovation Leader – SG Global Securities Operations, Société Générale\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Alexandre-Gabriel-SocGen-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2871,\n acf: {\n name: \"Brendan McMurtray\",\n title:\n \"Vice President, FX Market Structure & Electronic Trading Analyst, T. Rowe Price\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Brendan-McMurtray-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2869,\n acf: {\n name: \"Bhavin Rawal\",\n title: \"SVP, Product Management, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Bhavin-Rawal-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2867,\n acf: {\n name: \"Brad Levy\",\n title: \"President and CCO, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Brad-Levy.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2864,\n acf: {\n name: \"Dietmar Fauser\",\n title: \"EVP of Product & Engineering, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Dietmar-Fauser-EVP-Engineering-1-scaled.jpg\",\n email: \"\",\n },\n },\n {\n id: 2861,\n acf: {\n name: \"Goutam Nadella\",\n title: \"EVP, Client Solutions, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Goutam-Nadella.jpg\",\n email: \"\",\n },\n },\n {\n id: 2858,\n acf: {\n name: \"Ivana Polim\",\n title: \"Global Head of Client Engagement, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Ivana-Polim.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2855,\n acf: {\n name: \"Jonathan Christensen\",\n title: \"CXO, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Jonathan-Christensen-CXO-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2852,\n acf: {\n name: \"Kate Chatzopoulos\",\n title: \"Head of Operations Workflow, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Kate-Chatzopoulos-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2850,\n acf: {\n name: \"Manish Sharma\",\n title: \"VP Product & Engineering, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Manish-Sharma.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2848,\n acf: {\n name: \"Mario Orphanou\",\n title:\n \"Director Product Management – Enterprise Integrations, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Mario-Orphanou-1-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2846,\n acf: {\n name: \"Olivia Knocker\",\n title: \"Regional Head of Client Strategy\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Olivia-Knocker-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2844,\n acf: {\n name: \"Olivier Poupeney\",\n title: \"Manager, Developer Relations, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Olivier-Poupeney.png\",\n email: \"\",\n },\n },\n {\n id: 2842,\n acf: {\n name: \"Pravir Ramtekkar\",\n title: \"Director, Product Management, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Pravir-Ramtekkar.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2840,\n acf: {\n name: \"Queenie Chan\",\n title: \"Head of APAC, General Manager, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Queenie-Chan-1.jpg\",\n email: \"\",\n },\n },\n {\n id: 2838,\n acf: {\n name: \"Ralph Pfitzer\",\n title: \"Regional Head of Client Strategy, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Ralph-Pfitzer.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2836,\n acf: {\n name: \"Ravi Patel\",\n title: \"VP of Engineering, Platform, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Ravi-Varanasi.jpeg\",\n email: \"\",\n },\n },\n {\n id: 2834,\n acf: {\n name: \"Sashi Dias Valtz\",\n title: \"Global Head of Client Strategy, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Sashi-Dias-Valtz.jpg\",\n email: \"\",\n },\n },\n {\n id: 2831,\n acf: {\n name: \"Savvithri Sivaram\",\n title: \"Senior Director, Product Management, Symphony\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Savvithri-Sivaraamakrishnan.jpeg\",\n email: \"\",\n },\n },\n];\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Select, CaretIcon, ModalCloseButton } from \"react-responsive-select\";\n\n// Animations\nimport { Fade } from \"../../animations/fade/Fade\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/speakers/speakers.scss\";\n\n// Data\nimport { speakersBackup } from \"../../data/speakers\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { formatAcfResponse } from \"../../utils/apiUtils\";\nimport { emptyFunction } from \"../../utils/miscUtils\";\n\n// Constants\nconst duration = \"0.5s\";\nconst fadeStyle = { display: \"flex\", width: \"100%\" };\nconst header = { text: \"Speakers\" };\nconst speakersPerPage = calculatePagination();\n\nexport const Speakers = (props) => {\n const { phase } = props;\n const isActive = phase !== 1;\n\n /**********************************\n * useState\n **********************************/\n\n const [selectedOption, setSelectedOption] = useState(null);\n const [shouldDisplay, setShouldDisplay] = useState(true);\n const [speakers, setSpeakers] = useState([]);\n const [startingIndex, setStartingIndex] = useState(0);\n\n const hasSpeakers = !!speakers.length;\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n fetchSpeakers();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function fetchSpeakers() {\n Api.getSpeakers(onFetchSpeakersSuccess, onFetchSpeakersError);\n }\n\n function handleClickArrow(direction) {\n setShouldDisplay(false);\n setTimeout(() => {\n const isLeft = direction === \"left\";\n isLeft\n ? setStartingIndex(startingIndex - speakersPerPage)\n : setStartingIndex(startingIndex + speakersPerPage);\n setShouldDisplay(true);\n }, 500);\n }\n\n function onDropdownChange({ altered, value }) {\n altered && setSelectedOption(value);\n }\n\n function onFetchSpeakersError() {\n const responseFormatted = speakersBackup.map((speaker) =>\n formatAcfResponse(speaker)\n );\n setSpeakers(responseFormatted);\n setSelectedOption(speakersBackup[0]);\n }\n\n function onFetchSpeakersSuccess(res) {\n const responseFormatted = res.map((speaker) =>\n formatAcfResponse(speaker)\n );\n setSpeakers(responseFormatted);\n setSelectedOption(responseFormatted[0]);\n }\n\n function renderArrow(direction) {\n const nextOptionLeft = speakers[startingIndex - 1];\n const nextOptionRight = speakers[startingIndex + speakersPerPage];\n const isActive =\n direction === \"left\" ? nextOptionLeft : nextOptionRight;\n const arrowDirectionClass = `speakers__arrow--${direction}`;\n const arrowDisabledClass = isActive ? \"\" : \"speakers__arrow--disabled\";\n const onClick = isActive\n ? () => handleClickArrow(direction)\n : emptyFunction;\n return (\n <div\n className={`speakers__arrow ${arrowDirectionClass} ${arrowDisabledClass}`}\n onClick={onClick}\n />\n );\n }\n\n function renderDropdown() {\n const dropdownOptions =\n hasSpeakers &&\n speakers.map((speaker) => ({\n value: speaker,\n text: `${speaker.name} - ${speaker.title}`,\n }));\n return (\n hasSpeakers && (\n <Select\n caretIcon={<CaretIcon />}\n modalCloseButton={<ModalCloseButton />}\n name=\"programming-select\"\n onChange={onDropdownChange}\n options={dropdownOptions}\n selectedValue={selectedOption}\n />\n )\n );\n }\n\n function renderSelectedOption() {\n return (\n selectedOption && (\n <Speaker\n classes=\"speakers__selected-option\"\n key={selectedOption.id}\n speaker={selectedOption}\n />\n )\n );\n }\n\n function renderSpeakers() {\n return speakers\n .slice(startingIndex, startingIndex + speakersPerPage)\n .map((speaker) => {\n return <Speaker key={speaker.id} speaker={speaker} />;\n });\n }\n\n function renderContent() {\n return hasSpeakers ? (\n <>\n {renderSelectedOption()}\n {renderDropdown()}\n {renderArrow(\"left\")}\n <Fade\n duration={duration}\n show={shouldDisplay}\n style={fadeStyle}\n >\n <div className=\"speakers__list\">{renderSpeakers()}</div>\n </Fade>\n {renderArrow(\"right\")}\n </>\n ) : (\n <LoadingSpinner />\n );\n }\n\n return (\n isActive && (\n <Section classes=\"speakers\" header={header} id=\"speakers\">\n {renderContent()}\n </Section>\n )\n );\n};\n\nconst Speaker = (props) => {\n const { classes, speaker } = props;\n const { image, name, title } = speaker;\n\n /**********************************\n * useState\n **********************************/\n\n const [imageStyle, setImageStyle] = useState({\n backgroundImage: `url(${image})`,\n });\n\n /**********************************\n * useRef\n **********************************/\n\n const imageRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (!imageStyle.height) {\n setImageStyle((prevImageStyle) => ({\n ...prevImageStyle,\n height: imageRef.current.offsetWidth,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [imageRef]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n return (\n <div className={`speakers__list__item ${classes}`}>\n <div\n className=\"speakers__list__item__image\"\n ref={imageRef}\n style={imageStyle}\n />\n <span className=\"speakers__list__item__name\">{name}</span>\n <span className=\"speakers__list__item__title\">{title}</span>\n </div>\n );\n};\n\nfunction calculatePagination() {\n if (window.innerWidth < 991.98) {\n return 4;\n }\n if (window.innerWidth < 1199.98) {\n return 6;\n }\n return 5;\n}\n","export const sponsorsBackup = [\n {\n id: 2774,\n acf: {\n name: \"Cosaic\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/cosaic.png\",\n link: \"https://cosaic.io/\",\n },\n },\n {\n id: 2773,\n acf: {\n name: \"Fintech Studios\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/fintech-studios.png\",\n link: \"https://fintechstudios.com/\",\n },\n },\n {\n id: 2772,\n acf: {\n name: \"Market EarlyBird\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/Earlybird-1.jpg\",\n link: \"https://www.marketearlybird.com/\",\n },\n },\n {\n id: 2771,\n acf: {\n name: \"iPushPull\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/ipushpull.png\",\n link: \"https://www.ipushpull.com/\",\n },\n },\n {\n id: 2770,\n acf: {\n name: \"FlexTrade\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/flextrade.png\",\n link: \"https://flextrade.com/\",\n },\n },\n {\n id: 2769,\n acf: {\n name: \"IHS\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/ihs-markit.png\",\n link: \"https://ihsmarkit.com/index.html\",\n },\n },\n {\n id: 2768,\n acf: {\n name: \"Verint\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/verint.svg\",\n link: \"https://www.verint.com/\",\n },\n },\n {\n id: 2767,\n acf: {\n name: \"GreenKey\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/greenkey.png\",\n link: \"https://greenkeytech.com/\",\n },\n },\n {\n id: 2757,\n acf: {\n name: \"Smarsh\",\n description: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/smarsh.png\",\n link: \"https://www.smarsh.com/\",\n },\n },\n];\n","import React, { useEffect, useRef, useState } from \"react\";\n\n// Animations\nimport { Fade } from \"../../animations/fade/Fade\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/sponsors/sponsors.scss\";\n\n// Data\nimport { sponsorsBackup } from \"../../data/sponsors\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { formatAcfResponse } from \"../../utils/apiUtils\";\nimport { emptyFunction } from \"../../utils/miscUtils\";\n\n// Constants\nconst duration = \"0.5s\";\nconst fadeStyle = { display: \"flex\", width: \"100%\" };\nconst header = { text: \"Thank You To Our Sponsors\" };\n\nexport const Sponsors = (props) => {\n /**********************************\n * useState\n **********************************/\n\n const [shouldDisplay, setShouldDisplay] = useState(true);\n const [sponsors, setSponsors] = useState([]);\n const [startingIndex, setStartingIndex] = useState(0);\n\n const hasSponsors = !!sponsors.length;\n const pagination = calculatePagination(sponsors);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n fetchSponsors();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function fetchSponsors() {\n Api.getSponsors(onFetchSponsorsSuccess, onFetchSponsorsError);\n }\n\n function handleClickArrow(direction) {\n setShouldDisplay(false);\n setTimeout(() => {\n const isLeft = direction === \"left\";\n isLeft\n ? setStartingIndex(startingIndex - 4)\n : setStartingIndex(startingIndex + 4);\n setShouldDisplay(true);\n }, 500);\n }\n\n function onFetchSponsorsError() {\n const responseFormatted = sponsorsBackup.map((sponsor) =>\n formatAcfResponse(sponsor)\n );\n setSponsors(responseFormatted);\n }\n\n function onFetchSponsorsSuccess(res) {\n const responseFormatted = res.map((sponsor) =>\n formatAcfResponse(sponsor)\n );\n setSponsors(responseFormatted);\n }\n\n function renderArrow(direction) {\n const nextOptionLeft = sponsors[startingIndex - 1];\n const nextOptionRight = sponsors[startingIndex + 4];\n const isActive =\n direction === \"left\" ? nextOptionLeft : nextOptionRight;\n const arrowDirectionClass = `sponsors__arrow--${direction}`;\n const arrowDisabledClass = isActive ? \"\" : \"sponsors__arrow--disabled\";\n const onClick = isActive\n ? () => handleClickArrow(direction)\n : emptyFunction;\n return (\n <div\n className={`sponsors__arrow ${arrowDirectionClass} ${arrowDisabledClass}`}\n onClick={onClick}\n />\n );\n }\n\n function renderSponsors() {\n const items = sponsors\n .slice(startingIndex, startingIndex + pagination)\n .map((item) => {\n return <SponsorItem item={item} key={item.id} />;\n });\n return <div className=\"sponsors__list\">{items}</div>;\n }\n\n function renderContent() {\n return hasSponsors ? (\n <div className=\"sponsors__list__wrapper\">\n {renderArrow(\"left\")}\n <Fade\n duration={duration}\n show={shouldDisplay}\n style={fadeStyle}\n >\n {renderSponsors()}\n </Fade>\n {renderArrow(\"right\")}\n </div>\n ) : (\n <LoadingSpinner />\n );\n }\n\n return (\n <Section classes=\"sponsors\" header={header} id=\"sponsors\">\n {renderContent()}\n </Section>\n );\n};\n\nconst SponsorItem = (props) => {\n const { item } = props;\n const { image, link } = item;\n\n /**********************************\n * useState\n **********************************/\n\n const [itemStyle, setItemStyle] = useState({\n backgroundImage: `url(${image})`,\n });\n\n /**********************************\n * useRef\n **********************************/\n\n const itemRef = useRef(null);\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (!itemStyle.height) {\n setItemStyle((prevItemStyle) => ({\n ...prevItemStyle,\n height: 0.5 * itemRef.current.offsetWidth,\n }));\n }\n }, [itemRef, itemStyle]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n return (\n <a\n className=\"sponsors__list__item__link\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <div\n className=\"sponsors__list__item\"\n ref={itemRef}\n style={itemStyle}\n />\n </a>\n );\n};\n\nfunction calculatePagination(arr) {\n if (window.innerWidth < 992) {\n return arr.length;\n }\n return 4;\n}\n","export const videosBackup = [\n {\n id: 3007,\n acf: {\n title: \"Community Viewpoints: Future of Markets\",\n link: \"https://symphony.com\",\n embed_code: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/asoggetti-rSFxBGpnluw-unsplash-scaled-e1602272337610.jpg\",\n slug: \"community-viewpoints\",\n },\n },\n {\n id: 3006,\n acf: {\n title: \"Future of Markets: Demos and Discussion\",\n link: \"https://symphony.com\",\n embed_code: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/carl-heyerdahl-KE0nC8-58MQ-unsplash-scaled-e1602272348649.jpg\",\n slug: \"future-markets\",\n },\n },\n {\n id: 3005,\n acf: {\n title: \"Keynote: Connectivity in the Collaboration Economy\",\n link: \"https://symphony.com\",\n embed_code: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/chris-ried-ieic5Tq8YMk-unsplash-scaled.jpg\",\n slug: \"keynote-connectivity\",\n },\n },\n {\n id: 3004,\n acf: {\n title: \"The Future Platform for Financial Services\",\n link: \"https://symphony.com\",\n embed_code: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/christopher-gower-m_HRfLhgABo-unsplash-scaled-e1602272356374.jpg\",\n slug: \"future-platform\",\n },\n },\n {\n id: 2997,\n acf: {\n title:\n \"Transformation of the Global Financial Industry: Fireside Chat with CEO/CIO of BFAM\",\n link: \"https://symphony.com\",\n embed_code: \"\",\n image:\n \"https://innovate.symphony.com/wp-content/uploads/2020/10/kevin-ku-w7ZyuGYNpRQ-unsplash-scaled-e1602272364394.jpg\",\n slug: \"transformation-financial-industry\",\n },\n },\n];\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Select, CaretIcon, ModalCloseButton } from \"react-responsive-select\";\n\n// Animations\nimport { Fade } from \"../../animations/fade/Fade\";\n\n// Components\nimport { LoadingSpinner } from \"../../components/loading/LoadingSpinner\";\nimport { Section } from \"../../components/section/Section\";\n\n// CSS\nimport \"../../css/scenes/videos/videos.scss\";\n\n// Data\nimport { videosBackup } from \"../../data/videos\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { formatAcfResponse } from \"../../utils/apiUtils\";\n\n// Constants\nconst fadeStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n};\n\nexport const Videos = (props) => {\n /**********************************\n * useState\n **********************************/\n\n const [selectedOption, setSelectedOption] = useState(null);\n const [videos, setVideos] = useState([]);\n\n const hasVideos = !!videos.length;\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n fetchVideos();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**********************************\n * End Hooks\n **********************************/\n\n function fetchVideos() {\n Api.getVideos(onFetchVideosSuccess, onFetchVideosError);\n }\n\n function onDropdownChange({ altered, value }) {\n altered && setSelectedOption(value);\n }\n\n function onFetchVideosError() {\n const responseFormatted = videosBackup.map((video) =>\n formatAcfResponse(video)\n );\n setVideos(responseFormatted);\n setSelectedOption(responseFormatted[0]);\n }\n\n function onFetchVideosSuccess(res) {\n const responseFormatted = res.map((video) => formatAcfResponse(video));\n setVideos(responseFormatted);\n setSelectedOption(responseFormatted[0]);\n }\n\n function renderButton() {\n return (\n <a\n className=\"videos__button\"\n href=\"https://event.on24.com/wcc/r/2738328/303C4684D5BA9D2B2DAE80E205DF3712\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <i className=\"fas fa-video\" />\n Watch the Full Event On Demand\n </a>\n );\n }\n\n function renderDropdown() {\n const dropdownOptions =\n hasVideos &&\n videos.map((video) => ({\n value: video,\n text: video.title,\n }));\n return (\n hasVideos && (\n <div className=\"videos__dropdown\">\n <Select\n caretIcon={<CaretIcon />}\n modalCloseButton={<ModalCloseButton />}\n name=\"videos-select\"\n onChange={onDropdownChange}\n options={dropdownOptions}\n selectedValue={selectedOption}\n />\n </div>\n )\n );\n }\n\n function renderSelectedOption() {\n return (\n selectedOption && (\n <div className=\"videos__selected-option\">\n <Video\n classes=\"videos__selected-option__video\"\n key={selectedOption.id}\n video={selectedOption}\n />\n {renderDropdown()}\n </div>\n )\n );\n }\n\n function renderVideos() {\n const list = videos.map((video) => {\n return <Video key={video.id} video={video} />;\n });\n return <div className=\"videos__grid\">{list}</div>;\n }\n\n function renderContent() {\n return hasVideos ? (\n <>\n {renderSelectedOption()}\n {renderVideos()}\n {renderButton()}\n </>\n ) : (\n <div className=\"videos__loading\">\n <LoadingSpinner />\n </div>\n );\n }\n\n return (\n <Section classes=\"videos\" id=\"videos\" theme=\"dark\">\n <Fade show={true} style={fadeStyle}>\n {renderContent()}\n </Fade>\n </Section>\n );\n};\n\nexport const Video = (props) => {\n const { classes, video } = props;\n const { id, image, link, slug, title } = video;\n\n /**********************************\n * useRef\n **********************************/\n\n const imageRef = useRef(null);\n\n /**********************************\n * useState\n **********************************/\n\n const [imageStyle, setImageStyle] = useState({\n backgroundImage: `url(${image})`,\n });\n\n /**********************************\n * useEffect\n **********************************/\n\n useEffect(() => {\n if (!imageStyle.height) {\n setImageStyle((prevImageStyle) => ({\n ...prevImageStyle,\n height: 0.8 * imageRef.current.offsetWidth,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [imageRef]);\n\n /**********************************\n * End Hooks\n **********************************/\n\n return (\n <div className={`videos__video ${classes}`} id={slug} key={id}>\n <a\n className=\"videos__video__link\"\n href={link}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <div\n className=\"videos__video__image\"\n ref={imageRef}\n style={imageStyle}\n >\n <div className=\"videos__video__play\">\n <div className=\"videos__video__play__icon\"></div>\n </div>\n </div>\n <span className=\"videos__video__title\">{title}</span>\n </a>\n </div>\n );\n};\n","import React, { useState } from \"react\";\n\n// CSS\nimport \"./css/app.scss\";\nimport \"./css/reset.scss\";\nimport \"./css/animations.scss\";\nimport \"react-responsive-select/dist/react-responsive-select.css\";\n\n// Components\nimport { Connect } from \"./components/connect/Connect\";\nimport { Footer } from \"./components/footer/Footer\";\nimport { Header } from \"./components/header/Header\";\n\n// Scenes\nimport { Countdown } from \"./scenes/countdown/Countdown\";\nimport { Dashboard } from \"./scenes/dashboard/Dashboard\";\nimport { LearnMore } from \"./scenes/learn-more/LearnMore\";\nimport { Programming } from \"./scenes/programming/Programming\";\nimport { Recap } from \"./scenes/recap/Recap\";\nimport { Speakers } from \"./scenes/speakers/Speakers\";\nimport { Sponsors } from \"./scenes/sponsors/Sponsors\";\nimport { Videos } from \"./scenes/videos/Videos\";\n\nfunction App() {\n /**********************************\n * useState\n **********************************/\n\n const [phase] = useState(4);\n\n /**********************************\n * useState\n **********************************/\n\n /**********************************\n * End Hooks\n **********************************/\n\n return (\n <div className=\"app\">\n <Header phase={phase} />\n <Countdown phase={phase} />\n <Videos phase={phase} />\n <Dashboard phase={phase} />\n <Recap phase={phase} />\n <Speakers phase={phase} />\n <Programming phase={phase} />\n <LearnMore phase={phase} />\n <Sponsors />\n <Connect />\n <Footer />\n </div>\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}