{"version":3,"sources":["assets/images/graphics/icn_checkmark.png","assets/images/buttons/btn_play.svg","assets/images/graphics/VerizonLogoDarkTrans.svg","assets/images/graphics/VerizonLogoTrans.svg","assets/images/frames/desktop/360layoutrevised-1.jpg","assets/images/buttons/btn_video-play_small.png","assets/images/buttons/btn_video-pause.png","assets/images/buttons/btn_video-mute.png","assets/images/buttons/btn_video-volume.png","assets/images/reference/grid_768.png","assets/images/reference/grid_1272.png","components/VerizonByTheNumbers/subcomponents/InfoTooltip/info-tooltip-icon.png","assets/images/buttons/btn_video-next.png","assets/images/buttons/btn_video-minimize.png","assets/images/buttons/btn_pause.svg","models/Models.js","store/reducers/mainReducer.js","models/Utils.js","models/ADA.js","pages/Loading/Loading.js","models/Hooks.js","pages/Introduction/Introduction.js","components/Common/Button/Button.js","components/DigitalMuseum/Story/Story.js","components/DigitalMuseum/VideoIntro/VideoIntro.js","components/DigitalMuseum/360Story/StoryHolder.js","components/Common/CardHolder/CardHolder.js","assets/images/graphics/icn_compass.svg","assets/images/graphics/btn-close.svg","components/Common/ExternalLink/ExternalLink.js","store/reducers/gaReducer.js","components/Common/Spinner/Spinner.js","components/PoweredByPurpose/VideoSlide/VideoSlide.js","components/DigitalMuseum/StoryCarousel/StoryCarousel.js","components/DigitalMuseum/QuoteStory/QuoteStory.js","components/DigitalMuseum/AudioBase/AudioBase.js","components/Common/MediaControls/MediaControls.js","components/Common/VTTReader/util/util_time.js","components/Common/VTTReader/util/util_text.js","components/Common/VTTReader/util/util_caption.js","components/Common/VTTReader/VTTReader.js","components/DigitalMuseum/AudioClip/AudioClip.js","components/DigitalMuseum/Video/Video.js","components/Common/PollOption/PollOption.js","components/Common/VenetianBlindsText/VenetianBlindsText.js","components/DigitalMuseum/UserPoll/UserPoll.js","components/DigitalMuseum/Scene3D/Scene3D.js","components/Common/Credits/Credits.js","components/Common/NextStory/NextStory.js","assets/images/graphics/verizon.svg","components/DigitalMuseum/InfographicCarousel/InfographicCarousel.js","components/DigitalMuseum/SlideGenerator/SlideGenerator.js","pages/Home/Home.js","assets/images/graphics/icn_pbp-bar.svg","webpack:///./src/assets/images/buttons/btn_play.svg?8d4b","components/PoweredByPurpose/PulseInfographic/Infographic.js","components/PoweredByPurpose/PulseLocation/Location.js","components/PoweredByPurpose/Pulse/Pulse.js","components/PoweredByPurpose/Object3DSlide/Object3DSlide.js","components/PoweredByPurpose/TimelineCarousel/TimelineCarousel.js","components/PoweredByPurpose/Timeline/Timeline.js","components/PoweredByPurpose/TimelineIntro/TimelineIntro.js","components/PoweredByPurpose/RelatedStories/RelatedStories.js","components/PoweredByPurpose/FullScreenCarousel/FullScreenCarousel.js","components/PoweredByPurpose/VideoIntro/VideoIntro.js","components/Common/ExhibitMenu/ExhibitMenu.js","pages/PBPHome/PBPHome.js","components/Common/CloseIcon/CloseIcon.js","components/Common/ToggleMenu/ToggleMenu.js","components/Common/Navbar/Navbar.js","components/Common/Frames/Frames.js","components/Common/Version/Version.js","components/Common/ScrollToTop/ScrollToTop.js","components/Common/Arrow/Arrow.js","components/BuildingBrighterFutures/subcomponents/VideoBanner/VideoBanner.js","components/BuildingBrighterFutures/subcomponents/TwoColumnSlider/TwoColumnSlider.js","components/Common/LearnMoreLink/LearnMoreLink.js","components/BuildingBrighterFutures/subcomponents/PillarSlider/PillarSlider.js","components/BuildingBrighterFutures/PillarsIntro/PillarsIntro.js","components/BuildingBrighterFutures/subcomponents/CreditsWrapper/CreditsWrapper.js","components/BuildingBrighterFutures/subcomponents/MosaicColumn/MosaicColumn.js","components/BuildingBrighterFutures/subcomponents/MosaicSection/MosaicSection.js","components/BuildingBrighterFutures/PillarPage/PillarPage.js","components/Common/LandscapeMessage/LandscapeMessage.js","components/VerizonByTheNumbers/subcomponents/LearnMore/LearnMoreButton.js","components/VerizonByTheNumbers/subcomponents/IntroBars/IntroBars.js","components/VerizonByTheNumbers/VbnIntro/VbnIntro.js","components/VerizonByTheNumbers/subcomponents/SectionTitleVideo/SectionTitleVideo.js","components/VerizonByTheNumbers/subcomponents/SectionIntroSlide/SectionIntroSlide.js","components/VerizonByTheNumbers/subcomponents/InfoColumns/InfoColumns.js","components/VerizonByTheNumbers/subcomponents/VbnVideo/VbnVideo.js","components/VerizonByTheNumbers/subcomponents/AnimatedNumbers/AnimatedNumbers.js","components/VerizonByTheNumbers/subcomponents/InfoTooltip/InfoTooltip.js","components/VerizonByTheNumbers/subcomponents/Charts/BarChart/BarChart.js","components/VerizonByTheNumbers/subcomponents/Charts/PieChart/PieChart.js","components/VerizonByTheNumbers/subcomponents/Charts/MapChart/MapChart.js","components/VerizonByTheNumbers/subcomponents/Charts/ChartBox.js","components/VerizonByTheNumbers/subcomponents/DataGrid/DataGrid.js","components/VerizonByTheNumbers/VbnSectionPage/VbnSectionPage.js","components/CommunicationsChangeTheWorld/subcomponents/TitleArea/TitleArea.js","components/CommunicationsChangeTheWorld/subcomponents/Slot/Slot.js","components/CommunicationsChangeTheWorld/subcomponents/SlotMachine/SlotMachine.js","components/CommunicationsChangeTheWorld/subcomponents/ThemeContent/ThemeContent.js","components/CommunicationsChangeTheWorld/subcomponents/AllThemesGrid/AllThemesGrid.js","components/CommunicationsChangeTheWorld/subcomponents/SpinAgainStrip/SpinAgainStrip.js","components/CommunicationsChangeTheWorld/CcwMain/CcwMain.js","components/Credo/subcomponents/TopSection/TopSection.js","components/Credo/subcomponents/Story/Story.js","components/Credo/subcomponents/StoryDisplay/StoryDisplay.js","components/Credo/subcomponents/StoriesSection/StoriesSection.js","components/Credo/subcomponents/VideoSection/VideoSection.js","components/Credo/subcomponents/BottomSection/BottomSection.js","components/Credo/CredoMain/CredoMain.js","components/Innovation/subcomponents/DetailExpander/DetailExpander.js","components/Innovation/InnovationNested/InnovationNested.js","components/Innovation/subcomponents/TopAnimation/TopAnimation.js","components/Innovation/subcomponents/TopicElement/TopicElement.js","components/Innovation/subcomponents/TopicScroller/TopicScroller.js","components/Innovation/subcomponents/BottomPopup/BottomPopup.js","components/Innovation/subcomponents/PastTopicsScroller/PastTopicsScroller.js","components/Innovation/InnovationMain/InnovationMain.js","components/StoryArchive/StoryArchive.js","pages/Main/Main.js","store/reducers/configReducer.js","store/reducers/rootReducer.js","pages/App/App.js","serviceWorker.js","index.js"],"names":["module","exports","View","_createClass","_classCallCheck","Introduction","Home","StoryIntroState","Hidden","AnimatingIn","AnimatingOut","VideoIntroState","Forward","Backward","Paused","Both","PulseLocationState","Waiting","Active","Inactive","LoadingState","Loading","Loaded","NavbarContent","title","items","this","NavbarLink","link","bold","key","storyCardTypes","VIDEO_INTRO","TEXT_CAROUSEL","TEXT_CAROUSEL_WITH_BG","TEXT_IMAGE_CAROUSEL","TEXT_VIDEO_CAROUSEL","MIXED_MEDIA_CAROUSEL","INFOGRAPHIC_CAROUSEL","OBJECT_3D","QUOTE","VIDEO","AUDIO_PODCAST","AUDIO_MISC","USER_POLL","pbpCardTypes","timelineSlideTypes","mixedMediaTypes","linkTypes","introScreenNames","scene3DAnimationType","swipeDirection","swipeType","timelineAnchorPosition","credoStoryTypes","innovationMediaTypes","SET_NAVBAR","setActiveSlideKey","data","type","payload","setActiveSlideType","setMediaState","setPBPBlockScroll","setCreditsOpened","setInFullScreenVideo","setHasVisitedBBF","setHasVisitedVBN","defaultState","initialized","fontsloaded","loaded","cms","digitalMuseum","poweredByPurpose","buildingBrighterFutures","verizonByTheNumbers","communicationsChangeTheWorld","credo","innovation","global","menus","theMuseum","about","showNavBar","nextStory","storyIntroState","exploreClicked","currentSlideDarkBg","activeSlideKey","activeSlideType","mediaPlaying","PBPBlockScroll","menuOpened","isShowingCredoPopup","shouldSkipNavbarADA","creditsOpened","inFullScreenVideo","loadedObjects","hasVisitedStories","hasVisitedPBP","hasVisitedBBF","hasVisitedVBN","hasVisitedCCW","hasVisitedCredo","hasVisitedInnovation","videoFadeTimeout","visitedStories","isInitialized","val","formatDigitalMuseumMenu","cmsData","links","i","Stories","length","story","push","Menu","Text","concat","Path","Key","formatPoweredByPurposeMenu","Title","Pulse","NetworkMilestones","Carousel","formatBuildingBrighterFuturesMenu","Pillars","pillar","formatVerizonByTheNumbersMenu","Sections","section","formatTheMuseumMenu","formatAboutMenu","Navbar","AboutText","About","mainReducer","state","arguments","undefined","action","_objectSpread","navbarVisibility","includes","_toConsumableArray","sort","a","b","calculateSize","srcWidth","srcHeight","maxWidth","maxHeight","ratio","Math","max","width","height","getNavbarHeight","navbarContainer","document","getElementsByClassName","exhibitMenuContainer","getBoundingClientRect","getViewportDimensions","documentElement","clientWidth","clientHeight","getImageFilepath","filename","maxSize","sizes","window","screen","devicePixelRatio","size","closest","sizeString","formatted","substring","lastIndexOf","arr","apply","filter","v","keepSpaceTogether","inputString","together","brokenArray","split","togetherArray","newTogether","outputString","formatParagraphs","input","paragraphs","pars","text","React","createElement","className","PBPComponent","index","menu","lightBg","Index","Type","LightBg","getTrimmedURL","str","trim","toLowerCase","parseResults","options","results","formattedData","totalVotes","option","result","find","e","answerId","votes","percentages","totalPercent","fD","rawPercent","floor","percent","getBackground","BackgroundMobile","Image","Background","getPodcastImage","PodcastImageMobile","PodcastImage","ADALandmarks","Banner","Complementary","ContentInfo","Form","Main","Navigation","Search","Application","ADAWidgitRoles","Button","Link","ADAARIARoles","Heading","ListItem","List","Region","Group","Feed","Presentation","Article","None","_ref","loadingState","onLoaded","showTextOnly","useSelector","_useState","useState","_useState2","_slicedToArray","currentState","setCurrentState","useEffect","style","transitionDuration","animationTime","role","aria-level","Header","Body","CountUp","start","end","duration","useEasing","onEnd","useWindowSize","innerWidth","innerHeight","windowSize","setWindowSize","handleResize","addEventListener","removeEventListener","useSwipeEvent","target","handler","sub","useRef","stream","getSwipeStream","useCallback","wheelEvent","scrollEvts","fromEvent","toucheStartEvts","toucheEndEvts","toucheCancelEvts","timeStamp","merge","pipe","concatMap","se","first","map","me","diff","x","touches","clientX","changedTouches","y","clientY","abs","dir","origin","deltaY","deltaX","current","subscribe","unsubscribe","vLogo","vLogoObj","objects","elements","dispatch","useDispatch","history","useHistory","mediaPath","config","basePath","apiMediaPath","globalData","storyArchive","StoryArchive","dmnavbar","themuseumnavbar","introContainer","exhibitsRef","ADARefocusRef","ADARefocusFinalRef","THREE","scene","_useState3","_useState4","hovered","setHovered","_useState5","CSS3DRenderer","renderer","_useState7","_useState8","menuDisplay","setMenuDisplay","_useState9","_useState10","blockInteraction","setBlockInteraction","_useState11","_useState12","screens","setScreens","_useState13","_useState14","sceneInit","setSceneInit","_useState15","_useState16","setLoadingState","_useState17","_useState18","setScrollDownText","_useState19","_useState20","scrollDownVisibility","setScrollDownVisibility","_useState21","_useState22","scrollUpVisibility","setScrollUpVisibility","_useState23","_useState24","autoAnimation","setAutoAnimation","_useState25","_useState26","showText","setShowText","_useState27","_useState28","listenToSwipe","setListenToSwipe","_useState29","_useState30","listenToScroll","setListenToScroll","_useState31","_useState32","vw","setVw","_useState33","_useState34","vh","setVh","_useState35","_useState36","internalURLChange","setInternalURLChange","introductionId","useParams","_useState37","camera","_useState39","_useState40","_useState41","_useState42","timer","inertiaRef","inertiaInterval","_useState43","_useState44","ada","setADA","_useState45","_useState46","_useState47","_useState48","storyIndex","setStoryIndex","adaRef","introductionIndex","Onboarding","FinalSlide","getIntroductionIndex","imagesPosition","z","init","altText","img","alt","ariaHidden","src","process","appendChild","CSS3DObject","position","startValue","add","Images","forEach","element","imagesXPositionForDesktop","imgElmt","objectCSS","setSize","getElementById","domElement","updateViewport","newVw","newVh","aspect","updateProjectionMatrix","render","scrns","name","active","zIndex","s","location","reload","goTo","showFirstScreen","transitionToScreen","setADANonRepeating","setTimeout","ADADescriptiveText","ADAAnimationDescription","Exhibits","adaDescriptiveText","arrowDownRef","arrowUpRef","onDownArrowClick","dispatchEvent","MouseEvent","view","bubbles","cancelable","buttons","onUpArrowClick","scrollDownState","currentScreen","showScrolldown","Footer","newScreens","scrollHandler","o","d","classList","remove","elt","swipeHandler","activeIndex","findIndex","handleTouchUp","clearInterval","setInterval","newInteria","handleTouchDown","useLayoutEffect","ref","handleScroll","stopPropagation","scrollTop","round","scrollHeight","getScrollStream","toucheMoveEvts","prevEvent","newEvent","useScrollEvent","nextScreenAnimationSpeed","currentScreenAnimateOffSpeed","screenUpdateSpeed","focus","console","log","delayMove","startPos","currentPos","step","menuLeftSide","Left","menuRightSide","Right","exhibits","getScreenContent","isActive","href","aria-label","onClick","preventDefault","FiArrowDown","dangerouslySetInnerHTML","__html","FiArrowRight","exhibit","Thumbnail","AltText","aria-hidden","HasLink","isExternal","button","tabIndex","ExternalURL","rel","InternalURL","BasePath","internalURL","to","getExhibitLink","Subheader","storyId","stry","onExploreClick","onMouseEnter","onMouseLeave","Thumbnails","thumb","Text2","item","itemIndex","Subpaths","ArchivedStories","Text3","id","aria-live","BsChevronDown","General","ADAScrollUpDescriptiveText","BsChevronUp","STYLES","SIZES","COLORS","children","buttonStyle","buttonSize","buttonColor","label","checkButtonStyle","checkButtonSize","checkButtonColor","Story","homeData","isInline","topOffset","status","animate","setAnimate","isPortrait","useMediaQuery","query","ExploreClicked","outerClassname","backgoundClassname","cardHolderClassname","top","display","flexDirection","imgStart","Fragment","ButtonLabel","buttonLabel","VideoIntro","fadeTimeout","cardData","activeKey","videoTimeout","playing","setPlaying","setLoaded","player","isVideo","BackgroundVideo","URL","imageBackground","handleVideoStart","querySelector","setAttribute","clearTimeout","dimensions","storyVideoIntroStyle","videoClassname","ReactPlayer","playsinline","muted","volume","onStart","url","loop","opacity","Opacity","backgroundImage","Overlay","backgroundColor","StoryHolder","videoIntroData","CardHolder","_path","_path2","_path3","isInlineCard","cardHeight","isLightBg","onArrowClicked","hasArrow","specialClass","classname","innerDiv","onKeyUp","activeElement","IconContext","Provider","value","color","Div100vh","Object","assign","bind","source","prototype","hasOwnProperty","call","excluded","sourceKeys","keys","indexOf","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_style","_circle","_polygon","svgRef","props","viewBox","enableBackground","xmlSpace","ForwardRef","forwardRef","ExternalLink","expanded","setExpanded","fill","CompassIcon","cx","cy","r","points","trackingID","reportEvent","gaReducer","ReactGA","initialize","set","userId","createBrowserHistory","basename","listen","page","pathname","send","event","category","Spinner","viewport","strokeDasharray","strokeDashoffset","VideoSlide","closeButton","playOnActive","doNotHideLoading","forceShowControls","_ref$showPlayButton","showPlayButton","_ref$canPlay","canPlay","onPlaying","_useState6","setMuted","fullscreen","goToFullscreen","handleOnExit","seekTo","onPlayVideo","Video","handleOverlayClick","videoURL","BackgroundMedia","VideoPreview","video","controls","youtube","playerVars","showinfo","modestbranding","progressInterval","onKeyPress","imagePlaceholder","fullscreenClass","pop","CloseBtn","pointerEvents","StoryCarousel","card","forceInlineImage","preventScrolling","onScrollCompleteCallback","onScrollCallback","setActiveState","currentSlide","setCurrentSlide","setCardData","setIsIdle","touchLocX","setTouchLocX","lastTouchLocX","setLastTouchLocX","carouselRef","controlRef","videoRef","getSlideDataFromCard","checkForScroll","maxDeltaX","carouselContext","context","totalSlides","setStoreState","supportsPassive","defineProperty","get","wheelOpt","passive","onChange","staticContent","Name","subHeader","slides","SimpleTextCarousel","staticHeader","image","StaticTitle","ImageTextCarousel","MixedMediaCarousel","header","Media","configData","externalLink","slide","getExternalLink","videoclass","autoplay","CarouselProvider","naturalSlideWidth","naturalSlideHeight","dragStep","lockOnWindowScroll","onTouchStart","onTouchMove","onTouchEnd","dragEnabled","touchEnabled","interval","Slider","classNameAnimation","moveThreshold","slideBackground","Slide","ButtonNext","DotGroup","visibility","QuoteStory","lines","QuoteAttribution","author","company","cardBackground","AudioBase","onPlay","podcastImage","left","transform","PlayButton","backgroundRepeat","backgroundPosition","MediaControls","sliderInnerStyle","progress","transition","updateInterval","handlePlayClicked","handleVolumeClicked","onMute","toHHMMSS","secs","sec_num","parseInt","join","captions","scrubBounds","pageX","onScrub","PauseButton","cur","dur","getTimestamp","MutedButton","MuteButton","memo","_ref$end","format","startDuration","Duration","fromMillis","endDuration","startFormatted","toFormat","endFormatted","array","Caption","CaptionText","getFormatFromList","total","firstIndexWithoutZero","replace","numeric","formatSplit","indexToSplitFrom","slice","getFormat","_ref2","caption","endToUse","nextCaption","shouldUseEnd","VTTReader","raw","parsed","parseSync","Captions","AudioClip","setProgress","setDuration","setIsLoaded","VTTCaptions","setVTTCaptions","audioRef","reset","fetch","then","res","blob","vtt","prop","pause","play","audioEl","seek","currentTime","ListenURL","audio","ReactAudioPlayer","autoPlay","listenInterval","onListen","seconds","onLoadedMetadata","onEnded","onMinimize","SubscribeURL","open","handleMaximizeClicked","opacityStyle","onKeyDown","_defineProperty","PollOption","background","outerStyle","transitionDelay","innerStyle","tally","buttonText","choice","dataKey","pollQuestion","Checkmark","VenetianBlindsText","show","_ref$delay","delay","visible","setVisible","spans","setSpans","lineHeight","setLineHeight","parentElement","lHeight","getStyle","offsetHeight","currentStyle","getComputedStyle","defaultView","getPropertyValue","Array","Poll","setPollChoice","animationPlaying","setAnimationPlaying","pollServer","setResults","endPoint","json","VoteOptions","catch","error","handleClicked","method","cache","body","JSON","stringify","headers","voteOption","Scene3D","onGoToNextSlide","onGoToPrevSlide","currentView","setCurrentView","model","setModel","loadingP","setLoadingP","isSceneSetup","setIsSceneSetup","canvasRef","resizeTimer","animationTimer","views","rotation","PI","objectRef","sceneRef","sceneSetup","antialias","canvas","PMREMGenerator","elSize","dirLight1","dirLight2","handleWindowResize","GLTFLoader","load","object","scale","xhr","loadingPercentage","ceil","scheduleAnimation","rStep","xStep","yStep","zStep","Promise","resolve","direction","nextView","handleSwipeDown","handleSwipeUp","animationSpeed","dispose","handleSwipe","useImperativeHandle","handleSwipeUpRef","handleSwipeDownRef","inner","ButtonBack","AltText3D","elmt","disableActiveDots","renderDots","visibleSlides","showAsSelectedForCurrentSlideOnly","dots","_loop","selected","handleClick","Dot","disabled","Swipeable","trackMouse","onSwipedLeft","onSwipedRight","Credits","showBar","showContent","setShowContent","allCredits","creditsBuffer","rowCounter","credit","el","formatCredits","CreditText","_regeneratorRuntime","Op","hasOwn","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","Context","makeInvokeMethod","tryCatch","fn","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","reject","invoke","record","__await","unwrapped","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","iter","reverse","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","NextStory","subtitle","showNext","showCredits","onCreditsClick","timeout","_refreshPage","_asyncToGenerator","_callee","_context","InfographicCarousel","elmtsPerSlide","setElmtsPerSlide","setNaturalSlideWidth","n","numSwipes","handleDotClick","getStoreState","maxDeltaY","SlideGenerator","stories","hidden","showNextStory","setShowNextStory","useContext","CarouselContext","carouselIndex","setCarouselIndex","activeCardType","nextStoryId","setNextStoryId","touchLocY","setTouchLocY","isScrolling","setIsScrolling","isHorizontalScrolling","setIsHorizontalScrolling","scene3DRef","sliderHolderElement","sliderElement","isFullScreen","isLandscapeWithMargin","isLandscapeNoMargin","isInlineLayout","cardWidth","min","carouselWrapperStyle","overflowY","sliderStyle","paddingBottom","cardStyle","margin","cardPadding","videoStyle","padding","storyCards","IsDarkModePortrait","IsDarkMode","IsDarkModeLandscape","Cards","disableAnimation","setActiveCard","scrollTo","some","currentCard","handleScrollInline","sliderRect","RemoveEvents","dotGroups","dotGroup","click","trackTouch","onSwipedDown","onSwipedUp","cards","currentIndex","showProgressBar","storyData","UserPoll","getHtmlFromStoryJSON","mapSlidesToJSON","BottomNavbar","UpNext","PBP","BBF","Subtitle","AllStories","refStory","getStoryIndex","orientation","Infographic","barCount","win","prevBarCount","usePrevious","logoWidth","barWidth","barContainerWidth","infographicContainerWidth","bars","filled","offset","barFillSpeed","right","Bar","fillOpacity","clip","maskPoints","Logo","Location","onSelected","handleOnClick","locationClass","content","activeLocation","setActiveLocation","flickityRef","choiceSelectedRef","choiceUnselectedRef","selectIndex","handleSelected","Locations","match","playFocusedText","select","locations","textBox","WirelessBusyHour","VolumeRate","Description","centerContent","Value","VerizonLogoAltText","Object3DSlide","isExploreMode","onExploreSelected","onExploreClosed","loading","setLoading","orbit","animateIn","animateOff","zoomInTimer","renderScene","setDefaultSceneSize","alpha","setClearColor","OrbitControls","enablePan","update","viewportHeight","viewportWidth","handleCanvasEvent","TimelineCarousel","inLightbox","onExploreClicked","onExitClicked","isLandscape","exploreMode","setExploreMode","getBackgroundImagePosition","anchor","on3DExploreSelected","Year","on3DExploreClosed","isPlaying","BackgroundImage","backgroundPositionX","ImageAnchor","external","getLink","Timeline","activeYear","setActiveYear","autoScroll","setAutoScroll","lightboxYear","setLightboxYear","swipeEvent","setSwipeEvent","cardActive","setCardActive","cardsRef","yearsRef","timelineRef","timelineData","scrollIntoViewTimer","offsetTop","scrollIntoView","onSwipe","onExitLightbox","onCardClick","elType","nativeEvent","contains","onYearClick","updateState","counter","timerId","handleTimelineExitClicked","handleExploreClicked","year","onSwiped","TimelineIntro","goToNextSlide","goToPrevSlide","timelineIndex","timelineExpanded","setTimelineExpanded","RelatedStories","dmnav","linksHolderRef","Links","LinkType","storyKey","navMatch","twoColumns","formatPollOption","FullScreenCarousel","InitSlide","Videos","getPBPVideoSlides","setIsAnimating","videoPlaying","setVideoPlaying","handleOnPlaying","setTopOffset","delayedFade","ExhibitMenu","setClick","setSelected","aria-expanded","aria-controls","PBPHome","navbar","blockScroll","setIndex","slideId","pbpArray","getPBPArray","defaul","getPBPData","instantAnimation","setInstantAnimation","setShowCredits","showBottomNav","setShowBottomNav","currentInd","k","slideIndex","getSlideByType","CloseIcon","close","darkMode","dimension","ToggleMenu","toggle","showNavbar","aboutnavbar","cursor","desktopMenuOpened","setDesktopMenuOpened","useLocation","navContainer","isDesktopView","modal","showModal","setNavMenu","setMenu","handleDesktopKeyPress","handleDesktopFocusIn","handleDesktopFocusOut","handleMenuItemKeyDown","currentMenuIndex","navItems","from","slot","currentNavItemIndex","keyCode","featuredStoriesContent","StoryMenuHeader","exhibitContent","ExhibitsMenuHeader","mobileContent","onBackgroundClicked","menuItemClicked","all","formatLinks","menuIndex","ADADescriptiveTextClose","column","columnIndex","LatestStoriesLabel","LatestStories","row","rowIndex","onmouseover","exhibitLinks","featuredStoriesLinks","mobileLinks","VerizonDarkLogo","Text1","ADADescriptiveTextOpen","Frames","isDebug","debug","gridVisibility","setGridVisibility","frameVisibility","setFrameVisibility","isDesktopOrLaptop","Keydown","grid","LandscapeGrid","PortraitGrid","frame","Frame","Version","number","setVisibility","ScrollToTop","_cmsData$innovation","innovationPath","Arrow","hideFromADA","VideoBanner","theRef","marginTop","heightParams","setHeightParams","videoDimensions","setVideoDimensions","setIsPlaying","hasStarted","setHasStarted","loopVideo","bgndVideo","onUnstarted","onReady","bgndImage","bigFont","onGoDown","TwoColumnSlider","mobileMaxHeight","setMobileMaxHeight","refMobileMaxHeight","isMobileLayout","setIsMobileLayout","refIsMobileLayout","container","activeColumn","setActiveColumn","columns","Boxes","box","bgndOpacity","bgndOverlayColor","columnRefs","columnBodyTextRefs","handleColumnMouseEnter","columnElement","innerTextHeight","handleColumnMouseLeave","rect","bodyText","onMobile","maxH","columnRef","onFocus","onBlur","getTwoColumns","LearnMoreLink","specialAltText","innerText","PillarSlider","exploreMore","ExploreMore","gridContainer","gridRow","sliderContentDimensions","setSliderContentDimensions","spaceAround","setSpaceAround","isAutoSliding","blockElements","shownInIntro","setShownInIntro","animateIntro","setAnimateIntro","isFixed","setIsFixed","refShownInIntro","refAnimateIntro","slidesWrapper","firstSlide","secondSlide","desktopLogoWrapper","adjustBlocks","sliderY","sliderH","unitHeight","introBuffer","windowHeight","verticalPadding","sliderTop","actualSliderY","parseFloat","sliderOffsetY","positions","numberOfBlocks","firstBlindsRect","gridContainerWidth","gridRowWidth","introContentHeight","goToBlock","introBlockSubset","t0","Date","now","tFinal","requestAnimationFrame","t","tNormalized","distDiff","scrollFromBlock","block","marginBottom","FirstIntroSlide","LinkText","LinkAltText","borderColor","SecondIntroSlide","pillarBlocks","LearnMoreText","LearnMoreAltText","Pillar","getPillarBlocks","PillarsIntro","cmsMediaPath","creditsActive","setCreditsActive","tcs","creditsElement","OurResponsibility","InitVideo","animateScrollTo","elementToScroll","InitialVideo","CreditsWrapper","fixedMeasurerElement","measureRect","MosaicTextBox","scroller","fadingAllowed","isVisible","setIsVisible","isVisibleRef","appearanceThreshold","MosaicImage","textPosition","MosaicRow","_ref3","MosaicColumn","_ref4","_ref5","unitWidth","columnType","isHalf","wiggleEnded","getFontSize","Image1","Image2","getHalfColumn","bigImageTextPosition","rowTextPosition","RowTextPosition","BigImageTextPosition","RowText","RowImage","BigImage","BigImageText","getFullColumn","MosaicSection","ctaData","containerWidth","setContainerWidth","refContainerWidth","mosaicHeight","setMosaicHeight","paddingLeft","paddingRight","contentDimensions","setContentDimensions","refContentDimensions","introElement","bottomSpacer","mosaicUnitWidth","setMosaicUnitWidth","isSnappedConclusion","refMosaicUnitWidth","lastScrollerPos","introWrapper","introBodyText","introTextOffset","introTextWentUp","wiggleShown","setIntroTextPosition","performAutoScroll","isAutoScrolling","isDragged","bodyTextLeft","epsilon","ctaLeft","currentScroll","scrollLeft","hiddenOnTheRight","targetScroll","cancelOnUserAction","snapTarget","handleIntroTextPositioning","handleBodyScroll","isOnDesktop","scrollerRect","animatorProperties","speed","easing","c1","pow","finalScrollerOffset","containerComputedStyle","introElementHeight","contentInnerWidth","ColumnType","mouseStartX","mouseScrollerStart","handleMouseUp","handleKeyDown","currentScroller","onMouseDown","ev","onMouseUp","onMouseMove","columnElements","columnData","HalfColumn","Column","getColumns","marginLeft","PillarPage","videoBannerRef","mosaicSections","blockMouseWheel","isMobileScreen","digitalMuseumCMS","poweredByPurposeCMS","pillarIndex","pillarId","getBBFIndex","thePillar","scrollAutomaticallyTo","scrollToMosaicSection","scrollToVideoBanner","scrollToFooter","bottomRect","handleMouseWheel","handleDefaultEvent","refY","bannerRect","sectionRects","snappedToSection","Themes","theme","MosaicColumns","nextPillarIndex","nextPillarId","createRef","WhereAreWeNow","LandscapeMessage","_objectDestructuringEmpty","LearnMoreButton","IntroBars","boxesHolder","barsContainer","learnMore","LearnMore","bgndColor","titleClass","subtitleClass","boxesClass","barsClass","blockerClass","mobileBoxesClass","scrollProtectorClass","animationState","setAnimationState","contentHeight","shiftTop","performAnimation","mobileClass","firstBoxRect","boxRef","expandBoxesOnMobile","parentNode","getBoxes","getBars","VbnIntro","boxes","IntroBox","BodyText","SectionTitleVideo","videoUrlDesktop","videoUrlMobile","adaText","setOnMobile","refScreenWidth","SectionIntroSlide","videoTitleDesktop","videoTitleMobile","title1","title2","InfoColumns","rightHeight","setRightHeight","titleRef","Columns","columnImage","ColumnImage","hideLearnMoreLinks","rh","MoreStories","VbnVideo","videoWrapperRef","refIsInView","AnimatedNumbers","animatedPart","animationDone","initialText","setInitialText","refAnimatedPart","refText","fixedParts","decimalPlaces","precision","exponent","innerHTML","parts","toString","numberWithCommas","animateNumbers","InfoTooltip","parentRef","popupActive","setPopupActive","refPopupActive","popupDimensions","setPopupDimensions","arrowLeft","setArrowLeft","handleDocumentClick","clickedOnPopup","activatePopup","parentRect","popupLeft","icon","BarChart","last","labelFormatted","ResponsiveContainer","Chart","bottom","barSize","CartesianGrid","strokeWidth","vertical","XAxis","axisLine","tickLine","animationDuration","animationBegin","Cell","stroke","LabelList","textAnchor","dominantBaseline","attributeType","attributeName","RADIAN","PieChart","Pie","labelLine","midAngle","innerRadius","radius","cos","sin","toFixed","Label","outerRadius","paddingAngle","startAngle","endAngle","MapChart","Map","ChartBox","chart","Values","tempbar","temppie","DataGrid","boxRefs","inputBoxes","reduce","acc","j","temp","Icon","AnimatedNumbersInTitle","Tooltip","rows","rowSum","tempItems","getCells","VbnSectionPage","afterSlideEl","lastScreenWidth","sectionIndex","sectionId","getVBNIndex","theSection","IntroSlide","VideoTitleDesktop","VideoTitleMobile","nextSectionIndex","nextSectionId","Title1","Title2","InfoVideo","FooterText","TitleArea","noThemeData","onSpin","longestTitle","longestSubtitle","spinInstructionsClass","setSpinInstructionsClass","refSpinInstructions","refInstMaxHeight","instHeight","CallToAction","SpinButton","SpinAgainLabel","SpinLabel","Slot","offsetX","totalWidth","themes","isSpinning","targetIndex","refRail","refSpinTime","refSpinningActive","refShuffledThemeIndices","spin","targetBottom","random","currentBottom","newBottomTemp","newBottom","getProperImage","MobileImage","DesktopImage","smProps","fields","count","randomIndex","shuffleIndices","themeInd","getThemesOnRail","SlotMachine","themeIndex","onSpinStart","onSpinEnd","onIdleSpinStart","onIdleSpinEnd","setIsMobile","slotMachineProps","setSlotMachineProps","smWrapper","smSizer","slotIndicesArray","slotRefs","_","positionRefs","spinningStates","setSpinningStates","refSpinningStates","showingOverlayImage","setShowingOverlayImage","themeForOverlayIndex","setThemeForOverlayIndex","refFirstRender","refNoUserSpinYet","sizerSize","doIdleSpinning","doSomeSpinning","newSpinningStates","_loop2","_loop3","_loop4","getGap","gap","wrapper","slotWidth","slots","getSlots","ind","ThemeContent","cardElementRefs","cardDataRefs","activeCardIndex","midScreen","retValue","handleClickOnCard","getHtmlFromCard","generateCards","AllThemesGrid","currentTheme","exploreButtonLabel","filteredThemes","getThemeIndex","getThemeList","SpinAgainStrip","onSpinAgain","CcwMain","chosenTheme","setChosenTheme","refShownThemes","ccwBlocker","setDarkMode","chosenThemeForContent","setChosenThemeForContent","titleAreaRef","refIsIdleSpinning","refRandomSpinQueued","setRandomTheme","filteredIndices","goUpAndSpinAgain","targetTheme","getLongestTitle","getLongestSubtitle","ExploreThemeLabel","TopSection","introData","sectionHeight","refViewportDims","refVideoHolder","videoMuted","setVideoMuted","showingCaret","setShowingCaret","errorHandlingAttempted","originalDimensions","desktop","mobile","isMobile","targetDimensions","scaleFactor","finalDimensions","navbarHeight","viewDims","videoRect","deviceDetect","os","GifTitle","WaveformVideoMobile","CredoLink","SpecialAltText","WaveformVideoADA","WaveformVideoMobileYouTube","WaveformVideoDesktop","onError","general","onDisplayStory","onFocusButton","imagePart","Template","Photo","textPart","PreviewTitle","currentElement","StoryLearnMore","StoryDisplay","onClose","videoShown","setVideoShown","imgHolderRef","headerRef","showingSchemeOverlay","setShowingSchemeOverlay","handleX","JobTitle","aria-haspopup","imgHolderClass","_imgHolderRef$current","getImageColumn","textTitle","TextTitle","textBody","TextBody","textQuote","Quote","companyPart","CompanyInfo","CompanyLearnMoreButtonAltText","CompanyLearnMore","getContentColumn","LearnMoreImage","LearnMoreImageCaption","StoryCloseAltText","StoriesSection","sections","storyDisplayCallback","bigRef","sectionRefs","progressRef","expansion","setExpansion","refExpansion","refDimensions","midHeight","availableHeight","setAvailableHeight","storyInDisplay","setStoryInDisplay","focusHelper","newExpansion","sectionRect","every","exp","bigRect","smallRect","progressTop","generateSection","IntroText","SectionLabel","generateSeparator","VideoSection","contentRef","setContentHeight","showingVideo","setShowingVideo","playVideo","handleButtonFocus","PlayButtonAltText","CloseButtonAltText","BottomSection","BigText","CredoMain","credoBlocker","CredoGeneral","CredoSections","isShowingStory","DetailExpander","activityHandler","wrapperParams","closeParams","mobileContentStyle","setMobileContentStyle","refInner","refWrapperParams","refCloseParams","calculateMobileContentStyle","wrapperRect","closeRect","innerRect","_data$ImageMedia","_data$ImageMedia2","MediaType","ImageMedia","VideoMedia","getMedia","DescriptionLink","firstSplit","fullSplit","adjustDescription","transitionModes","InnovationNested","topic","linkToMain","linkToNext","nextTitle","bubbleLabels","nestedParamHandler","innovationId","hash","setActiveKey","transitionClass","setTransitionClass","transitionMode","setTransitionMode","redirectTo","setRedirectTo","setWrapperParams","setCloseParams","refWrapper","refClose","targetActiveKey","Overview","Origin","Impact","Future","wholeTransitionDuration","handleRedirection","mode","objs","_i","DetailedView","Redirect","TopAnimation","isTopicSelected","sectionWidth","onAnimationEnd","mainBubbleSizeSetter","animated","setAnimated","bubbleSize","setBubbleSize","refContent","refTitle","refSubtitle","refSize","AnimationImages","contentRect","subtitleRect","availableSpace","animationImages","AnimationImagesMobile","SectionTitle","SectionSubtitle","TopicElement","mainBubbleSize","redirectHandler","setIsActive","refIsVisible","refOnMobile","refMidLine","_useRouteMatch","useRouteMatch","path","elementRect","centerRect","initiateRedirect","BubbleImage","TopicScroller","topics","refTopicAnchors","mobileHeight","BottomPopup","linkTo","linkLabel","mainElement","PastTopicsScroller","topicsIndexOffset","getTopicElement","rowsKey","getTopicsGrid","InnovationIndex","InnovationMain","routeMatch","widthParams","setWidthParams","innovationBlocker","setIsTopicSelected","isTopicScrollerVisible","setIsTopicScrollerVisible","setMainBubbleSize","showPast","setShowPast","showFeatured","setShowFeatured","topicToPass","setTopicToPass","linkForNested","setLinkForNested","nextTopicLink","setNextTopicLink","nextTopicTitle","setNextTopicTitle","refLastTopicKey","getTopicIndexByKey","Topics","topicIndex","handleNestedParam","param","PastTopicsPath","BubbleLabels","PastTopicsLinkLabel","minHeight","PastTopicsSubtitle","FeaturedTopicsLinkLabel","Switch","Route","exact","typeId","latestElement","archiveElement","generateStories","rowCount","storiesInRow","ThumbnailImage","ButtonsLabel","ga_data","version","fontsLoaded","ga","Router","component","apiPath","buildingBrigtherFutures","configReducer","rootReducer","combineReducers","randomizeUrl","_GetFonts","store","App","createStore","Accept","response","digitalURL","pbpURL","bbfURL","vbnURL","ccwURL","credoURL","innovationURL","latestStories","archivedStories","FetchCMS","logWarning","FetchConfig","_x","GetFonts","Boolean","hostname","ReactDOM","StrictMode","navigator","serviceWorker","ready","registration","unregister","message"],"mappings":"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","file":"static/js/main.3c16c309.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAA1CAYAAAAJZhZbAAAACXBIWXMAAC4jAAAuIwF4pT92AAABqUlEQVRoge3bjU3DMBCG4RcWYAQYoSN0BEYImzAKIzACI3SDrtBOcMgQi7a4bX7OyZ3tT4qi/qi9exTFiRw/iAgtyWyAT+AV2IUvPDanZALUF/Dc78Nr2pH1PxHq6eSTI7BtWOdJQcUcG9ZfbkGFvLVz1m/uQgEfDWsgFG00HA5F5VijoKgYazQUlWJNgqJCrMlQVIY1C4qKsGZDUQmWChQVYKlBUTiWKhQFY6lDUShWFigKxMoGRWFYWaEoCCs7FIVgLQJFAutF40cXzGJQXGB1wL7fe8iiUD8JExYi0sl5uv59q9tGRA5yPVnqT0HFWAVbBSpirfLH3qAi1qoFeIGKWB7ATNRnriCrUJdYFsFM1WO5QHNHutVCTZ4SLBZsdrCxVrjpUdlSA+av96w04uLC2EJDXu4gRmHlaMwN1BQszQZdQU3F0mjUHdQcrDkNu4SaizWlcbdQGlhjAFxDaWENgXj3DhU2zRUW92ZbrkV/FiZTNCdZwzKzbb8oaGjcQJFhRnoMmCsoMk3fDwFzB0XGZx1ugbmEIvODISkwt1As8BTNKZhrKIBv4I/uZyxZUosAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/btn_play.893ddecf.svg\";","module.exports = __webpack_public_path__ + \"static/media/VerizonLogoDarkTrans.bf77f3fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/VerizonLogoTrans.ea0c792c.svg\";","module.exports = __webpack_public_path__ + \"static/media/360layoutrevised-1.62291bc5.jpg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAB20lEQVQ4jZWUz4tPYRTGP99vsbIZGmGhRk2MlZKfiVmYmqwGZdhMViLK3oKVjB9/ACuFMlnIYjaTNE3IwkJqzAKZErIaZDUx89Hl3Lzzzr3XOHXu+77nPOe5p/c+96DW+WH1gfpe/R7+QR1Vj9XVtYpHZn3AHWA18BSYAF4BBbAH6AX2AF+BIWB0QXn2hvP+sRF1TUP3q9Tbgb2Y5lLQhQAMNBDlfihqruSEeyNxMClYF538i3QgbaQM/lDHM+A+9Zt6aQmk40H6m7AvDnk3m/1rM+pQA2FnII8Wh4fq6wrQjuh8p3otCqbUXTWk0+okoa8bFYDtQbIxzl3q84jdUjsyfMFhG1gBTOZiTKwzttPANmBD6HAGuAy0Iz9Fcmg3EOa5bmBZCPtLEp8rwbPAlgqiVqzvYt0PfALGgBFgJTAMzEd+U/mnPFI/1tzhrNqv3ou7e6Kur/kob9S3xeZAgLsyQE8im8+Bq5NNR+BOloE59WUG6g39nVuCsMeCsFUG+iNwNgGtrZBGlR+J2hP5cBiOxOn/GA6DiS4XTZvCrwZgQt3aQNSt3g/szTRXNWAHgbshm0LMj2PAFvIopLE7Bm1hp4DrC6obujiuPlN/Jl97Xn2hnlGXL6pRfgFfpvJePJ+vkgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABQUlEQVQ4jbWVMUpDQRCGv0kRCwNaJJUgXkFIL4JNuhzAQhBSp/MMdrmAVXKAVBYqeIG0Wotgk1hooXbvl8EBn+uGBN/zL2f++fbt7sw+cpLUkjSQdClprm/NI+a5Vq7W0oCkU+Ac2ARugFvgKdI7wCFwBLwBZ2Z2seyrmpLGkgpJI0ntrPHL2w5PETXNnMkT75J6y0CZml7UjH9tM1ZbG5ZAizgqLA73AZiY2TBM+8BBqe4K2EhjZnYf/hFwDOwRN/ZRPjNJw7jXl1j9JBcr+dvBGDSAvt+mmT0nu3k1s23gcUWMqPWO6DuwG61RVc7oOrBT6rMqckanUQPohxy4iAmoKmcsHDiLcaoqZ8wcOPXZzIzalrcIsLsiRtT6fE/XbexroJnGzOyOtLGpefTKifoeh0jW8nz93wObQP/2CwA+AfJIbUB7V/4aAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAUCAYAAACJfM0wAAACEUlEQVQ4jaWVX2iPURjHP7MNzYU/NX/KGkLJlbDIJDfswq1E484klnKB1OLChVzJlaREUVaurFwpkiUXUitlSoukGNbKlOGj89vzm3ev395eeer0nud8n/N9vuc9zzmnTuU/rRV4BnQBa4AG4CyJuESbW4DNU587YQ/VpjQ+o4SiDuBzKMnaDmATMALcBQaAHmCsElOgpFE96R+blcMfqKPqDbVfXaC+US9Ufu80pEvVx061xlzMzMzyU9K0X/fVYbW1Ful29aN/W5X4pXpJPaw+UneqewLbErO6knMgWqd6Uf1Rg9QM8fnw+0L1dXUsIyzNv8M0JEXE+9Wn6vrwDwW+Lfxe9f2/ECd1Z9QXaov6VV2prg2Vp4P4SAouU25VOwrsjhJrBpqAzcAQ8BNoibjX1KjNIjsIbAVGgR8RVwf8yvQnraziq8AGYDj8qronwDKgHniXxcoQXwvi8czYKeALMAi0BXF/YO0VAerxaMfUm7kNu6WuVsfV2bE5VwLrjEPRG3i13NKm9tU6IBszpMvVD7lyGwoB9WpbYCcCWxd+dy3ipOReKP1Uo46r3/mR9G1mNbfVEXVVnvScOqg2qEvUyxni/CWU7ohvakf47er3mDPlEuqJ4m/OEewL4rT07PhedVf0U9IkKB3ticcjOknpQMEVuqgAm6O+iuRV9RXixfECLCz5muTbilDaPYkpvwH1tCvRirq4uAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAUCAYAAACJfM0wAAABrUlEQVQ4jaWUP0gcQRTGPz3FgIhYaaEkKBYpbURygggShNiphUe0UjurQGKdLlY2gWBvoWijdVCLqGBlFxWCJIiJipFA/hC8/MLAt7oed+u5Ppidee9789s3y84TcN/xEDgHcnFOudD6BK0B+Ab8AbrvAu4H8kBVQfwp0OV1HXACnJYDrgZecW01Bfo68API2u9z5kwSuBn4wE2rLpLzC/gY01aAs/Ddi0F7faRCizbvAW9jucEm7GftTwZnzOM5MAtcFoESAy/ZHwIywKorjwoL+5dVApIEDmMH+Or1uPUe+4vAcaXS2WtJjZLaJG1JykvKmrQhqSkt+LPnJ5IODW5x7FN4pAXjuULSv9j6ytKCo+q2JT2SlJF0FNfSgqclfZe0L6nT4E1r3ZLOqiS9cCDvpNwt0DlvHvXxn0m6lPTe+qCktcLLUQkMAz8TfrdDYN7/cKe1l9Y67E+VutKPgd0S4GhucOP5AjxwbAG4ANqTmlBIfpPQhDaA3+5+csv8C7wrt22GBh4sHD0eHwEGvA4v3ffVrrhLo29M0GqBA788qr5scNJodaVTV3mg/2bwCYrs+istAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAVUCAYAAABnTn9VAAAbhUlEQVR4nOzXoRHAQAwEsf8Um/47cIowCFiJm3iO7J0z79mYuzqHlTv//s/++ZP9U2b/lC33/xgPAAB0CAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAABAiAAAAIEQAAABAiAAAAIAQAQAAACECAAAAQgQAAACECAAAAAgRAAAAECIAAAAgRAAAAECIAAAAgBABAAAAIQIAAABCBAAAAIQIAAAACBEAAAAQIgAAACBEAAAAQIgAAACAEAEAAAAhAgAAAEIEAAAAhAgAAAAIEQAAAFBxvjEwAAAIrRUMYl7togAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABPgAAAQ4CAYAAACUr2IuAAAezElEQVR4nOzYsQ2AMBAEQUyx9N/BE9CCA9aaKcCy/rJdc81z7TRr63NZa/79czt97NRgpwY7NdipwU4NdmqwU4OdGuzUYKeGzTvd514KAAAAAM4n8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AEAAABAmMAHAAAAAGECHwAAAACECXwAAAAAECbwAQAAAECYwAcAAAAAYQIfAAAAAIQJfAAAAAAQJvABAAAAQJjABwAAAABhAh8AAAAAhAl8AAAAABAm8AHwtmMHNAAAAAiD7J/aHN8gBgAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgDDBBwAAAABhgg8AAAAAwgQfAAAAAIQJPgAAAAAIE3wAAAAAECb4AAAAACBM8AEAAABAmOADAAAAgKptB+LiItRmgqYSAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAIAAABL1vtsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjFGREZDRTZDMkQ0MTFFQjk2OUQ4MjI1OTM1RTQ0OTgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjFGREZDRTVDMkQ0MTFFQjk2OUQ4MjI1OTM1RTQ0OTgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0idXVpZDo2MzcxNGUwYi1lOTkzLThiNDctOTA4ZC02ZDUwYzU3OWYzZTQiIHN0UmVmOmRvY3VtZW50SUQ9InV1aWQ6NDc4OGU4Y2QtNmMwOC01MTQ3LTg4MGMtZDkwNDVkODc1MjMyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WA1n2gAAAgdJREFUeNqkVD2osWEYPucMKJLFoMiGjUFKsrCYfQbMJhKTScliIUwiEzMmFj8ZpZSyIYOwEJIM/r/r/Z7TOc77vNTpu4f3fV33dV+e53ru+3m/3+9v/xcfnOh0Oo3FYhaLRSQSCYVCvV4fDAa73S63xv1nbLdbu91OUhqN5s+/MBgMX8hisWCV/JCo1+uEmkwmD4cDi1qtVpVKJbKlUolbYjAYIG2z2S6Xy/15OBwO0AqFAltivV4jEQqFWAX7/X6z2bDARCLxuJZPCZPJRPuCkMvlwM/nMws3Go1ffOa1XC7xO51O0xLZbDYSiVyvV9p1lGQymU+JaDTKuYTXoVKpFAoFPpi+qNVqxGo6sEE+nw+D6ZTT6ZzNZlggIzEcDnU6HafEarU6nU6cKa1WS5qQkQAJf8XJE4vFz/qax+PheTweGQlsaTwe/3Y0JpMJqWUkzGZzv9//rUS5XBYIBBgi5iB6vR6gdrtN2048ovuCzLfX6/1uLYjhUGieTCYjZrFwv99PzP6WaDabgBqNBovaarXQyLfb7RHsdDogBwIB9pilUikkcrnc647K5/OguVwu7mH3eDxkWEejEV282+2weRDcbvfT+wJRLBaJ4Wq1OhwOw/ZKpRKPx61WK8GxildXDgn4jysHEo9HKJFIfD7ffD6n+e8vrl8cBKYAXkqlUkg8o/0VYADS8QVPv6e2VwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABVklEQVQ4jbWVu0pDQRCGvw0aENKmEzuxT2ERItY+ga2d8QksbDQgooW9b5A8gba+QAQr7a0SxEuhkBS/DAxms56LgZOBU+zOzrczs//uIcskNSQdSbqTNNLMRj5nvkZWbIgHkmx8CJwDq8AtcA+8+JJ1YBfYA6bACXATQtAfsqS6pL6kiaReXgbMKuj5WouppwuCO94ktfNAGeC2x/S9ul9H13f7NyyBWmw3Tv/VSlgUFkF7zmjgJ/YZ90xSR9JOAeBC0nY0tqQ+jIXLYJAEHLhQrDcbGcB3W5PMDYxVA1oujdSmLpEnSaeS1koqN0bLgM1IZ7F9AZvANXAMPEvanzvNeTNGs1ay68TB8o9MEUe2Aoz9BqRmJT4C1sNL4CqE8F3AMsbYMhx6r1Iz9T8AWyGEsxIYzhgWyaaTF1kmm2qFTdVXj2U8Du6s5Pla3gObkcHivwDgBw0puDSztnqAAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAuElEQVQ4ja3U6w2CQBAE4B0boBITLMEOqMTf1GEPtiEt0IoVjFldk8txq3uLk1wgPD5C2AEkJRoA7pUkZxE56k7PGkkOLYzvzL2gZnIxO5AGN9gesIllQRdLgncX00noGRt9vm0XEblW5xYAjyzYygnA2gv+zOGvmoJWp9Fex1vhvDSr07m66VIc80scSTFnnxEJj9Ym5dDaEOfBugG7wFad0qDXzRT4rej69e2n2gXevKIXcGyR8gRh7KVg9d6pVgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/btn_pause.70c71388.svg\";","export class View {\r\n static Introduction = 'Introduction';\r\n static Home = 'Home';\r\n}\r\n\r\nexport class StoryIntroState {\r\n static Hidden = 'StoryIntroHidden';\r\n static AnimatingIn = 'StoryIntroAnimatingIn';\r\n static AnimatingOut = 'StoryIntroAnimatingOut';\r\n}\r\n\r\nexport class VideoIntroState {\r\n static Forward = 'VideoIntroForward';\r\n static Backward = 'VideoIntroBackward';\r\n static Paused = 'VideoIntroStopped';\r\n static Both = 'VideoIntroBoth';\r\n}\r\n\r\nexport class PulseLocationState {\r\n static Waiting = 'PulseWaiting';\r\n static Active = 'PulseActive';\r\n static Inactive = 'PulseInactive';\r\n}\r\n\r\nexport class LoadingState {\r\n static Waiting = 'LoadingWaiting';\r\n static Loading = 'Loading';\r\n static Loaded = 'Loaded';\r\n}\r\n\r\nexport class NavbarContent {\r\n items = null;\r\n title = \"\";\r\n constructor(title, items) {\r\n this.title = title;\r\n this.items = items;\r\n }\r\n}\r\n\r\nexport class NavbarLink {\r\n title = null;\r\n link = null;\r\n bold = false;\r\n key = -1;\r\n\r\n constructor(title, link, bold, key) {\r\n this.title = title;\r\n this.link = link;\r\n this.bold = bold;\r\n this.key = key;\r\n\r\n }\r\n}\r\n\r\nexport const storyCardTypes = {\r\n VIDEO_INTRO: '0',\r\n TEXT_CAROUSEL: '1',\r\n TEXT_CAROUSEL_WITH_BG: '2',\r\n TEXT_IMAGE_CAROUSEL: '3',\r\n TEXT_VIDEO_CAROUSEL: '4',\r\n MIXED_MEDIA_CAROUSEL: '5',\r\n INFOGRAPHIC_CAROUSEL: '6',\r\n OBJECT_3D: '7',\r\n QUOTE: '8',\r\n VIDEO: '9',\r\n AUDIO_PODCAST: '10',\r\n AUDIO_MISC: '11',\r\n USER_POLL: '12',\r\n};\r\n\r\nexport const pbpCardTypes = {\r\n INTRODUCTION: 'intro',\r\n PULSE: 'pulse',\r\n TIMELINE: 'timeline',\r\n CAROUSEL: 'carousel',\r\n RELATEDSTORIES: 'related-stories',\r\n};\r\n\r\nexport const timelineSlideTypes = {\r\n IMAGE: '0',\r\n VIDEO: '1',\r\n OBJECT_3D: '2',\r\n};\r\n\r\nexport const mixedMediaTypes = {\r\n IMAGE: '0',\r\n VIDEO: '1',\r\n};\r\n\r\nexport const linkTypes = {\r\n EXTERNAL: \"0\",\r\n INTERNAL: \"1\",\r\n};\r\n\r\nexport const introScreenNames = {\r\n LOADING: \"loading\",\r\n ANIMATION: \"animation\",\r\n TEXT_SCREEN: \"text-screen\",\r\n MENU_EXHIBITS: \"menu-exhibits\",\r\n STORY: \"story\",\r\n POST_STORIES: \"post-stories\",\r\n};\r\n\r\nexport const scene3DAnimationType = {\r\n FORWARD: 'forward',\r\n BACKWARD: 'backward',\r\n};\r\n\r\nexport const swipeDirection = {\r\n UP: 'up',\r\n DOWN: 'down',\r\n LEFT: 'left',\r\n RIGHT: 'right',\r\n};\r\n\r\nexport const swipeType = {\r\n SCROLL: 'scroll',\r\n TOUCH: 'touch',\r\n};\r\n\r\nexport const timelineAnchorPosition = {\r\n CENTER: \"0\",\r\n RIGHT: \"1\",\r\n LEFT: \"2\",\r\n};\r\n\r\nexport const credoStoryTypes = {\r\n PhotoText: '0',\r\n PhotoTextCompany: '1',\r\n PhotoQuote: '2',\r\n VideoText: '3',\r\n PhotoQuoteCompany: '4',\r\n VideoTextCompany: '5'\r\n};\r\n\r\nexport const innovationMediaTypes = {\r\n ImageOrGif: '0',\r\n Video: '1'\r\n};\r\n","import { StoryIntroState } from '../../models/Models';\r\nimport { Paths, NavbarLink } from '../../models/Models';\r\n\r\nconst SET_FONTS_LOADED = 'SET_FONTS_LOADED';\r\nconst SET_DIGITAL_MUSEUM_CMS = 'SET_DIGITAL_MUSEUM_CMS';\r\nconst SET_POWERED_BY_PURPOSE_CMS = 'SET_POWERED_BY_PURPOSE_CMS';\r\nconst SET_BUILDING_BRIGTHER_FUTURES_CMS = 'SET_BUILDING_BRIGHTER_FUTURES_CMS';\r\nconst SET_VERIZON_BY_THE_NUMBERS_CMS = 'SET_VERIZON_BY_THE_NUMBERS_CMS';\r\nconst SET_COMMUNICATIONS_CHANGE_THE_WORLD_CMS = 'SET_COMMUNICATIONS_CHANGE_THE_WORLD_CMS';\r\nconst SET_CREDO_CMS = 'SET_CREDO_CMS';\r\nconst SET_INNOVATION_CMS = 'SET_INNOVATION_CMS';\r\nconst SET_GLOBAL = 'SET_GLOBAL';\r\nconst SET_NAVBAR = 'SET_NAVBAR_VISIBILITY';\r\nconst SET_STORY_INTRO_STATE = 'SET_STORY_INTRO_STATE';\r\nconst SET_PBP_BLOCK_SCROLL = 'SET_PBP_BLOCK_SCROLL';\r\nconst SET_CURRENT_SLIDE_DARK_BG = 'SET_CURRENT_SLIDE_DARK_BG';\r\nconst SET_ACTIVE_SLIDE_KEY = 'SET_ACTIVE_SLIDE_KEY';\r\nconst SET_ACTIVE_SLIDE_TYPE = 'SET_ACTIVE_SLIDE_TYPE';\r\nconst SET_MEDIA_PLAYING = 'SET_MEDIA_PLAYING';\r\nconst EXPLORE_CLICKED = 'EXPLORE_CLICKED';\r\nconst CREDITS_OPENED = 'CREDITS_OPENED';\r\nconst MENU_OPENED = 'MENU_OPENED';\r\nconst IS_SHOWING_CREDO_POPUP = 'IS_SHOWING_CREDO_POPUP';\r\nconst SKIP_NAVBAR_ADA = 'SKIP_NAVBAR_ADA';\r\nconst IN_FULL_SCREEN_VIDEO = 'IN_FULL_SCREEN_VIDEO';\r\nconst SET_LOADED = 'SET_LOADED';\r\nconst ADD_LOADED_OBJECT = 'ADD_LOADED_OBJECT';\r\nconst SET_HAS_VISITED_STORIES = 'SET_HAS_VISITED_STORIES';\r\nconst SET_HAS_VISITED_PBP = 'SET_HAS_VISITED_PBP';\r\nconst SET_HAS_VISITED_BBF = 'SET_HAS_VISITED_BBF';\r\nconst SET_HAS_VISITED_VBN = 'SET_HAS_VISITED_VBN';\r\nconst SET_HAS_VISITED_CCW = 'SET_HAS_VISITED_CCW';\r\nconst SET_HAS_VISITED_CREDO = 'SET_HAS_VISITED_CREDO';\r\nconst SET_HAS_VISITED_INNOVATION = 'SET_HAS_VISITED_INNOVATION';\r\nconst ADD_TO_VISITED_STORIES = 'ADD_TO_VISITED_STORIES';\r\n\r\nexport const setFontsLoaded = () => {\r\n return {\r\n type: SET_FONTS_LOADED\r\n };\r\n};\r\n\r\nexport const setDigitalMuseumCMS = data => {\r\n return {\r\n type: SET_DIGITAL_MUSEUM_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setPoweredByPurposeCMS = data => {\r\n return {\r\n type: SET_POWERED_BY_PURPOSE_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setBuildingBrighterFuturesCMS = data => {\r\n return {\r\n type: SET_BUILDING_BRIGTHER_FUTURES_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setVerizonByTheNumbersCMS = data => {\r\n return {\r\n type: SET_VERIZON_BY_THE_NUMBERS_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setCommunicationsChangeTheWorldCMS = data => {\r\n return {\r\n type: SET_COMMUNICATIONS_CHANGE_THE_WORLD_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setCredoCMS = data => {\r\n return {\r\n type: SET_CREDO_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setInnovationCMS = data => {\r\n return {\r\n type: SET_INNOVATION_CMS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setGlobal = data => {\r\n return {\r\n type: SET_GLOBAL,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setNavBarState = data => {\r\n return {\r\n type: SET_NAVBAR,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setStoryIntroState = data => {\r\n return {\r\n type: SET_STORY_INTRO_STATE,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setCurrentSlideDarkBg = data => {\r\n return {\r\n type: SET_CURRENT_SLIDE_DARK_BG,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setActiveSlideKey = data => {\r\n return {\r\n type: SET_ACTIVE_SLIDE_KEY,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setActiveSlideType = data => {\r\n return {\r\n type: SET_ACTIVE_SLIDE_TYPE,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setExploreClicked = data => {\r\n return {\r\n type: EXPLORE_CLICKED,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setMediaState = data => {\r\n return {\r\n type: SET_MEDIA_PLAYING,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setPBPBlockScroll = data => {\r\n return {\r\n type: SET_PBP_BLOCK_SCROLL,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setCreditsOpened = data => {\r\n return {\r\n type: CREDITS_OPENED,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setMenuOpened = data => {\r\n return {\r\n type: MENU_OPENED,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setIsShowingCredoPopup = data => {\r\n return {\r\n type:IS_SHOWING_CREDO_POPUP,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setSkipNavbarADA = data => {\r\n return {\r\n type: SKIP_NAVBAR_ADA,\r\n payload: data\r\n };\r\n};\r\n\r\nexport const setInFullScreenVideo = data => {\r\n return {\r\n type: IN_FULL_SCREEN_VIDEO,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setLoaded = () => {\r\n return {\r\n type: SET_LOADED,\r\n };\r\n};\r\n\r\nexport const addLoadedObject = data => {\r\n return {\r\n type: ADD_LOADED_OBJECT,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedStories = data => {\r\n return {\r\n type: SET_HAS_VISITED_STORIES,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedPBP = data => {\r\n return {\r\n type: SET_HAS_VISITED_PBP,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedBBF = data => {\r\n return {\r\n type: SET_HAS_VISITED_BBF,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedVBN = data => {\r\n return {\r\n type: SET_HAS_VISITED_VBN,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedCCW = data => {\r\n return {\r\n type: SET_HAS_VISITED_CCW,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedCredo = data => {\r\n return {\r\n type: SET_HAS_VISITED_CREDO,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setHasVisitedInnovation = data => {\r\n return {\r\n type: SET_HAS_VISITED_INNOVATION,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const addToVisitedStories = data => {\r\n return {\r\n type: ADD_TO_VISITED_STORIES,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst defaultState = {\r\n initialized: false,\r\n fontsloaded: false,\r\n loaded: false,\r\n cms: {\r\n digitalMuseum: null,\r\n poweredByPurpose: null,\r\n buildingBrighterFutures: null,\r\n verizonByTheNumbers: null,\r\n communicationsChangeTheWorld: null,\r\n credo: null,\r\n innovation: null,\r\n global: null,\r\n },\r\n menus: {\r\n digitalMuseum: [],\r\n poweredByPurpose: [],\r\n buildingBrighterFutures: [],\r\n verizonByTheNumbers: [],\r\n theMuseum: [],\r\n about: [],\r\n },\r\n showNavBar: true,\r\n nextStory: null,\r\n storyIntroState: StoryIntroState.Hidden,\r\n exploreClicked: true,\r\n currentSlideDarkBg: true,\r\n activeSlideKey: null,\r\n activeSlideType: null,\r\n mediaPlaying: false,\r\n PBPBlockScroll: false,\r\n menuOpened: false,\r\n isShowingCredoPopup: false,\r\n shouldSkipNavbarADA: false,\r\n creditsOpened: false,\r\n inFullScreenVideo: false,\r\n loadedObjects: {},\r\n hasVisitedStories: false,\r\n hasVisitedPBP: false,\r\n hasVisitedBBF: false,\r\n hasVisitedVBN: false,\r\n hasVisitedCCW: false,\r\n hasVisitedCredo: false,\r\n hasVisitedInnovation: false,\r\n videoFadeTimeout:3000,\r\n visitedStories: [],\r\n};\r\n\r\nfunction isInitialized(cms) {\r\n var val = true;\r\n if (\r\n cms.digitalMuseum === null ||\r\n cms.poweredByPurpose === null ||\r\n cms.buildingBrighterFutures === null ||\r\n cms.verizonByTheNumbers === null ||\r\n cms.communicationsChangeTheWorld === null ||\r\n cms.credo === null ||\r\n cms.innovation === null ||\r\n cms.global === null\r\n ) {\r\n val = false;\r\n }\r\n return val;\r\n}\r\n\r\nfunction formatDigitalMuseumMenu(cmsData) {\r\n var links = [];\r\n if (cmsData) {\r\n for (var i = 0; i < cmsData.Stories.length; i++) {\r\n var story = cmsData.Stories[i];\r\n links.push(new NavbarLink(story.Menu.Text, `/${cmsData.Path.Text}/${story.Menu.Path}`, false, story.Menu.Key));\r\n }\r\n }\r\n return links;\r\n}\r\n\r\nfunction formatPoweredByPurposeMenu(cmsData) {\r\n var links = [];\r\n if (cmsData) {\r\n links.push(\r\n new NavbarLink(\r\n cmsData.Introduction.Title,\r\n `/${cmsData.Path.Text}/${cmsData.Introduction.Menu.Path}`,\r\n true,\r\n cmsData.Introduction.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.Pulse.Menu.Text,\r\n `/${cmsData.Path.Text}/${cmsData.Pulse.Menu.Path}`,\r\n false,\r\n cmsData.Pulse.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.NetworkMilestones.Menu.Text,\r\n `/${cmsData.Path.Text}/${cmsData.NetworkMilestones.Menu.Path}`,\r\n false,\r\n cmsData.NetworkMilestones.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.Carousel.Menu.Text,\r\n `/${cmsData.Path.Text}/${cmsData.Carousel.Menu.Path}`,\r\n false,\r\n cmsData.Carousel.Key\r\n )\r\n );\r\n }\r\n return links;\r\n}\r\n\r\nfunction formatBuildingBrighterFuturesMenu(cmsData) {\r\n var links = [];\r\n if (cmsData) {\r\n links.push(\r\n new NavbarLink(cmsData.Introduction.Title, `/${cmsData.Path.Text}/${cmsData.Introduction.Menu.Path}`, true, cmsData.Introduction.Key)\r\n );\r\n if (cmsData.Pillars) {\r\n for (var i = 0; i < cmsData.Pillars.length; i++) {\r\n var pillar = cmsData.Pillars[i];\r\n links.push(\r\n new NavbarLink(pillar.Menu.Text, `/${cmsData.Path.Text}/${pillar.Menu.Path}`, false, pillar.Key)\r\n );\r\n }\r\n }\r\n }\r\n return links;\r\n}\r\n\r\nfunction formatVerizonByTheNumbersMenu(cmsData) {\r\n var links = [];\r\n if (cmsData) {\r\n links.push(\r\n new NavbarLink(cmsData.Introduction.Title, `/${cmsData.Path.Text}/${cmsData.Introduction.Menu.Path}`, true, cmsData.Introduction.Key)\r\n );\r\n if (cmsData.Sections) {\r\n for (var i = 0; i < cmsData.Sections.length; i++) {\r\n var section = cmsData.Sections[i];\r\n links.push(\r\n new NavbarLink(section.Menu.Text, `/${cmsData.Path.Text}/${section.Menu.Path}`, false, section.Key)\r\n );\r\n }\r\n }\r\n }\r\n return links;\r\n}\r\n\r\nfunction formatTheMuseumMenu(cmsData) {\r\n var links = [];\r\n if (cmsData) {\r\n links.push(\r\n new NavbarLink(\r\n cmsData.poweredByPurpose.Introduction.Title,\r\n `/${cmsData.poweredByPurpose.Path.Text}/${cmsData.poweredByPurpose.Introduction.Menu.Path}`,\r\n false,\r\n cmsData.poweredByPurpose.Introduction.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.buildingBrighterFutures.Introduction.Title,\r\n `/${cmsData.buildingBrighterFutures.Path.Text}/${cmsData.buildingBrighterFutures.Introduction.Menu.Path}`,\r\n false,\r\n cmsData.buildingBrighterFutures.Introduction.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.verizonByTheNumbers.Introduction.Title,\r\n `/${cmsData.verizonByTheNumbers.Path.Text}/${cmsData.verizonByTheNumbers.Introduction.Menu.Path}`,\r\n false,\r\n cmsData.verizonByTheNumbers.Introduction.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.communicationsChangeTheWorld.Introduction.Title,\r\n `/${cmsData.communicationsChangeTheWorld.Introduction.Menu.Path}`,\r\n false,\r\n cmsData.communicationsChangeTheWorld.Introduction.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.credo.Introduction.Menu.Text,\r\n `/${cmsData.credo.Introduction.Menu.Path}`,\r\n false,\r\n cmsData.credo.Introduction.Key\r\n )\r\n );\r\n links.push(\r\n new NavbarLink(\r\n cmsData.innovation.Introduction.Menu.Text,\r\n `/${cmsData.innovation.Introduction.Menu.Path}`,\r\n false,\r\n cmsData.innovation.Introduction.Key\r\n )\r\n );\r\n }\r\n return links;\r\n}\r\n\r\nfunction formatAboutMenu(cmsData) {\r\n var links = [];\r\n if(cmsData && \r\n cmsData.digitalMuseum &&\r\n cmsData.digitalMuseum.Path && \r\n cmsData.digitalMuseum.Path.Text && \r\n cmsData.global && \r\n cmsData.global.Navbar && \r\n cmsData.global.Navbar.AboutText &&\r\n cmsData.global.Navbar.About &&\r\n cmsData.global.Navbar.About.Menu &&\r\n cmsData.global.Navbar.About.Menu.Path){\r\n links.push(new NavbarLink(\r\n cmsData.global.Navbar.AboutText,\r\n `/${cmsData.digitalMuseum.Path.Text}/${cmsData.global.Navbar.About.Menu.Path}`,\r\n true,\r\n cmsData.global.Navbar.About.Key\r\n ));\r\n }\r\n return links;\r\n}\r\n\r\nconst mainReducer = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case SET_FONTS_LOADED:\r\n state.fontsloaded = true;\r\n return { ...state };\r\n case SET_DIGITAL_MUSEUM_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, digitalMuseum: action.payload.data };\r\n\r\n if (state.cms && state.cms.digitalMuseum && state.cms.digitalMuseum.Stories) {\r\n state.nextStory = state.cms.digitalMuseum.Stories[0];\r\n }\r\n\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n\r\n state.menus.digitalMuseum = formatDigitalMuseumMenu(action.payload.data);\r\n }\r\n return { ...state };\r\n case SET_POWERED_BY_PURPOSE_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, poweredByPurpose: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n\r\n state.menus.poweredByPurpose = formatPoweredByPurposeMenu(action.payload.data);\r\n }\r\n return { ...state };\r\n case SET_GLOBAL:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, global: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n }\r\n return { ...state };\r\n case SET_BUILDING_BRIGTHER_FUTURES_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, buildingBrighterFutures: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n\r\n state.menus.buildingBrighterFutures = formatBuildingBrighterFuturesMenu(\r\n action.payload.data\r\n );\r\n }\r\n return { ...state };\r\n case SET_VERIZON_BY_THE_NUMBERS_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, verizonByTheNumbers: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n\r\n state.menus.verizonByTheNumbers = formatVerizonByTheNumbersMenu(\r\n action.payload.data\r\n );\r\n }\r\n return { ...state };\r\n case SET_COMMUNICATIONS_CHANGE_THE_WORLD_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, communicationsChangeTheWorld: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n }\r\n return { ...state };\r\n case SET_CREDO_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, credo: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n }\r\n return { ...state };\r\n case SET_INNOVATION_CMS:\r\n if (action.payload.data) {\r\n state.cms = { ...state.cms, innovation: action.payload.data };\r\n if (isInitialized(state.cms)) {\r\n state.menus.theMuseum = formatTheMuseumMenu(state.cms);\r\n state.menus.about = formatAboutMenu(state.cms);\r\n state.initialized = true;\r\n }\r\n }\r\n return { ...state };\r\n case SET_NAVBAR:\r\n state.showNavBar = action.payload.navbarVisibility;\r\n return { ...state };\r\n case SET_STORY_INTRO_STATE:\r\n if (action.payload.state) {\r\n state.storyIntroState = action.payload.state;\r\n }\r\n return { ...state };\r\n case SET_CURRENT_SLIDE_DARK_BG:\r\n state.currentSlideDarkBg = action.payload;\r\n return { ...state };\r\n case SET_ACTIVE_SLIDE_KEY:\r\n state.activeSlideKey = action.payload;\r\n return { ...state };\r\n case SET_ACTIVE_SLIDE_TYPE:\r\n state.activeSlideType = action.payload;\r\n return { ...state };\r\n case EXPLORE_CLICKED:\r\n state.exploreClicked = action.payload;\r\n return { ...state };\r\n case SET_MEDIA_PLAYING:\r\n state.mediaPlaying = action.payload;\r\n return { ...state };\r\n case SET_PBP_BLOCK_SCROLL:\r\n state.PBPBlockScroll = action.payload;\r\n return { ...state };\r\n case MENU_OPENED:\r\n state.menuOpened = action.payload;\r\n return { ...state }; \r\n case IS_SHOWING_CREDO_POPUP:\r\n state.isShowingCredoPopup = action.payload;\r\n return { ...state };\r\n case SKIP_NAVBAR_ADA:\r\n state.shouldSkipNavbarADA = action.payload;\r\n return { ...state };\r\n case CREDITS_OPENED:\r\n state.creditsOpened = action.payload;\r\n return { ...state };\r\n case IN_FULL_SCREEN_VIDEO:\r\n state.inFullScreenVideo = action.payload;\r\n return { ...state };\r\n case SET_LOADED:\r\n state.loaded = true;\r\n return { ...state };\r\n case ADD_LOADED_OBJECT:\r\n state.loadedObjects = { ...ADD_LOADED_OBJECT, ...action.payload };\r\n return { ...state };\r\n case SET_HAS_VISITED_STORIES:\r\n state.hasVisitedStories = action.payload;\r\n return { ...state };\r\n case SET_HAS_VISITED_PBP:\r\n state.hasVisitedPBP = action.payload;\r\n return { ...state };\r\n case SET_HAS_VISITED_BBF:\r\n state.hasVisitedBBF = action.payload;\r\n return { ...state };\r\n case SET_HAS_VISITED_VBN:\r\n state.hasVisitedVBN = action.payload;\r\n return { ...state };\r\n case SET_HAS_VISITED_CCW:\r\n state.hasVisitedCCW = action.payload;\r\n return { ...state };\r\n case SET_HAS_VISITED_CREDO:\r\n state.hasVisitedCredo = action.payload;\r\n return { ...state };\r\n case SET_HAS_VISITED_INNOVATION:\r\n state.hasVisitedInnovation = action.payload;\r\n return { ...state };\r\n case ADD_TO_VISITED_STORIES:\r\n state.visitedStories = state.visitedStories.includes(action.payload)\r\n ? state.visitedStories\r\n : [...state.visitedStories, action.payload].sort((a, b) => a - b);\r\n return { ...state };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default mainReducer;\r\n","import React from 'react';\r\nimport { introScreenNames, pbpCardTypes } from './Models';\r\n\r\nexport function calculateSize(srcWidth, srcHeight, maxWidth, maxHeight) {\r\n var ratio = Math.max(maxWidth / srcWidth, maxHeight / srcHeight);\r\n\r\n return { width: srcWidth * ratio, height: srcHeight * ratio };\r\n}\r\n\r\nexport function getNavbarHeight() {\r\n const navbarContainer = document.getElementsByClassName('navbar-container')[0];\r\n if (!navbarContainer) {\r\n return null;\r\n }\r\n const exhibitMenuContainer = document.getElementsByClassName('exhibit-menu-container')[0];\r\n if (!exhibitMenuContainer) {\r\n return null;\r\n }\r\n return navbarContainer.getBoundingClientRect().height + exhibitMenuContainer.getBoundingClientRect().height;\r\n}\r\n\r\nexport function getViewportDimensions() {\r\n return {\r\n width: document.documentElement.clientWidth,\r\n height: document.documentElement.clientHeight\r\n };\r\n}\r\n\r\nexport function getImageFilepath(filename, maxSize = -1) {\r\n var sizes = [64, 128, 256, 512, 1024, 2048];\r\n if(maxSize <= 0){\r\n maxSize = Math.max(window.screen.width, window.screen.height) * window.devicePixelRatio;\r\n }\r\n var size = closest(sizes, maxSize);\r\n if (size && size > 0 && size < sizes[sizes.length - 1]) {\r\n var sizeString = '-' + size + 'x' + size;\r\n var formatted = filename.substring(0, filename.lastIndexOf(\".\")) + sizeString + filename.substring(filename.lastIndexOf(\".\"));\r\n if(formatted){\r\n return formatted;\r\n } else {\r\n return filename;\r\n }\r\n } else {\r\n return filename;\r\n }\r\n}\r\n\r\nfunction closest(arr, val) {\r\n return Math.max.apply(\r\n null,\r\n arr.filter(function (v) {\r\n return v <= val;\r\n })\r\n );\r\n}\r\n\r\nexport function keepSpaceTogether(inputString, together) {\r\n const brokenArray = inputString.split(together);\r\n if (brokenArray.length > 1) {\r\n const togetherArray = together.split(' ');\r\n let newTogether = togetherArray[0];\r\n for (let i = 1; i < togetherArray.length; i++) {\r\n newTogether += '\\xa0' + togetherArray[i]; // non-breakable space\r\n }\r\n let outputString = brokenArray[0];\r\n for (let i = 1; i < brokenArray.length; i++) {\r\n outputString += newTogether + brokenArray[i];\r\n }\r\n return outputString;\r\n } else {\r\n return inputString;\r\n }\r\n}\r\n\r\nexport function formatParagraphs(input){\r\n var paragraphs = input.split(/\\r?\\n/);\r\n if(paragraphs && paragraphs.length > 1){\r\n var pars = [];\r\n for(var i = 0; i 0){\r\n pars.push(
{paragraphs[i]}
);\r\n }\r\n }\r\n return (\r\n
\r\n {pars}\r\n
\r\n );\r\n } else {\r\n return input;\r\n }\r\n}\r\n\r\nexport const getStoryIndex = (storyId, cmsData, history) => {\r\n if(cmsData && cmsData.AllStories){\r\n var story = cmsData.AllStories[0];\r\n for(var i = 0; i {\r\n var defaul = new PBPComponent(0, cmsData.Introduction.Key, cmsData.Introduction.Menu, pbpCardTypes.INTRODUCTION, false);\r\n for(var i = 0; i {\r\n var arr = [];\r\n var index = 0;\r\n if(cmsData){\r\n if(cmsData.Introduction && cmsData.Introduction.Menu && cmsData.Introduction.Menu.Path){\r\n arr.push(new PBPComponent(index, cmsData.Introduction.Key, cmsData.Introduction.Menu, pbpCardTypes.INTRODUCTION, false));\r\n index++;\r\n }\r\n if(cmsData.Pulse && cmsData.Pulse.Menu && cmsData.Pulse.Menu.Path){\r\n arr.push(new PBPComponent(index, cmsData.Pulse.Key, cmsData.Pulse.Menu, pbpCardTypes.PULSE, false));\r\n index++;\r\n }\r\n if(cmsData.NetworkMilestones && cmsData.NetworkMilestones.Menu && cmsData.NetworkMilestones.Menu.Path){\r\n arr.push(new PBPComponent(index, cmsData.NetworkMilestones.Key, cmsData.NetworkMilestones.Menu, pbpCardTypes.TIMELINE, true));\r\n index++;\r\n }\r\n if(cmsData.Carousel && cmsData.Carousel.Menu && cmsData.Carousel.Menu.Path){\r\n arr.push(new PBPComponent(index, cmsData.Carousel.Key, cmsData.Carousel.Menu, pbpCardTypes.CAROUSEL, true));\r\n index++;\r\n }\r\n }\r\n return arr;\r\n}\r\n\r\nclass PBPComponent {\r\n \r\n Index = -1;\r\n Key = -1;\r\n Menu = null;\r\n Type = '';\r\n LightBg = false;\r\n constructor(index, key, menu, type, lightBg){\r\n this.Index = index;\r\n this.Key = key;\r\n this.Menu = menu;\r\n this.Type = type;\r\n this.LightBg = lightBg;\r\n }\r\n}\r\n\r\nexport const getBBFIndex = (pillarId, cmsData, history) => {\r\n if(cmsData && cmsData.Pillars){\r\n for(var i = 0; i {\r\n if(cmsData && cmsData.Sections){\r\n for(var i = 0; i {\r\n if(introductionId && globalData){\r\n if(globalData.Loading && globalData.Loading.Menu && globalData.Loading.Menu.Path &&\r\n getTrimmedURL(globalData.Loading.Menu.Path) === getTrimmedURL(introductionId)){\r\n return introScreenNames.LOADING;\r\n } else if(globalData.Introduction && globalData.Introduction.Menu && globalData.Introduction.Menu.Path &&\r\n getTrimmedURL(globalData.Introduction.Menu.Path) === getTrimmedURL(introductionId)){\r\n return introScreenNames.ANIMATION;\r\n } else if(globalData.Onboarding){ \r\n if(globalData.Onboarding.Introduction && globalData.Onboarding.Introduction.Menu && globalData.Onboarding.Introduction.Menu.Path &&\r\n getTrimmedURL(globalData.Onboarding.Introduction.Menu.Path) === getTrimmedURL(introductionId)){\r\n return introScreenNames.TEXT_SCREEN;\r\n } else if(globalData.Onboarding.Menu && globalData.Onboarding.Menu.Menu && globalData.Onboarding.Menu.Menu.Path &&\r\n getTrimmedURL(globalData.Onboarding.Menu.Menu.Path) === getTrimmedURL(introductionId)){\r\n return introScreenNames.MENU_EXHIBITS;\r\n } else if(globalData.Onboarding.FinalSlide && globalData.Onboarding.FinalSlide.Menu && globalData.Onboarding.FinalSlide.Menu.Path &&\r\n getTrimmedURL(globalData.Onboarding.FinalSlide.Menu.Path) === getTrimmedURL(introductionId)){\r\n return introScreenNames.POST_STORIES;\r\n }\r\n }\r\n }\r\n if(introductionId && cmsData){\r\n if(cmsData.Stories){\r\n for(var i = 0; i e.answerId === option.Key): null;\r\n formattedData.push(\r\n { \r\n key: option.Key, \r\n votes: result ? result.votes : 0,\r\n }\r\n );\r\n totalVotes += (result ? result.votes : 0);\r\n }\r\n }\r\n var percentages = [];\r\n if(formattedData && formattedData.length > 0){\r\n var totalPercent = 100;\r\n for(var i = formattedData.length - 1; i>=0; i--){\r\n var fD = formattedData[i];\r\n var rawPercent = Math.floor((totalVotes > 0 ? (fD.votes/totalVotes) : (1/formattedData.length))*100);\r\n var percent = i > 0 ? rawPercent : totalPercent;\r\n percentages.push(\r\n {\r\n key: fD.key,\r\n percent: percent,\r\n }\r\n );\r\n totalPercent -= rawPercent;\r\n }\r\n }\r\n return percentages;\r\n};\r\n\r\nexport function getImagesCSV(basePath, urls){\r\n if(basePath && urls){\r\n console.log(urls);\r\n for(var i = 0; i response.json())\r\n .then(cmsData => {\r\n console.log(cmsData);\r\n formatCSV(url, cmsData);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport function hexToRgb(hex, alpha) {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n if(result && result.length >= 3){\r\n return `rgba(${parseInt(result[1], 16)}, ${result[2], 16}, ${result[3], 16}, ${alpha && alpha > 0 ? alpha : 1})`\r\n }\r\n return 'rgba(0,0,0,1)';\r\n}\r\n\r\nfunction formatCSV(section, data) {\r\n var list = \"\";\r\n if(data && data.length > 0){\r\n for(var i = 0; i {\r\n const s = [];\r\n if (data && data.InitSlide) {\r\n s.push(data.InitSlide);\r\n }\r\n if (data && data.Videos) {\r\n data.Videos.forEach(e => s.push(e));\r\n }\r\n return s;\r\n}\r\n\r\nexport const getBackground = (data) => {\r\n const viewport = getViewportDimensions();\r\n if (viewport.width <= 767) {\r\n if (data.BackgroundMobile && data.BackgroundMobile.Image) {\r\n return data.BackgroundMobile;\r\n } else if (data.Background) {\r\n return data.Background;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n if (data.Background) {\r\n return data.Background;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport const getPodcastImage = (data) => {\r\n const viewport = getViewportDimensions();\r\n if (viewport.width <= 767) {\r\n if (data.PodcastImageMobile && data.PodcastImageMobile.Image) {\r\n return data.PodcastImageMobile;\r\n } else if (data.PodcastImage) {\r\n return data.PodcastImage;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n if (data.PodcastImage) {\r\n return data.PodcastImage;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","export class ADALandmarks {\r\n static Banner = \"banner\";\r\n static Complementary = \"complementary\";\r\n static ContentInfo = \"contentinfo\";\r\n static Form = \"form\";\r\n static Main = \"main\";\r\n static Navigation = \"navigation\";\r\n static Search = \"search\";\r\n static Application = \"application\";\r\n}\r\n\r\nexport class ADAWidgitRoles {\r\n static Button = \"button\";\r\n static Link = \"link\";\r\n}\r\n\r\nexport class ADAARIARoles {\r\n static Heading = \"heading\";\r\n static ListItem = \"listitem\";\r\n static List = \"list\";\r\n static Region = \"region\";\r\n static Group = \"group\";\r\n static Feed = \"feed\";\r\n\tstatic Navigation = \"navigation\";\r\n static Application = \"application\";\r\n static Presentation = \"presentation\";\r\n static Article = \"article\";\r\n static None = \"none\";\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport CountUp from 'react-countup';\r\n\r\nimport './Loading.scss';\r\nimport { LoadingState } from '../../models/Models';\r\nimport { ADAARIARoles } from '../../models/ADA';\r\n\r\nconst Loading = ({ loadingState, onLoaded, showTextOnly }) => {\r\n const animationTime = 4;\r\n const cmsData = useSelector(state => state.data.cms.global);\r\n const [currentState, setCurrentState] = useState(LoadingState.Waiting);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n useEffect(() => {\r\n setCurrentState(loadingState);\r\n }, [loadingState]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{cmsData ? cmsData.Loading.Header : ''}
\r\n
{cmsData ? cmsData.Loading.Body : ''}
\r\n {currentState === LoadingState.Loading && !showTextOnly ? (\r\n
\r\n \r\n %\r\n
\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\nexport default Loading;\r\n","import { useState, useEffect, useRef, useCallback } from 'react';\r\nimport { map, filter, first, concatMap } from 'rxjs/operators';\r\nimport { fromEvent, merge } from 'rxjs';\r\nimport { swipeDirection, swipeType } from './Models';\r\n\r\nexport function useWindowSize() {\r\n // Initialize state with undefined width/height so server and client renders match\r\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\r\n const [windowSize, setWindowSize] = useState({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n\r\n const minLandscapeWidth = 1900;\r\n\r\n useEffect(() => {\r\n // Handler to call on window resize\r\n function handleResize() {\r\n // Set window width/height to state\r\n\r\n setWindowSize({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n }\r\n\r\n function handleOrientationChange() {\r\n setTimeout(handleResize, 500);\r\n }\r\n\r\n // Add event listener\r\n window.addEventListener('resize', handleResize);\r\n //window.addEventListener('orientationchange', handleOrientationChange);\r\n\r\n // Call handler right away so state gets updated with initial window size\r\n handleResize();\r\n\r\n // Remove event listener on cleanup\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n //window.removeEventListener('orientationchange', handleOrientationChange);\r\n };\r\n }, []); // Empty array ensures that effect is only run on mount\r\n return windowSize;\r\n}\r\n\r\nexport function usePrevious(value) {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n}\r\n\r\nexport function useSwipeEvent(target, handler) {\r\n let sub = useRef(null);\r\n let stream = useRef(null);\r\n const getSwipeStream = useCallback(() => {\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n const scrollEvts = fromEvent(target, wheelEvent);\r\n const toucheStartEvts = fromEvent(target, 'touchstart');\r\n const toucheEndEvts = fromEvent(target, 'touchend');\r\n const toucheCancelEvts = fromEvent(target, 'touchcancel');\r\n let timeStamp = null;\r\n const waitingPeriod = 1500; // waiting period for prev wheel event to finish\r\n return merge(\r\n toucheStartEvts.pipe(\r\n concatMap(se =>\r\n merge(toucheEndEvts, toucheCancelEvts).pipe(\r\n first(),\r\n map(me => {\r\n const diff = {\r\n x: se.touches[0].clientX - me.changedTouches[0].clientX,\r\n y: se.touches[0].clientY - me.changedTouches[0].clientY,\r\n };\r\n if (Math.abs(diff.x) > 20 || Math.abs(diff.y) > 20) {\r\n if (Math.abs(diff.x) > Math.abs(diff.y)) {\r\n return diff.x > 0\r\n ? { dir: swipeDirection.RIGHT, origin: swipeType.TOUCH }\r\n : { dir: swipeDirection.LEFT, origin: swipeType.TOUCH };\r\n } else {\r\n return diff.y > 0\r\n ? { dir: swipeDirection.UP, origin: swipeType.TOUCH }\r\n : { dir: swipeDirection.DOWN, origin: swipeType.TOUCH };\r\n }\r\n }\r\n })\r\n )\r\n )\r\n ),\r\n scrollEvts.pipe(\r\n map(e => {\r\n if (e.timeStamp - timeStamp > waitingPeriod) {\r\n timeStamp = null;\r\n }\r\n if ((Math.abs(e.deltaY) > 10 || Math.abs(e.deltaX) > 10) && timeStamp === null) {\r\n timeStamp = e.timeStamp;\r\n if (Math.abs(e.deltaY) > Math.abs(e.deltaX)) {\r\n return e.deltaY > 0\r\n ? { dir: swipeDirection.UP, origin: swipeType.SCROLL }\r\n : { dir: swipeDirection.DOWN, origin: swipeType.SCROLL };\r\n } else {\r\n return e.deltaX > 0\r\n ? { dir: swipeDirection.RIGHT, origin: swipeType.SCROLL }\r\n : { dir: swipeDirection.LEFT, origin: swipeType.SCROLL };\r\n }\r\n }\r\n return null;\r\n }),\r\n filter(e => e !== null)\r\n )\r\n );\r\n }, [target]);\r\n\r\n useEffect(() => {\r\n if (!target) {\r\n return;\r\n }\r\n if (!stream.current) {\r\n stream.current = getSwipeStream();\r\n }\r\n sub.current = stream.current.subscribe(handler);\r\n return () => sub.current.unsubscribe();\r\n }, [target, handler, getSwipeStream]);\r\n}\r\n\r\nexport function useScrollEvent(target, handler) {\r\n let sub = useRef(null);\r\n let stream = useRef(null);\r\n\r\n const getScrollStream = useCallback(() => {\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n const scrollEvts = fromEvent(target, wheelEvent);\r\n const toucheMoveEvts = fromEvent(target, 'touchmove');\r\n let prevEvent = null;\r\n\r\n return merge(\r\n scrollEvts,\r\n toucheMoveEvts.pipe(\r\n map(e => {\r\n let newEvent = null;\r\n if (prevEvent && e.timeStamp - prevEvent.timeStamp < 100) {\r\n\r\n newEvent = {\r\n timeStamp: e.timeStamp,\r\n deltaY: 6 * Math.round(prevEvent.touches[0].clientY - e.touches[0].clientY ),\r\n deltaX: 6 * Math.round(prevEvent.touches[0].clientX - e.touches[0].clientX ),\r\n };\r\n }\r\n prevEvent = e;\r\n\r\n return newEvent;\r\n }),\r\n filter(e => e !== null)\r\n )\r\n );\r\n }, [target]);\r\n\r\n useEffect(() => {\r\n if (!target) {\r\n return;\r\n }\r\n if (!stream.current) {\r\n stream.current = getScrollStream();\r\n }\r\n\r\n sub.current = stream.current.subscribe(handler);\r\n return () => sub.current.unsubscribe();\r\n }, [target, handler, getScrollStream]);\r\n}\r\n","import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {Link, useHistory, useParams} from 'react-router-dom';\r\nimport * as THREE from 'three';\r\nimport {CSS3DObject, CSS3DRenderer} from 'three/examples/jsm/renderers/CSS3DRenderer';\r\nimport {FiArrowDown, FiArrowRight} from 'react-icons/fi';\r\nimport {BsChevronDown, BsChevronUp} from 'react-icons/bs';\r\n\r\nimport {setLoaded} from '../../store/reducers/mainReducer';\r\nimport {getImageFilepath, getIntroductionIndex, getViewportDimensions} from '../../models/Utils';\r\nimport {introScreenNames, linkTypes, LoadingState, swipeDirection} from '../../models/Models';\r\nimport Loading from '../Loading/Loading';\r\nimport {useScrollEvent, useSwipeEvent, useWindowSize} from '../../models/Hooks';\r\nimport {ADAARIARoles, ADALandmarks, ADAWidgitRoles} from '../../models/ADA';\r\nimport './Introduction.scss';\r\n\r\nlet objects = [];\r\nlet elements = [];\r\nlet vLogo, vLogoObj;\r\n\r\nconst Introduction = () => {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const isInitialized = useSelector(state => state.data.initialized);\r\n const loaded = useSelector(state => state.data.loaded);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const cmsData = useSelector(state => state.data.cms.digitalMuseum);\r\n const globalData = useSelector(state => state.data.cms.global);\r\n const storyArchive = useSelector(state => state.data.cms.digitalMuseum.StoryArchive);\r\n const dmnavbar = useSelector(state => state.data.menus.digitalMuseum);\r\n const themuseumnavbar = useSelector(state => state.data.menus.theMuseum);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const introContainer = useRef(null);\r\n const exhibitsRef = useRef(null);\r\n const ADARefocusRef = useRef(null);\r\n const ADARefocusFinalRef = useRef(null);\r\n let isFinalScreen = false;\r\n let [scene] = useState(new THREE.Scene());\r\n let [hovered, setHovered] = useState(false);\r\n let [renderer] = useState(new CSS3DRenderer());\r\n let [menuDisplay, setMenuDisplay] = useState('menu');\r\n let [blockInteraction, setBlockInteraction] = useState(false);\r\n let [screens, setScreens] = useState([]);\r\n const [sceneInit, setSceneInit] = useState(false);\r\n const [loadingState, setLoadingState] = useState(\r\n loaded ? LoadingState.Loaded : LoadingState.Loading\r\n );\r\n const [scrollDownText, setScrollDownText] = useState('Scroll down');\r\n const [scrollDownVisibility, setScrollDownVisibility] = useState(true);\r\n const [scrollUpVisibility, setScrollUpVisibility] = useState(false);\r\n const [autoAnimation, setAutoAnimation] = useState(false);\r\n let [showText, setShowText] = useState(false);\r\n let [listenToSwipe, setListenToSwipe] = useState(false);\r\n let [listenToScroll, setListenToScroll] = useState(true);\r\n const [vw, setVw] = useState(getViewportDimensions().width);\r\n const [vh, setVh] = useState(getViewportDimensions().height);\r\n const startValue = 26000;\r\n const scrollSpaceEndZValue = 21090;\r\n const [internalURLChange, setInternalURLChange] = useState(false);\r\n let {introductionId} = useParams();\r\n let [camera] = useState(new THREE.PerspectiveCamera(50, vw / vh, 5000, startValue));\r\n const [scrolling, setIsScrolling] = useState(false);\r\n //const [inertia, setInertia] = useState(0);\r\n const [timer, setTimer] = useState(null);\r\n const size = useWindowSize();\r\n const inertiaRef = React.useRef();\r\n const inertiaInterval = React.useRef();\r\n let [ada, setADA] = useState(\"\");\r\n let [adaRefText, setADARefText] = useState(\"\");\r\n let [storyIndex, setStoryIndex] = useState(0);\r\n const adaRef = React.useRef();\r\n //const adaRef2 = React.useRef();\r\n\r\n const introductionIndex = getIntroductionIndex(\r\n introductionId,\r\n globalData,\r\n cmsData,\r\n loaded,\r\n history\r\n );\r\n\r\n inertiaRef.current = 0;\r\n\r\n const imagesPosition = [\r\n {x: -40, y: -90, z: 16800},\r\n {x: 70, y: -120, z: 16700},\r\n {x: 30, y: 140, z: 16600},\r\n {x: -30, y: -100, z: 16400},\r\n {x: -135, y: -50, z: 16200},\r\n {x: -60, y: 160, z: 16000},\r\n {x: 120, y: 160, z: 15900},\r\n {x: 180, y: -60, z: 15950},\r\n {x: 80, y: 100, z: 15800},\r\n {x: 140, y: -180, z: 15600},\r\n {x: -100, y: -60, z: 15700},\r\n {x: -120, y: 120, z: 15500},\r\n {x: -60, y: 110, z: 15400},\r\n {x: 160, y: 20, z: 15300},\r\n {x: -160, y: 0, z: 15200},\r\n {x: -40, y: -180, z: 14900},\r\n {x: -140, y: 80, z: 14600},\r\n {x: 40, y: 190, z: 14700},\r\n {x: -60, y: 110, z: 14800},\r\n {x: 80, y: -120, z: 14700},\r\n {x: 260, y: 180, z: 14600},\r\n {x: 260, y: -180, z: 14500},\r\n {x: -260, y: 250, z: 14450},\r\n {x: -260, y: -250, z: 14400},\r\n ];\r\n\r\n const init = useCallback(() => {\r\n if (!globalData || !isInitialized) {\r\n return;\r\n }\r\n\r\n // adding v logo\r\n vLogo = document.createElement('div');\r\n vLogo.className = 'v-logo';\r\n vLogo.altText = \"Verizon Logo\"\r\n const img = document.createElement('img');\r\n img.className = 'intro-img';\r\n img.alt = 'Verizon logo';\r\n img.ariaHidden = true;\r\n img.src = process.env.PUBLIC_URL + '/verizon.svg';\r\n vLogo.appendChild(img);\r\n vLogoObj = new CSS3DObject(vLogo);\r\n vLogoObj.position.x = 50;\r\n vLogoObj.position.y = -300;\r\n vLogoObj.position.z = startValue - 2500;\r\n scene.add(vLogoObj);\r\n\r\n // adding 3D space images\r\n globalData.Introduction.Images.forEach((img, i) => {\r\n const element = document.createElement('div');\r\n const imagesXPositionForDesktop =\r\n window.innerWidth * 0.4 > 200 ? imagesPosition[i].x * 2 : imagesPosition[i].x;\r\n element.className = 'img-holder hidden';\r\n\r\n const imgElmt = document.createElement('img');\r\n imgElmt.className = 'intro-img';\r\n imgElmt.alt = 'Intro Image';\r\n imgElmt.ariaHidden = true;\r\n imgElmt.src =\r\n mediaPath +\r\n getImageFilepath(img.Image, window.innerWidth * 0.4 > 200 ? 200 : window.innerWidth * 0.4);\r\n //imgElmt.tabIndex = -1;\r\n\r\n element.appendChild(imgElmt);\r\n\r\n const objectCSS = new CSS3DObject(element);\r\n objectCSS.position.x = imagesXPositionForDesktop;\r\n objectCSS.position.y = imagesPosition[i].y;\r\n objectCSS.position.z = imagesPosition[i].z - 20000 + startValue;\r\n\r\n scene.add(objectCSS);\r\n\r\n objects.push(objectCSS);\r\n elements.push(element);\r\n });\r\n\r\n renderer.setSize(vw, vh);\r\n document.getElementById('Introduction').appendChild(renderer.domElement);\r\n\r\n if (\r\n introductionIndex === introScreenNames.LOADING ||\r\n introductionIndex === introScreenNames.ANIMATION\r\n ) {\r\n camera.position.z = startValue;\r\n setShowText(true);\r\n } else {\r\n camera.position.z = scrollSpaceEndZValue;\r\n setShowText(false);\r\n }\r\n\r\n updateViewport();\r\n //renderer.render(scene, camera);\r\n\r\n //window.addEventListener('resize', onWindowResize, false);\r\n }, [isInitialized, globalData, mediaPath, scene, renderer, camera, vw, vh, imagesPosition]);\r\n\r\n useEffect(() => {\r\n updateViewport();\r\n }, [size]);\r\n\r\n const updateViewport = useCallback(() => {\r\n if (!camera || !scene) return;\r\n\r\n let newVw = getViewportDimensions().width;\r\n let newVh = getViewportDimensions().height;\r\n\r\n setVw(newVw);\r\n setVh(newVh);\r\n camera.aspect = newVw / newVh;\r\n camera.updateProjectionMatrix();\r\n renderer.setSize(newVw, newVh);\r\n renderer.render(scene, camera);\r\n });\r\n\r\n useEffect(() => {\r\n document.title = \"The Verizon Story - Introduction\";\r\n\r\n if (cmsData && !screens.length) {\r\n let scrns = [\r\n {\r\n name: 'text-screen',\r\n className: 'no-display animate-out-back',\r\n active: false,\r\n zIndex: 12,\r\n },\r\n {\r\n name: 'menu-exhibits',\r\n className: 'no-display animate-out-back',\r\n active: false,\r\n zIndex: 11,\r\n },\r\n ];\r\n cmsData.Stories.forEach((s, i) =>\r\n scrns.push({\r\n name: 'story',\r\n index: i,\r\n className: 'no-display animate-out-back',\r\n zIndex: 10 - i,\r\n })\r\n );\r\n scrns.push({\r\n name: 'post-stories',\r\n className: 'no-display animate-out-back',\r\n zIndex: 10 - cmsData.Stories.length,\r\n });\r\n setScreens(scrns);\r\n setSceneInit(true);\r\n }\r\n }, [cmsData, screens]);\r\n\r\n useEffect(() => {\r\n init();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (sceneInit) {\r\n if (!internalURLChange) {\r\n // URL chaged on same component.\r\n window.location.reload();\r\n } else {\r\n setInternalURLChange(false);\r\n }\r\n }\r\n }, [introductionId]);\r\n\r\n useEffect(() => {\r\n if (sceneInit) {\r\n goTo();\r\n }\r\n }, [sceneInit]);\r\n\r\n const goTo = () => {\r\n\r\n if (!internalURLChange) {\r\n if (introductionIndex !== introScreenNames.LOADING && loadingState !== LoadingState.Loaded) {\r\n setLoadingState(LoadingState.Loaded);\r\n dispatch(setLoaded());\r\n }\r\n if (\r\n introductionIndex === introScreenNames.LOADING ||\r\n introductionIndex === introScreenNames.ANIMATION\r\n ) {\r\n } else {\r\n camera.position.z = scrollSpaceEndZValue;\r\n setListenToScroll(false);\r\n setListenToSwipe(true);\r\n switch (introductionIndex) {\r\n case introScreenNames.TEXT_SCREEN:\r\n showFirstScreen();\r\n break;\r\n case introScreenNames.MENU_EXHIBITS:\r\n transitionToScreen(0, 1, 0, 0, 0);\r\n\r\n break;\r\n case introScreenNames.STORY:\r\n var index = 0;\r\n if (cmsData && cmsData.Stories) {\r\n for (var i = 0; i < cmsData.Stories.length; i++) {\r\n var story = cmsData.Stories[i];\r\n if (\r\n story &&\r\n story.Menu &&\r\n story.Menu.Path &&\r\n story.Menu.Path.toLowerCase() === introductionId.toLowerCase()\r\n ) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n setStoryIndex(index);\r\n transitionToScreen(0, 2 + index, 0, 0, 0);\r\n break;\r\n case introScreenNames.POST_STORIES:\r\n transitionToScreen(0, 2 + cmsData.Stories.length, 0, 0, 0);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n\r\n switch (introductionIndex) {\r\n case introScreenNames.LOADING:\r\n if (globalData && globalData.Loading && globalData.Loading.ADADescriptiveText) {\r\n setADANonRepeating(globalData.Loading.ADADescriptiveText);\r\n }\r\n break;\r\n case introScreenNames.ANIMATION:\r\n if (globalData && globalData.Introduction) {\r\n if (autoAnimation) {\r\n if (globalData.Introduction.ADAAnimationDescription) {\r\n setADANonRepeating(globalData.Introduction.ADAAnimationDescription);\r\n }\r\n } else {\r\n if (globalData.Introduction.ADADescriptiveText) {\r\n setADANonRepeating(globalData.Introduction.ADADescriptiveText);\r\n }\r\n }\r\n }\r\n break;\r\n case introScreenNames.TEXT_SCREEN:\r\n if (globalData && globalData.Onboarding) {\r\n if (menuDisplay === \"menu\") {\r\n if (globalData.Onboarding.Introduction && globalData.Onboarding.Introduction.ADADescriptiveText) {\r\n setADANonRepeating(globalData.Onboarding.Introduction.ADADescriptiveText);\r\n }\r\n } else if (menuDisplay === \"exhibits\") {\r\n if (globalData.Onboarding.Exhibits && globalData.Onboarding.Exhibits.ADADescriptiveText) {\r\n setADANonRepeating(globalData.Onboarding.Exhibits.ADADescriptiveText);\r\n }\r\n }\r\n }\r\n break;\r\n case introScreenNames.STORY:\r\n if (cmsData && cmsData.Stories && cmsData.Stories[storyIndex]) {\r\n //if(globalData.Onboarding.Stories.ADADescriptiveText === ada && adaRef1 && adaRef1.current){\r\n // adaRef1.current.focus();\r\n //} else {\r\n\r\n setADANonRepeating(cmsData.Stories[storyIndex].Introduction.adaDescriptiveText);\r\n // }\r\n }\r\n break;\r\n case introScreenNames.POST_STORIES:\r\n if (globalData && globalData.Onboarding && globalData.Onboarding.FinalSlide && globalData.Onboarding.FinalSlide.ADADescriptiveText) {\r\n setADANonRepeating(globalData.Onboarding.FinalSlide.ADADescriptiveText);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }, 100);\r\n }, [storyIndex, introductionIndex, screens, menuDisplay]);\r\n\r\n function setADANonRepeating(text) {\r\n if (ada == text) return;\r\n setADA(text);\r\n }\r\n\r\n const arrowDownRef= useRef(null);\r\n const arrowUpRef= useRef(null);\r\n\r\n\r\n useEffect(() => {\r\n window.addEventListener('keydown', e => {\r\n if (e.key === 'ArrowDown') {\r\n if (arrowDownRef.current) {\r\n onDownArrowClick();\r\n arrowDownRef.current.dispatchEvent(\r\n new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n buttons: 1,\r\n }),\r\n );\r\n }\r\n } else if (e.key === 'ArrowUp') {\r\n if (arrowUpRef.current) {\r\n onUpArrowClick();\r\n arrowUpRef.current.dispatchEvent(\r\n new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n buttons: 1,\r\n }),\r\n );\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const scrollDownState = useCallback(\r\n (currentScreen, showScrolldown = true) => {\r\n const z = camera.position.z;\r\n\r\n if (blockInteraction) {\r\n return setScrollDownVisibility(false);\r\n }\r\n\r\n if (z < startValue - 1000) {\r\n if (z === scrollSpaceEndZValue && currentScreen === 0) {\r\n setScrollDownVisibility(true);\r\n setScrollDownText(globalData.Onboarding.Introduction.Footer);\r\n } else if (z === scrollSpaceEndZValue && currentScreen === 1) {\r\n setScrollDownText(globalData.Onboarding.Menu.Footer);\r\n setScrollDownVisibility(showScrolldown);\r\n } else if (\r\n z === scrollSpaceEndZValue &&\r\n currentScreen > 1 &&\r\n currentScreen < screens.length - 1\r\n ) {\r\n setScrollDownText('');\r\n setScrollDownVisibility(true);\r\n } else {\r\n setScrollDownVisibility(false);\r\n }\r\n if (currentScreen < screens.length - 1) {\r\n setScrollUpVisibility(false);\r\n } else {\r\n setScrollUpVisibility(true);\r\n }\r\n } else {\r\n setScrollDownText(globalData.Introduction.Footer);\r\n setScrollDownVisibility(true);\r\n setScrollUpVisibility(false);\r\n }\r\n },\r\n [globalData, blockInteraction, menuDisplay, setScrollDownVisibility, setScrollDownText, screens]\r\n );\r\n\r\n const showFirstScreen = useCallback(() => {\r\n setAutoAnimation(false);\r\n camera.position.z = scrollSpaceEndZValue;\r\n setBlockInteraction(true);\r\n let newScreens = [...screens];\r\n // trigger animation for current screen\r\n newScreens[0] = {\r\n ...newScreens[0],\r\n className: '',\r\n };\r\n newScreens[0].active = true;\r\n setScreens(newScreens);\r\n setTimeout(() => {\r\n setBlockInteraction(false);\r\n setListenToSwipe(true);\r\n scrollDownState(0);\r\n }, 750);\r\n\r\n\r\n }, [screens, setScreens, setListenToSwipe, setBlockInteraction, scrollDownState]);\r\n\r\n const scrollHandler = useCallback(\r\n e => {\r\n if (!listenToScroll || !loaded) {\r\n return;\r\n }\r\n let z = camera.position.z;\r\n\r\n z -= (z - scrollSpaceEndZValue < 500 ? 0.25 : 1) * e.deltaY;\r\n if (z <= scrollSpaceEndZValue) {\r\n z = scrollSpaceEndZValue;\r\n // switch to HTML/CSS animation between screens\r\n setListenToScroll(false);\r\n showFirstScreen();\r\n }\r\n if (z >= startValue) {\r\n z = startValue;\r\n } else {\r\n setShowText(false);\r\n }\r\n\r\n if (z < startValue - 1000 && z > scrollSpaceEndZValue) {\r\n const orderedObjects = objects\r\n .map((o, i) => ({\r\n i,\r\n d: z - o.position.z < 600 ? 100000 : z - o.position.z,\r\n }))\r\n .sort((a, b) => a.d - b.d);\r\n\r\n orderedObjects.forEach((o, i) => {\r\n if (i < 9) {\r\n elements[o.i].classList.remove('hidden');\r\n } else {\r\n elements[o.i].classList.add('hidden');\r\n }\r\n });\r\n\r\n\r\n inertiaRef.current = e.deltaY;\r\n\r\n } else {\r\n elements.forEach(elt => elt.classList.add('hidden'));\r\n }\r\n camera.position.z = z;\r\n scrollDownState(null);\r\n renderer.render(scene, camera);\r\n },\r\n [loaded, timer, listenToScroll, setListenToScroll, setShowText, showFirstScreen, scene, camera]\r\n );\r\n\r\n\r\n const swipeHandler = useCallback(\r\n e => {\r\n if (!e) {\r\n return;\r\n }\r\n\r\n const activeIndex = screens.findIndex(e => e.active);\r\n if (screens[activeIndex] && screens[activeIndex].name === 'menu-exhibits') {\r\n if (e.dir === swipeDirection.RIGHT || e.dir === swipeDirection.LEFT) {\r\n setMenuDisplay(e.dir === swipeDirection.RIGHT ? 'exhibits' : 'menu');\r\n scrollDownState(1, (menuDisplay === 'exhibits' && e.dir !== swipeDirection.RIGHT) || (menuDisplay === 'menu' && e.dir === swipeDirection.LEFT));\r\n\r\n } else if (menuDisplay === 'exhibits') {\r\n return;\r\n }\r\n }\r\n if (blockInteraction || !listenToSwipe) {\r\n return;\r\n }\r\n if (activeIndex < screens.length - 1 && e.dir === swipeDirection.UP) {\r\n transitionToScreen(activeIndex, 1);\r\n }\r\n if (activeIndex > 0 && e.dir === swipeDirection.DOWN) {\r\n transitionToScreen(activeIndex, -1);\r\n }\r\n if (activeIndex === 0 && e.dir === swipeDirection.DOWN) {\r\n setListenToScroll(true);\r\n setListenToSwipe(false);\r\n transitionToScreen(0, -1);\r\n }\r\n },\r\n [screens, setScreens, setBlockInteraction, blockInteraction, listenToSwipe, scrollDownState]\r\n\r\n\r\n );\r\n\r\n const handleTouchUp = useCallback(() => {\r\n\r\n clearInterval(inertiaInterval.current);\r\n\r\n inertiaInterval.current = setInterval(() => {\r\n if (Math.abs(inertiaRef.current) < 0.1) {\r\n inertiaRef.current = 0;\r\n clearInterval(inertiaInterval.current);\r\n } else {\r\n var newInteria = inertiaRef.current * 0.9;\r\n inertiaRef.current = newInteria;\r\n scrollHandler({deltaY: newInteria});\r\n }\r\n }, 10);\r\n }, [loaded]);\r\n\r\n const handleTouchDown = (e) => {\r\n inertiaRef.current = 0;\r\n clearInterval(inertiaInterval.current);\r\n }\r\n\r\n useEffect(() => {\r\n\r\n if (loaded) {\r\n document.addEventListener(\"touchdown\", handleTouchDown);\r\n document.addEventListener(\"touchend\", handleTouchUp);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener(\"touchdown\", handleTouchDown);\r\n document.removeEventListener(\"touchend\", handleTouchUp);\r\n };\r\n\r\n }, [loaded]);\r\n\r\n useLayoutEffect(() => {\r\n const ref = exhibitsRef.current;\r\n\r\n const handleScroll = e => {\r\n if (vw > 767 || camera.position.z < scrollSpaceEndZValue) {\r\n return;\r\n }\r\n e.stopPropagation();\r\n if (ref.scrollTop <= 0 || Math.round(ref.scrollTop) >= ref.scrollHeight - ref.clientHeight) {\r\n setTimeout(() => {\r\n setBlockInteraction(false);\r\n }, 500);\r\n } else {\r\n setBlockInteraction(true);\r\n }\r\n };\r\n\r\n ref && ref.addEventListener('scroll', handleScroll);\r\n return () => {\r\n ref && ref.removeEventListener('scroll', handleScroll);\r\n };\r\n }, [exhibitsRef.current, vw, setBlockInteraction]);\r\n\r\n\r\n useSwipeEvent(introContainer.current, swipeHandler);\r\n useScrollEvent(introContainer.current, !autoAnimation ? scrollHandler : null);\r\n\r\n\r\n const transitionToScreen = (\r\n index,\r\n dir,\r\n nextScreenAnimationSpeed = 0.25,\r\n currentScreenAnimateOffSpeed = 0.75,\r\n screenUpdateSpeed = 1\r\n ) => {\r\n setBlockInteraction(true);\r\n let newScreens = [...screens];\r\n // trigger animation for current screen\r\n newScreens[index] = {\r\n ...newScreens[index],\r\n className: 'animate-out-' + (dir > 0 ? 'front' : 'back'),\r\n };\r\n if (dir < 0 && newScreens[index + dir]) {\r\n newScreens[index + dir] = {...newScreens[index + dir], active: true};\r\n newScreens[index] = {...newScreens[index], active: false};\r\n }\r\n setScreens(newScreens);\r\n // trigger animation for next screen\r\n if (newScreens[index + dir]) {\r\n setTimeout(() => {\r\n newScreens = [...newScreens];\r\n newScreens[index + dir] = {...newScreens[index + dir], className: ''};\r\n setScreens(newScreens);\r\n }, nextScreenAnimationSpeed * 1000);\r\n }\r\n // hide current screen after animation ended\r\n setTimeout(() => {\r\n newScreens = [...newScreens];\r\n newScreens[index] = {\r\n ...newScreens[index],\r\n className: 'no-display animate-out-' + (dir > 0 ? 'front' : 'back'),\r\n };\r\n setScreens(newScreens);\r\n }, currentScreenAnimateOffSpeed * 1000);\r\n // update screens statuses\r\n setTimeout(() => {\r\n if (dir > 0 && newScreens[index + dir]) {\r\n newScreens = [...newScreens];\r\n newScreens[index + dir] = {...newScreens[index + dir], active: true};\r\n newScreens[index] = {...newScreens[index], active: false};\r\n setScreens(newScreens);\r\n }\r\n setBlockInteraction(false);\r\n if (index + dir !== 1) {\r\n setMenuDisplay('menu');\r\n }\r\n\r\n }, screenUpdateSpeed * 1000);\r\n if (index >= newScreens.length - 1 && dir < 0) {\r\n scrollDownState(index + dir);\r\n } else {\r\n setTimeout(() => {\r\n scrollDownState(index + dir);\r\n }, screenUpdateSpeed * 1000);\r\n }\r\n\r\n\r\n };\r\n\r\n const onLoaded = () => {\r\n setLoadingState(LoadingState.Loaded);\r\n dispatch(setLoaded());\r\n setInternalURLChange(true);\r\n history.push(`/${globalData.Path.Text}/${globalData.Introduction.Menu.Path}`);\r\n };\r\n\r\n useEffect(() => {\r\n if (screens) {\r\n for (var i = 0; i < screens.length; i++) {\r\n var screen = screens[i];\r\n\r\n if (screen.active) {\r\n switch (screen.name) {\r\n case introScreenNames.TEXT_SCREEN:\r\n setInternalURLChange(true);\r\n history.push(\r\n `/${globalData.Path.Text}/${globalData.Onboarding.Introduction.Menu.Path}`\r\n );\r\n ADARefocusRef.current.focus();\r\n console.log(\"reseting focus\");\r\n break;\r\n case introScreenNames.MENU_EXHIBITS:\r\n setInternalURLChange(true);\r\n history.push(`/${globalData.Path.Text}/${globalData.Onboarding.Menu.Menu.Path}`);\r\n ADARefocusRef.current.focus();\r\n console.log(\"reseting focus\");\r\n break;\r\n case introScreenNames.STORY:\r\n setInternalURLChange(true);\r\n setStoryIndex(screen.index);\r\n history.push(`/${globalData.Path.Text}/${cmsData.Stories[screen.index].Menu.Path}`);\r\n ADARefocusRef.current.focus();\r\n console.log(\"reseting focus\");\r\n break;\r\n case introScreenNames.POST_STORIES:\r\n setInternalURLChange(true);\r\n history.push(\r\n `/${globalData.Path.Text}/${globalData.Onboarding.FinalSlide.Menu.Path}`\r\n );\r\n //reset ada focus\r\n ADARefocusFinalRef.current.focus();\r\n console.log(\"reseting focus on final page\");\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }, [screens]);\r\n\r\n const onExploreClick = storyId => {\r\n var stry = cmsData.Stories[storyId];\r\n history.push(`/${cmsData.Path.Text}/${stry.Menu.Path}`);\r\n };\r\n\r\n const onDownArrowClick = () => {\r\n const z = camera.position.z;\r\n if (z < startValue - 1000) {\r\n swipeHandler({dir: swipeDirection.UP});\r\n } else {\r\n var step = 22;\r\n setAutoAnimation(true);\r\n if (globalData && globalData.Introduction && globalData.Introduction.ADAAnimationDescription) {\r\n setADANonRepeating(globalData.Introduction.ADAAnimationDescription);\r\n }\r\n for (\r\n var i = z;\r\n i > scrollSpaceEndZValue;\r\n i -= (i - scrollSpaceEndZValue < 500 ? 0.25 : 1) * step\r\n ) {\r\n delayMove(z, i, step);\r\n }\r\n }\r\n };\r\n\r\n const onUpArrowClick = () => {\r\n swipeHandler({dir: swipeDirection.DOWN});\r\n };\r\n\r\n const delayMove = (startPos, currentPos, step) => {\r\n setTimeout(() => {\r\n scrollHandler({deltaY: step});\r\n }, startPos - currentPos);\r\n };\r\n\r\n const menuLeftSide = globalData && globalData.Onboarding.Menu && globalData.Onboarding.Menu.Left;\r\n const menuRightSide =\r\n globalData && globalData.Onboarding.Menu && globalData.Onboarding.Menu.Right;\r\n const exhibits = globalData && globalData.Onboarding.Exhibits;\r\n\r\n const getScreenContent = screen => {\r\n let isActive = screen.active;\r\n isFinalScreen = false;\r\n switch (screen.name) {\r\n case introScreenNames.TEXT_SCREEN:\r\n return (\r\n
\r\n
\r\n

\r\n {globalData && globalData.Onboarding.Introduction.Header}\r\n

\r\n

{globalData && globalData.Onboarding.Introduction.Body}

\r\n
\r\n
\r\n );\r\n case introScreenNames.MENU_EXHIBITS:\r\n return (\r\n
\r\n
\r\n {\r\n e.preventDefault();\r\n swipeHandler({dir: swipeDirection.UP});\r\n }}\r\n >\r\n
\r\n {menuLeftSide && menuLeftSide.Header}\r\n \r\n
\r\n
\r\n \r\n {\r\n e.preventDefault();\r\n swipeHandler({dir: swipeDirection.RIGHT});\r\n }}\r\n >\r\n
\r\n {menuRightSide && menuRightSide.Header}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n

{exhibits && exhibits.Header}

\r\n
\r\n {exhibits &&\r\n exhibits.List.map((exhibit, i) => (\r\n
\r\n \r\n
{exhibit.Title}
\r\n {getExhibitLink(exhibit, isActive && menuDisplay !== 'menu')}\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n case introScreenNames.STORY:\r\n const story = cmsData.Stories[screen.index];\r\n return (\r\n
\r\n
\r\n

{story.Header || ''}

\r\n

{story.Subheader || ''}

\r\n onExploreClick(screen.index)}\r\n onMouseEnter={() => setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n tabIndex={isActive && !menuOpened ? 0 : -1}\r\n >\r\n Explore\r\n \r\n
\r\n
\r\n {story.Introduction.Thumbnails.map(thumb => (\r\n 325 ? 325 : window.innerWidth * 0.4\r\n )\r\n }\r\n alt={thumb.Thumbnail.AltText}\r\n className=\"thumb-img\"\r\n aria-hidden={true}\r\n />\r\n ))}\r\n
\r\n
\r\n );\r\n case introScreenNames.POST_STORIES:\r\n isFinalScreen = isActive;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {globalData && globalData.Navbar && globalData.Navbar.Text2}\r\n
\r\n
\r\n {dmnavbar &&\r\n dmnavbar.length > 0 &&\r\n dmnavbar.map((item, itemIndex) => (\r\n
\r\n \r\n {item.title}\r\n \r\n
\r\n ))}\r\n
\r\n \r\n {storyArchive.Menu.Text}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {globalData && globalData.Navbar && globalData.Navbar.Text3}\r\n
\r\n
\r\n {themuseumnavbar &&\r\n themuseumnavbar.length > 0 &&\r\n themuseumnavbar.map((item, i) => (\r\n
\r\n \r\n {item.title}\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n };\r\n\r\n function getExhibitLink(exhibit, active) {\r\n if (exhibit && exhibit.Link && exhibit.Link.HasLink && exhibit.Link.Text) {\r\n var isExternal = exhibit.Link.Type === linkTypes.EXTERNAL;\r\n var button = ;\r\n if (isExternal && exhibit.Link.ExternalURL && exhibit.Link.ExternalURL.Text) {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n } else if (\r\n !isExternal &&\r\n exhibit.Link.InternalURL &&\r\n exhibit.Link.InternalURL.BasePath &&\r\n exhibit.Link.InternalURL.BasePath.Text &&\r\n exhibit.Link.InternalURL.Path &&\r\n exhibit.Link.InternalURL.Path.Path\r\n ) {\r\n var internalURL = exhibit.Link.InternalURL;\r\n return {button};\r\n }\r\n }\r\n return ;\r\n }\r\n\r\n if (!isInitialized) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
{ada}
\r\n {!loaded || showText ? (\r\n \r\n ) : null}\r\n {screens.map((screen, i) => (\r\n \r\n {getScreenContent(screen)}\r\n
\r\n ))}\r\n {\r\n \r\n \r\n
\r\n }\r\n {\r\n \r\n {globalData && globalData.General && \r\n globalData.General.ADAScrollUpDescriptiveText &&\r\n
{globalData.General.ADAScrollUpDescriptiveText}
}\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default Introduction;\r\n","import React from 'react';\r\nimport './Button.css';\r\n\r\nconst STYLES = ['btn--primary', 'btn--outline'];\r\nconst SIZES = ['btn--medium', 'btn--large', 'btn--mobile', 'btn--wide'];\r\nconst COLORS = ['primary', 'blue', 'red', 'green', 'transparent'];\r\n\r\nconst Button = ({ children, type, onClick, buttonStyle, buttonSize, buttonColor, tabIndex, label }) => {\r\n const checkButtonStyle = STYLES.includes(buttonStyle) ? buttonStyle : STYLES[0];\r\n\r\n const checkButtonSize = SIZES.includes(buttonSize) ? buttonSize : SIZES[0];\r\n\r\n const checkButtonColor = COLORS.includes(buttonColor) ? buttonColor : COLORS[0];\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { useParams } from 'react-router-dom';\r\nimport { formatParagraphs, getImageFilepath } from '../../../models/Utils';\r\nimport Button from '../../Common/Button/Button';\r\nimport { setExploreClicked } from '../../../store/reducers/mainReducer';\r\nimport './Story.scss';\r\nimport { useWindowSize } from '../../../models/Hooks';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\nconst Story = ({ homeData, isInline, topOffset }) => {\r\n const dispatch = useDispatch();\r\n const window = useWindowSize();\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const status = useSelector(state => state.data.exploreClicked);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n let { storyId } = useParams();\r\n const [animate, setAnimate] = useState(true);\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n\r\n useEffect(() => {\r\n setAnimate(true);\r\n setTimeout(() => setAnimate(false), 1000);\r\n }, [storyId]);\r\n\r\n const ExploreClicked = () => {\r\n dispatch(setExploreClicked(true));\r\n };\r\n\r\n var outerClassname = `story-component home__story-section ${status ? 'active' : 'inactive'} ${\r\n homeData.lightBg ? '' : 'darkBg'} ${isInline ? 'inline' : ''}`;\r\n var containerClassname = 'row home__story-row';\r\n var backgoundClassname = 'background';\r\n var cardHolderClassname = isPortrait ? 'card-holder portrait' : 'card-holder landscape';\r\n var exploreClassname = isPortrait ? 'explore-more portrait' : 'explore-more landscape';\r\n if (status) {\r\n containerClassname += ' active';\r\n backgoundClassname += ' active';\r\n cardHolderClassname += ' active';\r\n exploreClassname += ' active';\r\n } else {\r\n containerClassname += ' inactive';\r\n backgoundClassname += ' inactive';\r\n cardHolderClassname += ' inactive';\r\n exploreClassname += ' inactive';\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n

{homeData.Header}

\r\n {!status ?
{homeData.Subheader}
: null}\r\n {!status ? (\r\n isPortrait ? (\r\n <>\r\n \r\n {homeData.ButtonLabel ? homeData.ButtonLabel : 'Explore'}\r\n \r\n \r\n ) : null\r\n ) : (\r\n <>\r\n
{formatParagraphs(homeData.Body)}
\r\n \r\n )}\r\n
\r\n
\r\n {!status && (\r\n
\r\n
\r\n {homeData.Thumbnails.map((e, i) => (\r\n \r\n ))}\r\n
\r\n {isPortrait === false ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Story;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { calculateSize, getBackground } from '../../../models/Utils';\r\n\r\nimport ReactPlayer from 'react-player';\r\nimport './VideoIntro.scss';\r\n\r\n\r\nconst VideoIntro = ({ cardData, isInline, size, topOffset }) => {\r\n const activeKey = useSelector(state => state.data.activeSlideKey);\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [playing, setPlaying] = useState(true);\r\n const [loaded, setLoaded] = useState(false);\r\n const player = useRef(null);\r\n\r\n const isVideo = cardData.BackgroundVideo && cardData.BackgroundVideo.URL;\r\n\r\n const imageBackground = isVideo ? null : getBackground(cardData);\r\n\r\n useEffect(() => {\r\n\r\n clearTimeout(fadeTimeout);\r\n if (cardData && (activeKey === cardData.Key || activeKey === null)) {\r\n setPlaying(true);\r\n delayedFade();\r\n } else {\r\n setPlaying(false);\r\n }\r\n }, [activeKey, cardData]);\r\n\r\n var fadeTimeout;\r\n function delayedFade() {\r\n fadeTimeout = setTimeout(handleVideoStart, videoTimeout);\r\n }\r\n \r\n function handleVideoStart(){\r\n setLoaded(true);\r\n let iframe = document.querySelector(\"iframe\");\r\n iframe.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n\r\n var dimensions = calculateSize(1920, 1080, size.width, size.height);\r\n\r\n var storyVideoIntroStyle = {\r\n top: -topOffset+\"px\",\r\n height: size.height+\"px\"\r\n };\r\n\r\n \r\n var outerClassname = \"story-video-intro \" + (isInline ? \"inline\" : \"\");\r\n var videoClassname = \"videofade \" + (loaded ? \"loaded\" :\"\");\r\n\r\n return (\r\n
\r\n {\r\n isVideo\r\n ?\r\n
\r\n \r\n \r\n
\r\n
\r\n :\r\n \r\n {\r\n imageBackground.Overlay\r\n &&\r\n \r\n }\r\n
\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default VideoIntro;\r\n","import React from 'react';\r\n\r\nimport './StoryHolder.scss';\r\n\r\nimport Story from '../Story/Story';\r\nimport VideoIntro from '../VideoIntro/VideoIntro';\r\n\r\nconst StoryHolder = ({ videoIntroData, isInline, size, topOffset }) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StoryHolder;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { IconContext } from 'react-icons/lib';\r\nimport { BsChevronDown } from 'react-icons/bs';\r\nimport Div100vh from 'react-div-100vh';\r\nimport { ADAWidgitRoles } from '../../../models/ADA';\r\nimport './CardHolder.scss';\r\n\r\nfunction CardHolder({ index, children, isInlineCard, cardHeight, isLightBg, onArrowClicked, hasArrow, active, specialClass }) {\r\n var classname = \r\n (isInlineCard ? 'home__story-section carousel-inline' : 'home__story-section carousel-fullscreen') + \r\n (isLightBg ? ' lightBg' : ' darkBg') + \r\n (specialClass ? ` ${specialClass}` : '');\r\n const inFullScreenVideo = useSelector(state => state.data.inFullScreenVideo);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n var innerDiv = (\r\n
\r\n {children}\r\n {hasArrow ? (\r\n {\r\n if (e.key === 'Enter' && e.target === document.activeElement) {\r\n onArrowClicked(index);\r\n }\r\n }}\r\n onClick={() => onArrowClicked(index)}\r\n />\r\n ) : null}\r\n
\r\n );\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {isInlineCard ? \r\n
\r\n {innerDiv}\r\n
:\r\n \r\n {innerDiv}\r\n \r\n }\r\n
\r\n
\r\n \r\n );\r\n}\r\nexport default CardHolder;\r\n","var _path, _path2, _path3;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIcnCompass = function SvgIcnCompass(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 36 36\",\n style: {\n enableBackground: \"new 0 0 36 36\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.9,18.9c0.5-0.5,0.5-1.3,0-1.8s-1.3-0.5-1.8,0s-0.5,1.3,0,1.8C17.6,19.4,18.4,19.4,18.9,18.9\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18,30.3c-6.8,0-12.3-5.5-12.3-12.3S11.2,5.7,18,5.7S30.3,11.2,30.3,18S24.8,30.3,18,30.3 M18,4C10.3,4,4,10.3,4,18 s6.3,14,14,14s14-6.3,14-14S25.8,4,18,4\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.2,13.8l-2.3,6.1l-6.1,2.3l2.3-6.1L22.2,13.8z M10.8,25.3l10.5-4l4-10.5l-10.5,4L10.8,25.3z\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcnCompass, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icn_compass.9f0f1a51.svg\";\nexport { ForwardRef as ReactComponent };","var _style, _circle, _polygon;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgBtnClose = function SvgBtnClose(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Isolation_Mode\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 64 64\",\n style: {\n enableBackground: \"new 0 0 64 64\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\r\\n\\t.st0{fill:#D9D9D9;}\\r\\n\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n className: \"st0\",\n cx: 32,\n cy: 32,\n r: 32\n })), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"44.4,16 32,28.4 19.6,16 16,19.6 28.4,32 16,44.4 19.6,48 32,35.6 44.4,48 48,44.4 35.6,32 48,19.6 \"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgBtnClose, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/btn-close.5e3490e6.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { BsX } from 'react-icons/bs';\r\nimport './ExternalLink.scss';\r\nimport { BsChevronDown } from 'react-icons/bs';\r\nimport { ReactComponent as CompassIcon } from '../../../assets/images/graphics/icn_compass.svg';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst ExternalLink = ({ index, text, link, isExternal, isInline }) => {\r\n const [expanded, setExpanded] = useState(false);\r\n const activeKey = useSelector(state => state.data.activeSlideKey);\r\n\r\n useEffect(() => {\r\n if (index !== activeKey) {\r\n setExpanded(false);\r\n }\r\n }, [activeKey, index]);\r\n\r\n if(isInline){\r\n return (\r\n
\r\n
\r\n {isExternal ? \r\n \r\n {text}\r\n \r\n \r\n :\r\n \r\n {text}\r\n \r\n \r\n }\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n setExpanded(!expanded)}\r\n >\r\n
\r\n \r\n
\r\n
\r\n {text}\r\n {isExternal ? \r\n \r\n Go\r\n \r\n :\r\n \r\n Go\r\n \r\n }\r\n
\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default ExternalLink;\r\n","import ReactGA from 'react-ga4';\r\nimport ReactDOM from 'react-dom';\r\nimport { createBrowserHistory } from 'history';\r\n\r\nconst INIT_GA = 'INIT_GA';\r\nconst SET_GA_TRACKING_ID = 'SET_GA_TRACKING_ID';\r\nconst REPORT_EVENT = 'REPORT_EVENT';\r\n\r\nconst defaultState = {\r\n trackingID: \"\",\r\n history:null\r\n};\r\n\r\nexport const initGA = data => {\r\n return {\r\n type: INIT_GA,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const setTrackingID = data => {\r\n return {\r\n type: SET_GA_TRACKING_ID,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const reportEvent = data => {\r\n return {\r\n type: REPORT_EVENT,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst gaReducer = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case SET_GA_TRACKING_ID:\r\n state.trackingID = action.payload.trackingID;\r\n ReactGA.initialize(action.payload.trackingID);\r\n return { ...state }\r\n case INIT_GA:\r\n\r\n if (action.payload) {\r\n state.trackingID = action.payload.trackingID;\r\n ReactGA.initialize(action.payload.trackingID);\r\n\r\n ReactGA.set({\r\n userId: \"visitor\",\r\n // any data that is relevant to the user session\r\n // that you would like to track with google analytics\r\n });\r\n \r\n state.history = createBrowserHistory({\r\n basename: process.env.PUBLIC_URL || '/'\r\n });\r\n state.history.listen(location => {\r\n ReactGA.set({ page: location.pathname }); // Update the user's current page\r\n ReactGA.send(location.pathname); // Record a pageview for the given page\r\n });\r\n }\r\n\r\n return { ...state }\r\n \r\n case REPORT_EVENT:\r\n ReactGA.event({\r\n category: action.payload.category,\r\n action: action.payload.action\r\n });\r\n return {...state }\r\n default:\r\n return state;\r\n }\r\n };\r\n \r\n\r\n\r\nexport default gaReducer;\r\n","import React from 'react';\r\nimport './Spinner.scss';\r\n\r\n\r\nconst Spinner = () => {\r\n \r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Spinner;\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n\r\nimport { useWindowSize } from '../../../models/Hooks';\r\nimport { calculateSize, getImageFilepath } from '../../../models/Utils';\r\nimport { ReactComponent as CloseBtn } from '../../../assets/images/graphics/btn-close.svg';\r\nimport './VideoSlide.scss';\r\nimport { setInFullScreenVideo } from '../../../store/reducers/mainReducer';\r\nimport { reportEvent } from '../../../store/reducers/gaReducer';\r\nimport Spinner from '../../Common/Spinner/Spinner';\r\nimport { ADAWidgitRoles } from '../../../models/ADA';\r\n\r\nconst VideoSlide = ({ data, active, playOnActive, closeButton, doNotHideLoading, forceShowControls, showPlayButton=true, canPlay=true, onPlaying }) => {\r\n const dispatch = useDispatch();\r\n const player = useRef(null);\r\n const [playing, setPlaying] = useState(true);\r\n const [loaded, setLoaded] = useState(false);\r\n const updateIntervalMs = 50;\r\n const [muted, setMuted] = useState(true);\r\n const [fullscreen, goToFullscreen] = useState(false);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n const size = useWindowSize();\r\n const dimensions = calculateSize(1920, 1080, size.width, size.height);\r\n\r\n useEffect(() => {\r\n clearTimeout(fadeTimeout);\r\n\r\n if (!active) {\r\n handleOnExit();\r\n \r\n setTimeout(() => {\r\n setPlaying(false);\r\n }, 1000);\r\n if (player.current && loaded) {\r\n player.current.seekTo(0, 'fraction');\r\n }\r\n setLoaded(false);\r\n } else {\r\n setPlaying(true);\r\n delayedFade();\r\n //if (playOnActive) {\r\n //goToFullscreen(true);\r\n //}\r\n }\r\n }, [active]);\r\n\r\n /* Video Events */\r\n function handleVideoStart() {\r\n if(active){\r\n setLoaded(true);\r\n }\r\n }\r\n\r\n var fadeTimeout;\r\n function delayedFade() {\r\n fadeTimeout = setTimeout(handleVideoStart, videoTimeout);\r\n }\r\n\r\n const handleOnExit = () => {\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n setMuted(true);\r\n if(onPlaying){\r\n onPlaying(false);\r\n }\r\n };\r\n\r\n const onPlayVideo = () => {\r\n goToFullscreen(true);\r\n dispatch(setInFullScreenVideo(true));\r\n dispatch(reportEvent({ category:\"VIDEO_PLAYED_PBP_SLIDE\", action: data.Text.Header + \" - \" + data.Video.URL}));\r\n setMuted(false);\r\n if(onPlaying){\r\n onPlaying(true);\r\n }\r\n };\r\n\r\n const handleOverlayClick = () => {\r\n setPlaying(!playing);\r\n }\r\n\r\n const videoURL = !fullscreen && data.Video.BackgroundMedia ? mediaPath + data.Video.BackgroundMedia : !fullscreen && data.VideoPreview ? data.VideoPreview.URL : data.Video.URL;\r\n console.log(\"video log\", data, videoURL)\r\n var video = (\r\n
\r\n \r\n
\r\n
\r\n );\r\n\r\n\r\n\r\n var imagePlaceholder = data.Video.BackgroundMedia ?\r\n ( 200 ? 200 : window.innerWidth * 0.4)}\r\n className=\"background-image\" />\r\n ) : null;\r\n\r\n var classname = 'video-placeholder ' + (loaded || doNotHideLoading ? 'loaded' : '');\r\n var fullscreenClass = 'video-fullscreen ' + (loaded || doNotHideLoading ? 'loaded' : '');\r\n\r\n\r\n return (\r\n
\r\n {fullscreen ? (\r\n
\r\n {active ? videoURL || data.Video.BackgroundMedia && data.Video.BackgroundMedia.split(\".\").pop() === \"mp4\" ? video : imagePlaceholder : null}\r\n {closeButton ? : null}\r\n
\r\n \r\n ) : (\r\n <>\r\n {data.Thumbnail && data.Thumbnail.Image ? (\r\n \r\n \r\n
\r\n ) : (\r\n <>\r\n
\r\n \r\n
{active ? videoURL || data.Video.BackgroundMedia && data.Video.BackgroundMedia.split(\".\").pop() === \"mp4\" ? video : imagePlaceholder : null}
\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default VideoSlide;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { CarouselProvider, Slider, Slide, DotGroup, ButtonNext } from 'pure-react-carousel';\r\nimport ReactPlayer from 'react-player';\r\nimport ExternalLink from '../../Common/ExternalLink/ExternalLink';\r\nimport VideoSlide from '../../PoweredByPurpose/VideoSlide/VideoSlide';\r\nimport './StoryCarousel.scss';\r\n\r\nimport { storyCardTypes, mixedMediaTypes, linkTypes } from '../../../models/Models';\r\nimport { calculateSize, formatParagraphs, getImageFilepath, getBackground } from '../../../models/Utils';\r\nimport { ADAARIARoles, ADALandmarks } from '../../../models/ADA';\r\n\r\nconst StoryCarousel = ({ cardData: card, isInline, size, forceInlineImage, preventScrolling, onScrollCallback, onScrollCompleteCallback }) => {\r\n const activeKey = useSelector(state => state.data.activeSlideKey);\r\n var dimensions = calculateSize(1920, 1080, size.width, size.height);\r\n const [isActive, setActiveState] = useState(false);\r\n const [currentSlide, setCurrentSlide] = useState(false);\r\n const [cardData, setCardData] = useState(false);\r\n const [loaded, setLoaded] = useState(false);\r\n const [isIdle, setIsIdle] = useState(true);\r\n const [touchLocX, setTouchLocX] = useState(0);\r\n const [lastTouchLocX, setLastTouchLocX] = useState(0);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const carouselRef = useRef(null);\r\n const controlRef = useRef(null);\r\n const videoRef = useRef(null);\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n\r\n useEffect(() => {\r\n delayedVideoFade();\r\n setIsIdle(true);\r\n\r\n if (cardData && activeKey === cardData.Key) {\r\n setActiveState(true); \r\n } else {\r\n setActiveState(false);\r\n }\r\n }, [activeKey, cardData]);\r\n\r\n useEffect(() => {\r\n setCardData(getSlideDataFromCard(card));\r\n }, [card]);\r\n\r\n function delayedVideoFade() {\r\n setTimeout(handleVideoStart, videoTimeout);\r\n }\r\n\r\n function handleCarouselInteraction(){\r\n setIsIdle(false);\r\n }\r\n\r\n function handleVideoStart() {\r\n setLoaded(true);\r\n }\r\n\r\n function handleNextButtonPress() {\r\n \r\n }\r\n\r\n useEffect(() => {\r\n if (!carouselRef.current || !controlRef.current) {\r\n return;\r\n }\r\n let checkForScroll = true;\r\n let maxDeltaX = 0;\r\n const handleScroll = e => {\r\n if(!isInline){\r\n e.preventDefault();\r\n }\r\n const scrollThreshold = 2;\r\n if (checkForScroll && Math.abs(e.deltaY) < Math.abs(e.deltaX)) {\r\n if (Math.abs(e.deltaX) > Math.abs(maxDeltaX) && Math.abs(maxDeltaX) <= scrollThreshold) {\r\n maxDeltaX = e.deltaX;\r\n } else {\r\n checkForScroll = false;\r\n if (Math.abs(maxDeltaX) > scrollThreshold) {\r\n const carouselContext = controlRef.current.context;\r\n setIsIdle(false);\r\n if (maxDeltaX > 0) {\r\n if (carouselContext.state.currentSlide < carouselContext.state.totalSlides - 1) {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: carouselContext.state.currentSlide + 1,\r\n });\r\n }\r\n } else {\r\n if (carouselContext.state.currentSlide > 0) {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: carouselContext.state.currentSlide - 1,\r\n });\r\n }\r\n }\r\n }\r\n maxDeltaX = 0;\r\n setTimeout(() => {\r\n checkForScroll = true;\r\n }, 1000);\r\n }\r\n }\r\n };\r\n\r\n // modern Chrome requires { passive: false } when adding event\r\n let supportsPassive = false;\r\n try {\r\n carouselRef.current.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n carouselRef.current.addEventListener(wheelEvent, handleScroll, wheelOpt); // modern desktop\r\n return () => {\r\n carouselRef.current.removeEventListener(wheelEvent, handleScroll);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (controlRef.current) {\r\n const onChange = () => {\r\n setCurrentSlide(controlRef.current.context.state.currentSlide);\r\n };\r\n controlRef.current.context.subscribe(onChange);\r\n return () => controlRef.current.context.unsubscribe(onChange);\r\n }\r\n }, [controlRef.current]);\r\n\r\n const getSlideDataFromCard = card => {\r\n let config = {};\r\n const className = Object.keys(storyCardTypes)[card.Type].toLowerCase();\r\n switch (card.Type) {\r\n case storyCardTypes.TEXT_CAROUSEL:\r\n config = {\r\n ...card,\r\n className,\r\n staticContent: {\r\n Header: card.Name,\r\n Body: card.Body,\r\n subHeader: card.Header,\r\n },\r\n slides: card.SimpleTextCarousel.map(s => ({\r\n ...s,\r\n })),\r\n };\r\n break;\r\n case storyCardTypes.TEXT_CAROUSEL_WITH_BG:\r\n let staticHeader = true;\r\n if (card.SimpleTextCarousel[0].Header) {\r\n for (let i = 1; i < card.SimpleTextCarousel.length; i++) {\r\n if (card.SimpleTextCarousel[0].Header !== card.SimpleTextCarousel[i].Header) {\r\n staticHeader = false;\r\n break;\r\n }\r\n }\r\n } else {\r\n staticHeader = false;\r\n }\r\n config = {\r\n ...card,\r\n className,\r\n staticContent: {\r\n Header: staticHeader ? card.SimpleTextCarousel[0].Header : '',\r\n image: getBackground(card),\r\n },\r\n slides: card.SimpleTextCarousel.map(s => ({\r\n ...s,\r\n Header: staticHeader ? '' : s.Header\r\n })),\r\n };\r\n if (!staticHeader && card.StaticTitle) {\r\n config.staticContent.Header = card.Name;\r\n config.className += ' static-title';\r\n }\r\n break;\r\n case storyCardTypes.TEXT_IMAGE_CAROUSEL:\r\n config = {\r\n ...card,\r\n className,\r\n slides: card.ImageTextCarousel.map(s => ({ ...s })),\r\n };\r\n break;\r\n case storyCardTypes.TEXT_VIDEO_CAROUSEL:\r\n config = {\r\n ...card,\r\n className,\r\n staticContent: {\r\n Header: card.Header,\r\n Video: card.BackgroundVideo,\r\n },\r\n slides: card.SimpleTextCarousel.map(s => ({ ...s })),\r\n };\r\n if (card.Header) {\r\n config.className += ' static-title';\r\n }\r\n break;\r\n case storyCardTypes.MIXED_MEDIA_CAROUSEL:\r\n config = {\r\n ...card,\r\n className,\r\n slides: (card.MixedMediaCarousel || []).map(s => ({\r\n ...s,\r\n Header: s.header && !s.Header ? s.header : s.Header,\r\n Background: s.Media.Type === mixedMediaTypes.IMAGE ? getBackground(s.Media) : null,\r\n Video: s.Media.Type === mixedMediaTypes.VIDEO ? s.Media.Video : null,\r\n })),\r\n };\r\n break;\r\n case storyCardTypes.AUDIO_PODCAST:\r\n config = {\r\n ...card,\r\n className,\r\n\r\n }\r\n break;\r\n case storyCardTypes.AUDIO_MISC:\r\n config = {\r\n ...card,\r\n className,\r\n\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return config;\r\n };\r\n\r\n const getExternalLink = () => {\r\n var link = cardData && cardData.Link && cardData.Link.HasLink ? cardData.Link : null;\r\n\r\n if(cardData.slides){\r\n for(var i = 0; i 0 && cardData.Key >= 0){\r\n var isExternal = link.Type === linkTypes.EXTERNAL;\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n \r\n\r\n const configData = useSelector(state => state.config);\r\n var externalLink = getExternalLink();\r\n\r\n var videoclass = 'background-video-holder ' + (loaded ? 'loaded' : '');\r\n\r\n //console.log(\"Is Scrolling? \", preventScrolling)\r\n return (\r\n

\r\n {cardData.staticContent && cardData.staticContent.Video ? (\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n \r\n {cardData.staticContent &&\r\n cardData.staticContent.image &&\r\n cardData.staticContent.image.Overlay && (\r\n
\r\n )}\r\n {cardData.staticContent &&\r\n cardData.staticContent.Video &&\r\n cardData.staticContent.Video.Overlay && (\r\n \r\n )}\r\n {cardData.staticContent && cardData.staticContent.Header && (\r\n
\r\n
\r\n

{cardData.staticContent.Header}

\r\n {cardData.staticContent.Body ? (\r\n
{formatParagraphs(cardData.staticContent.Body)}
\r\n ) : null}\r\n {cardData.staticContent.subHeader ? (\r\n

{cardData.staticContent.subHeader}

\r\n ) : null}\r\n
\r\n
\r\n )}\r\n {isInline && (!cardData.staticContent || (!cardData.staticContent.Header && !cardData.staticContent.Body)) &&\r\n ((cardData.Type === storyCardTypes.TEXT_CAROUSEL_WITH_BG) || \r\n (cardData.Type === storyCardTypes.TEXT_VIDEO_CAROUSEL)) ? (\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n {externalLink}\r\n \r\n\r\n {setTouchLocX(e.touches[0].clientX)}}\r\n onTouchMove={(e) => {if(Math.abs(e.touches[0].clientX - touchLocX ) >= 100){ //onScrollCallback(); \r\n } setLastTouchLocX(e.touches[0].clientX)}}//horizontal travel distance of at least 100px\r\n onTouchEnd={() => {\r\n if(!preventScrolling) {\r\n if(lastTouchLocX - touchLocX <= 100 && (controlRef.current.context.state.currentSlide < controlRef.current.context.state.totalSlides - 1) ){\r\n console.log(\"[StoryCarousel onTouchEnd] | x distance good for forwards\")\r\n controlRef.current.context.setStoreState({\r\n currentSlide: controlRef.current.context.state.currentSlide + 1,\r\n });\r\n }\r\n else if(lastTouchLocX - touchLocX > 100 && controlRef.current.context.state.currentSlide > 0){\r\n console.log(\"[StoryCarousel onTouchEnd] | x distance good for backwards\")\r\n controlRef.current.context.setStoreState({\r\n currentSlide: controlRef.current.context.state.currentSlide - 1,\r\n });\r\n }\r\n }\r\n else \r\n console.log(\"!!!VERTICAL SCROLLING PREVENTS HORIZONTAL SCROLLING\")\r\n onScrollCompleteCallback();\r\n }}\r\n dragEnabled= {false}//{!preventScrolling && (cardData.slides || []).length > 1}\r\n touchEnabled={false}//{!preventScrolling && (cardData.slides || []).length > 1}\r\n //style={{pointerEvents:preventScrolling ? 'none' : 'all'}}\r\n //isPlaying={isIdle && cardData.className !== 'mixed_media_carousel '}\r\n interval={10000}\r\n >\r\n \r\n\r\n \r\n {(cardData.slides || []).map((slide, i) => {\r\n const slideBackground = getBackground(slide);\r\n return (\r\n \r\n
\r\n {!forceInlineImage && slide.Video && size.width < 768 ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {slideBackground && slideBackground.Overlay ? (\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n {slide.Header ?

{slide.Header}

: null}\r\n {cardData.className === 'text_carousel_with_bg' &&\r\n cardData.staticContent &&\r\n cardData.staticContent.Header ? (\r\n

{cardData.staticContent.Header}

\r\n ) : null}\r\n {forceInlineImage && slideBackground && slideBackground.Image ? : null}\r\n {forceInlineImage && slide.Video && size.width < 768 ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n {slide.Subheader ?

{slide.Subheader}

: null}\r\n
\r\n {formatParagraphs(slide.Body)}\r\n
\r\n
\r\n
\r\n {isInline && slideBackground && slideBackground.Image && (\r\n \r\n )}\r\n {slide.Video && (\r\n
\r\n {size.width >= 768 && (\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n );\r\n })}\r\n
\r\n\r\n
\r\n
\r\n
\r\n {currentSlide !== (cardData.slides || []).length - 1 && { handleNextButtonPress() }} />}\r\n
\r\n
\r\n
\r\n \r\n 1 ? '' : 'hidden' }}\r\n />\r\n
\r\n

\r\n );\r\n};\r\n\r\nexport default StoryCarousel;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getImageFilepath, formatParagraphs, getBackground } from '../../../models/Utils';\r\nimport { useWindowSize } from '../../../models/Hooks';\r\n\r\nimport './QuoteStory.scss';\r\nimport { ADAARIARoles, ADALandmarks } from '../../../models/ADA';\r\n\r\nconst QuoteStory = ({ cardData, isInline }) => {\r\n const window = useWindowSize();\r\n const configData = useSelector(state => state.config);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const lines = cardData.QuoteAttribution && cardData.QuoteAttribution.split(',');\r\n const author = (lines[0] || '').trim();\r\n const position = (lines[1] || '').trim();\r\n const company = (lines[2] || '').trim();\r\n\r\n const cardBackground = getBackground(cardData);\r\n\r\n var classname = 'quote-story' + (cardData.className || '' + isInline ? \" inline\" : \"\");\r\n\r\n return (\r\n
\r\n \r\n {cardBackground.Overlay ? (\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n {formatParagraphs(cardData.Body)}\r\n

\r\n {author && (\r\n \r\n {author}\r\n {company || position ? ',' : ''}\r\n \r\n )}\r\n {company && (\r\n \r\n {company}\r\n {position ? ',' : ''}\r\n \r\n )}\r\n {position && {position}}\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default QuoteStory;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { formatParagraphs, getPodcastImage } from '../../../models/Utils';\r\nimport { ADAARIARoles, ADAWidgitRoles, ADALandmarks } from '../../../models/ADA';\r\nimport PlayButton from '../../../assets/images/buttons/btn_play.svg';\r\n\r\n\r\nimport './AudioBase.scss';\r\n\r\nconst AudioBase = ({type, cardData, onPlay, controls }) => {\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n var dividerClass = 'divider hidden';\r\n\r\n const podcastImage = getPodcastImage(cardData);\r\n\r\n return (\r\n\r\n
\r\n {podcastImage && podcastImage.Image ? (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n ) : (//no image found\r\n <>\r\n \r\n \r\n )}\r\n
\r\n {controls}\r\n
\r\n\r\n\r\n //
\r\n //
{type}
\r\n //
{title}
\r\n //
:
\r\n //
{formatParagraphs(subtitle)}
\r\n //
\r\n //
\r\n );\r\n};\r\n\r\nexport default AudioBase;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport './MediaControls.scss';\r\n\r\nimport PlayButton from '../../../assets/images/buttons/btn_video-play_small.png';\r\nimport PauseButton from '../../../assets/images/buttons/btn_video-pause.png';\r\nimport NextButton from '../../../assets/images/buttons/btn_video-next.png';\r\nimport MutedButton from '../../../assets/images/buttons/btn_video-mute.png';\r\nimport MuteButton from '../../../assets/images/buttons/btn_video-volume.png';\r\nimport MinimizeButton from '../../../assets/images/buttons/btn_video-minimize.png';\r\n\r\nconst MediaControls = props => {\r\n\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n var sliderInnerStyle = {\r\n width: props.progress * 100 + '%',\r\n transition: props.updateInterval + 'ms'\r\n };\r\n\r\n const handleSliderClicked = data => {\r\n if (data && data.target) {\r\n var scrubBounds = data.target.getBoundingClientRect();\r\n var x = data.pageX - scrubBounds.left;\r\n var width = scrubBounds.width;\r\n props.onScrub(x / width);\r\n }\r\n };\r\n\r\n const handlePlayClicked = data => {\r\n props.onPlay();\r\n };\r\n\r\n const handleVolumeClicked = data => {\r\n props.onMute();\r\n };\r\n\r\n const handleMinimize = data => {\r\n props.onMinimize();\r\n };\r\n\r\n function getTimestamp() {\r\n var cur = toHHMMSS(props.progress * props.duration);\r\n var dur = toHHMMSS(props.duration);\r\n return (\r\n <>\r\n {cur}/{dur}\r\n \r\n );\r\n }\r\n\r\n function toHHMMSS(secs) {\r\n var sec_num = parseInt(secs, 10);\r\n var hours = Math.floor(sec_num / 3600);\r\n var minutes = Math.floor(sec_num / 60) % 60;\r\n var seconds = sec_num % 60;\r\n\r\n return [hours, minutes, seconds]\r\n .map(v => (v < 10 ? '0' + v : v))\r\n .filter((v, i) => v !== '00' || i > 0)\r\n .join(':');\r\n }\r\n\r\n return (\r\n
\r\n {props.captions}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {/* \"Next */}\r\n
{getTimestamp()}
\r\n \r\n {/* */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MediaControls;\r\n","import React, { memo } from \"react\";\r\nimport { Duration } from \"luxon\";\r\n\r\nexport function getFormat(total) {\r\n const totalDuration = Duration.fromMillis(total);\r\n const format = \"yy:MM:dd:hh:mm:ss\";\r\n\r\n // Lets get our total, but with all our possible values\r\n const totalFormatted = totalDuration.toFormat(format);\r\n // We're going to split up our formatted string, strip leading zeros,\r\n // then get the index of the first section without a zero value\r\n const firstIndexWithoutZero = totalFormatted\r\n .split(\":\")\r\n .map(value => +value.replace(/^0/))\r\n .findIndex(numeric => numeric > 0);\r\n\r\n const formatSplit = format.split(\":\"),\r\n // Use mm:ss if total is wack\r\n indexToSplitFrom =\r\n firstIndexWithoutZero === -1\r\n ? formatSplit.length - 2\r\n : firstIndexWithoutZero;\r\n return formatSplit.slice(indexToSplitFrom).join(\":\");\r\n}\r\n\r\nexport default memo(function time({ start, end = undefined, format }) {\r\n const startDuration = Duration.fromMillis(start),\r\n endDuration = end && Duration.fromMillis(end);\r\n const startFormatted = startDuration.toFormat(format),\r\n endFormatted = end && endDuration.toFormat(format);\r\n return (\r\n
\r\n {startFormatted}\r\n {end ? ` - ${endFormatted}` : undefined}\r\n
\r\n );\r\n});","import React, { memo, Fragment } from \"react\";\r\n\r\nexport default memo(function time({ text }) {\r\n return (\r\n
\r\n {\r\n text ?\r\n text\r\n .split(\"\\n\")\r\n .map(\r\n (item, index, array) => (\r\n \r\n {item}\r\n {\r\n (index + 1) !== array.length ?
: undefined\r\n }\r\n
\r\n )\r\n )\r\n :null\r\n }\r\n
\r\n )\r\n});","import React, { memo, useEffect, useState } from \"react\";\r\n\r\nimport CaptionTime, {getFormat} from \"./util_time\";\r\nimport CaptionText from \"./util_text\";\r\nimport { parse, map, stringify } from 'subtitle';\r\n\r\nfunction Caption({ start, end = undefined, format, text}) {\r\n return (\r\n
\r\n {/* */}\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction getFormatFromList(captions) {\r\n if (!captions.length) return \"mm:ss\";\r\n return getFormat(captions[captions.length - 1].end);\r\n}\r\n\r\nfunction shouldUseEnd(end, index, captions) {\r\n const nextCaption = captions[index + 1];\r\n if (!nextCaption) {\r\n return false; // The end of the video\r\n }\r\n // Captions usually follow the rule where if they\r\n // are continous, the next caption starts at the next millisecoond\r\n return end !== nextCaption.start && end + 1 !== nextCaption.start;\r\n}\r\n\r\nexport default memo(function Captions({ captions, progress, duration }) {\r\n const format = getFormatFromList(captions);\r\n return (\r\n
\r\n {captions.map((caption, index) => {\r\n if (caption.data.start != undefined && progress * duration * 1000 > caption.data.start && progress * duration * 1000 <= caption.data.end) {\r\n \r\n const endToUse = shouldUseEnd(caption.data.end, index, captions) ? caption.data.end : undefined;\r\n return ;\r\n }\r\n })}\r\n
\r\n );\r\n});","import React, { useMemo } from \"react\";\r\nimport { parseSync } from \"subtitle\";\r\nimport Captions from \"./util/util_caption\";\r\nimport './VTTReader.scss'\r\n\r\nexport default function VTTReader({ raw, progress, duration}) {\r\n const parsed = parseSync(raw);\r\n return ;\r\n} ","import React, { useRef, useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport ReactAudioPlayer from 'react-audio-player';\r\nimport { calculateSize, formatParagraphs, getPodcastImage } from '../../../models/Utils';\r\nimport { setMediaState } from '../../../store/reducers/mainReducer';\r\nimport Button from '../../Common/Button/Button';\r\n\r\nimport AudioBase from '../AudioBase/AudioBase';\r\nimport MediaControls from '../../Common/MediaControls/MediaControls';\r\nimport VTTReader from '../../Common/VTTReader/VTTReader';\r\nimport PlayButton from '../../../assets/images/buttons/btn_play.svg';\r\nimport PauseButton from '../../../assets/images/buttons/btn_pause.svg';\r\nimport { ADAARIARoles, ADAWidgitRoles, ADALandmarks } from '../../../models/ADA';\r\n\r\nimport './AudioClip.scss';\r\n\r\nconst AudioClip = ({ isActive, cardData, isInline, size }) => {\r\n const dispatch = useDispatch();\r\n const [fullscreen, goToFullscreen] = useState(false);\r\n const activeKey = useSelector(state => state.data.activeSlideKey);\r\n const [playing, setPlaying] = useState(false);\r\n const [progress, setProgress] = useState(0);\r\n const [duration, setDuration] = useState(0);\r\n const [muted, setMuted] = useState(false);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const [VTTCaptions, setVTTCaptions] = useState(null)\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const updateIntervalMs = 50;\r\n const audioRef = useRef(null);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n useEffect(() => {\r\n if(activeKey === cardData.Key){\r\n reset();\r\n fetch(mediaPath + cardData.VTTCaptions)\r\n .then(res => res.blob())\r\n .then(result => result.text())\r\n .then( vtt =>{\r\n setIsLoaded(true);\r\n setVTTCaptions(vtt);\r\n });\r\n \r\n } else {\r\n setPlaying(false);\r\n setMuted(true);\r\n goToFullscreen(false);\r\n }\r\n }, [activeKey]);\r\n\r\n useEffect(() => {\r\n dispatch(setMediaState(playing));\r\n }, [playing]);\r\n\r\n\r\n const handleButtonClicked = data => {\r\n if(playing){\r\n goToFullscreen(false);\r\n setPlaying(false);\r\n pause();\r\n } else {\r\n goToFullscreen(true);\r\n setPlaying(true);\r\n setMuted(false);\r\n play();\r\n }\r\n seek(0);\r\n };\r\n\r\n const reset = prop => {\r\n setPlaying(false);\r\n pause();\r\n setMuted(true);\r\n goToFullscreen(false);\r\n };\r\n\r\n const togglePlay = prop => {\r\n if (playing) {\r\n pause();\r\n } else {\r\n play();\r\n }\r\n };\r\n\r\n const play = prop => {\r\n if (\r\n audioRef &&\r\n audioRef.current &&\r\n audioRef.current.audioEl &&\r\n audioRef.current.audioEl.current\r\n ) {\r\n audioRef.current.audioEl.current.play();\r\n }\r\n };\r\n\r\n const pause = prop => {\r\n if (\r\n audioRef &&\r\n audioRef.current &&\r\n audioRef.current.audioEl &&\r\n audioRef.current.audioEl.current\r\n ) {\r\n audioRef.current.audioEl.current.pause();\r\n }\r\n };\r\n\r\n const seek = val => {\r\n if (\r\n audioRef &&\r\n audioRef.current &&\r\n audioRef.current.audioEl &&\r\n audioRef.current.audioEl.current\r\n ) {\r\n audioRef.current.audioEl.current.currentTime = val * duration;\r\n setProgress(val)\r\n }\r\n };\r\n\r\n /* Control Events */\r\n const handlePlayClicked = prop => {\r\n togglePlay();\r\n if(muted)\r\n setMuted(false);\r\n setPlaying(!playing);\r\n };\r\n\r\n const handleMuteClicked = prop => {\r\n setMuted(!muted);\r\n };\r\n\r\n const handleMinimizeClicked = prop => {\r\n reset();\r\n };\r\n\r\n const handleSliderClicked = prop => {\r\n seek(prop);\r\n };\r\n\r\n /* Audio Events */\r\n const handleProgress = seconds => {\r\n setProgress(seconds / duration);\r\n };\r\n\r\n const handleDuration = prop => {\r\n if (\r\n audioRef &&\r\n audioRef.current &&\r\n audioRef.current.audioEl &&\r\n audioRef.current.audioEl.current\r\n ) {\r\n var duration = audioRef.current.audioEl.current.duration;\r\n setDuration(duration);\r\n }\r\n };\r\n\r\n const handleOnEnded = prop => {\r\n reset();\r\n };\r\n\r\n const handleSubscribeClicked = data => {\r\n window.open(cardData.SubscribeURL, '_blank');\r\n };\r\n\r\n var dimensions = calculateSize(1920, 1080, size.width, size.height);\r\n\r\n var src = cardData.ListenURL ? cardData.ListenURL : mediaPath + cardData.AudioClip;\r\n\r\n var audio = (\r\n \r\n );\r\n\r\n var podcastImage = getPodcastImage(cardData);\r\n var opacityStyle = {\r\n opacity: podcastImage.Opacity ? podcastImage.Opacity : 1,\r\n };\r\n var classname = \" audio-wrapper \" + (isInline ? \"inline\" : \"\");\r\n\r\n var captions = VTTCaptions ? : null\r\n var controls = ;\r\n\r\n return (\r\n
\r\n {\r\n (<>\r\n
\r\n
\r\n \r\n {cardData.Header?

{cardData.Header}

: null}\r\n \r\n
\r\n {formatParagraphs(cardData.Subheader)}\r\n
\r\n\r\n {cardData.SubscribeURL ?\r\n
\r\n \r\n
\r\n :null\r\n }\r\n
\r\n
\r\n \r\n \r\n {audio}\r\n \r\n \r\n )}\r\n \r\n {/* <>\r\n
\r\n
\r\n \r\n {audio}\r\n
\r\n
\r\n \r\n
\r\n
Play button
\r\n
\r\n */}\r\n \r\n {/*
\r\n \r\n \r\n
\r\n {audio}\r\n {fullscreen ? (\r\n \r\n ) : null}*/}\r\n
\r\n );\r\n};\r\n\r\nexport default AudioClip;\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport ReactPlayer from 'react-player';\r\nimport { ReactComponent as CloseBtn } from '../../../assets/images/graphics/btn-close.svg';\r\nimport { calculateSize, formatParagraphs, getImageFilepath } from '../../../models/Utils';\r\nimport { setMediaState, setInFullScreenVideo } from '../../../store/reducers/mainReducer';\r\nimport { reportEvent } from '../../../store/reducers/gaReducer';\r\nimport './Video.scss';\r\nimport Spinner from '../../Common/Spinner/Spinner';\r\nimport { ADAARIARoles, ADAWidgitRoles, ADALandmarks } from '../../../models/ADA';\r\n\r\nconst Video = ({ cardData, isInline, size }) => {\r\n const dispatch = useDispatch();\r\n const player = useRef(null);\r\n const activeKey = useSelector(state => state.data.activeSlideKey);\r\n const [playing, setPlaying] = useState(true);\r\n const [loaded, setLoaded] = useState(false);\r\n const updateIntervalMs = 50;\r\n const [muted, setMuted] = useState(true);\r\n const [fullscreen, goToFullscreen] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n useEffect(() => {\r\n clearTimeout(fadeTimeout);\r\n\r\n if (cardData && activeKey === cardData.Key) {\r\n delayedFade();\r\n reset();\r\n } else {\r\n setMuted(true);\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n setTimeout(() => {\r\n setPlaying(false);\r\n }, 1000);\r\n }\r\n }, [activeKey]);\r\n\r\n useEffect(() => {\r\n dispatch(setMediaState(fullscreen));\r\n }, [fullscreen]);\r\n\r\n const handleMaximizeClicked = prop => {\r\n goToFullscreen(true);\r\n setMuted(false);\r\n dispatch(setInFullScreenVideo(true));\r\n dispatch(reportEvent({ category:\"VIDEO_PLAYED_DIGITAL_MUSEUM_SLIDE\", action: cardData.Header + \" - \" + cardData.BackgroundVideo.URL}));\r\n };\r\n\r\n const reset = prop => {\r\n //player.current.seekTo(0, 'fraction');\r\n setPlaying(true);\r\n setMuted(true);\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n };\r\n\r\n /* Video Events */\r\n\r\n const handleOnEnded = prop => {\r\n reset();\r\n };\r\n\r\n var fadeTimeout;\r\n function delayedFade() {\r\n fadeTimeout = setTimeout(handleVideoStart, videoTimeout);\r\n }\r\n\r\n\r\n function handleVideoStart() {\r\n setLoaded(true);\r\n let iframe = document.querySelector(\"iframe\");\r\n iframe.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n\r\n const handleOnExit = () => {\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n setMuted(true);\r\n };\r\n\r\n var dimensions = calculateSize(1920, 1080, size.width, size.height);\r\n\r\n var video = (\r\n \r\n );\r\n\r\n var imagePlaceholder = cardData.BackgroundVideo.BackgroundMedia ? (\r\n \r\n ) : null;\r\n\r\n var opacityStyle = {\r\n backgroundColor: cardData.VideoPreview.Overlay ? cardData.VideoPreview.Overlay : 'black',\r\n opacity: cardData.VideoPreview.Opacity ? cardData.VideoPreview.Opacity : 1,\r\n };\r\n\r\n const handleOverlayClick = () => {\r\n setPlaying(!playing);\r\n }\r\n\r\n var outerClassname = 'story-video ' + (isInline ? \"inline\" : \"\");\r\n var videoClassname = 'videofadein ' + (loaded ? 'loaded' : '');\r\n\r\n //console.log(\"[Digital Museum - Video]\", cardData)\r\n\r\n return (\r\n
\r\n {fullscreen === false ? (\r\n <>\r\n
\r\n
\r\n {!cardData.VideoPreview.BackgroundMedia || cardData.VideoPreview.BackgroundMedia.length === 0 ?\r\n video\r\n : (cardData.VideoPreview.BackgroundMedia.split(\".\").pop() === \"mp4\" ? video : imagePlaceholder)}\r\n
\r\n
\r\n
\r\n
{cardData.Header}
\r\n
:
\r\n
{formatParagraphs(cardData.Body)}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n ) : null}\r\n {fullscreen ? (\r\n
\r\n {video}\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default Video;\r\n","import React from 'react';\r\nimport {useDispatch, useSelector } from 'react-redux';\r\nimport './PollOption.scss';\r\nimport { reportEvent } from '../../../store/reducers/gaReducer';\r\nimport Checkmark from '../../../assets/images/graphics/icn_checkmark.png';\r\nimport Button from '../../Common/Button/Button';\r\n\r\nimport { getImageFilepath, hexToRgb } from '../../../models/Utils';\r\n\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\n\r\nconst PollOption = props => {\r\n const dispatch = useDispatch();\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n\r\n const handlePollClicked = e => {\r\n if (props.choice < 0) {\r\n props.onClick(props.dataKey);\r\n dispatch(reportEvent({ category:\"POLL_ANSWERED - \" + props.pollQuestion, action:props.text}));\r\n }\r\n };\r\n\r\n const background = props.background;\r\n const outerStyle = {\r\n width: props.width,\r\n transitionDelay: props.index * 0.2 + 's',\r\n };\r\n let innerStyle = {\r\n backgroundImage: background.Image\r\n ? 'url(\"' + mediaPath + getImageFilepath(background.Image) + '\")'\r\n : '',\r\n width: props.tally ? 'calc(100% - 140px)' : '100%',\r\n };\r\n let buttonSize = isPortrait === false ? 'btn--medium' : 'btn--small';\r\n let button = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{props.text}
\r\n {props.choice < 0 ?
{button}
: null}\r\n {props.choice === props.dataKey ? (\r\n
\r\n {\"Selected\r\n
Your choice
\r\n
\r\n ) : null}\r\n
\r\n
\r\n {props.tally ? (\r\n
\r\n
\r\n
{props.tally}
\r\n
Chose this
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default PollOption;\r\n","import React, { useRef, useEffect, useState } from 'react';\r\nimport './VenetianBlindsText.scss';\r\n\r\nconst VenetianBlindsText = ({ show, delay = 0 }) => {\r\n const [visible, setVisible] = useState(false);\r\n const [spans, setSpans] = useState(0);\r\n const [lineHeight, setLineHeight] = useState(30);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n if(delay > 0 && show){\r\n setTimeout(() => {\r\n setVisible(show);\r\n }, delay * 1000);\r\n } else {\r\n setVisible(show);\r\n }\r\n }, [show]);\r\n\r\n useEffect(() => {\r\n if (ref.current && ref.current.parentElement) {\r\n var lHeight = getStyle(ref.current.parentElement, 'line-height');\r\n setLineHeight(lHeight);\r\n setTimeout(() => {\r\n if (ref.current && ref.current.parentElement) {\r\n setSpans(Math.round(ref.current.parentElement.offsetHeight / lHeight));\r\n } else {\r\n setSpans(0);\r\n }\r\n }, 500);\r\n }\r\n }, [ref]);\r\n\r\n const getStyle = x => {\r\n let y;\r\n if (x.currentStyle) {\r\n y = x.currentStyle['line-height'];\r\n } else if (window.getComputedStyle) {\r\n y = document.defaultView.getComputedStyle(x, null).getPropertyValue('line-height');\r\n }\r\n if (y.indexOf('px')) {\r\n y = +y.replace('px', '');\r\n }\r\n return y;\r\n };\r\n\r\n return (\r\n \r\n {spans\r\n ? [...Array(spans).keys()].map(i => (\r\n \r\n ))\r\n : null}\r\n \r\n );\r\n};\r\n\r\nexport default VenetianBlindsText;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport './UserPoll.scss';\r\n\r\nimport PollOption from '../../Common/PollOption/PollOption';\r\nimport VenetianBlindsText from '../../Common/VenetianBlindsText/VenetianBlindsText';\r\n\r\nimport { parseResults, getBackground } from '../../../models/Utils';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\nconst Poll = ({ cardData, isInline }) => {\r\n const [choice, setPollChoice] = useState(-1);\r\n let [animationPlaying, setAnimationPlaying] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const activeSlideKey = useSelector(state => state.data.activeSlideKey);\r\n const pollServer = useSelector(state => state.config.pollServer);\r\n const [results, setResults] = useState();\r\n\r\n useEffect(() => {\r\n\r\n fetch(pollServer.basePath + pollServer.endPoint + cardData.Key).then(res => res.json())\r\n .then((data) => {\r\n console.log(\"[USER POLL] Polling data received: \",data);\r\n setResults(parseResults(cardData.VoteOptions, data));\r\n })\r\n .catch((error) => {\r\n console.log(\"[USER POLL] Failed to Receive Data\");\r\n console.log(error);\r\n setResults(parseResults(cardData.VoteOptions, null));\r\n });\r\n }, []);\r\n\r\n const handleClicked = key => {\r\n setPollChoice(key);\r\n\r\n var json = {\r\n id: cardData.Key,\r\n answerId: key\r\n };\r\n fetch(pollServer.basePath + pollServer.endPoint, \r\n {\r\n method: \"POST\", \r\n cache: \"no-cache\", \r\n body: JSON.stringify(json),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (activeSlideKey === cardData.Key) {\r\n setAnimationPlaying(true);\r\n setTimeout(() => setAnimationPlaying(false), 750);\r\n }\r\n }, [activeSlideKey, cardData]);\r\n\r\n var votes = [];\r\n if (cardData && cardData.VoteOptions) {\r\n for (var i = 0; i < cardData.VoteOptions.length; i++) {\r\n var voteOption = cardData.VoteOptions[i];\r\n var result = results ? results.find(e => e.key === voteOption.Key) : null;\r\n var key = voteOption.Key;\r\n votes.push(\r\n \r\n );\r\n }\r\n }\r\n\r\n var classname = \"user-poll \" + (isInline ? \"inline\" : \"\");\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
{cardData.Header}
\r\n
\r\n
\r\n
{votes}
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Poll;\r\n","import React, {\r\n useEffect,\r\n forwardRef,\r\n useRef,\r\n useImperativeHandle,\r\n useState,\r\n useCallback,\r\n} from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport * as THREE from 'three';\r\nimport { DotGroup, Dot, ButtonNext, ButtonBack } from 'pure-react-carousel';\r\nimport { Swipeable } from 'react-swipeable';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\r\nimport ExternalLink from '../../Common/ExternalLink/ExternalLink';\r\nimport VenetianBlindsText from '../../Common/VenetianBlindsText/VenetianBlindsText';\r\nimport { linkTypes, scene3DAnimationType, swipeDirection, swipeType } from '../../../models/Models';\r\nimport { useSwipeEvent } from '../../../models/Hooks';\r\n\r\nimport './Scene3D.scss';\r\nimport { PMREMGenerator } from 'three';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\nconst Scene3D = forwardRef(\r\n ({ cardData: card, onGoToNextSlide, onGoToPrevSlide, isInline, size }, ref) => {\r\n let [currentView, setCurrentView] = useState(1);\r\n let [animationPlaying, setAnimationPlaying] = useState(false);\r\n let [model, setModel] = useState(null);\r\n let [loadingP, setLoadingP] = useState(0);\r\n let scene = useRef(new THREE.Scene());\r\n let [isSceneSetup, setIsSceneSetup] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n scene.current.background = new THREE.Color(0xffffff);\r\n const renderer = useRef(null);\r\n const camera = useRef(null);\r\n const canvasRef = useRef(null);\r\n const controlRef = useRef(null);\r\n const animationSpeed = 0.75;\r\n\r\n const scale = 62;\r\n let resizeTimer = null;\r\n let animationTimer = null;\r\n const views = [\r\n {\r\n rotation: 0,\r\n position: { x: 0, y: 0, z: 0 },\r\n },\r\n {\r\n rotation: -Math.PI / 3,\r\n position: { x: 0, y: 0, z: 0 },\r\n },\r\n {\r\n rotation: (-5 * Math.PI) / 6,\r\n position: { x: 0, y: 0, z: 0 },\r\n },\r\n ];\r\n\r\n const objectRef = useRef(null);\r\n const sceneRef = useRef(null);\r\n const activeSlideKey = useSelector(state => state.data.activeSlideKey);\r\n const configData = useSelector(state => state.config);\r\n\r\n const sceneSetup = useCallback(() => {\r\n renderer.current = new THREE.WebGLRenderer({ antialias: true, canvas: canvasRef.current });\r\n \r\n var pmrem = new PMREMGenerator(renderer.current);\r\n\r\n const width = size.width;\r\n let elSize;\r\n if (width >= 768) {\r\n elSize = width / 2 > 600 ? 600 : width / 2;\r\n camera.current = new THREE.PerspectiveCamera(\r\n 75, // fov = field of view\r\n 1, // aspect ratio\r\n 0.1, // near plane\r\n 300 // far plane\r\n );\r\n } else {\r\n elSize = width > 600 ? 600 : width;\r\n camera.current = new THREE.PerspectiveCamera(\r\n 75, // fov = field of view\r\n 1, // aspect ratio\r\n 0.1, // near plane\r\n 300 // far plane\r\n );\r\n }\r\n\r\n renderer.current.setSize(elSize, elSize);\r\n\r\n const dirLight1 = new THREE.DirectionalLight(0xffffff, 5);\r\n dirLight1.position.set(0, 0, 5);\r\n scene.current.add(dirLight1);\r\n const dirLight2 = new THREE.DirectionalLight(0xffffff, 5);\r\n dirLight2.position.set(-5, 3, -2);\r\n scene.current.add(dirLight2);\r\n scene.current.add(new THREE.AmbientLight(0xffffff, 10));\r\n\r\n camera.current.position.x = 0;\r\n camera.current.position.y = 0;\r\n camera.current.position.z = 6;\r\n sceneRef.current.appendChild(renderer.current.domElement); // mount using React ref\r\n\r\n renderer.current.render(scene.current, camera.current);\r\n window.addEventListener('resize', handleWindowResize);\r\n\r\n const loader = new GLTFLoader();\r\n\r\n // load a resource\r\n loader.load(\r\n // resource URL relative to the /public/index.html of the app\r\n configData.basePath + configData.apiMediaPath + card.Object,\r\n // '/verizon-9-digital-museum/gltf/' + card.Object,\r\n // called when resource is loaded\r\n object => {\r\n console.log('obj: ', object);\r\n scene.current.add(object.scene);\r\n object.scene.scale.set(scale, scale, scale);\r\n\r\n // make this element available inside of the whole component to do any animation later\r\n // object.scene.rotation.z = Math.PI / 2;\r\n object.scene.rotation.y = views[0].rotation;\r\n object.scene.position.x = views[0].position.x;\r\n object.scene.position.y = views[0].position.y;\r\n object.scene.position.z = views[0].position.z;\r\n setModel(object.scene);\r\n\r\n renderer.current.render(scene.current, camera.current);\r\n },\r\n // called when loading is in progress\r\n xhr => {\r\n const loadingPercentage = Math.ceil((xhr.loaded / xhr.total) * 100);\r\n setLoadingP(loadingPercentage);\r\n console.log(loadingPercentage + '% loaded');\r\n },\r\n // called when loading has errors\r\n error => {\r\n console.log('An error happened: ' + error);\r\n }\r\n );\r\n });\r\n\r\n const handleWindowResize = useCallback(() => {\r\n if (resizeTimer) {\r\n clearTimeout(resizeTimer);\r\n }\r\n resizeTimer = setTimeout(() => {\r\n const width = sceneRef.current.clientWidth;\r\n let size;\r\n if (width >= 768) {\r\n size = width / 2 > 600 ? 600 : width / 2;\r\n } else {\r\n size = width > 600 ? 600 : width;\r\n }\r\n renderer.current.setSize(size, size );\r\n camera.current.updateProjectionMatrix();\r\n }, 50);\r\n }, [sceneRef]);\r\n\r\n const scheduleAnimation = useCallback(\r\n (position, rotation) => {\r\n let duration = 500; //ms\r\n let frame = 30; //ms\r\n let step = 0;\r\n let rStep = (rotation - model.rotation.y) / (duration / frame);\r\n let xStep = (position.x - model.position.x) / (duration / frame);\r\n let yStep = (position.y - model.position.y) / (duration / frame);\r\n let zStep = (position.z - model.position.z) / (duration / frame);\r\n\r\n return new Promise(resolve => {\r\n if (!animationPlaying) {\r\n animationTimer = setInterval(() => {\r\n setAnimationPlaying(true);\r\n model.rotation.y += rStep;\r\n model.position.x += xStep;\r\n model.position.y += yStep;\r\n model.position.z += zStep;\r\n step++;\r\n\r\n if (step * frame >= duration) {\r\n model.rotation.y = rotation;\r\n model.position.x = position.x;\r\n model.position.y = position.y;\r\n model.position.z = position.z;\r\n setTimeout(() => setAnimationPlaying(false), 100);\r\n\r\n clearInterval(animationTimer);\r\n resolve(true);\r\n }\r\n\r\n renderer.current.render(scene.current, camera.current);\r\n }, frame);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n },\r\n [model, animationPlaying]\r\n );\r\n\r\n const reset = useCallback(() => {\r\n if (model && renderer.current && scene.current && camera.current) {\r\n model.rotation.y = views[0].rotation;\r\n model.position.x = views[0].position.x;\r\n model.position.y = views[0].position.y;\r\n model.position.z = views[0].position.z;\r\n setCurrentView(1);\r\n renderer.current.render(scene.current, camera.current);\r\n }\r\n }, [model]);\r\n\r\n const animate = useCallback(\r\n direction => {\r\n if (!animationPlaying && model) {\r\n let nextView;\r\n if (direction === scene3DAnimationType.FORWARD && currentView < 3) {\r\n nextView = currentView + 1;\r\n }\r\n if (direction === scene3DAnimationType.BACKWARD && currentView > 1) {\r\n nextView = currentView - 1;\r\n }\r\n scheduleAnimation(views[nextView - 1].position, views[nextView - 1].rotation).then(r => {\r\n if (r) {\r\n setCurrentView(nextView);\r\n }\r\n });\r\n }\r\n },\r\n [model, animationPlaying, currentView, scheduleAnimation]\r\n );\r\n\r\n const handleSwipeDown = useCallback(() => {\r\n if (animationPlaying) return;\r\n if (currentView === 1 || !model) {\r\n onGoToPrevSlide();\r\n reset();\r\n } else {\r\n animate(scene3DAnimationType.BACKWARD);\r\n }\r\n }, [currentView, onGoToPrevSlide, animate, model, animationPlaying]);\r\n\r\n const handleSwipeUp = useCallback(() => {\r\n if (animationPlaying) return;\r\n if (currentView === 3 || !model) {\r\n onGoToNextSlide();\r\n reset();\r\n } else {\r\n animate(scene3DAnimationType.FORWARD);\r\n }\r\n }, [currentView, onGoToNextSlide, animate, model, animationPlaying]);\r\n\r\n useEffect(() => {\r\n if (!isSceneSetup) {\r\n console.log('set scene');\r\n setIsSceneSetup(true);\r\n sceneSetup();\r\n }\r\n\r\n if (activeSlideKey !== card.Key) {\r\n setTimeout(() => {\r\n setCurrentView(1);\r\n if (model) {\r\n // model.rotation.z = -Math.PI / 2;\r\n model.rotation.y = views[0].rotation;\r\n model.position.x = views[0].position.x;\r\n model.position.y = views[0].position.y;\r\n model.position.z = views[0].position.z;\r\n }\r\n }, animationSpeed * 1000);\r\n }\r\n return () => {\r\n // window.cancelAnimationFrame(requestID);\r\n window.removeEventListener('resize', handleWindowResize);\r\n clearInterval(animationTimer);\r\n if (model && model.dispose) model.dispose();\r\n };\r\n }, [handleWindowResize, model, activeSlideKey, card]);\r\n\r\n const handleSwipe = useCallback(\r\n e => {\r\n if (!e) {\r\n return;\r\n }\r\n if (e.dir === swipeDirection.RIGHT && e.origin === swipeType.SCROLL) {\r\n if (currentView < 3) {\r\n console.log('track forward');\r\n animate(scene3DAnimationType.FORWARD);\r\n }\r\n }\r\n if (e.dir === swipeDirection.LEFT && e.origin === swipeType.SCROLL) {\r\n if (currentView > 1) {\r\n console.log('track back');\r\n animate(scene3DAnimationType.BACKWARD);\r\n }\r\n }\r\n },\r\n [currentView]\r\n );\r\n\r\n useSwipeEvent(objectRef.current, handleSwipe);\r\n\r\n useEffect(() => {\r\n if (activeSlideKey === card.Key) {\r\n setAnimationPlaying(true);\r\n setTimeout(() => setAnimationPlaying(false), animationSpeed * 1000);\r\n }\r\n }, [activeSlideKey]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n handleSwipeUpRef() {\r\n handleSwipeUp();\r\n },\r\n handleSwipeDownRef() {\r\n handleSwipeDown();\r\n },\r\n }));\r\n\r\n const handleNextClicked = () => {\r\n animate(scene3DAnimationType.FORWARD);\r\n };\r\n\r\n const handlePrevClicked = () => {\r\n animate(scene3DAnimationType.BACKWARD);\r\n };\r\n\r\n const handleDotClicked = index => {\r\n if (index !== currentView - 1) {\r\n scheduleAnimation(views[index].position, views[index].rotation).then(r => {\r\n if (r) {\r\n setCurrentView(index + 1);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const renderDots = props => {\r\n if (!props) {\r\n return null;\r\n }\r\n const { currentSlide, totalSlides, visibleSlides, showAsSelectedForCurrentSlideOnly } = props;\r\n\r\n const dots = [];\r\n for (let i = 0; i < totalSlides; i += 1) {\r\n const multipleSelected = i >= currentSlide && i < currentSlide + visibleSlides;\r\n const singleSelected = i === currentSlide;\r\n const selected = showAsSelectedForCurrentSlideOnly ? singleSelected : multipleSelected;\r\n const slide = i >= totalSlides - visibleSlides ? totalSlides - visibleSlides : i;\r\n const handleClick = selected\r\n ? null\r\n : () => {\r\n handleDotClicked(i);\r\n };\r\n dots.push(\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n return dots;\r\n };\r\n\r\n const onSwipeLeft = () => {\r\n if (currentView < 3) {\r\n console.log('swipe left');\r\n handleSwipeUp();\r\n }\r\n };\r\n\r\n const onSwipeRight = () => {\r\n if (currentView > 1) {\r\n console.log('swipe right');\r\n handleSwipeDown();\r\n }\r\n };\r\n\r\n var classname = 'scene-3D ' + (isInline ? 'inline' : '');\r\n\r\n var inner = (\r\n <>\r\n {isInline && currentView < 3 ? (\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n ) : null}\r\n {isInline && currentView > 1 ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n\r\n
\r\n \r\n {loadingP < 100 ?
Loading 3D model... {loadingP}%
: null}\r\n
\r\n \r\n {card.SimpleTextCarousel &&\r\n card.SimpleTextCarousel.map((elmt, i) => (\r\n

\r\n \r\n {elmt.Body}\r\n

\r\n ))}\r\n
\r\n {card.Link && card.Link.HasLink && card.Link.Text && card.Link.Text.length > 0 && (\r\n \r\n )}\r\n {isInline && model ? (\r\n \r\n ) : null}\r\n \r\n );\r\n\r\n return (\r\n
\r\n {isInline ? (\r\n \r\n {inner}\r\n \r\n ) : (\r\n inner\r\n )}\r\n
\r\n );\r\n }\r\n);\r\n\r\nexport default Scene3D;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { BsChevronDown } from 'react-icons/bs';\r\n\r\nimport { setCreditsOpened } from '../../../store/reducers/mainReducer';\r\n\r\nimport { ADALandmarks, ADAWidgitRoles } from '../../../models/ADA';\r\nimport './Credits.scss';\r\n\r\nconst Credits = ({ showBar, onClick, isLightBg }) => {\r\n const dispatch = useDispatch();\r\n const isInitialized = useSelector(state => state.data.initialized);\r\n const global = useSelector(state => state.data.cms.global);\r\n const [showContent, setShowContent] = useState(false);\r\n const formatCredits = (cms) => {\r\n if(!isInitialized || !global || !cms || !cms.Credits || cms.Credits.length <= 0){\r\n return null;\r\n }\r\n let allCredits = [];\r\n let creditsBuffer = [];\r\n let rowCounter = 0;\r\n cms.Credits.forEach((credit, i) => {\r\n const el = (
);\r\n creditsBuffer.push(el);\r\n if (creditsBuffer.length === 4) {\r\n allCredits.push(\r\n
\r\n {[ ...creditsBuffer ]}\r\n
\r\n );\r\n creditsBuffer = [];\r\n }\r\n });\r\n if (creditsBuffer.length > 0) {\r\n allCredits.push(\r\n
\r\n {[ ...creditsBuffer ]}\r\n
\r\n );\r\n }\r\n return allCredits;\r\n };\r\n\r\n const onCreditsClick = () => {\r\n setShowContent(!showContent);\r\n dispatch(setCreditsOpened(!showContent));\r\n onClick(!showContent);\r\n }\r\n\r\n const onBackgroundClicked = () => {\r\n dispatch(setCreditsOpened(false));\r\n setShowContent(false);\r\n onClick(false);\r\n }\r\n\r\n useEffect(() => {\r\n if(!showBar){\r\n setShowContent(false);\r\n }\r\n }, [showBar])\r\n\r\n if(!isInitialized){\r\n return null;\r\n }\r\n \r\n const creditsToShow = formatCredits(global);\r\n\r\n return ( \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{global.CreditText}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/*
\r\n
\r\n
\r\n {creditsToShow}\r\n
\r\n
*/}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Credits;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { BsChevronDown } from 'react-icons/bs';\r\n\r\nimport './NextStory.scss';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport Credits from '../Credits/Credits';\r\nimport { ADAARIARoles, ADALandmarks } from '../../../models/ADA';\r\n\r\nconst NextStory = ({ title, subtitle, next, showNext, showCredits, onCreditsClick }) => {\r\n const isPortrait = useMediaQuery({ query: '(max-width: 767px)' });\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const handleCreditsClick = (active) => {\r\n onCreditsClick(active);\r\n };\r\n\r\n const timeout = (delay) => {\r\n return new Promise( res => setTimeout(res, delay) );\r\n}\r\n\r\n async function refreshPage () {\r\n await timeout(100);\r\n window.location.reload(false);\r\n }\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
{title}
\r\n {!isPortrait ?
:
: null}\r\n {!isPortrait ?
{subtitle}
: null}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default NextStory;\r\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgVerizon = function SvgVerizon(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 29.347,\n height: 34.128,\n viewBox: \"0 0 29.347 34.128\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Shape\",\n d: \"M23.912,0,10.559,27.57,5.435,17.138H0L8.385,34.128h4.348L29.347,0Z\",\n fill: \"#cd040b\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgVerizon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/verizon.014a0ab2.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useLayoutEffect, useRef } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { CarouselProvider, Slider, Slide, DotGroup, Dot, ButtonNext, ButtonBack } from 'pure-react-carousel';\r\nimport ExternalLink from '../../Common/ExternalLink/ExternalLink';\r\nimport VenetianBlindsText from '../../Common/VenetianBlindsText/VenetianBlindsText';\r\nimport { linkTypes } from '../../../models/Models';\r\nimport { formatParagraphs } from '../../../models/Utils';\r\nimport { useWindowSize } from '../../../models/Hooks';\r\nimport './InfographicCarousel.scss';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\nimport { element } from 'screenfull';\r\n\r\nconst InfographicCarousel = ({ cardData, isInline }) => {\r\n const activeKey = useSelector(state => state.data.activeSlideKey);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const windowSize = useWindowSize();\r\n const [currentSlide, setCurrentSlide] = useState(false);\r\n const [isActive, setActiveState] = useState(false);\r\n const [elmtsPerSlide, setElmtsPerSlide] = useState(1);\r\n const [naturalSlideWidth, setNaturalSlideWidth] = useState('100vw');\r\n const carouselRef = useRef(null);\r\n const controlRef = useRef(null);\r\n const animationDelay = 0.25;\r\n\r\n useEffect(() => {\r\n if (cardData && activeKey === cardData.Key) {\r\n setActiveState(true);\r\n } else {\r\n setActiveState(false);\r\n }\r\n }, [activeKey, cardData]);\r\n\r\n useEffect(() => {\r\n const n = Math.floor(windowSize.width / 360) || 1;\r\n setElmtsPerSlide(n > 3 ? 3 : n);\r\n setNaturalSlideWidth(windowSize.width > 1272 ? '1272px' : '100vw');\r\n }, [windowSize]);\r\n\r\n useLayoutEffect(() => {\r\n if (!carouselRef.current || !controlRef.current) {\r\n return;\r\n }\r\n let checkForScroll = true;\r\n let maxDeltaX = 0;\r\n const handleScroll = e => {\r\n if(!isInline){\r\n e.preventDefault();\r\n }\r\n const scrollThreshold = 2;\r\n if (checkForScroll && Math.abs(e.deltaY) < Math.abs(e.deltaX)) {\r\n if (Math.abs(e.deltaX) > Math.abs(maxDeltaX) && Math.abs(maxDeltaX) <= scrollThreshold) {\r\n maxDeltaX = e.deltaX;\r\n } else {\r\n checkForScroll = false;\r\n if (Math.abs(maxDeltaX) > scrollThreshold) {\r\n const carouselContext = controlRef.current.context;\r\n if (maxDeltaX > 0) {\r\n if (carouselContext.state.currentSlide < carouselContext.state.totalSlides - 1) {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: carouselContext.state.currentSlide + 1,\r\n });\r\n }\r\n } else {\r\n if (carouselContext.state.currentSlide > 0) {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: carouselContext.state.currentSlide - 1,\r\n });\r\n }\r\n }\r\n }\r\n maxDeltaX = 0;\r\n setTimeout(() => {\r\n checkForScroll = true;\r\n }, 1000);\r\n }\r\n }\r\n };\r\n\r\n // modern Chrome requires { passive: false } when adding event\r\n let supportsPassive = false;\r\n try {\r\n carouselRef.current.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n carouselRef.current.addEventListener(wheelEvent, handleScroll, wheelOpt);\r\n return () => {\r\n carouselRef.current.removeEventListener(wheelEvent, handleScroll);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (controlRef.current) {\r\n const onChange = () => {\r\n setCurrentSlide(controlRef.current.context.state.currentSlide);\r\n };\r\n controlRef.current.context.subscribe(onChange);\r\n return () => controlRef.current.context.unsubscribe(onChange);\r\n }\r\n }, [controlRef.current]);\r\n \r\n const getExternalLink = () => {\r\n var link = cardData && cardData.Link && cardData.Link.HasLink ? cardData.Link : null;\r\n\r\n if(cardData.ImageTextCarousel && controlRef.current){\r\n for(var i = 0; i 0 && cardData.Key >= 0){\r\n var isExternal = link.Type === linkTypes.EXTERNAL;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n var classname = \"infographic-carousel \" + (isInline ? \"inline\" : \"\");\r\n var numSwipes = Math.ceil((cardData.ImageTextCarousel || []).length - elmtsPerSlide + 1);\r\n\r\n const renderDots = (props) => {\r\n if(!props){\r\n return null;\r\n }\r\n const {\r\n currentSlide,\r\n totalSlides,\r\n visibleSlides,\r\n disableActiveDots,\r\n showAsSelectedForCurrentSlideOnly\r\n } = props;\r\n\r\n const dots = [];\r\n for (let i = 0; i < totalSlides; i += 1) {\r\n const multipleSelected = i >= currentSlide && i < (currentSlide + visibleSlides);\r\n const singleSelected = i === currentSlide;\r\n const selected = showAsSelectedForCurrentSlideOnly ? singleSelected : multipleSelected;\r\n const slide = i >= totalSlides - visibleSlides ? totalSlides - visibleSlides : i;\r\n const handleClick = selected ? null : () => {handleDotClick(i)};\r\n dots.push(\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n return dots;\r\n };\r\n\r\n const handleDotClick = (index) => {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: index,\r\n });\r\n };\r\n\r\n console.log(currentSlide)\r\n console.log(cardData.ImageTextCarousel.length / elmtsPerSlide);\r\n\r\n return (\r\n
\r\n {getExternalLink()}\r\n 1}\r\n touchEnabled={(cardData.ImageTextCarousel || []).length > 1}\r\n interval={10000}\r\n >\r\n
\r\n
\r\n
\r\n {\r\n currentSlide < ((cardData.ImageTextCarousel || []).length / elmtsPerSlide) - 1\r\n &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {\r\n currentSlide > 0\r\n &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n\r\n \r\n {(cardData.ImageTextCarousel || []).map((slide, i) => (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {slide.Header && \r\n
\r\n {elmtsPerSlide === 1 && }\r\n {slide.Header}
\r\n }\r\n
.
\r\n
\r\n {elmtsPerSlide === 1 && }\r\n {formatParagraphs(slide.Body)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n\r\n elmtsPerSlide ? '' : 'hidden',\r\n }}\r\n totalSlides={numSwipes}\r\n renderDots={renderDots}\r\n />\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InfographicCarousel;\r\n","import React, { useContext, useEffect, useLayoutEffect, useState, useRef } from 'react';\r\nimport { Slider, Slide, CarouselContext } from 'pure-react-carousel';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\nimport { Swipeable } from 'react-swipeable';\r\nimport StoryHolder from '../360Story/StoryHolder';\r\nimport CardHolder from '../../Common/CardHolder/CardHolder';\r\nimport StoryCarousel from '../StoryCarousel/StoryCarousel';\r\nimport QuoteStory from '../QuoteStory/QuoteStory';\r\nimport AudioClip from '../AudioClip/AudioClip';\r\nimport Podcast from '../Podcast/Podcast';\r\nimport Video from '../Video/Video';\r\nimport UserPoll from '../UserPoll/UserPoll';\r\nimport Scene3D from '../Scene3D/Scene3D';\r\nimport NextStory from '../../Common/NextStory/NextStory';\r\nimport { storyCardTypes } from '../../../models/Models';\r\nimport {\r\n setActiveSlideKey,\r\n setCurrentSlideDarkBg,\r\n setActiveSlideType,\r\n setHasVisitedStories,\r\n} from '../../../store/reducers/mainReducer';\r\nimport { useCallback } from 'react';\r\nimport InfographicCarousel from '../InfographicCarousel/InfographicCarousel';\r\nimport { useWindowSize } from '../../../models/Hooks';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nlet maxDeltaY = 0;\r\nlet checkForScroll = true;\r\n\r\nconst SlideGenerator = ({ story, stories, id: storyId }) => {\r\n const cmsData = useSelector(state => state.data.cms);\r\n const [hidden, setHidden] = useState(false);\r\n const [showNextStory, setShowNextStory] = useState(false);\r\n const carouselContext = useContext(CarouselContext);\r\n const [carouselIndex, setCarouselIndex] = useState(0);\r\n const hasVisitedPBP = useSelector(state => state.data.hasVisitedPBP);\r\n const exploreClicked = useSelector(state => state.data.exploreClicked);\r\n const mediaPlaying = useSelector(state => state.data.mediaPlaying);\r\n const activeCardType = useSelector(state => state.data.activeSlideType);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const creditsOpened = useSelector(state => state.data.creditsOpened);\r\n const visitedStories = useSelector(state => state.data.visitedStories);\r\n const [nextStoryId, setNextStoryId] = useState(null);\r\n const [touchLocY, setTouchLocY] = useState(0);\r\n const [isScrolling, setIsScrolling] = useState(false);\r\n const [isHorizontalScrolling, setIsHorizontalScrolling] = useState(false);\r\n const scene3DRef = useRef();\r\n const sliderHolderElement = useRef(null);\r\n const sliderElement = useRef(null);\r\n const dispatch = useDispatch();\r\n\r\n \r\n const isFullScreen = window.innerHeight == window.screen.height;\r\n\r\n /* Handling new inline layout */\r\n const size = useWindowSize();\r\n const isLandscapeWithMargin = useMediaQuery({ query: '(min-width: 1274px)' });\r\n const isLandscapeNoMargin = useMediaQuery({\r\n query: '(orientation: landscape) and (max-width: 1274px)',\r\n });\r\n const aspectRatio = 2;\r\n const maxColumnWidth = 1234;\r\n const cardPadding = 30;\r\n const isInlineLayout = isLandscapeWithMargin || (isLandscapeNoMargin && !isFullScreen); // fullscreenElementHelper() ? false : \r\n\r\n const cardWidth = isInlineLayout ? Math.min(maxColumnWidth, size.width - 32) : size.width;\r\n const cardHeight = isInlineLayout\r\n ? Math.min(size.height * 0.7, cardWidth / aspectRatio)\r\n : size.height;\r\n const topOffset = (size.height - cardHeight) / 2;\r\n const carouselWrapperStyle = isInlineLayout\r\n ? {\r\n position: 'relative',\r\n height: '100vh',\r\n overflowY: 'auto',\r\n }\r\n : null;\r\n const sliderStyle = isInlineLayout\r\n ? {\r\n top: topOffset + 'px',\r\n paddingBottom: topOffset + 'px',\r\n }\r\n : null;\r\n const cardStyle = isInlineLayout\r\n ? {\r\n position: 'relative',\r\n width: cardWidth + 'px',\r\n height: cardHeight + 'px',\r\n display: 'block',\r\n margin: cardPadding * 2 + 'px auto',\r\n }\r\n : null;\r\n const videoStyle = {\r\n position: 'relative',\r\n width: '100%',\r\n height: cardHeight + 'px',\r\n display: 'block',\r\n margin: 'auto',\r\n padding: cardPadding + 'px 0px',\r\n };\r\n\r\n var storyCards = [\r\n {\r\n Type: storyCardTypes.VIDEO_INTRO,\r\n Header: story.Header,\r\n Subheader: story.Subheader,\r\n IsDarkModePortrait: story.IsDarkMode,\r\n IsDarkModeLandscape: story.IsDarkMode,\r\n ...story.Introduction,\r\n },\r\n ...story.Cards,\r\n ];\r\n\r\n useEffect(() => {\r\n dispatch(setHasVisitedStories(true));\r\n }, []);\r\n\r\n useEffect(() => {\r\n const { currentSlide } = carouselContext.getStoreState();\r\n if (currentSlide !== carouselIndex) {\r\n setCarouselIndex(currentSlide);\r\n }\r\n }, [isInlineLayout]);\r\n\r\n useEffect(() => {\r\n if (carouselContext && storyCards.length && sliderHolderElement.current) {\r\n carouselContext.setStoreState({ currentSlide: 0, disableAnimation: true });\r\n setCarouselIndex(0);\r\n setActiveCard(storyCards[0]);\r\n setShowNextStory(false);\r\n sliderHolderElement.current.scrollTo(0, 0);\r\n }\r\n }, [storyId, carouselContext, isInlineLayout]);\r\n\r\n useEffect(() => {\r\n if (storyId < stories.length - 1) {\r\n setNextStoryId(storyId + 1);\r\n } else if (visitedStories.length === stories.length) {\r\n setNextStoryId(null);\r\n } else {\r\n visitedStories.some((id, i) => {\r\n if (id !== i) {\r\n setNextStoryId(i);\r\n }\r\n return id !== i;\r\n });\r\n }\r\n }, [stories, storyId, visitedStories]);\r\n\r\n useEffect(() => {\r\n const onChange = () => {\r\n const { currentSlide } = carouselContext.getStoreState();\r\n if (carouselIndex >= 0) {\r\n setCarouselIndex(currentSlide);\r\n }\r\n };\r\n carouselContext.subscribe(onChange);\r\n return () => carouselContext.unsubscribe(onChange);\r\n }, [carouselContext, dispatch, storyCards]);\r\n\r\n useEffect(() => {\r\n setActiveCard(storyCards[carouselIndex]);\r\n }, [carouselIndex]);\r\n\r\n\r\n const setActiveCard = currentCard => {\r\n dispatch(\r\n setCurrentSlideDarkBg(\r\n isInlineLayout ? currentCard.IsDarkModeLandscape : currentCard.IsDarkModePortrait\r\n )\r\n );\r\n dispatch(setActiveSlideKey(currentCard.Key));\r\n dispatch(setActiveSlideType(currentCard.Type));\r\n };\r\n\r\n const onGoToNextSlide = useCallback(() => {\r\n const { currentSlide } = carouselContext.getStoreState();\r\n console.log('next! carouselIndex: ', currentSlide);\r\n setShowNextStory(false);\r\n if (currentSlide < storyCards.length - 1) {\r\n carouselContext.setStoreState({ currentSlide: currentSlide + 1, disableAnimation: false });\r\n } else {\r\n setShowNextStory(true);\r\n }\r\n \r\n }, [storyCards, carouselContext]);\r\n\r\n const onGoToPrevSlide = useCallback(() => {\r\n \r\n const { currentSlide } = carouselContext.getStoreState();\r\n console.log('Prev! carouselIndex: ', currentSlide, carouselContext);\r\n setShowNextStory(false);\r\n if (currentSlide > 0) {\r\n carouselContext.setStoreState({ currentSlide: currentSlide - 1, disableAnimation: false });\r\n } else {\r\n console.log('first slide!');\r\n }\r\n \r\n }, [carouselContext]);\r\n\r\n useLayoutEffect(() => {\r\n const handleScrollInline = e => {\r\n const sliderRect = sliderElement.current.getBoundingClientRect();\r\n if (sliderRect && sliderRect.top && carouselContext) {\r\n var currentSlide = Math.round(Math.abs(sliderRect.top) / (cardHeight + topOffset / 2));\r\n if (currentSlide !== carouselIndex) {\r\n setCarouselIndex(currentSlide);\r\n }\r\n setShowNextStory(\r\n Math.abs(sliderRect.top) > sliderRect.height - (cardHeight + topOffset) - 200\r\n );\r\n }\r\n };\r\n \r\n const handleScroll = e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const scrollThreshold = 2;\r\n\r\n \r\n \r\n if (checkForScroll && Math.abs(e.deltaX) < Math.abs(e.deltaY)) {\r\n\r\n console.log(\"check for scroll\")\r\n if (Math.abs(e.deltaY) > Math.abs(maxDeltaY) && Math.abs(maxDeltaY) <= scrollThreshold) {\r\n \r\n maxDeltaY = e.deltaY;\r\n } else {\r\n checkForScroll = false;\r\n if (Math.abs(maxDeltaY) > scrollThreshold && maxDeltaY > 0 && showNextStory) {\r\n setShowNextStory(false);\r\n maxDeltaY = 0;\r\n setTimeout(() => {\r\n checkForScroll = true;\r\n }, 1000);\r\n return;\r\n }\r\n if (Math.abs(maxDeltaY) > scrollThreshold) {\r\n if (maxDeltaY > 0) {\r\n if (activeCardType === storyCardTypes.OBJECT_3D) {\r\n scene3DRef.current && scene3DRef.current.handleSwipeUpRef();\r\n } else {\r\n onGoToNextSlide();\r\n\r\n }\r\n } else {\r\n if (activeCardType === storyCardTypes.OBJECT_3D) {\r\n scene3DRef.current && scene3DRef.current.handleSwipeDownRef();\r\n } else {\r\n\r\n onGoToPrevSlide();\r\n }\r\n }\r\n }\r\n maxDeltaY = 0;\r\n setTimeout(() => {\r\n checkForScroll = true;\r\n \r\n }, 1000);\r\n }\r\n }\r\n };\r\n\r\n // modern Chrome requires { passive: false } when adding event\r\n let supportsPassive = false;\r\n try {\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n\r\n const AddEvents = () => {\r\n window.addEventListener(wheelEvent, handleScroll, wheelOpt); // modern desktop\r\n window.addEventListener('touchmove', handleScroll, wheelOpt); // mobile\r\n window.addEventListener('keydown', handleScroll, false);\r\n\r\n };\r\n const RemoveEvents = () => {\r\n window.removeEventListener(wheelEvent, handleScroll);\r\n window.removeEventListener('touchmove', handleScroll);\r\n window.removeEventListener('keydown', handleScroll);\r\n window.removeEventListener('scroll', handleScrollInline, true); // modern desktop\r\n };\r\n\r\n if (isInlineLayout) {\r\n window.addEventListener('scroll', handleScrollInline, true); // modern desktop\r\n } else if (!menuOpened && !creditsOpened) {\r\n AddEvents();\r\n } else {\r\n RemoveEvents();\r\n }\r\n return () => {\r\n RemoveEvents();\r\n };\r\n }, [\r\n activeCardType,\r\n isInlineLayout,\r\n onGoToNextSlide,\r\n onGoToPrevSlide,\r\n showNextStory,\r\n menuOpened,\r\n creditsOpened,\r\n ]);\r\n\r\n useLayoutEffect(() => {\r\n const dotGroups = sliderHolderElement.current.getElementsByClassName('carousel__dot-group');\r\n for (let i = 0; i < dotGroups.length; i++) {\r\n const dotGroup = dotGroups[i];\r\n const j = i;\r\n setTimeout(() => {\r\n if (dotGroup.children && dotGroup.children.length) {\r\n dotGroup.children[0].click();\r\n }\r\n }, 50);\r\n }\r\n }, [story]);\r\n\r\n const handleSwipeUp = () => {\r\n if (activeCardType === storyCardTypes.OBJECT_3D) {\r\n scene3DRef.current && scene3DRef.current.handleSwipeUpRef();\r\n } else {\r\n console.log(\"[NEXT] is horizontal scrolling? \", isHorizontalScrolling)\r\n if(!isHorizontalScrolling){\r\n onGoToNextSlide();\r\n }\r\n }\r\n };\r\n\r\n const handleSwipeDown = () => {\r\n if (activeCardType === storyCardTypes.OBJECT_3D) {\r\n scene3DRef.current && scene3DRef.current.handleSwipeDownRef();\r\n } else {\r\n console.log(\"[PREV] is horizontal scrolling? \", isHorizontalScrolling)\r\n if(!isHorizontalScrolling){\r\n onGoToPrevSlide();\r\n }\r\n }\r\n };\r\n /**\r\n * Use in GetSlideFromStoryId\r\n * Return component from agreed id with JSON from CMS\r\n * @param {*} card The card data used to generate the component\r\n */\r\n const getHtmlFromStoryJSON = card => {\r\n let value;\r\n let id = card.Type;\r\n switch (id) {\r\n case storyCardTypes.VIDEO_INTRO:\r\n //video intro\r\n value = (\r\n \r\n );\r\n break;\r\n case storyCardTypes.TEXT_CAROUSEL:\r\n value = (\r\n { setIsHorizontalScrolling(true)}}\r\n onScrollCompleteCallback={ () => {setIsHorizontalScrolling(false)}}\r\n />\r\n );\r\n break;\r\n case storyCardTypes.TEXT_CAROUSEL_WITH_BG:\r\n value = (\r\n { setIsHorizontalScrolling(true)}}\r\n onScrollCompleteCallback={ () => {setIsHorizontalScrolling(false)}}\r\n />\r\n );\r\n break;\r\n case storyCardTypes.TEXT_IMAGE_CAROUSEL:\r\n value = (\r\n {setIsHorizontalScrolling(true)}}\r\n onScrollCompleteCallback={ () => {console.log(\"h scrolling done\"); setIsHorizontalScrolling(false)}}\r\n />\r\n );\r\n break;\r\n case storyCardTypes.TEXT_VIDEO_CAROUSEL:\r\n //text & video carousel\r\n value = (\r\n {setIsHorizontalScrolling(true)}}\r\n onScrollCompleteCallback={ () => {console.log(\"h scrolling done\"); setIsHorizontalScrolling(false)}}\r\n\r\n />\r\n );\r\n break;\r\n case storyCardTypes.MIXED_MEDIA_CAROUSEL:\r\n value = (\r\n { setIsHorizontalScrolling(true)}}\r\n onScrollCompleteCallback={ () => {setIsHorizontalScrolling(false)}}\r\n />\r\n );\r\n break;\r\n case storyCardTypes.INFOGRAPHIC_CAROUSEL:\r\n value = ;\r\n break;\r\n case storyCardTypes.OBJECT_3D:\r\n value = (\r\n \r\n );\r\n break;\r\n case storyCardTypes.QUOTE:\r\n value = ;\r\n break;\r\n case storyCardTypes.VIDEO:\r\n //video\r\n value = (\r\n \r\n );\r\n break;\r\n case storyCardTypes.AUDIO_PODCAST:\r\n //audio podcast\r\n value = ;\r\n break;\r\n case storyCardTypes.AUDIO_MISC:\r\n //audio misc\r\n value = ;\r\n break;\r\n case storyCardTypes.USER_POLL:\r\n //user poll\r\n value = ;\r\n break;\r\n default:\r\n console.log('No matching ID for component. See StorySelector.js');\r\n break;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const mapSlidesToJSON = cards => {\r\n var value;\r\n cards.length > 0\r\n ? (value = cards.map((card, index) => {\r\n return (\r\n 0 ? cardStyle : videoStyle) : null} \r\n onTouchStart={(e) => {setTouchLocY(e.touches[0].clientY)}}\r\n onTouchMove={(e) => {if(Math.abs(e.touches[0].clientY - touchLocY ) > 50) setIsScrolling(true); else setIsScrolling(false);}}//vertical travel distance of 100px\r\n onTouchEnd={() => {setIsScrolling(false);}}\r\n >\r\n 0 || exploreClicked) &&\r\n index < cards.length - 1 &&\r\n mediaPlaying === false\r\n }\r\n isLightBg={isInlineLayout ? !card.IsDarkModeLandscape : !card.IsDarkModePortrait}\r\n isInlineCard={isInlineLayout}\r\n cardHeight={cardHeight}\r\n active={index==carouselIndex}\r\n\r\n \r\n >\r\n {getHtmlFromStoryJSON(card)}\r\n \r\n \r\n );\r\n }))\r\n : console.log('No data given');\r\n return value;\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n {mapSlidesToJSON(storyCards)}\r\n \r\n
\r\n
\r\n \r\n {nextStoryId !== null ? (\r\n {}}\r\n />\r\n ):\r\n {}}\r\n />\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default SlideGenerator;\r\n","import React, { useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useParams, useHistory } from 'react-router-dom';\r\nimport { CarouselProvider } from 'pure-react-carousel';\r\nimport SlideGenerator from '../../components/DigitalMuseum/SlideGenerator/SlideGenerator';\r\nimport { setNavBarState, setLoaded, addToVisitedStories } from '../../store/reducers/mainReducer';\r\nimport { getStoryIndex } from '../../models/Utils';\r\nimport { ADALandmarks } from '../../models/ADA';\r\nimport './Home.scss';\r\n\r\nconst Home = () => {\r\n const dispatch = useDispatch();\r\n let { storyId } = useParams();\r\n let history = useHistory();\r\n const initialized = useSelector(state => state.data.initialized);\r\n const cmsData = useSelector(state => state.data.cms.digitalMuseum);\r\n\r\n useEffect(() => {\r\n dispatch(setNavBarState({ navbarVisibility: true }));\r\n dispatch(setLoaded());\r\n }, [dispatch]);\r\n\r\n if (!initialized || !cmsData) return null;\r\n\r\n const storyIndex = getStoryIndex(storyId, cmsData, history);\r\n const story = cmsData.AllStories[storyIndex];\r\n if(storyIndex < 0) {\r\n return null\r\n }\r\n\r\n document.title = \"The Verizon Story - \" + story.Header;\r\n \r\n dispatch(addToVisitedStories(storyIndex));\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Home;\r\n","var _style, _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIcnPbpBar = function SvgIcnPbpBar(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 188 371\",\n style: {\n enableBackground: \"new 0 0 188 371\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\r\\n\\t.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}\\r\\n\")), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M180,0h8L8,371H0L180,0z\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcnPbpBar, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icn_pbp-bar.4a6e243b.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgBtnPlay = function SvgBtnPlay(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Ebene_1\",\n \"data-name\": \"Ebene 1\",\n viewBox: \"0 0 18 18\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.2.2a9,9,0,1,0,9,9A9,9,0,0,0,9.2.2ZM9.2,17A7.9,7.9,0,1,1,17,9.2,7.75,7.75,0,0,1,9.2,17Z\",\n transform: \"translate(-0.2 -0.2)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.3,4.3V14l8.4-4.9ZM7.5,6.2l5.1,2.9L7.5,12Z\",\n transform: \"translate(-0.2 -0.2)\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgBtnPlay, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/btn_play.893ddecf.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport './Infographic.scss';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport { useWindowSize, usePrevious } from '../../../models/Hooks';\r\n\r\nimport { ReactComponent as Logo } from '../../../assets/images/graphics/verizon.svg';\r\nimport { ReactComponent as Bar } from '../../../assets/images/graphics/icn_pbp-bar.svg';\r\n\r\nconst Infographic = ({ barCount, altText, active }) => {\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const win = useWindowSize();\r\n const maxBarVal = 5;\r\n const expandSpeed = 0.35;\r\n const barFillSpeed = 0.6;\r\n const prevBarCount = usePrevious(barCount);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n if(!win.width || !win.height){\r\n return null;\r\n }\r\n \r\n var logoRatio = 431/371;\r\n var barRatio = 432/219;\r\n var maxHeight = (isPortrait)?win.width/barRatio:Math.min(win.height * 0.4, 373);\r\n var logoWidth = maxHeight * (1/logoRatio);\r\n var barWidth = maxHeight * (1/barRatio);\r\n var barContainerWidth = (barWidth * 1.5);\r\n var infographicContainerWidth = logoWidth + barContainerWidth;\r\n \r\n var bars = [];\r\n for(var i = 0; i prevBarCount)?i:(maxBarVal - i)) + ((prevBarCount < 0)?expandSpeed:0)); //Staggered Offset with additional time added if it's the first time it's expanding\r\n bars.push(\r\n
\r\n \r\n \r\n
);\r\n }\r\n\r\n var maskPoints = logoWidth+\",0 \"+(logoWidth*0.43)+\",\"+maxHeight+\" -\"+barContainerWidth+\",\"+maxHeight+\" -\"+barContainerWidth+\",0\";\r\n\r\n return (\r\n
\r\n
\r\n
= 0)?infographicContainerWidth:logoWidth, transition: \"width \"+expandSpeed+\"s ease-in-out\"}}>\r\n
= 0 ? barCount + \"bars\": ''}`}>\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {bars}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Infographic;\r\n","import React, { useRef, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport './Location.scss';\r\n\r\nimport { PulseLocationState } from '../../../models/Models';\r\nimport { ADAARIARoles, ADALandmarks, ADAWidgitRoles } from '../../../models/ADA';\r\n\r\nconst Location = ({ location, activeKey, onSelected, isActive}) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n var state = PulseLocationState.Waiting;\r\n if(activeKey >= 0){\r\n if(activeKey === location.Key){\r\n state = PulseLocationState.Active;\r\n } else {\r\n state = PulseLocationState.Inactive;\r\n }\r\n }\r\n\r\n const handleOnClick = event => {\r\n onSelected((state !== PulseLocationState.Active)?location.Key:-1);\r\n };\r\n \r\n let locationClass = (state === PulseLocationState.Active)?\"location active\":(state === PulseLocationState.Inactive)?\"location inactive\":\"location waiting\";\r\n\r\n return (\r\n
{\r\n if (e.key === 'Enter') {\r\n handleOnClick();\r\n }\r\n }}\r\n onClick={handleOnClick}>\r\n
\r\n
\r\n {location.Name}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Location;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport Flickity from 'react-flickity-component';\r\nimport { formatParagraphs } from '../../../models/Utils';\r\n\r\nimport Infographic from '../PulseInfographic/Infographic';\r\nimport Location from '../PulseLocation/Location';\r\nimport './Pulse.scss';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\nconst Pulse = ({ content, active }) => {\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const [activeLocation, setActiveLocation] = useState(null);\r\n const flickityRef = useRef(null);\r\n const choiceSelectedRef = useRef(null);\r\n const choiceUnselectedRef = useRef(null);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n useEffect(() => {\r\n setActiveLocation(null);\r\n selectIndex(0);\r\n }, [active]);\r\n\r\n const handleSelected = key => {\r\n if (content && content.Locations) {\r\n const match = content.Locations.find(x => x.Key === key);\r\n const index = content.Locations.findIndex(x => x.Key === key);\r\n if (match) {\r\n setActiveLocation(match);\r\n playFocusedText(choiceSelectedRef);\r\n } else {\r\n setActiveLocation(null);\r\n playFocusedText(choiceUnselectedRef);\r\n }\r\n selectIndex(index);\r\n }\r\n };\r\n\r\n const playFocusedText = (ref) => {\r\n if(ref !== null && ref.current !== null){\r\n ref.current.focus();\r\n }\r\n }\r\n\r\n const selectIndex = index => {\r\n if (flickityRef.current && index >= 0 && index < content.Locations.length) {\r\n flickityRef.current.select(index);\r\n }\r\n };\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n const locations = [];\r\n if (content && content.Locations) {\r\n for (var i = 0; i < content.Locations.length; i++) {\r\n var location = content.Locations[i];\r\n if (location) {\r\n locations.push(\r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n const textBox = (\r\n
\r\n {activeLocation ? (\r\n <>\r\n
\r\n
{activeLocation.WirelessBusyHour}
\r\n
:
\r\n
{activeLocation.VolumeRate}
\r\n
{formatParagraphs(activeLocation.Description)}
\r\n
\r\n \r\n ) : null}\r\n <>\r\n
\r\n
{formatParagraphs(content.Body)}
\r\n
{formatParagraphs(content.Description)}
\r\n
\r\n \r\n
\r\n );\r\n\r\n const centerContent = isPortrait ? (\r\n <>\r\n \r\n {textBox}\r\n \r\n ) : (\r\n <>\r\n {textBox}\r\n \r\n \r\n );\r\n\r\n const flickityOptions = {\r\n initialIndex: 0,\r\n pageDots: false,\r\n prevNextButtons: false,\r\n cellAlign: 'center',\r\n accessibility: false,\r\n freeScroll: true,\r\n contain: true,\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{content.Header}
\r\n
\r\n
{centerContent}
\r\n
\r\n {locations}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Pulse;\r\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport * as THREE from 'three';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\r\nimport { ReactComponent as CloseBtn } from '../../../assets/images/graphics/btn-close.svg';\r\n\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport './Object3DSlide.scss';\r\nimport { PMREMGenerator } from 'three';\r\nimport { fromEvent } from 'rxjs';\r\nimport { useSwipeEvent } from '../../../models/Hooks';\r\n\r\nconst Object3DSlide = ({ data, isActive, isExploreMode, onExploreSelected, onExploreClosed }) => {\r\n let [model, setModel] = useState(null);\r\n let [loading, setLoading] = useState(0);\r\n let scene = useRef(new THREE.Scene()); \r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const configData = useSelector(state => state.config);\r\n const scale = 62;\r\n const renderer = useRef(null);\r\n const camera = useRef(null);\r\n const orbit = useRef(null);\r\n const canvasRef = useRef(null);\r\n let resizeTimer = null;\r\n const sceneRef = useRef(null);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n useEffect(() => {\r\n if(loading >= 100 && model){\r\n if(isExploreMode && isActive){\r\n console.log(model);\r\n animateIn();\r\n } else {\r\n animateOff();\r\n }\r\n }\r\n }, [isExploreMode, isActive, loading, model]);\r\n\r\n const animateIn = () => {\r\n let i = 0;\r\n let zoomInTimer = setInterval(() => {\r\n camera.current.position.z -= 0.1;\r\n model.rotation.y -= Math.PI / 180;\r\n i++;\r\n renderScene();\r\n setDefaultSceneSize();\r\n if (i >= 20) {\r\n clearInterval(zoomInTimer);\r\n }\r\n }, 25);\r\n renderScene();\r\n };\r\n\r\n const animateOff = () => {\r\n if(camera.current){\r\n camera.current.position.x = 0;\r\n camera.current.position.y = 0;\r\n camera.current.position.z = 8;\r\n camera.current.rotation.x = 0;\r\n camera.current.rotation.y = 0;\r\n camera.current.rotation.z = 0;\r\n }\r\n if(model && model.rotation && model.rotation.y){\r\n model.rotation.y = 0;\r\n }\r\n renderScene();\r\n };\r\n\r\n const sceneSetup = useCallback(() => {\r\n if (sceneRef.current && canvasRef.current && !renderer.current && isActive) {\r\n renderer.current = new THREE.WebGLRenderer({ antialias: true, canvas: canvasRef.current, alpha:true});\r\n renderer.current.setClearColor(0xffffff, 0);\r\n var pmrem = new PMREMGenerator(renderer.current);\r\n\r\n const width = sceneRef.current.clientWidth;\r\n\r\n if (width >= 768) {\r\n //size = width / 2 > 600 ? 600 : width / 2;\r\n camera.current = new THREE.PerspectiveCamera(\r\n 75, // fov = field of view\r\n 1, // aspect ratio\r\n 0.1, // near plane\r\n 2000 // far plane\r\n );\r\n } else {\r\n //size = width > 600 ? 600 : width;\r\n camera.current = new THREE.PerspectiveCamera(\r\n 75, // fov = field of view\r\n 1, // aspect ratio\r\n 0.1, // near plane\r\n 2000 // far plane\r\n );\r\n }\r\n\r\n camera.current.position.x = 0;\r\n camera.current.position.y = 0;\r\n camera.current.position.z = 8;\r\n sceneRef.current.appendChild(renderer.current.domElement);\r\n\r\n // ORBIT CONTROL\r\n orbit.current = new OrbitControls(camera.current, renderer.current.domElement);\r\n orbit.current.enablePan = false;\r\n orbit.current.update();\r\n\r\n const dirLight1 = new THREE.DirectionalLight(0xffffff, 5);\r\n dirLight1.position.set(0, 0, 1);\r\n scene.current.add(dirLight1);\r\n const dirLight2 = new THREE.DirectionalLight(0xffffff, 5);\r\n dirLight2.position.set(0, 0, -1);\r\n scene.current.add(dirLight2);\r\n //scene.current.background = null;\r\n\r\n setDefaultSceneSize();\r\n\r\n console.log('loading object...', data.Key);\r\n // instantiate a loader\r\n const loader = new GLTFLoader();\r\n\r\n // load a resource\r\n loader.load(\r\n // resource URL relative to the /public/index.html of the app\r\n // '/verizon-9-digital-museum/gltf/' + data.Object,\r\n configData.basePath + configData.apiMediaPath + data.Object,\r\n // '/verizon-9-digital-museum/gltf/new-obj.glb',\r\n // called when resource is loaded\r\n object => {\r\n console.log('obj: ', object);\r\n // dispatch(addLoadedObject({ [data.Key]: object }));\r\n scene.current.add(object.scene);\r\n object.scene.scale.set(scale, scale, scale);\r\n\r\n // make this element available inside of the whole component to do any animation later\r\n // object.scene.rotation.z = -Math.PI / 2;\r\n object.scene.rotation.y = 0;\r\n object.scene.position.x = 0;\r\n object.scene.position.y = 0;\r\n object.scene.position.z = 0;\r\n setModel(object.scene);\r\n renderScene();\r\n },\r\n // called when loading is in progress\r\n xhr => {\r\n const loadingPercentage = Math.ceil((xhr.loaded / xhr.total) * 100);\r\n setLoading(loadingPercentage);\r\n console.log(loadingPercentage + '% loaded');\r\n },\r\n // called when loading has errors\r\n error => {\r\n console.log('An error happened: ' + error);\r\n }\r\n );\r\n }\r\n }, [sceneRef, canvasRef, renderer, isActive]);\r\n\r\n const renderScene = useCallback(() => {\r\n if (renderer.current) {\r\n renderer.current.render(scene.current, camera.current);\r\n }\r\n }, []);\r\n\r\n const setDefaultSceneSize = () => {\r\n const width = sceneRef.current.clientWidth;\r\n let viewportHeight = sceneRef.current.clientHeight;\r\n let viewportWidth = sceneRef.current.clientWidth;\r\n //let viewport = Math.min(width, height);\r\n\r\n if (width > viewportHeight) {\r\n viewportWidth = width / 2;\r\n } else {\r\n viewportHeight = viewportHeight * 0.9;\r\n }\r\n\r\n canvasRef.current.width = viewportWidth;\r\n canvasRef.current.height = viewportHeight;\r\n \r\n camera.current.aspect = viewportWidth / viewportHeight;\r\n camera.current.updateProjectionMatrix();\r\n renderer.current.setSize(viewportWidth, viewportHeight);\r\n renderScene();\r\n\r\n };\r\n\r\n const handleWindowResize = useCallback(() => {\r\n\r\n if (resizeTimer) {\r\n clearTimeout(resizeTimer);\r\n }\r\n resizeTimer = setTimeout(() => {\r\n setDefaultSceneSize();\r\n }, 50);\r\n }, [sceneRef]);\r\n\r\n useEffect(() => {\r\n if (canvasRef.current && isActive && !renderer.current) {\r\n sceneSetup();\r\n renderScene();\r\n\r\n window.addEventListener('resize', handleWindowResize);\r\n orbit.current.addEventListener('change', renderScene);\r\n canvasRef.current.addEventListener(\"touchstart\", handleCanvasEvent);\r\n canvasRef.current.addEventListener(\"touchend\", handleCanvasEvent);\r\n canvasRef.current.addEventListener(\"touchcancel\", handleCanvasEvent);\r\n \r\n }\r\n return () => {\r\n // window.removeEventListener('resize', handleWindowResize);\r\n // orbit.current && orbit.current.removeEventListener('change', renderScene);\r\n // if (model && model.dispose) model.dispose();\r\n };\r\n }, [sceneSetup, renderScene, handleWindowResize, model]);\r\n\r\n useEffect(() => {\r\n\r\n if (!isExploreMode && camera.current && model) {\r\n setDefaultSceneSize();\r\n animateOff();\r\n }\r\n }, [isExploreMode, model, loading]);\r\n\r\n useEffect(() => {\r\n if (!isActive && camera.current && model) {\r\n setDefaultSceneSize();\r\n animateOff();\r\n }\r\n }, [isActive, model]);\r\n\r\n const handleCanvasEvent = (e) =>{\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n const handleExploreSelected = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n onExploreSelected();\r\n };\r\n\r\n const handleExploreClosed = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n onExploreClosed();\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {loading < 100 ?
Loading 3D model... {loading}%
: null}\r\n
\r\n
\r\n {loading >= 100 && !isExploreMode ? : null}\r\n {loading >= 100 && !isPortrait && isExploreMode ? : null}\r\n
\r\n );\r\n};\r\n\r\nexport default Object3DSlide;\r\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { CarouselProvider, Slider, Slide, DotGroup, ButtonNext } from 'pure-react-carousel';\r\n\r\nimport { ReactComponent as CloseBtn } from '../../../assets/images/graphics/btn-close.svg';\r\nimport { getImageFilepath } from '../../../models/Utils';\r\nimport { useSwipeEvent } from '../../../models/Hooks';\r\nimport { timelineSlideTypes, linkTypes, timelineAnchorPosition, swipeDirection, swipeType } from '../../../models/Models';\r\nimport VideoSlide from '../VideoSlide/VideoSlide';\r\nimport Object3DSlide from '../Object3DSlide/Object3DSlide';\r\nimport './TimelineCarousel.scss';\r\nimport { Link } from 'react-router-dom';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\nconst TimelineCarousel = ({ card, isActive, inLightbox, onExploreClicked, onExitClicked }) => {\r\n const isLandscape = useMediaQuery({\r\n query: '(orientation: landscape)',\r\n });\r\n const carouselRef = useRef(null);\r\n const controlRef = useRef(null);\r\n const configData = useSelector(state => state.config);\r\n const [exploreMode, setExploreMode] = useState(false);\r\n const [currentSlide, setCurrentSlide] = useState(0);\r\n const carouselContext = controlRef.current && controlRef.current.context;\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n // effect to handle horizental swipe on desktop\r\n const swipeHandler = useCallback(\r\n e => {\r\n if (!e) {\r\n return;\r\n }\r\n if (\r\n e.dir === swipeDirection.RIGHT &&\r\n e.origin === swipeType.SCROLL &&\r\n currentSlide < carouselContext.state.totalSlides - 1\r\n ) {\r\n carouselContext.setStoreState({\r\n currentSlide: currentSlide + 1,\r\n });\r\n }\r\n if (e.dir === swipeDirection.LEFT && swipeType.SCROLL && currentSlide > 0) {\r\n carouselContext.setStoreState({\r\n currentSlide: currentSlide - 1,\r\n });\r\n }\r\n },\r\n [carouselContext, currentSlide]\r\n );\r\n\r\n useSwipeEvent(carouselRef.current, swipeHandler);\r\n\r\n useEffect(() => {\r\n if (!carouselContext) {\r\n return;\r\n }\r\n const onChange = () => setCurrentSlide(carouselContext.state.currentSlide);\r\n carouselContext.subscribe(onChange);\r\n return () => carouselContext.unsubscribe(onChange);\r\n }, [carouselContext]);\r\n\r\n function getLink(slide) {\r\n if (\r\n slide &&\r\n slide.Link &&\r\n slide.Link.HasLink &&\r\n slide.Link.Text &&\r\n slide.Link.Text.length > 0\r\n ) {\r\n var isExternal = slide.Link.Type === linkTypes.EXTERNAL;\r\n if (isExternal && slide.Link.ExternalURL) {\r\n var external = slide.Link.ExternalURL;\r\n return (\r\n \r\n {slide.Link.text}\r\n \r\n );\r\n } else if (!isExternal && slide.Link.InternalURL) {\r\n var external = slide.Link.InternalURL;\r\n if (external.BasePath && external.BasePath.Text && external.Path && external.Path.Path) {\r\n return (\r\n {slide.Link.text}\r\n );\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function getBackgroundImagePosition(anchor) {\r\n if (anchor) {\r\n switch (anchor) {\r\n case timelineAnchorPosition.CENTER:\r\n return 'center';\r\n case timelineAnchorPosition.RIGHT:\r\n return 'right';\r\n case timelineAnchorPosition.LEFT:\r\n return 'left';\r\n }\r\n }\r\n return 'center';\r\n }\r\n\r\n const on3DExploreSelected = () => {\r\n if(isLandscape){\r\n setExploreMode(true);\r\n } else {\r\n onExploreClicked(card.Year);\r\n }\r\n };\r\n\r\n const on3DExploreClosed = () => {\r\n if(isLandscape){\r\n setExploreMode(false);\r\n }\r\n };\r\n\r\n const onCloseButtonClicked = () => {\r\n onExitClicked();\r\n setExploreMode(false);\r\n };\r\n\r\n useEffect(() => {\r\n setExploreMode(inLightbox);\r\n }, [inLightbox]);\r\n\r\n useEffect(() => {\r\n if(isLandscape && exploreMode){\r\n setExploreMode(false);\r\n }\r\n }, [currentSlide]);\r\n\r\n return (\r\n \r\n {card.Year}\r\n 1}\r\n touchEnabled={(card.Cards || []).length > 1}\r\n >\r\n \r\n {(card.Cards || []).map((slide, i) => (\r\n \r\n \r\n {slide.Type === timelineSlideTypes.VIDEO ? (\r\n \r\n ) : null}\r\n {slide.Type === timelineSlideTypes.OBJECT_3D ? (\r\n \r\n ) : null}\r\n {slide.Type === timelineSlideTypes.IMAGE && slide.BackgroundImage.Overlay ? (\r\n
\r\n ) : null}\r\n
\r\n {(slide.Type !== timelineSlideTypes.OBJECT_3D) || (slide.Type === timelineSlideTypes.OBJECT_3D && (inLightbox || isLandscape)) ? \r\n

{slide.Body}

: null\r\n }\r\n {getLink(slide)}\r\n
\r\n
\r\n \r\n ))}\r\n \r\n
\r\n {currentSlide !== (card.Cards || []).length - 1 && }\r\n
\r\n 1 ? 'visible' : 'hidden' }}\r\n />\r\n \r\n\r\n {card.Year}\r\n {inLightbox && !isLandscape && \r\n
\r\n \r\n
\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default TimelineCarousel;\r\n","import React, { useState, useRef, useEffect, useLayoutEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Swipeable } from 'react-swipeable';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport TimelineCarousel from '../TimelineCarousel/TimelineCarousel';\r\nimport { setPBPBlockScroll } from '../../../store/reducers/mainReducer';\r\nimport { useSwipeEvent } from '../../../models/Hooks';\r\nimport './Timeline.scss';\r\n\r\nconst Timeline = ({ isActive }) => {\r\n const dispatch = useDispatch();\r\n const [activeYear, setActiveYear] = useState(0);\r\n const [autoScroll, setAutoScroll] = useState(false);\r\n const [lightboxYear, setLightboxYear] = useState(null);\r\n const [swipeEvent, setSwipeEvent] = useState(false);\r\n const [cardActive, setCardActive] = useState(false);\r\n const cmsData = useSelector(state => state.data.cms.poweredByPurpose);\r\n const cardsRef = useRef(null);\r\n const yearsRef = useRef(null);\r\n const timelineRef = useRef(null);\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const scrollTime = 300;\r\n const timeStep = 30;\r\n let timelineData =\r\n (cmsData && cmsData.NetworkMilestones && cmsData.NetworkMilestones.Timeline) || [];\r\n\r\n if (timelineData.length) {\r\n timelineData = timelineData.sort((a, b) => b.Year - a.Year);\r\n }\r\n\r\n useEffect(() => {\r\n if (isActive) {\r\n dispatch(setPBPBlockScroll(true));\r\n setCardActive(false);\r\n }\r\n }, [isActive]);\r\n\r\n useEffect(() => {\r\n dispatch(setPBPBlockScroll(lightboxYear >= 0));\r\n setCardActive(lightboxYear);\r\n }, [lightboxYear]);\r\n\r\n // years scroll handler\r\n useLayoutEffect(() => {\r\n const ref = cardsRef.current;\r\n let scrollIntoViewTimer = null;\r\n const handleScroll = e => {\r\n e.stopPropagation();\r\n if (\r\n (ref.scrollTop <= 0 || Math.round(ref.scrollTop) >= ref.scrollHeight - ref.clientHeight) &&\r\n !cardActive\r\n ) {\r\n setTimeout(() => dispatch(setPBPBlockScroll(false)), 500);\r\n } else {\r\n dispatch(setPBPBlockScroll(true));\r\n }\r\n if (autoScroll || cardActive) {\r\n return;\r\n }\r\n let i;\r\n for (i = 0; i < ref.children.length; i++) {\r\n if (\r\n ref.scrollTop + ref.offsetTop <=\r\n ref.children[i].offsetHeight + ref.children[i].offsetTop - 300\r\n ) {\r\n break;\r\n }\r\n }\r\n if (i >= ref.children.length) {\r\n i = ref.children.length - 1;\r\n }\r\n setActiveYear(i);\r\n if (scrollIntoViewTimer) {\r\n clearTimeout(scrollIntoViewTimer);\r\n }\r\n scrollIntoViewTimer = setTimeout(() => {\r\n if (yearsRef.current) {\r\n scrollIntoView(yearsRef.current.children[i]);\r\n }\r\n }, 100);\r\n };\r\n\r\n ref.addEventListener('scroll', handleScroll);\r\n return () => {\r\n ref.removeEventListener('scroll', handleScroll);\r\n dispatch(setPBPBlockScroll(false));\r\n };\r\n }, [autoScroll]);\r\n\r\n const onSwipe = e => {\r\n if (lightboxYear) {\r\n if (e.dir !== 'Right' && e.dir !== 'Left') {\r\n setLightboxYear(null);\r\n }\r\n } else {\r\n setSwipeEvent(true);\r\n setTimeout(() => {\r\n setSwipeEvent(false);\r\n }, 100);\r\n }\r\n };\r\n\r\n const onExitLightbox = () => {\r\n if (lightboxYear) {\r\n setLightboxYear(null);\r\n setTimeout(() => {\r\n dispatch(setPBPBlockScroll(true));\r\n }, 500);\r\n }\r\n };\r\n\r\n useSwipeEvent(window, e => {\r\n if (!lightboxYear || !e) {\r\n return;\r\n }\r\n if (e.dir === 'Up' || e.dir === 'Down') {\r\n setLightboxYear(null);\r\n }\r\n });\r\n\r\n useLayoutEffect(() => {\r\n onExitLightbox();\r\n\r\n window.addEventListener('resize', onExitLightbox);\r\n\r\n return () => {\r\n window.removeEventListener('resize', onExitLightbox);\r\n };\r\n }, []);\r\n\r\n const onCardClick = (y, e) => {\r\n if (!isPortrait) {\r\n return;\r\n }\r\n const elType = e.nativeEvent && e.nativeEvent.target.type;\r\n let classList = e.nativeEvent && e.nativeEvent.target && e.nativeEvent.target.classList;\r\n if (!classList || !classList.length || !classList.contains) {\r\n classList = [];\r\n }\r\n if (\r\n elType === 'button' ||\r\n (classList.contains &&\r\n (classList.contains('btn-next-container') || classList.contains('carousel__dot-group')))\r\n ) {\r\n return;\r\n }\r\n if (!lightboxYear && !swipeEvent) {\r\n setLightboxYear(y);\r\n dispatch(setPBPBlockScroll(true));\r\n }\r\n };\r\n\r\n const onYearClick = i => {\r\n if (!autoScroll) {\r\n setActiveYear(i);\r\n scrollIntoView(cardsRef.current.children[i], true);\r\n }\r\n };\r\n\r\n const scrollIntoView = (element, updateState = false) => {\r\n let target = element.offsetTop - Math.round(element.parentElement.offsetTop);\r\n if (target > element.parentElement.scrollHeight - element.parentElement.offsetHeight) {\r\n target = element.parentElement.scrollHeight - element.parentElement.offsetHeight;\r\n }\r\n const step = (target - element.parentElement.scrollTop) / (scrollTime / timeStep);\r\n if (step === 0) {\r\n return;\r\n }\r\n updateState && setAutoScroll(true);\r\n let counter = 0;\r\n\r\n const timerId = setInterval(() => {\r\n element.parentElement.scrollTop += step;\r\n counter++;\r\n if (counter * timeStep >= scrollTime) {\r\n element.parentElement.scrollTop = target;\r\n updateState && setAutoScroll(false);\r\n clearInterval(timerId);\r\n }\r\n }, timeStep);\r\n };\r\n\r\n const handleTimelineExitClicked = () => {\r\n onExitLightbox();\r\n };\r\n\r\n const handleExploreClicked = (year) => {\r\n console.log('explore - lightbox hook pressed');\r\n onCardClick(year, \r\n {\r\n nativeEvent: null\r\n }\r\n );\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
    \r\n {timelineData.map((y, i) => (\r\n onYearClick(i)} role=\"button\" tabIndex={i * 100}\r\n onKeyPress={() => onYearClick(i)}\r\n className={`${activeYear === i ? 'active' : ''} ${\r\n isPortrait ? 'portrait' : 'landscape'\r\n }`}\r\n >\r\n {y.Year}\r\n \r\n ))}\r\n
\r\n
\r\n {timelineData.map((y, i) => (\r\n <>\r\n onCardClick(y.Year, e)}\r\n >\r\n \r\n \r\n \r\n
\r\n {lightboxYear === y.Year &&
}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Timeline;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { BsChevronDown } from 'react-icons/bs';\r\nimport Timeline from '../Timeline/Timeline';\r\nimport './TimelineIntro.scss';\r\nimport { formatParagraphs } from '../../../models/Utils';\r\nimport { ADAARIARoles, ADALandmarks, ADAWidgitRoles } from '../../../models/ADA';\r\n\r\nconst TimelineIntro = ({ content, goToNextSlide, goToPrevSlide, isActive, timelineIndex }) => {\r\n const [timelineExpanded, setTimelineExpanded] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const onBeginClicked = () => {\r\n setTimelineExpanded(true);\r\n };\r\n useEffect(() => {\r\n if (!isActive) {\r\n setTimeout(() => {\r\n setTimelineExpanded(false);\r\n }, 500);\r\n }\r\n }, [isActive]);\r\n\r\n return timelineExpanded ? (\r\n \r\n ) : (\r\n
\r\n
\r\n

{content && content.Header}

\r\n
{content && formatParagraphs(content.Body)}
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TimelineIntro;\r\n","import React, { useRef, useLayoutEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { setPBPBlockScroll } from '../../../store/reducers/mainReducer';\r\nimport PollOption from '../../Common/PollOption/PollOption';\r\nimport './RelatedStories.scss';\r\n\r\nconst RelatedStories = ({ content }) => {\r\n const dispatch = useDispatch();\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const dmnav = useSelector(state => state.data.menus.digitalMuseum);\r\n const linksHolderRef = useRef(null);\r\n\r\n // years scroll handler\r\n useLayoutEffect(() => {\r\n const ref = linksHolderRef.current;\r\n if (!ref) {\r\n return;\r\n }\r\n dispatch(setPBPBlockScroll(true));\r\n const handleScroll = e => {\r\n e.stopPropagation();\r\n if (ref.scrollTop <= 0 || Math.round(ref.scrollTop) >= ref.scrollHeight - ref.clientHeight) {\r\n setTimeout(() => dispatch(setPBPBlockScroll(false)), 500);\r\n } else {\r\n dispatch(setPBPBlockScroll(true));\r\n }\r\n };\r\n\r\n ref.addEventListener('scroll', handleScroll);\r\n return () => {\r\n ref.removeEventListener('scroll', handleScroll);\r\n dispatch(setPBPBlockScroll(false));\r\n };\r\n }, [linksHolderRef.current]);\r\n\r\n const handleClicked = key => {\r\n var match = content.Links.find(x => x.Key === key);\r\n\r\n switch (match.LinkType) {\r\n case '0':\r\n window.open(match.ExternalURL, '_blank');\r\n break;\r\n\r\n case '1':\r\n var storyKey = match.InternalURL.Menu.Key;\r\n var navMatch = dmnav.find(x => x.key === storyKey);\r\n document.location.href = navMatch.link;\r\n break;\r\n }\r\n };\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n var links = [];\r\n if (content && content.Links) {\r\n var twoColumns = !isPortrait && content.Links.length > 4;\r\n for (var i = 0; i < content.Links.length; i++) {\r\n var link = content.Links[i];\r\n var key = link.Key;\r\n links.push(\r\n
\r\n {formatPollOption(key, i, isPortrait ? 'calc(100% + 10px)' : '49.5%', link)}\r\n {twoColumns && i + 1 < content.Links.length\r\n ? formatPollOption(content.Links[i + 1].Key, i + 1, '48%', content.Links[i + 1])\r\n : null}\r\n
\r\n );\r\n if (twoColumns) {\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n function formatPollOption(key, i, width, link) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{content.Header}
\r\n
\r\n
\r\n {links}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RelatedStories;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { CarouselProvider, Slider, Slide, DotGroup, ButtonNext } from 'pure-react-carousel';\r\n\r\nimport VideoSlide from '../VideoSlide/VideoSlide';\r\nimport { getImageFilepath, formatParagraphs, getNavbarHeight, getPBPVideoSlides } from '../../../models/Utils';\r\nimport { ReactComponent as PlayButton } from '../../../assets/images/buttons/btn_play.svg';\r\nimport { ADAARIARoles, ADALandmarks, ADAWidgitRoles } from '../../../models/ADA';\r\nimport './FullScreenCarousel.scss';\r\n\r\nconst FullScreenCarousel = ({ data, active }) => {\r\n const controlRef = useRef(null);\r\n const carouselRef = useRef(null);\r\n const slides = getPBPVideoSlides(data);\r\n const [animating, setIsAnimating] = useState(false);\r\n const [videoPlaying, setVideoPlaying] = useState(false);\r\n const isActive = false;\r\n const carouselContext = controlRef.current && controlRef.current.context;\r\n const configData = useSelector(state => state.config);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n useEffect(() => {\r\n if (controlRef.current) {\r\n setTimeout(() => {\r\n if (controlRef.current) {\r\n controlRef.current.context.setStoreState({ currentSlide: 0 });\r\n }\r\n }, 1000);\r\n }\r\n }, [active]);\r\n\r\n // effect to handle horizental swipe on desktop\r\n useEffect(() => {\r\n if (!carouselRef.current) {\r\n return;\r\n }\r\n let checkForScroll = true;\r\n let maxDeltaX = 0;\r\n const handleScroll = e => {\r\n const scrollThreshold = 2;\r\n if (checkForScroll && Math.abs(e.deltaY) < Math.abs(e.deltaX)) {\r\n if (Math.abs(e.deltaX) > Math.abs(maxDeltaX) && Math.abs(maxDeltaX) <= scrollThreshold) {\r\n maxDeltaX = e.deltaX;\r\n } else {\r\n checkForScroll = false;\r\n if (Math.abs(maxDeltaX) > scrollThreshold) {\r\n const carouselContext = controlRef.current.context;\r\n if (maxDeltaX > 0) {\r\n if (carouselContext.state.currentSlide < carouselContext.state.totalSlides - 1) {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: carouselContext.state.currentSlide + 1,\r\n });\r\n }\r\n } else {\r\n if (carouselContext.state.currentSlide > 0) {\r\n controlRef.current.context.setStoreState({\r\n currentSlide: carouselContext.state.currentSlide - 1,\r\n });\r\n }\r\n }\r\n }\r\n maxDeltaX = 0;\r\n setTimeout(() => {\r\n checkForScroll = true;\r\n }, 1000);\r\n }\r\n }\r\n };\r\n\r\n // modern Chrome requires { passive: false } when adding event\r\n let supportsPassive = false;\r\n try {\r\n carouselRef.current.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n carouselRef.current.addEventListener(wheelEvent, handleScroll, wheelOpt); // modern desktop\r\n return () => {\r\n carouselRef.current.removeEventListener(wheelEvent, handleScroll);\r\n };\r\n }, []);\r\n useEffect(() => {\r\n if (!carouselContext) {\r\n return;\r\n }\r\n function onChange() {\r\n setIsAnimating(true);\r\n setTimeout(() => {\r\n setIsAnimating(false);\r\n }, 500);\r\n }\r\n carouselContext.subscribe(onChange);\r\n return () => carouselContext.unsubscribe(onChange);\r\n }, [carouselContext]);\r\n\r\n const handleOnPlaying = (val) => {\r\n setVideoPlaying(val);\r\n };\r\n\r\n return (\r\n
\r\n 1}\r\n touchEnabled={slides.length > 1}\r\n >\r\n \r\n {slides.map((slide, i) => (\r\n \r\n {slide.Video ? (\r\n \r\n ) : null}\r\n \r\n {slide.Background && slide.Background.Overlay ? (\r\n
\r\n ) : null}\r\n {slide.Video && slide.Video.Overlay ? (\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n {slide.Header ?

{slide.Header}

: null}\r\n
{formatParagraphs(slide.Body)}
\r\n {slide.Video && \r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n \r\n ))}\r\n \r\n {active && carouselContext && carouselContext.state && carouselContext.state.currentSlide !== slides.length - 1 && !videoPlaying && }\r\n {active && 1 ? '' : 'hidden' }} />}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FullScreenCarousel;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { ReactComponent as CloseBtn } from '../../../assets/images/graphics/btn-close.svg';\r\nimport { useWindowSize } from '../../../models/Hooks';\r\nimport { calculateSize, getNavbarHeight, getImageFilepath } from '../../../models/Utils';\r\nimport { setMediaState, setInFullScreenVideo } from '../../../store/reducers/mainReducer';\r\nimport { reportEvent } from '../../../store/reducers/gaReducer';\r\n\r\nimport ReactPlayer from 'react-player';\r\n\r\nimport './VideoIntro.scss';\r\nimport Spinner from '../../Common/Spinner/Spinner';\r\nimport { ADAARIARoles, ADAWidgitRoles } from '../../../models/ADA';\r\n\r\n\r\nconst VideoIntro = ({ data, active }) => {\r\n const dispatch = useDispatch();\r\n const size = useWindowSize();\r\n const player = useRef(null);\r\n const isInitialized = useSelector(state => state.data.initialized);\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n const cmsData = useSelector(state => state.data.cms.poweredByPurpose);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n const [topOffset, setTopOffset] = useState(0);\r\n const [playing, setPlaying] = useState(true);\r\n const [loaded, setLoaded] = useState(false);\r\n const [muted, setMuted] = useState(true);\r\n const [fullscreen, goToFullscreen] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n useEffect(() => {\r\n setTopOffset(getNavbarHeight());\r\n }, [size]);\r\n\r\n useEffect(() => {\r\n\r\n clearTimeout(fadeTimeout);\r\n\r\n if (active) {\r\n reset();\r\n delayedFade()\r\n } else {\r\n setMuted(true);\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n setPlaying(false);\r\n }\r\n }, [active]);\r\n\r\n const reset = prop => {\r\n setPlaying(true);\r\n setMuted(true);\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n if (loaded && player && player.current) {\r\n player.current.seekTo(0, 'fraction');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(setMediaState(fullscreen));\r\n }, [fullscreen]);\r\n\r\n const handleMaximizeClicked = () => {\r\n setPlaying(true);\r\n setMuted(false);\r\n setLoaded(false);\r\n goToFullscreen(true);\r\n delayedFade();\r\n dispatch(setInFullScreenVideo(true));\r\n dispatch(reportEvent({ category:\"VIDEO_PLAYED_PBP_INTRO\", action: cmsData.Introduction.Header + \" - \" + data.Video.URL}));\r\n };\r\n\r\n if (!isInitialized || !cmsData) {\r\n return null;\r\n }\r\n\r\n var text = (\r\n
\r\n

{cmsData.Introduction.Header}

\r\n
{cmsData.Introduction.Body}
\r\n \r\n
\r\n );\r\n\r\n var fadeTimeout;\r\n function delayedFade() {\r\n fadeTimeout = setTimeout(handleVideoStart, videoTimeout);\r\n }\r\n\r\n function handleVideoStart() {\r\n setLoaded(true);\r\n }\r\n\r\n const handleOnExit = () => {\r\n goToFullscreen(false);\r\n dispatch(setInFullScreenVideo(false));\r\n setMuted(true);\r\n };\r\n\r\n var width = size.width;\r\n var height = size.height - topOffset;\r\n var dimensions = calculateSize(1920, 1080, width, height);\r\n\r\n var video = (\r\n \r\n );\r\n\r\n var imagePlaceholder = data.Video.BackgroundMedia ? (\r\n \r\n ) : null;\r\n\r\n \r\n\r\n var classname = 'videofadein ' + (loaded ? 'loaded' : '');\r\n //var classnameFullScreen = \"video-fullscreen \" + (loaded ? 'loaded' : '');\r\n\r\n\r\n return (\r\n
\r\n {fullscreen ? (\r\n
\r\n \r\n
\r\n {data.VideoPreview.BackgroundMedia ?\r\n data.VideoPreview.BackgroundMedia.split(\".\").pop() === \"mp4\" ?\r\n video : imagePlaceholder\r\n : video}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n {data.VideoPreview.BackgroundMedia? data.VideoPreview.BackgroundMedia.split(\".\").pop() === \"mp4\" ? video : imagePlaceholder : video}\r\n\r\n
\r\n
\r\n {text}\r\n
\r\n );\r\n};\r\n\r\nexport default VideoIntro;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { BsChevronDown } from 'react-icons/bs';\r\nimport { ADAARIARoles } from '../../../models/ADA';\r\n\r\nimport Checkmark from '../../../assets/images/graphics/icn_checkmark.png';\r\n\r\nimport './ExhibitMenu.scss';\r\n\r\nconst ExhibitMenu = ({title, links}) => {\r\n const [click, setClick] = useState(false);\r\n const [selected, setSelected] = useState(0);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n const BarClicked = () => {\r\n setClick(!click);\r\n };\r\n\r\n const LinkClicked = i => {\r\n setSelected(i);\r\n setClick(false);\r\n };\r\n\r\n const BackgroundClicked = () => {\r\n setClick(false);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
{title}
\r\n \r\n
\r\n {click &&\r\n
    \r\n {links.map((item, index) => (\r\n
  • \r\n \"\"\r\n LinkClicked(index)}\r\n >\r\n {item.title}\r\n \r\n
  • \r\n ))}\r\n
\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ExhibitMenu;\r\n","import React, { useRef, useEffect, useState, useLayoutEffect, useCallback } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { CarouselProvider, Slider, Slide } from 'pure-react-carousel';\r\nimport { Swipeable } from 'react-swipeable';\r\nimport { useParams, useHistory } from 'react-router-dom';\r\n\r\nimport { pbpCardTypes } from '../../models/Models';\r\n\r\nimport { setPBPBlockScroll, setHasVisitedPBP } from '../../store/reducers/mainReducer';\r\nimport NextStory from '../../components/Common/NextStory/NextStory';\r\nimport Pulse from '../../components/PoweredByPurpose/Pulse/Pulse';\r\nimport TimelineIntro from '../../components/PoweredByPurpose/TimelineIntro/TimelineIntro';\r\nimport RelatedStories from '../../components/PoweredByPurpose/RelatedStories/RelatedStories';\r\nimport FullScreenCarousel from '../../components/PoweredByPurpose/FullScreenCarousel/FullScreenCarousel';\r\nimport VideoIntro from '../../components/PoweredByPurpose/VideoIntro/VideoIntro';\r\nimport ExhibitMenu from '../../components/Common/ExhibitMenu/ExhibitMenu';\r\nimport { ADAARIARoles, ADALandmarks, ADAWidgitRoles } from '../../models/ADA';\r\nimport './PBPHome.scss';\r\nimport CardHolder from '../../components/Common/CardHolder/CardHolder';\r\n\r\nimport { getPBPData, getPBPArray } from '../../models/Utils';\r\n\r\nlet maxDeltaY = 0;\r\nlet checkForScroll = true;\r\n\r\nconst PBPHome = () => {\r\n const dispatch = useDispatch();\r\n const cmsData = useSelector(state => state.data.cms);\r\n const navbar = useSelector(state => state.data.menus.poweredByPurpose);\r\n const blockScroll = useSelector(state => state.data.PBPBlockScroll);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const creditsOpened = useSelector(state => state.data.creditsOpened);\r\n const hasVisitedBBF = useSelector(state => state.data.hasVisitedBBF);\r\n const [index, setIndex] = useState(0);\r\n const controlRef = useRef(null);\r\n let { slideId } = useParams();\r\n let history = useHistory();\r\n let [menuDisplay, setMenuDisplay] = useState('menu');\r\n const pbpArray = getPBPArray(cmsData.poweredByPurpose);\r\n const storyData = getPBPData(slideId, cmsData.poweredByPurpose, pbpArray, history);\r\n const [ instantAnimation, setInstantAnimation ] = useState(false);\r\n\r\n const [ showCredits, setShowCredits ] = useState(false);\r\n const [showBottomNav, setShowBottomNav] = useState(false);\r\n\r\n const goToNextSlide = useCallback(() => {\r\n if (index < pbpArray.length - 1) {\r\n setInstantAnimation(false);\r\n setIndex(index + 1);\r\n } else {\r\n setShowBottomNav(true);\r\n }\r\n if (index >= pbpArray.length - 2) {\r\n setShowCredits(true);\r\n }\r\n }, [index]);\r\n\r\n const goToPrevSlide = useCallback(() => {\r\n if (index > 0) {\r\n if (index < pbpArray.length) {\r\n setShowCredits(false);\r\n }\r\n setShowBottomNav(false);\r\n setInstantAnimation(false);\r\n setIndex(index - 1);\r\n }\r\n }, [index]);\r\n\r\n useEffect(() => {\r\n document.title = \"The Verizon Story - Powered by Purpose\";\r\n\r\n const carouselContext = controlRef && controlRef.current && controlRef.current.context;\r\n if (!carouselContext) {\r\n return;\r\n }\r\n function onChange() {\r\n var currentInd = carouselContext.state.currentSlide;\r\n if (pbpArray && pbpArray.length > currentInd && pbpArray[currentInd] && pbpArray[currentInd].type === pbpCardTypes.TIMELINE) {\r\n setTimeout(() => dispatch(setPBPBlockScroll(false)), 100);\r\n }\r\n if (pbpArray && pbpArray.length > currentInd && pbpArray[currentInd] && pbpArray[currentInd].Menu && pbpArray[currentInd].Menu.Path) {\r\n history.push(`/${cmsData.poweredByPurpose.Path.Text}/${pbpArray[currentInd].Menu.Path}`);\r\n }\r\n }\r\n carouselContext.subscribe(onChange);\r\n return () => carouselContext.unsubscribe(onChange);\r\n }, [controlRef, dispatch]);\r\n\r\n useLayoutEffect(() => {\r\n const handleScroll = e => {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n const scrollThreshold = 0;\r\n if (checkForScroll && Math.abs(e.deltaX) < Math.abs(e.deltaY)) {\r\n if (Math.abs(e.deltaY) > Math.abs(maxDeltaY) && Math.abs(maxDeltaY) <= scrollThreshold) {\r\n maxDeltaY = e.deltaY;\r\n } else {\r\n checkForScroll = false;\r\n if (Math.abs(maxDeltaY) > scrollThreshold && !blockScroll && !creditsOpened) {\r\n if (maxDeltaY > 0) {\r\n goToNextSlide();\r\n } else {\r\n goToPrevSlide();\r\n }\r\n } else if (Math.abs(maxDeltaY) > scrollThreshold) {\r\n console.log('scroll!!: ', blockScroll);\r\n }\r\n maxDeltaY = 0;\r\n setTimeout(() => {\r\n checkForScroll = true;\r\n }, 1000);\r\n }\r\n }\r\n };\r\n\r\n // modern Chrome requires { passive: false } when adding event\r\n let supportsPassive = false;\r\n try {\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n const AddEvents = () => {\r\n window.addEventListener(wheelEvent, handleScroll, wheelOpt); // modern desktop\r\n window.addEventListener('touchmove', handleScroll, wheelOpt); // mobile\r\n window.addEventListener('keydown', handleScroll, false);\r\n };\r\n const RemoveEvents = () => {\r\n window.removeEventListener(wheelEvent, handleScroll);\r\n window.removeEventListener('touchmove', handleScroll);\r\n window.removeEventListener('keydown', handleScroll);\r\n };\r\n if(!menuOpened && !blockScroll && !creditsOpened){\r\n AddEvents();\r\n } else {\r\n RemoveEvents();\r\n }\r\n return () => {\r\n RemoveEvents();\r\n };\r\n }, [goToNextSlide, goToPrevSlide, blockScroll, menuOpened, creditsOpened]);\r\n\r\n useEffect(() => {\r\n if (!cmsData.poweredByPurpose || !controlRef.current) {\r\n return;\r\n }\r\n Object.keys(cmsData.poweredByPurpose);\r\n let i = 0;\r\n const slides = Object.keys(cmsData.poweredByPurpose)\r\n .filter(k => k !== 'Key')\r\n .map(k => {\r\n if (k === 'Key') return {};\r\n else {\r\n return {\r\n name: k,\r\n Key: cmsData.poweredByPurpose[k].Key,\r\n index: i++,\r\n };\r\n }\r\n });\r\n\r\n if(index !== storyData.Index){\r\n if (storyData.Index >= pbpArray.length - 1) {\r\n setShowCredits(true);\r\n } else {\r\n setShowCredits(false)\r\n }\r\n \r\n }\r\n }, [cmsData]);\r\n\r\n useEffect(() => {\r\n dispatch(setHasVisitedPBP(true));\r\n }, []);\r\n\r\n useEffect(() => {\r\n const carouselContext = controlRef && controlRef.current && controlRef.current.context;\r\n if(carouselContext) {\r\n setInstantAnimation(true);\r\n setIndex(storyData.Index);\r\n }\r\n }, [slideId]);\r\n\r\n useEffect(() => {\r\n const carouselContext = controlRef && controlRef.current && controlRef.current.context;\r\n if(carouselContext) {\r\n const { currentSlide } = carouselContext.getStoreState();\r\n if(currentSlide !== index){\r\n carouselContext.setStoreState({ currentSlide: index, disableAnimation: instantAnimation });\r\n }\r\n }\r\n }, [index]);\r\n\r\n const handleSwipeUp = () => {\r\n if (!blockScroll && !creditsOpened) {\r\n goToNextSlide();\r\n }\r\n };\r\n\r\n const handleSwipeDown = () => {\r\n if (!blockScroll && !creditsOpened) {\r\n goToPrevSlide();\r\n }\r\n };\r\n\r\n const onCreditsClick = (active) => {\r\n dispatch(setPBPBlockScroll(active));\r\n };\r\n\r\n const getSlideByType = (type, slideIndex, i) => {\r\n let content;\r\n var isActive = slideIndex === i;\r\n switch (type) {\r\n case pbpCardTypes.INTRODUCTION:\r\n content = ;\r\n break;\r\n case pbpCardTypes.PULSE:\r\n content = ;\r\n break;\r\n case pbpCardTypes.TIMELINE:\r\n content = (\r\n \r\n );\r\n break;\r\n case pbpCardTypes.CAROUSEL:\r\n content = ;\r\n break;\r\n case pbpCardTypes.RELATEDSTORIES:\r\n content = ;\r\n break;\r\n }\r\n return content;\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {pbpArray.map((data, i) => (\r\n \r\n = 0 && i < pbpArray.length - 1}\r\n isLightBg={data.LightBg}\r\n isInlineCard={false}\r\n cardHeight={\"none\"}\r\n >\r\n {getSlideByType(data.Type, data.Index, index)}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {(showBottomNav || showCredits) && \r\n \r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PBPHome;\r\n","import React from 'react';\r\nimport './CloseIcon.scss';\r\n\r\n\r\nconst CloseIcon = ({ close, label, darkMode, dimension, tabIndex, role }) => {\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport default CloseIcon;","import React from 'react';\r\nimport './ToggleMenu.scss';\r\n\r\nconst ToggleMenu = ({ toggle, darkMode, label, tabIndex, role }) => {\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport default ToggleMenu;","import React, { useState, useEffect, useRef } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useDispatch, useSelector} from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport './Navbar.scss';\r\nimport VerizonDarkLogo from '../../../assets/images/graphics/VerizonLogoDarkTrans.svg';\r\nimport VerizonLogo from '../../../assets/images/graphics/VerizonLogoTrans.svg';\r\n// Custom components\r\nimport CloseIcon from '../CloseIcon/CloseIcon';\r\nimport ToggleMenu from '../ToggleMenu/ToggleMenu';\r\n\r\nimport { setMenuOpened, setSkipNavbarADA, setNavBarState } from '../../../store/reducers/mainReducer';\r\n\r\nimport { Paths, NavbarContent, NavbarLink } from '../../../models/Models';\r\nimport { ADAARIARoles, ADALandmarks, ADAWidgitRoles } from '../../../models/ADA';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { EqualStencilFunc } from 'three';\r\n\r\nconst Navbar = () => {\r\n const dispatch = useDispatch();\r\n const lightMode = false;\r\n const globalData = useSelector(state => state.data.cms.global);\r\n const showNavbar = useSelector(state => state.data.showNavBar);\r\n const dmnavbar = useSelector(state => state.data.menus.digitalMuseum);\r\n const aboutnavbar = useSelector(state => state.data.menus.about);\r\n const themuseumnavbar = useSelector(state => state.data.menus.theMuseum);\r\n const storyArchive = useSelector(state => state.data.cms.digitalMuseum.StoryArchive);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const isShowingCredoPopup = useSelector(state => state.data.isShowingCredoPopup);\r\n //const shouldSkipNavbarADA = useSelector(state => state.data.shouldSkipNavbarADA);\r\n const [cursor, setCursor] = useState(0);\r\n const [desktopMenuOpened, setDesktopMenuOpened] = useState(false);\r\n const [desktopMenuCloseIntent, setDesktopMenuCloseIntent] = useState(false);\r\n const { pathname } = useLocation();\r\n const navContainer = useRef(null);\r\n //const modal = useRef(null);\r\n const isDesktopView = useMediaQuery({ query: '(min-width: 1020px)' });\r\n\r\n function handleClick() {\r\n console.log(\"CHecking click\")\r\n let modal = document.getElementById(\"modal\");\r\n if (modal && !menuOpened && typeof modal.showModal === 'function') {\r\n \r\n modal.showModal();\r\n }\r\n else if (modal && menuOpened && typeof modal.close === 'function') {\r\n console.log(\"Closing!\")\r\n modal.close();\r\n }\r\n setNavMenu(!menuOpened);\r\n setMenu(!menuOpened);\r\n }\r\n\r\n useEffect(() => {\r\n \r\n document.addEventListener('focus', handleDesktopFocusIn, true);\r\n document.addEventListener('blur', handleDesktopFocusOut, true);\r\n\r\n \r\n return (() => {\r\n document.removeEventListener('focus', handleDesktopFocusIn, true)\r\n document.removeEventListener('blur', handleDesktopFocusOut, true)\r\n })\r\n })\r\n\r\n function handleDesktopKeyPress() {\r\n console.log(\"toggle\")\r\n setDesktopMenuOpened(!desktopMenuOpened);\r\n setNavMenu(true);\r\n }\r\n\r\n function handleDesktopFocusIn() {\r\n if (desktopMenuOpened && !document.activeElement.classList.contains(\"nav-links\")) {\r\n \r\n setDesktopMenuOpened(false);\r\n document.removeEventListener('focus', handleDesktopFocusIn);\r\n }\r\n }\r\n\r\n function handleDesktopFocusOut(e) {\r\n if (e && e.target && e.target.className && e.target.classList.contains(\"nav-links\")) {\r\n\r\n document.activeElement.tabIndex = -1;\r\n \r\n }\r\n }\r\n\r\n function handleMenuItemKeyDown(e, currentMenuIndex) {\r\n \r\n \r\n let navItems = Array.from(document.getElementsByClassName(\"nav-links\"));\r\n \r\n navItems = navItems.filter(item => item.slot == currentMenuIndex && item.slot != \"\");\r\n\r\n //find active NavItemIndex\r\n let currentNavItemIndex = -1;\r\n navItems.forEach((value, index, array) => { if (value.tabIndex === 1) currentNavItemIndex = index; return; })\r\n\r\n // arrow down/up button should select next/previous list element\r\n if (e.keyCode === 38 && (currentNavItemIndex === -1 || currentNavItemIndex - 1 >= 0)) {//up arrow\r\n if (!desktopMenuOpened)\r\n handleDesktopKeyPress();\r\n \r\n if (currentNavItemIndex === -1) {\r\n currentNavItemIndex = 1;\r\n }\r\n \r\n navItems[currentNavItemIndex].tabIndex = -1;\r\n navItems[currentNavItemIndex - 1].tabIndex = 1;\r\n navItems[currentNavItemIndex - 1].focus();\r\n \r\n }\r\n else if (e.keyCode === 40 && currentNavItemIndex + 1 < navItems.length) {//down arrow\r\n console.log(navItems.length)\r\n if (!desktopMenuOpened)\r\n handleDesktopKeyPress();\r\n if(currentNavItemIndex >= 0)\r\n navItems[currentNavItemIndex].tabIndex = -1;\r\n navItems[currentNavItemIndex + 1].tabIndex = 1;\r\n navItems[currentNavItemIndex + 1].focus();\r\n }\r\n }\r\n\r\n var featuredStoriesContent = [\r\n new NavbarContent(globalData.Navbar.StoryMenuHeader, dmnavbar),\r\n ]; \r\n var exhibitContent = [\r\n new NavbarContent(globalData.Navbar.ExhibitsMenuHeader, themuseumnavbar), \r\n new NavbarContent(\"\",aboutnavbar)\r\n ];\r\n var mobileContent = [\r\n new NavbarContent(globalData.Navbar.Text2, dmnavbar),\r\n new NavbarContent(globalData.Navbar.Text3, themuseumnavbar), new NavbarContent(\"\",aboutnavbar)\r\n ];\r\n\r\n function onBackgroundClicked() {\r\n menuItemClicked();\r\n }\r\n\r\n function menuItemClicked() {\r\n \r\n let modal = document.getElementById(\"modal\");\r\n if (modal && menuOpened && typeof modal.close === 'function') {\r\n console.log(\"Closing because of menu item!\")\r\n modal.close();\r\n }\r\n setNavMenu(false);\r\n setMenu(false);\r\n }\r\n\r\n function resetMenuADA(e) {\r\n dispatch(setSkipNavbarADA(false));\r\n }\r\n\r\n function setNavMenu(val) {\r\n var all = document.getElementsByClassName('nav-menu');\r\n for (var i = 0; i < all.length; i++) {\r\n all[i].style.display = val ? 'block' : 'none';\r\n }\r\n }\r\n\r\n\r\n function setMenu(val) {\r\n dispatch(setMenuOpened(val));\r\n }\r\n \r\n\r\n useEffect(() => {\r\n navContainer.current.onmouseover = function () {\r\n setNavMenu(true);\r\n };\r\n\r\n \r\n \r\n });\r\n\r\n function formatLinks(className, array, isActive, menuIndex) {\r\n //onFocus={(e) => { handleDesktopFocusIn(className, e) }}\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {array.map((column, columnIndex) => (\r\n \r\n
\r\n {menuIndex !== 0 &&\r\n
\r\n {storyArchive.LatestStoriesLabel}\r\n
\r\n }\r\n
    \r\n {menuIndex === 0 &&\r\n
  • \r\n { handleMenuItemKeyDown(e, menuIndex); }} tabIndex={desktopMenuOpened && isActive ? 0 : -1} role={ADAWidgitRoles.Link} >\r\n {storyArchive.LatestStoriesLabel}\r\n \r\n
  • \r\n } \r\n {column.items && column.items.map((row, rowIndex) => \r\n
  • \r\n { handleMenuItemKeyDown(e, menuIndex); }} tabIndex={desktopMenuOpened && isActive ? 0 : -1} role={ADAWidgitRoles.Link} >\r\n {row.title}\r\n \r\n
  • \r\n )}\r\n {menuIndex === 0 &&\r\n
  • \r\n { handleMenuItemKeyDown(e, menuIndex); }} tabIndex={desktopMenuOpened && isActive ? 0 : -1} role={ADAWidgitRoles.Link} >\r\n {storyArchive.Menu.Text}\r\n \r\n
  • \r\n }\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n }\r\n\r\n function formatLinksMobile(className, array, isActive) {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {array.map((column, columnIndex) => (\r\n
\r\n
\r\n {column.title}\r\n
\r\n
    \r\n {column.items && column.items.map((row, rowIndex) => \r\n
  • \r\n \r\n {row.title}\r\n \r\n
  • \r\n )}\r\n {columnIndex === 0 &&\r\n
  • \r\n \r\n {storyArchive.Menu.Text}\r\n \r\n
  • \r\n }\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n const exhibitLinks = formatLinks('exhibit', exhibitContent, isDesktopView, 1);\r\n const featuredStoriesLinks = formatLinks('featured-stories', featuredStoriesContent, isDesktopView, 0);\r\n const mobileLinks = formatLinksMobile('mobile', mobileContent, !isDesktopView && menuOpened);\r\n\r\n return showNavbar ? (\r\n \r\n ) : null;\r\n};\r\n\r\nexport default Navbar;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport PortraitGrid from '../../../assets/images/reference/grid_768.png';\r\nimport LandscapeGrid from '../../../assets/images/reference/grid_1272.png';\r\n\r\nimport Frame from '../../../assets/images/frames/desktop/360layoutrevised-1.jpg';\r\n\r\nimport './Frames.scss';\r\n\r\nconst Frames = data => {\r\n const isInitialized = useSelector(state => state.data.initialized);\r\n const isDebug = useSelector(state => state.config.debug);\r\n const [gridVisibility, setGridVisibility] = useState(false);\r\n const [frameVisibility, setFrameVisibility] = useState(false);\r\n const isDesktopOrLaptop = useMediaQuery({\r\n query: '(min-device-width: 1272px)',\r\n });\r\n\r\n useEffect(() => {\r\n function Keydown(e) {\r\n if (isDebug && e.key === 'g') {\r\n setGridVisibility(!gridVisibility);\r\n }\r\n if (isDebug && e.key === 'f') {\r\n setFrameVisibility(!frameVisibility);\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', Keydown, { passive: true });\r\n\r\n return () => {\r\n document.removeEventListener('keydown', Keydown);\r\n };\r\n }, [gridVisibility, frameVisibility]);\r\n\r\n if (isInitialized === false || isDebug === false) {\r\n return null;\r\n }\r\n\r\n var grid = null;\r\n\r\n if (gridVisibility) {\r\n grid = isDesktopOrLaptop ? (\r\n \"\"\r\n ) : (\r\n \"\"\r\n );\r\n }\r\n\r\n var frame = null;\r\n\r\n if (frameVisibility) {\r\n frame = isDesktopOrLaptop ? (\r\n \"\"\r\n ) : (\r\n \"\"\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {grid}\r\n {frame}\r\n
\r\n );\r\n};\r\n\r\nexport default Frames;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport './Version.scss';\r\n\r\nconst Version = ({ number }) => {\r\n const isInitialized = useSelector(state => state.data.initialized);\r\n const isDebug = useSelector(state => state.config.debug);\r\n const [visible, setVisibility] = useState(false);\r\n\r\n const timeout = 3; // In Seconds\r\n\r\n useEffect(() => {\r\n if(isInitialized){\r\n setVisibility(true);\r\n }\r\n }, [isInitialized]);\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => setVisibility(false), timeout * 1000);\r\n return () => clearTimeout(timer);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n function Keydown(e) {\r\n if (e.key === 'v') {\r\n setVisibility(true);\r\n }\r\n }\r\n document.addEventListener('keydown', Keydown, { passive: true });\r\n\r\n return () => {\r\n document.removeEventListener('keydown', Keydown);\r\n };\r\n }, []);\r\n\r\n if (isInitialized === false || visible === false || isDebug === false) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
{number}
\r\n
\r\n );\r\n};\r\n\r\nexport default Version;\r\n","import { useEffect } from \"react\";\r\nimport { useSelector } from 'react-redux';\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nexport default function ScrollToTop() {\r\n const { pathname } = useLocation();\r\n const cmsData = useSelector(state => state.data.cms);\r\n\r\n useEffect(() => {\r\n const innovationPath = cmsData?.innovation?.Introduction.Menu.Path;\r\n if (innovationPath && pathname && pathname.indexOf(`/${innovationPath}`) === 0) {\r\n return;\r\n }\r\n \r\n window.scrollTo(0, 0);\r\n document.body.scrollTo(0, 0);\r\n }, [pathname]);\r\n\r\n return null;\r\n}","import React from 'react';\r\nimport { ADAWidgitRoles } from '../../../models/ADA';\r\nimport './Arrow.scss';\r\n\r\n\r\nconst Arrow = ({ direction, darkMode, width, handleClick, hideFromADA, altText }) => {\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport default Arrow;","import React, { useState, useLayoutEffect } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions, keepSpaceTogether, getImageFilepath } from '../../../../models/Utils';\r\n\r\nimport './VideoBanner.scss';\r\n\r\nimport Arrow from '../../../Common/Arrow/Arrow';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\n\r\nconst videoRatio = 16 / 9;\r\nconst togetherString = 'V Team';\r\n\r\nconst VideoBanner = React.forwardRef((props, theRef) => {\r\n const [ heightParams, setHeightParams ] = useState({ marginTop: 0, height: 0 });\r\n const [ videoDimensions, setVideoDimensions ] = useState({ width: 0, height: 0 });\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n const [ isPlaying, setIsPlaying ] = useState(false);\r\n const [ hasStarted, setHasStarted ] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const isDesktopView = useMediaQuery({ query: '(min-width: 767px)' });\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n const handleResize = () => {\r\n const marginTop = getNavbarHeight();\r\n const viewport = getViewportDimensions();\r\n const height = viewport.height - marginTop;\r\n setHeightParams({\r\n marginTop,\r\n height,\r\n });\r\n const width = viewport.width;\r\n if (width / height > videoRatio) {\r\n // width of the video should be the same\r\n setVideoDimensions({\r\n width: width,\r\n height: width / videoRatio\r\n });\r\n } else {\r\n // height of the video should be the same\r\n setVideoDimensions({\r\n width: height * videoRatio,\r\n height: height\r\n });\r\n }\r\n };\r\n\r\n const loopVideo = () => {\r\n if (!isPlaying) {\r\n setIsPlaying(true);\r\n }\r\n };\r\n \r\n function delayedVideoFade() {\r\n setTimeout(handleVideoStart, videoTimeout);\r\n }\r\n\r\n const handleVideoStart = () => {\r\n setHasStarted(true);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n //console.log(props)\r\n\r\n var video = (\r\n
\r\n loopVideo()\r\n }\r\n }}\r\n onReady={ () => loopVideo() }\r\n onStart={handleVideoStart}\r\n />\r\n
\r\n
\r\n );\r\n\r\n var imagePlaceholder = props.bgndVideo.BackgroundMedia ? (\r\n \r\n ) : null;\r\n\r\n return (\r\n \r\n {\r\n props.bgndVideo.BackgroundMedia ?\r\n props.bgndVideo.BackgroundMedia.split(\".\").pop() === \"mp4\" ?\r\n video : imagePlaceholder\r\n : video\r\n }\r\n
\r\n
\r\n
\r\n {\r\n props.title && \r\n (

{keepSpaceTogether(props.title, togetherString)}

)\r\n }\r\n {\r\n props.text &&\r\n (\r\n

{keepSpaceTogether(props.text, togetherString)}

\r\n

{keepSpaceTogether(props.text, togetherString)}

\r\n
)\r\n }\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n});\r\n\r\nexport default VideoBanner;\r\n","import React, { useState, useRef, useLayoutEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\nimport { keepSpaceTogether, getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport './TwoColumnSlider.scss';\r\n\r\nconst togetherString = 'V Team';\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst TwoColumnSlider = React.forwardRef((props, theRef) => {\r\n const mobileMinHeight = 40 + 2 * 32 + 40; // padding-top + 2 * title_height + padding-bottom from CSS\r\n const [ mobileMaxHeight, setMobileMaxHeight ] = useState(0);\r\n const refMobileMaxHeight = useRef(mobileMaxHeight); // 40vh from CSS\r\n const mobileSpaceBetween = 10; // margin-top from CSS\r\n const [ isMobileLayout, setIsMobileLayout ] = useState(false);\r\n const refIsMobileLayout = useRef(isMobileLayout);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const container = useRef(null);\r\n const [activeColumn, setActiveColumn] = useState(-1);\r\n const columns = props.data.Boxes.filter((box, i) => i < 2).map(box => ({\r\n title: box.Header,\r\n text: box.Body,\r\n image: box.Background.Image,\r\n bgndOpacity: box.Background.Opacity,\r\n bgndOverlayColor: box.Background.Overlay\r\n }));\r\n const columnRefs = columns.map((column) => useRef(null));\r\n const columnBodyTextRefs = columns.map((column) => useRef(null));\r\n\r\n const getTwoColumns = () => {\r\n let items = [];\r\n columns.filter((column, i) => i < 2).forEach((column, i) => {\r\n items.push(\r\n
\r\n
handleColumnMouseEnter(i)}\r\n onMouseLeave={() => handleColumnMouseLeave()}\r\n onFocus={() => handleColumnMouseEnter(i)}\r\n onBlur={() => handleColumnMouseLeave()}\r\n //tabIndex={!menuOpened ? 0 : -1}\r\n >\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{keepSpaceTogether(column.title, togetherString)}
\r\n
:
\r\n
\r\n
{keepSpaceTogether(column.text, togetherString)}
\r\n
\r\n
\r\n
\r\n \r\n );\r\n });\r\n return items;\r\n };\r\n\r\n const handleColumnMouseEnter = (column) => {\r\n setActiveColumn(column);\r\n const columnElement = columnBodyTextRefs[column].current;\r\n const innerTextHeight = columnElement.getElementsByClassName('bbf-2cs-column--text-inner')[0].getBoundingClientRect().height;\r\n columnElement.style.height = `${innerTextHeight}px`;\r\n };\r\n\r\n const handleColumnMouseLeave = () => {\r\n setActiveColumn(-1);\r\n columnBodyTextRefs.forEach((ref) => ref.current.style.height = '0px');\r\n };\r\n\r\n const handleScroll = () => {\r\n if (!refIsMobileLayout.current) return;\r\n\r\n const viewport = getViewportDimensions();\r\n columnRefs.forEach((column, i) => {\r\n const rect = column.current.getBoundingClientRect();\r\n const bodyText = columnBodyTextRefs[i].current;\r\n const innerTextHeight = bodyText.getElementsByClassName('bbf-2cs-column--text-inner')[0].getBoundingClientRect().height;\r\n bodyText.style.height = rect.y + rect.height + mobileSpaceBetween <= viewport.height ? `${innerTextHeight}px` : '0px';\r\n });\r\n };\r\n\r\n const handleResize = () => {\r\n //theRef.current.style.marginBottom = `${getNavbarHeight()}px`;\r\n const viewport = getViewportDimensions();\r\n const onMobile = viewport.width <= mobileScreenThreshold;\r\n setIsMobileLayout(onMobile);\r\n refIsMobileLayout.current = onMobile;\r\n if (!onMobile) {\r\n columnRefs.forEach((columnRef, i) => {\r\n columnRef.current.style.height = '';\r\n columnBodyTextRefs[i].current.style.opacity = '';\r\n });\r\n } else {\r\n const maxH = getViewportDimensions().height * 0.4;\r\n setMobileMaxHeight(maxH);\r\n refMobileMaxHeight.current = maxH;\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n handleScroll();\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
{props.data.Header}
\r\n
\r\n
\r\n
\r\n
{props.data.Body}
\r\n
\r\n
\r\n
\r\n
\r\n {getTwoColumns()}\r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default TwoColumnSlider;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { ADAWidgitRoles } from '../../../models/ADA';\r\n\r\nimport './LearnMoreLink.scss';\r\n\r\nconst LearnMoreLink = ({ text, altText, to, style, className, external, specialAltText }) => {\r\n const innerText = !specialAltText ? text : {specialAltText}{text}\r\n return external\r\n ? \r\n (\r\n {innerText}\r\n )\r\n :\r\n (\r\n {innerText}\r\n );\r\n};\r\n\r\nexport default LearnMoreLink;\r\n","import React, { useLayoutEffect, useRef, useState, useEffect } from 'react';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport { Paths } from '../../../../models/Models';\r\nimport {\r\n getNavbarHeight,\r\n getViewportDimensions,\r\n keepSpaceTogether,\r\n} from '../../../../models/Utils';\r\nimport VenetianBlindsText from '../../../Common/VenetianBlindsText/VenetianBlindsText';\r\n\r\nimport './PillarSlider.scss';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\nimport Arrow from '../../../Common/Arrow/Arrow';\r\nimport { useSelector } from 'react-redux';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nconst togetherString = 'V Team';\r\nconst bottomBuffer = 80;\r\n\r\nconst PillarSlider = ({ data }) => {\r\n const cmsData = useSelector(state => state.data.cms.buildingBrighterFutures);\r\n const exploreMore = data.Introduction.ExploreMore;\r\n const sliderElement = useRef(null);\r\n const gridContainer = useRef(null);\r\n const gridRow = useRef(null);\r\n const numberOfBlocks = 4;\r\n const introTriggerRatio = 1.0;\r\n const [sliderContentDimensions, setSliderContentDimensions] = useState({ width: 0, height: 0 });\r\n const [spaceAround, setSpaceAround] = useState(0);\r\n const isAutoSliding = useRef(false);\r\n const blockElements = useRef();\r\n const [shownInIntro, setShownInIntro] = useState(1);\r\n const [animateIntro, setAnimateIntro] = useState(0);\r\n const [isFixed, setIsFixed] = useState(false);\r\n const refShownInIntro = useRef(shownInIntro);\r\n const refAnimateIntro = useRef(animateIntro);\r\n const slidesWrapper = useRef(null);\r\n const firstSlide = useRef(null);\r\n const secondSlide = useRef(null);\r\n const desktopLogoWrapper = useRef(null);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n const isDesktopView = useMediaQuery({ query: '(min-width: 767px)' });\r\n\r\n const adjustBlocks = (sliderY, sliderH) => {\r\n const unitHeight = sliderH / numberOfBlocks;\r\n const introBuffer = unitHeight * introTriggerRatio;\r\n const windowHeight = getViewportDimensions().height;\r\n const verticalPadding = windowHeight - unitHeight - bottomBuffer;\r\n const sliderTop = sliderElement.current.style.top || '0px';\r\n const actualSliderY = sliderY - parseFloat(sliderTop);\r\n const sliderOffsetY = Math.max(0, Math.min(verticalPadding - actualSliderY, introBuffer));\r\n let positions = [];\r\n for (let i = 0; i < numberOfBlocks; i++) {\r\n positions.push(\r\n Math.min(\r\n Math.max(0, verticalPadding - (actualSliderY + sliderOffsetY) - unitHeight * i),\r\n (numberOfBlocks - 1 - i) * unitHeight\r\n )\r\n );\r\n }\r\n const firstBlindsRect = firstSlide.current.getElementsByClassName('bbf-ps-intro-title')[0].getBoundingClientRect();\r\n if (firstBlindsRect.y + firstBlindsRect.height <= windowHeight && !refAnimateIntro.current) {\r\n setAnimateIntro(1);\r\n refAnimateIntro.current = 1;\r\n }\r\n if (firstBlindsRect.y + firstBlindsRect.height > windowHeight) {\r\n setAnimateIntro(0);\r\n refAnimateIntro.current = 0;\r\n }\r\n \r\n sliderElement.current.style.top = `${sliderOffsetY}px`;\r\n\r\n for (let i = 0; i < numberOfBlocks; i++) {\r\n blockElements.current[i].style.top = `${positions[i]}px`;\r\n if (i === 0) {\r\n\r\n if(sliderOffsetY > 0){ \r\n \r\n if(!isFixed){\r\n setIsFixed(true);\r\n var rect = firstSlide.current.getBoundingClientRect();\r\n \r\n firstSlide.current.classList.add(\"fixed\");\r\n secondSlide.current.classList.add(\"fixed\");\r\n \r\n firstSlide.current.style.width=rect.width +\"px\";\r\n firstSlide.current.style.left=rect.x + \"px\";\r\n firstSlide.current.style.top=rect.y +\"px\";\r\n\r\n secondSlide.current.style.width=rect.width +\"px\";\r\n secondSlide.current.style.left=rect.x + \"px\";\r\n secondSlide.current.style.top=rect.y +\"px\";\r\n }\r\n\r\n }else {\r\n firstSlide.current.classList.remove(\"fixed\");\r\n secondSlide.current.classList.remove(\"fixed\");\r\n\r\n firstSlide.current.style.width=\"unset\";\r\n firstSlide.current.style.left=\"unset\";\r\n firstSlide.current.style.top=\"unset\";\r\n\r\n secondSlide.current.style.width=\"unset\";\r\n secondSlide.current.style.left=\"unset\";\r\n secondSlide.current.style.top=\"unset\";\r\n }\r\n\r\n if (sliderOffsetY > introBuffer / 2 && refShownInIntro.current === 1) {\r\n setShownInIntro(2);\r\n refShownInIntro.current = 2; \r\n } else if (sliderOffsetY < introBuffer / 2 && refShownInIntro.current === 2) {\r\n setShownInIntro(1);\r\n refShownInIntro.current = 1;\r\n }\r\n }\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n const handleScroll = () => {\r\n if (isAutoSliding.current) return;\r\n\r\n const sliderRect = sliderElement.current.getBoundingClientRect();\r\n adjustBlocks(sliderRect.y, sliderRect.height);\r\n };\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n const spaceAround = getNavbarHeight() + 20;\r\n const gridContainerWidth = gridContainer.current.getBoundingClientRect().width;\r\n const gridRowWidth = gridRow.current.getBoundingClientRect().width;\r\n const unitHeight = viewport.height - spaceAround - bottomBuffer;\r\n setSliderContentDimensions({\r\n width: Math.max(\r\n gridContainerWidth + (viewport.width - gridContainerWidth) / 2,\r\n gridRowWidth\r\n ),\r\n height: numberOfBlocks * unitHeight,\r\n });\r\n setSpaceAround(spaceAround);\r\n };\r\n\r\n if (!blockElements.current) {\r\n blockElements.current = sliderElement.current.getElementsByClassName('bbf-ps-block');\r\n }\r\n\r\n handleResize();\r\n handleScroll();\r\n\r\n document.body.addEventListener('scroll', handleScroll);\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n const introContentHeight = Math.max(\r\n firstSlide.current.getBoundingClientRect().height,\r\n secondSlide.current.getBoundingClientRect().height\r\n );\r\n slidesWrapper.current.style.height = `${introContentHeight}px`;\r\n desktopLogoWrapper.current.style.height = `${introContentHeight}px`;\r\n });\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setAnimateIntro(shownInIntro);\r\n refAnimateIntro.current = shownInIntro;\r\n }, 500);\r\n }, [shownInIntro]);\r\n\r\n const goToBlock = (index, introBlockSubset) => {\r\n const sliderRect = sliderElement.current.getBoundingClientRect();\r\n const unitHeight = sliderRect.height / numberOfBlocks;\r\n const speed = 500; // ms for 1000px\r\n const start = document.body.scrollTop;\r\n const sliderTop = sliderElement.current.style.top || '0px';\r\n const actualSliderY = sliderRect.y - parseFloat(sliderTop);\r\n const targetSliderPos =\r\n actualSliderY +\r\n (index === 0 && introBlockSubset === 1 ? 0 : 1) * unitHeight * introTriggerRatio;\r\n const end = start + targetSliderPos + index * unitHeight - spaceAround;\r\n if (index === 0 && introBlockSubset) {\r\n document.body.scrollTo(0, end);\r\n } else {\r\n const t0 = Date.now();\r\n const tFinal = t0 + (Math.abs(end - start) / 1000) * speed;\r\n const animate = () => {\r\n let t = Date.now();\r\n if (t >= tFinal) t = tFinal;\r\n let tNormalized = (t - t0) / (tFinal - t0);\r\n const distDiff = (end - start) * (--tNormalized * tNormalized * tNormalized + 1); // easeOutCubic\r\n adjustBlocks(sliderRect.y - distDiff, sliderRect.height);\r\n document.body.scrollTo(0, start + distDiff);\r\n if (t < tFinal) {\r\n requestAnimationFrame(animate);\r\n } else {\r\n isAutoSliding.current = false;\r\n }\r\n };\r\n isAutoSliding.current = true;\r\n requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n const scrollFromBlock = (index, dir) => {\r\n const block = blockElements.current[index];\r\n const windowHeight = getViewportDimensions().height;\r\n if (dir === 'up') {\r\n if (index === 0 && refShownInIntro.current === 2) {\r\n goToBlock(0, 1);\r\n } else {\r\n if (block.getBoundingClientRect().y < windowHeight / 3) {\r\n goToBlock(index - 1);\r\n } else {\r\n goToBlock(index);\r\n }\r\n }\r\n } else {\r\n if (index === 0 && refShownInIntro.current === 1) {\r\n goToBlock(0, 2);\r\n } else {\r\n goToBlock(index + 1);\r\n }\r\n }\r\n };\r\n\r\n const getIntroBlock = () => {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

\r\n {keepSpaceTogether(exploreMore.FirstIntroSlide.Header, togetherString)}\r\n

\r\n
\r\n \r\n

\r\n {keepSpaceTogether(exploreMore.FirstIntroSlide.Body, togetherString)}\r\n

\r\n
\r\n \r\n

\r\n {keepSpaceTogether(exploreMore.FirstIntroSlide.Body, togetherString)}\r\n

\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {keepSpaceTogether(exploreMore.SecondIntroSlide.Header, togetherString)}\r\n \r\n
\r\n \r\n \r\n {keepSpaceTogether(exploreMore.SecondIntroSlide.Body, togetherString)}\r\n \r\n
\r\n \r\n \r\n {keepSpaceTogether(exploreMore.SecondIntroSlide.Body, togetherString)}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {/*
\r\n scrollFromBlock(0, 'down')}\r\n />\r\n
*/}\r\n \r\n );\r\n };\r\n\r\n const getPillarBlocks = () => {\r\n let pillarBlocks = [];\r\n for (let i = 1; i < numberOfBlocks; i++) {\r\n const card = exploreMore.Cards[i - 1];\r\n pillarBlocks.push(\r\n \r\n \r\n
\r\n scrollFromBlock(i, 'up')}\r\n />\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n {keepSpaceTogether(card.Header, togetherString)}\r\n

\r\n
\r\n {keepSpaceTogether(card.Body, togetherString)}\r\n
\r\n
\r\n {keepSpaceTogether(card.Body, togetherString)}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {i < numberOfBlocks - 1 && (\r\n
\r\n scrollFromBlock(i, 'down')}\r\n />\r\n
\r\n )}\r\n \r\n );\r\n }\r\n return pillarBlocks;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n {getIntroBlock()}\r\n {getPillarBlocks()}\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PillarSlider;\r\n","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport { getNavbarHeight } from '../../../models/Utils';\r\n\r\nimport VideoBanner from '../subcomponents/VideoBanner/VideoBanner';\r\nimport TwoColumnSlider from '../subcomponents/TwoColumnSlider/TwoColumnSlider';\r\nimport PillarSlider from '../subcomponents/PillarSlider/PillarSlider';\r\nimport NextStory from '../../Common/NextStory/NextStory';\r\nimport { getViewportDimensions } from '../../../models/Utils';\r\nimport ExhibitMenu from '../../Common/ExhibitMenu/ExhibitMenu';\r\nimport {\r\n setHasVisitedBBF\r\n} from '../../../store/reducers/mainReducer';\r\n\r\nimport { ADALandmarks } from '../../../models/ADA';\r\nimport './PillarsIntro.scss';\r\n\r\nconst PillarsIntro = props => {\r\n const dispatch = useDispatch();\r\n const initialized = useSelector(state => state.data.initialized);\r\n const cmsData = useSelector(state => state.data.cms.buildingBrighterFutures);\r\n const navbar = useSelector(state => state.data.menus.buildingBrighterFutures);\r\n const cmsMediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [creditsActive, setCreditsActive] = useState(false);\r\n const tcs = useRef(null);\r\n const creditsElement = useRef(null);\r\n\r\n useEffect(() => {\r\n document.title = \"The Verizon Story - Rooted in Responsibility\";\r\n dispatch(setHasVisitedBBF(true));\r\n }, []);\r\n\r\n const handleScroll = () => {\r\n if(creditsElement && creditsElement.current){\r\n const sliderRect = creditsElement.current.getBoundingClientRect();\r\n const windowHeight = getViewportDimensions().height;\r\n if ((sliderRect.y <= windowHeight)) {\r\n setCreditsActive(true);\r\n }\r\n else if ((sliderRect.y > windowHeight)) {\r\n setCreditsActive(false);\r\n }\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleScroll();\r\n\r\n document.body.addEventListener('scroll', handleScroll);\r\n window.addEventListener('resize', handleScroll);\r\n\r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n window.removeEventListener('resize', handleScroll);\r\n };\r\n }, []);\r\n\r\n if(!initialized){\r\n return null;\r\n }\r\n\r\n cmsData.Introduction.OurResponsibility.Boxes.forEach(box => {\r\n if (box.Background.Image && box.Background.Image.indexOf(cmsMediaPath) < 0) {\r\n box.Background.Image = cmsMediaPath + box.Background.Image;\r\n }\r\n });\r\n\r\n cmsData.Introduction.ExploreMore.Cards.forEach(card => {\r\n if (card.Background.Image && card.Background.Image.indexOf(cmsMediaPath) < 0) {\r\n card.Background.Image = cmsMediaPath + card.Background.Image;\r\n }\r\n });\r\n\r\n const scrollToTCS = () => {\r\n animateScrollTo(tcs.current.getBoundingClientRect().y + document.body.scrollTop - getNavbarHeight(), {\r\n elementToScroll: document.body\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n scrollToTCS() }\r\n />\r\n \r\n \r\n
\r\n {}}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PillarsIntro;\r\n","import React, { useRef, createRef, useLayoutEffect, useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport { getViewportDimensions } from '../../../../models/Utils';\r\nimport NextStory from '../../../Common/NextStory/NextStory';\r\n\r\nimport './CreditsWrapper.scss';\r\n\r\nconst CreditsWrapper = ({ next, title, subtitle }) => {\r\n const creditsElement = useRef(null);\r\n const fixedMeasurerElement = useRef(null);\r\n const [creditsActive, setCreditsActive] = useState(false);\r\n\r\n const handleScroll = () => {\r\n // if (creditsElement && creditsElement.current){\r\n // const sliderRect = creditsElement.current.getBoundingClientRect();\r\n // const windowHeight = getViewportDimensions().height;\r\n // if ((sliderRect.y <= windowHeight)) {\r\n // setCreditsActive(true);\r\n // }\r\n // else if ((sliderRect.y > windowHeight)) {\r\n // setCreditsActive(false);\r\n // }\r\n // }\r\n if (creditsElement && creditsElement.current && fixedMeasurerElement && fixedMeasurerElement.current){\r\n const rect = creditsElement.current.getBoundingClientRect();\r\n const measureRect = fixedMeasurerElement.current.getBoundingClientRect();\r\n if ((rect.y <= measureRect.y + measureRect.height)) {\r\n setCreditsActive(true);\r\n }\r\n else if ((rect.y > measureRect.y + measureRect.height)) {\r\n setCreditsActive(false);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n let supportsPassive = false;\r\n try {\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n \r\n document.body.addEventListener(wheelEvent, handleScroll, wheelOpt);\r\n document.body.addEventListener('scroll', handleScroll);\r\n \r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n document.body.removeEventListener(wheelEvent, handleScroll, wheelOpt);\r\n };\r\n \r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n {}}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default CreditsWrapper;\r\n","import React, { useLayoutEffect, useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\nimport { getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport './MosaicColumn.scss';\r\n\r\nconst appearanceThreshold = 10;\r\n\r\nconst MosaicTextBox = ({ title, body, scroller, fadingAllowed }) => {\r\n const element = useRef(null);\r\n const [ isVisible, setIsVisible ] = useState(true);\r\n const isVisibleRef = useRef(isVisible);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n const handleScroll = () => {\r\n if (!fadingAllowed.current) return;\r\n const viewport = getViewportDimensions();\r\n const rect = element.current.getBoundingClientRect();\r\n if (isVisibleRef.current && rect.x + appearanceThreshold / 2 >= viewport.width) {\r\n setIsVisible(false);\r\n isVisibleRef.current = false;\r\n } else if (!isVisibleRef.current && rect.x + appearanceThreshold < viewport.width) {\r\n setIsVisible(true);\r\n isVisibleRef.current = true;\r\n };\r\n };\r\n\r\n useLayoutEffect(() => {\r\n setTimeout(() => {\r\n handleScroll();\r\n scroller.current.addEventListener('scroll', handleScroll);\r\n }, 100);\r\n\r\n return () => {\r\n if (scroller.current) scroller.current.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
{title}
\r\n
{body}
\r\n
\r\n );\r\n};\r\n\r\nconst MosaicImage = ({ size, textPosition, image, children, scroller, fadingAllowed, altText }) => {\r\n const element = useRef(null);\r\n const [ isVisible, setIsVisible ] = useState(true);\r\n const isVisibleRef = useRef(isVisible);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n const handleScroll = () => {\r\n if (!fadingAllowed.current) return;\r\n const viewport = getViewportDimensions();\r\n const rect = element.current.getBoundingClientRect();\r\n if (isVisibleRef.current && rect.x + appearanceThreshold / 2 >= viewport.width) {\r\n setIsVisible(false);\r\n isVisibleRef.current = false;\r\n } else if (!isVisibleRef.current && rect.x + appearanceThreshold < viewport.width) {\r\n setIsVisible(true);\r\n isVisibleRef.current = true;\r\n };\r\n };\r\n\r\n useLayoutEffect(() => {\r\n setTimeout(() => {\r\n handleScroll();\r\n scroller.current.addEventListener('scroll', handleScroll);\r\n }, 100);\r\n\r\n return () => {\r\n if (scroller.current) scroller.current.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n if (size === 'big' && !textPosition) {\r\n throw new Error(\"Big mosaic image must have text position defined.\");\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst MosaicRow = ({ textPosition, children }) => {\r\n if (!textPosition) {\r\n throw new Error('Row must have text position');\r\n }\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nfunction getHalfColumn(data, scroller, fadingAllowed) {\r\n return (\r\n
\r\n {\r\n data.Type === '1'\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\nfunction getFullColumn(data, scroller, fadingAllowed) {\r\n const type = data.Type === '1' ? 'row-first' : 'image-first';\r\n const rowTextPosition = data.RowTextPosition === '1' ? 'text-right' : 'text-left';\r\n let bigImageTextPosition;\r\n switch (data.BigImageTextPosition) {\r\n case '0':\r\n bigImageTextPosition = 'text-top-left';\r\n break;\r\n case '1':\r\n bigImageTextPosition = 'text-top-right';\r\n break;\r\n case '2':\r\n bigImageTextPosition = 'text-bottom-left';\r\n break;\r\n case '3':\r\n bigImageTextPosition = 'text-bottom-right';\r\n break;\r\n default:\r\n bigImageTextPosition = 'no-text';\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst MosaicColumn = React.forwardRef(({ unitWidth, columnType, data }, { scroller, wiggleEnded }) => {\r\n const isHalf = columnType === '1';\r\n const fadingAllowed = wiggleEnded;\r\n\r\n const getFontSize = (unitWidth) => {\r\n if (unitWidth < 115) {\r\n return 8;\r\n } else if (unitWidth < 130) {\r\n return 10;\r\n } else if (unitWidth < 140) {\r\n return 12;\r\n } else if (unitWidth < 160) {\r\n return 14;\r\n } else if (unitWidth < 180) {\r\n return 16;\r\n } else if (unitWidth < 200) {\r\n return 18;\r\n }\r\n else {\r\n return 20;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n { isHalf ? getHalfColumn(data, scroller, fadingAllowed) : getFullColumn(data, scroller, fadingAllowed) }\r\n
\r\n );\r\n});\r\n\r\nexport default MosaicColumn;\r\n","import React, { useState, useRef, useLayoutEffect, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport { getNavbarHeight, getViewportDimensions, keepSpaceTogether } from '../../../../models/Utils';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport './MosaicSection.scss';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\nimport Arrow from '../../../Common/Arrow/Arrow';\r\nimport MosaicColumn from '../MosaicColumn/MosaicColumn';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\n\r\nconst togetherString = 'V Team';\r\n\r\nconst MosaicSection = React.forwardRef(({ header, body, columns, ctaData, isActive }, theRef) => {\r\n const container = useRef(null);\r\n const isPortrait = useMediaQuery({ query: '(orientation: portrait)' });\r\n const [ containerWidth, setContainerWidth] = useState(0);\r\n const refContainerWidth = useRef(containerWidth);\r\n const [ mosaicHeight, setMosaicHeight ] = useState(0);\r\n const [ contentDimensions, setContentDimensions ] = useState({\r\n width: 0,\r\n paddingLeft: 0,\r\n paddingRight: 0\r\n });\r\n const refContentDimensions = useRef(contentDimensions);\r\n const introElement = useRef(null);\r\n const scroller = useRef(null);\r\n const bottomSpacer = useRef(null);\r\n const [ mosaicUnitWidth, setMosaicUnitWidth] = useState(0);\r\n const isSnappedConclusion = useRef(false);\r\n const refMosaicUnitWidth = useRef(mosaicUnitWidth);\r\n const lastScrollerPos = useRef(0);\r\n const introWrapper = useRef(null);\r\n const introBodyText = useRef(null);\r\n const introTextOffset = useRef(0);\r\n const introTextWentUp = useRef(false);\r\n const wiggleShown = useRef(false);\r\n const wiggleEnded = useRef(false);\r\n \r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n if(isActive){\r\n setIntroTextPosition('up');\r\n performAutoScroll('right');\r\n } else {\r\n setIntroTextPosition('down');\r\n }\r\n }, 500);\r\n }, [isActive])\r\n\r\n const getColumns = (unitWidth) => {\r\n let columnElements = [];\r\n\r\n columns.forEach((columnData, i) => {\r\n columnElements.push(\r\n \r\n );\r\n });\r\n\r\n return columnElements;\r\n };\r\n\r\n const isAutoScrolling = useRef(false);\r\n\r\n const performAutoScroll = (dir) => {\r\n if (isAutoScrolling.current) return;\r\n\r\n setIntroTextPosition('up');\r\n isAutoScrolling.current = true;\r\n isDragged.current = false;\r\n const viewport = getViewportDimensions();\r\n const bodyTextLeft = introBodyText.current.getBoundingClientRect().x;\r\n const isOnDesktop = viewport.width / 2 <= bodyTextLeft;\r\n const epsilon = refMosaicUnitWidth.current / 2;\r\n const ctaLeft = refContentDimensions.current.paddingLeft + refContentDimensions.current.width - refContainerWidth.current;\r\n const currentScroll = scroller.current.scrollLeft;\r\n const hiddenOnTheRight = refContentDimensions.current.paddingLeft + refContentDimensions.current.width - refContainerWidth.current - refContentDimensions.current.paddingRight - (currentScroll + viewport.width);\r\n const moveDiff = dir === 'right' && hiddenOnTheRight > 0 ? Math.min(viewport.width / 2, hiddenOnTheRight + epsilon - 2) : viewport.width / 2;\r\n let targetScroll = currentScroll + (dir === 'right' ? 1 : -1) * moveDiff;\r\n if (dir === 'right' && targetScroll + refContentDimensions.current.paddingRight + refContainerWidth.current > ctaLeft - refContentDimensions.current.paddingRight + epsilon) {\r\n targetScroll = ctaLeft - refContentDimensions.current.paddingRight;\r\n } else if (dir === 'left' && targetScroll - epsilon < ctaLeft - refContentDimensions.current.paddingRight && targetScroll + refContentDimensions.current.paddingRight + refContainerWidth.current > ctaLeft) {\r\n targetScroll = Math.max(0, ctaLeft - refContentDimensions.current.paddingRight - refContainerWidth.current - refContentDimensions.current.paddingRight);\r\n }\r\n animateScrollTo([targetScroll, null], {\r\n elementToScroll: scroller.current,\r\n cancelOnUserAction: false\r\n })\r\n .then(() => {\r\n setTimeout(() => {\r\n isAutoScrolling.current = false;\r\n }, 100);\r\n });\r\n };\r\n\r\n const handleScroll = () => {\r\n if (isAutoScrolling.current) {\r\n lastScrollerPos.current = scroller.current.scrollLeft;\r\n } else {\r\n const epsilon = refMosaicUnitWidth.current / 2;\r\n const ctaLeft = refContentDimensions.current.paddingLeft + refContentDimensions.current.width - refContainerWidth.current;\r\n const currentScroll = scroller.current.scrollLeft;\r\n \r\n var snapTarget = refContentDimensions.current.width - refMosaicUnitWidth.current;\r\n\r\n if(currentScroll > snapTarget && !isSnappedConclusion.current){\r\n // performAutoScroll('right');\r\n isSnappedConclusion.current = true;\r\n }else if (currentScroll < snapTarget && isSnappedConclusion.current){\r\n // performAutoScroll('left');\r\n isSnappedConclusion.current = false;\r\n }\r\n }\r\n \r\n handleIntroTextPositioning();\r\n };\r\n\r\n const handleBodyScroll = () => {\r\n \r\n if (!wiggleShown.current) {\r\n const viewport = getViewportDimensions();\r\n const bodyTextLeft = introBodyText.current.getBoundingClientRect().x;\r\n const isOnDesktop = viewport.width / 2 <= bodyTextLeft;\r\n const scrollerRect = scroller.current.getBoundingClientRect();\r\n if (scroller.current.scrollLeft === 0 && scrollerRect.y + scrollerRect.height <= viewport.height) {\r\n wiggleShown.current = true;\r\n const animatorProperties = {\r\n elementToScroll: scroller.current,\r\n cancelOnUserAction: false,\r\n speed: isOnDesktop ? 1000 : 2000,\r\n easing: (x) => {\r\n const c1 = 1.70158;\r\n const c3 = c1 + 1;\r\n\r\n return 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2);\r\n }\r\n };\r\n setIntroTextPosition('up');\r\n const finalScrollerOffset = isOnDesktop\r\n ? (refContentDimensions.current.paddingLeft - bodyTextLeft)\r\n : (refContentDimensions.current.paddingLeft - Math.round(viewport.width * 1 / 3));\r\n setTimeout(() => {\r\n isAutoScrolling.current = true;\r\n animateScrollTo([finalScrollerOffset, null], animatorProperties)\r\n .then(() => {\r\n isAutoScrolling.current = false;\r\n setTimeout(() => {\r\n wiggleEnded.current = true;\r\n }, 100);\r\n });\r\n }, 500);\r\n }\r\n }\r\n };\r\n\r\n const handleIntroTextPositioning = () => {\r\n\r\n if (introTextWentUp.current) return;\r\n\r\n if (wiggleShown.current && wiggleEnded.current ){//&& scroller.current.scrollLeft > 0) {\r\n setIntroTextPosition('up'); \r\n } else {\r\n setIntroTextPosition('down'); \r\n }\r\n };\r\n\r\n const setIntroTextPosition = (position) => {\r\n if (position === 'up' || isPortrait) {\r\n introWrapper.current.style.top = '0px';\r\n introWrapper.current.classList.remove('down');\r\n introWrapper.current.classList.add('up');\r\n introTextWentUp.current = true;\r\n } else {\r\n introWrapper.current.style.top = `${introTextOffset.current}px`;\r\n introWrapper.current.classList.remove('up');\r\n introWrapper.current.classList.add('down');\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n if (!container || !introElement) return;\r\n\r\n \r\n const viewport = getViewportDimensions();\r\n const containerComputedStyle = window.getComputedStyle(container.current, null);\r\n const introElementHeight = introElement && introElement.current && introElement.current.getBoundingClientRect().height;\r\n const containerWidth = container && container.current && container.current.getBoundingClientRect().width - parseInt(containerComputedStyle.getPropertyValue('padding-left'), 10) - parseInt(containerComputedStyle.getPropertyValue('padding-right'), 10);\r\n const mosaicHeight = Math.max(viewport.height - introElementHeight - getNavbarHeight() - bottomSpacer.current.getBoundingClientRect().height, 400);\r\n const unitWidth = Math.round(mosaicHeight / 3);\r\n let contentInnerWidth = 0;\r\n columns.forEach((column) => {\r\n contentInnerWidth += column.ColumnType === '1' ? unitWidth : 2 * unitWidth;\r\n });\r\n const paddingRight = viewport.width / 2 - containerWidth / 2;\r\n const contentDimensions = {\r\n width: contentInnerWidth + containerWidth + paddingRight,\r\n paddingLeft: viewport.width - paddingRight / 2,\r\n paddingRight: paddingRight\r\n };\r\n scroller.current.scrollTo(0, 0);\r\n lastScrollerPos.current = 0;\r\n\r\n setContainerWidth(containerWidth);\r\n refContainerWidth.current = containerWidth;\r\n setMosaicHeight(mosaicHeight);\r\n setMosaicUnitWidth(unitWidth);\r\n refMosaicUnitWidth.current = unitWidth;\r\n setContentDimensions(contentDimensions);\r\n refContentDimensions.current = contentDimensions;\r\n introTextOffset.current = introElementHeight / 2 + mosaicHeight / 2;\r\n handleIntroTextPositioning();\r\n };\r\n\r\n const isDragged = useRef(false);\r\n const mouseStartX = useRef(null);\r\n const mouseScrollerStart = useRef(null);\r\n\r\n const handleMouseDown = (ev) => {\r\n isDragged.current = true;\r\n mouseStartX.current = ev.clientX;\r\n mouseScrollerStart.current = scroller.current.scrollLeft;\r\n };\r\n\r\n const handleMouseUp = () => {\r\n \r\n isDragged.current = false;\r\n mouseStartX.current = null;\r\n mouseScrollerStart.current = null;\r\n setIntroTextPosition('up');\r\n };\r\n\r\n const handleMouseMove = (ev) => {\r\n if (isDragged.current) {\r\n scroller.current.scrollTo(mouseScrollerStart.current - (ev.clientX - mouseStartX.current), 0);\r\n } else {\r\n handleMouseUp();\r\n }\r\n };\r\n\r\n const handleKeyDown = (e) => {\r\n setIntroTextPosition('up');\r\n }\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n const currentScroller = scroller.current;\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleBodyScroll);\r\n currentScroller.addEventListener('scroll', handleScroll);\r\n document.addEventListener('keydown', handleKeyDown);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleBodyScroll);\r\n currentScroller.removeEventListener('scroll', handleScroll);\r\n document.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n handleResize();\r\n wiggleShown.current = false;\r\n wiggleEnded.current = false;\r\n introTextWentUp.current = false;\r\n handleIntroTextPositioning();\r\n }, [ columns ]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
{keepSpaceTogether(header, togetherString)}
\r\n
\r\n
{keepSpaceTogether(body, togetherString)}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {\r\n (() => { \r\n if (scroller && scroller.current) {\r\n scroller.current.scrollTo(0, 0);\r\n wiggleShown.current = false;\r\n }\r\n return null;\r\n })() \r\n }\r\n \r\n { getColumns(mosaicUnitWidth) }\r\n
\r\n
\r\n
{ctaData.Title}
\r\n
{ctaData.Body}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n performAutoScroll('left') } altText=\"Scroll Left\"/>\r\n
\r\n
\r\n performAutoScroll('right') } altText=\"Scroll Right\"/>\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n});\r\n\r\nexport default MosaicSection;\r\n","import React, { useRef, createRef, useLayoutEffect, useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../models/Utils';\r\nimport { getBBFIndex } from '../../../models/Utils';\r\nimport {\r\n setHasVisitedBBF\r\n} from '../../../store/reducers/mainReducer';\r\n\r\nimport VideoBanner from '../subcomponents/VideoBanner/VideoBanner';\r\nimport CreditsWrapper from '../subcomponents/CreditsWrapper/CreditsWrapper';\r\nimport MosaicSection from '../subcomponents/MosaicSection/MosaicSection';\r\nimport ExhibitMenu from '../../Common/ExhibitMenu/ExhibitMenu';\r\n\r\nimport { ADALandmarks } from '../../../models/ADA';\r\nimport './PillarPage.scss';\r\n\r\nconst snappingTolerance = 10;\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst PillarPage = () => {\r\n const dispatch = useDispatch();\r\n const creditsElement = useRef(null);\r\n const videoBannerRef = useRef(null);\r\n const mosaicSections = useRef([]);\r\n const isAutoScrolling = useRef(false);\r\n const blockMouseWheel = useRef(false);\r\n const lastScrollPos = useRef(0);\r\n const isMobileScreen = useRef(false);\r\n\r\n const initialized = useSelector(state => state.data.initialized);\r\n const digitalMuseumCMS = useSelector(state => state.data.cms.digitalMuseum);\r\n const poweredByPurposeCMS = useSelector(state => state.data.cms.poweredByPurpose);\r\n const cmsData = useSelector(state => state.data.cms.buildingBrighterFutures);\r\n const globalData = useSelector(state => state.data.cms.global);\r\n const navbar = useSelector(state => state.data.menus.buildingBrighterFutures);\r\n const cmsMediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const hasVisitedStories = useSelector(state => state.data.hasVisitedStories);\r\n const creditsOpened = useSelector(state => state.data.creditsOpened);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const [index, setIndex] = useState(-1);\r\n const { pillarId } = useParams();\r\n const history = useHistory();\r\n\r\n const pillarIndex = getBBFIndex(pillarId, cmsData, history);\r\n const thePillar = cmsData && cmsData.Pillars ? cmsData.Pillars[pillarIndex] : null;\r\n\r\n useEffect(() => {\r\n dispatch(setHasVisitedBBF(true));\r\n\r\n }, []);\r\n\r\n const scrollAutomaticallyTo = (y) => {\r\n isAutoScrolling.current = true;\r\n blockMouseWheel.current = true;\r\n const start = document.body.scrollTop;\r\n const end = y;\r\n const speed = 500;\r\n const t0 = Date.now();\r\n const tFinal = t0 + (Math.abs(end - start) / 1000) * speed;\r\n const animate = () => {\r\n let t = Date.now();\r\n if (t >= tFinal) t = tFinal;\r\n let tNormalized = (t - t0) / (tFinal - t0);\r\n const distDiff = (end - start) * (--tNormalized * tNormalized * tNormalized + 1); // easeOutCubic\r\n document.body.scrollTo(0, start + distDiff);\r\n if (t < tFinal) {\r\n requestAnimationFrame(animate);\r\n } else {\r\n setTimeout(() => {\r\n isAutoScrolling.current = false;\r\n }, 100);\r\n setTimeout(() => {\r\n blockMouseWheel.current = false;\r\n }, 1000);\r\n }\r\n };\r\n requestAnimationFrame(animate);\r\n };\r\n\r\n const scrollToMosaicSection = (index) => {\r\n setIndex(index);\r\n scrollAutomaticallyTo(mosaicSections.current[index].current.getBoundingClientRect().y + document.body.scrollTop - getNavbarHeight());\r\n };\r\n\r\n const scrollToVideoBanner = () => {\r\n setIndex(-1);\r\n scrollAutomaticallyTo(0);\r\n };\r\n\r\n const scrollToFooter = () => {\r\n if(creditsElement && creditsElement.current){\r\n const bottomRect = creditsElement.current.getBoundingClientRect();\r\n const viewport = getViewportDimensions();\r\n scrollAutomaticallyTo(document.body.scrollTop + bottomRect.y + bottomRect.height - viewport.height);\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n isMobileScreen.current = getViewportDimensions().width <= mobileScreenThreshold;\r\n document.body.scrollTo(0, 0);\r\n };\r\n\r\n const handleMouseWheel = (e) => {\r\n if (isMobileScreen.current) return;\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n handleDefaultEvent(e);\r\n }\r\n\r\n const handleKeyDown = (e) => {\r\n if (isMobileScreen.current) return;\r\n\r\n handleDefaultEvent(e);\r\n }\r\n\r\n const handleDefaultEvent = (e) => {\r\n const threshold = 2;\r\n if (!isAutoScrolling.current && !blockMouseWheel.current && Math.abs(e.deltaY) > threshold) {\r\n const direction = e.deltaY > 0 ? 'down' : 'up';\r\n let refY = getNavbarHeight();\r\n const viewport = getViewportDimensions();\r\n const bannerRect = videoBannerRef.current.getBoundingClientRect();\r\n const sectionRects = mosaicSections.current.map((section) => section.current.getBoundingClientRect());\r\n const bottomRect = creditsElement.current.getBoundingClientRect();\r\n if (refY > -1) {\r\n if (refY - snappingTolerance < bannerRect.y && refY + snappingTolerance > bannerRect.y) {\r\n if (direction === 'down') {\r\n scrollToMosaicSection(0);\r\n }\r\n } else if (viewport.height - snappingTolerance < bottomRect.y + bottomRect.height && viewport.height + snappingTolerance > bottomRect.y + bottomRect.height) {\r\n if (direction === 'up') {\r\n scrollToMosaicSection(sectionRects.length - 1);\r\n }\r\n }\r\n else {\r\n let snappedToSection = false;\r\n for (let i = 0; i < sectionRects.length; i++) {\r\n if (refY - snappingTolerance < sectionRects[i].y && refY + snappingTolerance > sectionRects[i].y) {\r\n if (direction === 'down') {\r\n if (i < sectionRects.length - 1) {\r\n scrollToMosaicSection(i + 1);\r\n } else {\r\n scrollToFooter();\r\n }\r\n snappedToSection = true;\r\n break;\r\n } else if (direction === 'up') {\r\n if (i > 0) {\r\n scrollToMosaicSection(i - 1);\r\n } else {\r\n scrollToVideoBanner();\r\n }\r\n snappedToSection = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (!snappedToSection) {\r\n if (direction === 'down') {\r\n scrollToFooter();\r\n } else if (direction === 'up') {\r\n scrollToVideoBanner();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n // modern Chrome requires { passive: false } when adding event\r\n let supportsPassive = false;\r\n try {\r\n window.addEventListener(\r\n 'test',\r\n null,\r\n Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n supportsPassive = true;\r\n },\r\n })\r\n );\r\n } catch (e) {}\r\n const wheelOpt = supportsPassive ? { passive: false } : false;\r\n const wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\r\n\r\n function AddEvents(){\r\n document.body.addEventListener(wheelEvent, handleMouseWheel, wheelOpt);\r\n document.body.addEventListener('keydown', handleKeyDown, false);\r\n }\r\n\r\n function RemoveEvents(){\r\n document.body.removeEventListener(wheelEvent, handleMouseWheel, wheelOpt);\r\n document.body.removeEventListener('keydown', handleKeyDown, false);\r\n }\r\n\r\n if(!creditsOpened && !menuOpened){\r\n console.log('Add overhaul scroll');\r\n AddEvents();\r\n } else {\r\n console.log('Remove overhaul scroll');\r\n RemoveEvents();\r\n }\r\n\r\n return () => {\r\n RemoveEvents();\r\n };\r\n }, [creditsOpened, menuOpened]);\r\n\r\n if(!initialized || !thePillar || pillarIndex < 0){\r\n return null;\r\n }\r\n\r\n thePillar.Themes.forEach(theme => {\r\n theme.MosaicColumns.forEach(column => {\r\n if (column.Column.BigImage.Image && column.Column.BigImage.Image.indexOf(cmsMediaPath) < 0) {\r\n column.Column.BigImage.Image = cmsMediaPath + column.Column.BigImage.Image;\r\n }\r\n if (column.Column.RowImage.Image && column.Column.RowImage.Image.indexOf(cmsMediaPath) < 0) {\r\n column.Column.RowImage.Image = cmsMediaPath + column.Column.RowImage.Image;\r\n }\r\n if (column.HalfColumn.Image1.Image && column.HalfColumn.Image1.Image.indexOf(cmsMediaPath) < 0) {\r\n column.HalfColumn.Image1.Image = cmsMediaPath + column.HalfColumn.Image1.Image;\r\n }\r\n if (column.HalfColumn.Image2.Image && column.HalfColumn.Image2.Image.indexOf(cmsMediaPath) < 0) {\r\n column.HalfColumn.Image2.Image = cmsMediaPath + column.HalfColumn.Image2.Image;\r\n }\r\n });\r\n });\r\n\r\n const pillarImages = cmsData.Introduction.ExploreMore.Cards.map(card => {\r\n return (card.Background.Image && card.Background.Image.indexOf(cmsMediaPath) < 0) \r\n ? cmsMediaPath + card.Background.Image\r\n : card.Background.Image;\r\n });\r\n \r\n const nextPillarIndex = (cmsData && cmsData.Pillars && pillarIndex > -1 && pillarIndex + 1 < cmsData.Pillars.length) ? pillarIndex + 1 : null;\r\n const nextPillarId = nextPillarIndex ? cmsData.Pillars[nextPillarIndex] : null;\r\n\r\n const getMosaicSections = (pillar) => {\r\n mosaicSections.current = pillar.Themes.map((theme) => createRef());\r\n return pillar.Themes.map((theme, i) => {\r\n return (\r\n \r\n );\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n scrollToMosaicSection(0) }\r\n />\r\n {getMosaicSections(thePillar)}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PillarPage;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport './LandscapeMessage.scss';\r\n\r\nconst LandscapeMessage = ({ }) => {\r\n return
\r\n
This site is optimized for portrait orientation on mobile. Please rotate your device.
\r\n
\r\n};\r\n\r\nexport default LandscapeMessage;\r\n","import React from 'react';\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\nimport { linkTypes } from '../../../../models/Models';\r\n\r\n\r\nexport const LearnMoreButton = ({ data, className }) => {\r\n\r\n\tif (data == null || !data.HasLink) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst external = data.Type === linkTypes.EXTERNAL;\r\n\treturn ;\r\n};","import React, { useState, useRef, useLayoutEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport './IntroBars.scss';\r\nimport { LearnMoreButton } from '../LearnMore/LearnMoreButton';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\nconst bottomMarginOnMobile = 30; // MUST BE IN SYNC WITH CSS\r\n\r\nconst IntroBars = React.forwardRef((props, theRef) => {\r\n const [ heightParams, setHeightParams ] = useState({ marginTop: 0, height: 0 });\r\n const mobileMinHeight = 40 + 2 * 32 + 40; // padding-top + 2 * title_height + padding-bottom from CSS\r\n const [ mobileMaxHeight, setMobileMaxHeight ] = useState(0);\r\n const refMobileMaxHeight = useRef(mobileMaxHeight); // 40vh from CSS\r\n const mobileSpaceBetween = 10; // margin-top from CSS\r\n const [ isMobileLayout, setIsMobileLayout ] = useState(false);\r\n const refIsMobileLayout = useRef(isMobileLayout);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const container = useRef(null);\r\n const content = useRef(null);\r\n const boxesHolder = useRef(null);\r\n const barsContainer = useRef(null);\r\n const [activeColumn, setActiveColumn] = useState(-1);\r\n const columns = props.data.Boxes.map(box => ({\r\n title: box.Header,\r\n text: box.Body,\r\n learnMore: box.LearnMore\r\n }));\r\n const columnRefs = columns.map((column) => useRef(null));\r\n const columnBodyTextRefs = columns.map((column) => useRef(null));\r\n\r\n const [ animationState, setAnimationState ] = useState({\r\n bgndColor: 'black',\r\n titleClass: 'white',\r\n subtitleClass: 'invisible',\r\n boxesClass: 'invisible',\r\n barsClass: 'visible',\r\n blockerClass: 'visible',\r\n mobileBoxesClass: '',\r\n scrollProtectorClass: '',\r\n });\r\n\r\n const getBoxes = (mobileClass) => {\r\n let items = [];\r\n columns.forEach((column, i) => {\r\n items.push(\r\n
\r\n
\r\n
handleColumnMouseEnter(i)}\r\n onMouseLeave={() => handleColumnMouseLeave()}\r\n onFocus={() => handleColumnMouseEnter(i)}\r\n onBlur={() => handleColumnMouseLeave()}\r\n tabIndex=\"-1\"\r\n //aria-label={`Box ${i+1}`}\r\n //role={ADAARIARoles.Group}\r\n >\r\n {/*
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{keepSpaceTogether(column.title, togetherString)}
\r\n
:
\r\n
\r\n
{keepSpaceTogether(column.text, togetherString)}
\r\n
\r\n
*/}\r\n
\r\n
{column.title}
\r\n
\r\n
{column.text}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n });\r\n return items;\r\n };\r\n\r\n const getBars = () => {\r\n let items = [];\r\n for (let i = 0; i < 12; i++) {\r\n items.push(\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return items;\r\n };\r\n\r\n const expandBoxesOnMobile = () => {\r\n setActiveColumn(10);\r\n for (let column = 0; column < 3; column++) {\r\n const columnElement = columnBodyTextRefs[column].current;\r\n const innerTextHeight = columnElement.getElementsByClassName('vbn-ib-box--text-inner')[0].getBoundingClientRect().height;\r\n columnElement.style.height = `${innerTextHeight}px`;\r\n }\r\n };\r\n\r\n const handleColumnMouseEnter = (column) => {\r\n setActiveColumn(column);\r\n const columnElement = columnBodyTextRefs[column].current;\r\n const innerTextHeight = columnElement.getElementsByClassName('vbn-ib-box--text-inner')[0].getBoundingClientRect().height;\r\n columnElement.style.height = `${innerTextHeight}px`;\r\n };\r\n\r\n const handleColumnMouseLeave = () => {\r\n setActiveColumn(-1);\r\n columnBodyTextRefs.forEach((ref, i) => {\r\n ref.current.style.height = '0px';\r\n });\r\n };\r\n\r\n const handleResize = () => {\r\n const marginTop = getNavbarHeight();\r\n const viewport = getViewportDimensions();\r\n const contentHeight = content.current.getBoundingClientRect().height;\r\n const height = viewport.height - marginTop;\r\n const onMobile = viewport.width <= mobileScreenThreshold;\r\n setIsMobileLayout(onMobile);\r\n refIsMobileLayout.current = onMobile;\r\n const shiftTop = onMobile ? 0 : Math.min(marginTop, (height - contentHeight) / 2);\r\n setHeightParams({\r\n marginTop: marginTop - shiftTop,\r\n height: height + shiftTop,\r\n });\r\n if (!onMobile) {\r\n // columnRefs.forEach((columnRef, i) => {\r\n // columnRef.current.style.height = '';\r\n // columnBodyTextRefs[i].current.style.opacity = '';\r\n // });\r\n } else {\r\n // const maxH = getViewportDimensions().height * 0.4;\r\n // setMobileMaxHeight(maxH);\r\n // refMobileMaxHeight.current = maxH;\r\n }\r\n };\r\n\r\n const performAnimation = () => {\r\n let timeout = refIsMobileLayout.current ? 100 : 0;\r\n let mobileClass = '';\r\n\r\n // Put the boxes in the right place on screen for mobile\r\n if (refIsMobileLayout.current) {\r\n setTimeout(() => {\r\n const firstBoxRect = columnRefs[0].current.getBoundingClientRect();\r\n const viewport = getViewportDimensions();\r\n const offset = viewport.height - (firstBoxRect.y + firstBoxRect.height) - bottomMarginOnMobile;\r\n window.boxRef = columnRefs[0].current;\r\n barsContainer.current.style.top = `${offset}px`;\r\n boxesHolder.current.style.top = `${offset}px`;\r\n }, timeout);\r\n timeout += 10;\r\n }\r\n\r\n // Bars dance\r\n setTimeout(() => {\r\n setAnimationState({\r\n bgndColor: 'black',\r\n titleClass: 'white',\r\n subtitleClass: 'invisible',\r\n boxesClass: 'invisible',\r\n barsClass: 'visible',\r\n blockerClass: 'visible',\r\n mobileBoxesClass: mobileClass,\r\n scrollProtectorClass: '',\r\n });\r\n }, timeout);\r\n\r\n // Color transition\r\n timeout += 1510;\r\n setTimeout(() => {\r\n setAnimationState({\r\n bgndColor: 'white',\r\n titleClass: 'black',\r\n subtitleClass: refIsMobileLayout.current ? 'invisible' : 'visible',\r\n boxesClass: 'visible',\r\n barsClass: 'invisible',\r\n blockerClass: 'visible',\r\n mobileBoxesClass: mobileClass,\r\n scrollProtectorClass: '',\r\n });\r\n }, timeout);\r\n\r\n // Hide bars completely\r\n timeout += 550;\r\n setTimeout(() => {\r\n setAnimationState({\r\n bgndColor: 'white',\r\n titleClass: 'black',\r\n subtitleClass: refIsMobileLayout.current ? 'invisible' : 'visible',\r\n boxesClass: 'visible',\r\n barsClass: 'invisible unclickable',\r\n blockerClass: 'visible',\r\n mobileBoxesClass: mobileClass,\r\n scrollProtectorClass: '',\r\n });\r\n }, timeout);\r\n \r\n // Positions change on mobile\r\n if (refIsMobileLayout.current) {\r\n timeout += 200;\r\n mobileClass = 'final-on-mobile';\r\n setTimeout(() => {\r\n setAnimationState({\r\n bgndColor: 'white',\r\n titleClass: 'black',\r\n subtitleClass: 'invisible',\r\n boxesClass: 'visible',\r\n barsClass: 'invisible',\r\n blockerClass: 'visible',\r\n mobileBoxesClass: mobileClass,\r\n scrollProtectorClass: '',\r\n });\r\n expandBoxesOnMobile();\r\n }, timeout);\r\n\r\n timeout += 200;\r\n setTimeout(() => {\r\n barsContainer.current.style.top = `0px`;\r\n boxesHolder.current.style.top = `0px`;\r\n columnRefs.forEach((columnRef, i) => {\r\n const height = columnRef.current.getBoundingClientRect().height;\r\n columnRef.current.parentNode.style.height = `${height}px`;\r\n });\r\n }, timeout);\r\n\r\n timeout += 500;\r\n setTimeout(() => {\r\n setAnimationState({\r\n bgndColor: 'white',\r\n titleClass: 'black',\r\n subtitleClass: 'visible',\r\n boxesClass: 'visible',\r\n barsClass: 'invisible',\r\n blockerClass: 'visible',\r\n mobileBoxesClass: mobileClass,\r\n scrollProtectorClass: '',\r\n });\r\n }, timeout);\r\n }\r\n\r\n // Hide blocker\r\n timeout += 50;\r\n setTimeout(() => {\r\n setAnimationState({\r\n bgndColor: 'white',\r\n titleClass: 'black',\r\n subtitleClass: 'visible',\r\n boxesClass: 'visible',\r\n barsClass: 'invisible unclickable',\r\n blockerClass: 'invisible',\r\n mobileBoxesClass: mobileClass,\r\n scrollProtectorClass: 'invisible',\r\n });\r\n }, timeout);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n performAnimation();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{props.data.Header}

\r\n
\r\n
{props.data.Body}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {getBoxes(animationState.mobileBoxesClass)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {getBars()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default IntroBars;\r\n","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport animateScrollTo from 'animated-scroll-to';\r\nimport { getNavbarHeight } from '../../../models/Utils';\r\n\r\nimport NextStory from '../../Common/NextStory/NextStory';\r\nimport ExhibitMenu from '../../Common/ExhibitMenu/ExhibitMenu';\r\nimport { getViewportDimensions } from '../../../models/Utils';\r\nimport {\r\n setHasVisitedVBN\r\n} from '../../../store/reducers/mainReducer';\r\n\r\nimport IntroBars from '../subcomponents/IntroBars/IntroBars';\r\n\r\nimport { ADALandmarks } from '../../../models/ADA';\r\nimport './VbnIntro.scss';\r\n\r\nconst VbnIntro = props => {\r\n const dispatch = useDispatch();\r\n const initialized = useSelector(state => state.data.initialized);\r\n const cmsData = useSelector(state => state.data.cms.verizonByTheNumbers);\r\n const navbar = useSelector(state => state.data.menus.verizonByTheNumbers);\r\n const cmsMediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const [creditsActive, setCreditsActive] = useState(false);\r\n const creditsElement = useRef(null);\r\n let [ada, setADA] = useState(\"\");\r\n\r\n useEffect(() => {\r\n document.title = \"The Verizon Story - Verizon by the Numbers\";\r\n setTimeout(() => {\r\n dispatch(setHasVisitedVBN(true));\r\n setADANonRepeating(cmsData.Introduction.AltText);\r\n }, 100);\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n }, [ada]);\r\n\r\n const handleScroll = () => {\r\n if(creditsElement && creditsElement.current){\r\n const sliderRect = creditsElement.current.getBoundingClientRect();\r\n const windowHeight = getViewportDimensions().height;\r\n if ((sliderRect.y <= windowHeight)) {\r\n setCreditsActive(true);\r\n }\r\n else if ((sliderRect.y > windowHeight)) {\r\n setCreditsActive(false);\r\n }\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleScroll();\r\n\r\n document.body.addEventListener('scroll', handleScroll);\r\n window.addEventListener('resize', handleScroll);\r\n\r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n window.removeEventListener('resize', handleScroll);\r\n };\r\n }, []);\r\n\r\n if(!initialized){\r\n return null;\r\n }\r\n\r\n const getBoxes = () => {\r\n let boxes = [];\r\n cmsData.Sections.forEach((section) => {\r\n boxes.push({\r\n Header: section.Name,\r\n Body: section.IntroBox.BodyText,\r\n LearnMore: {\r\n HasLink: true,\r\n Text: section.IntroBox.LearnMoreText,\r\n altText: section.IntroBox.LearnMoreAltText,\r\n Type: '1',\r\n InternalURL: {\r\n BasePath: {\r\n Text: cmsData.Path.Text,\r\n },\r\n Path: {\r\n Path: section.Menu.Path,\r\n Text: ''\r\n }\r\n },\r\n ExternalURL: {}\r\n },\r\n });\r\n });\r\n return boxes;\r\n };\r\n\r\n function setADANonRepeating(text) {\r\n if (ada == text) return;\r\n console.log(\"[VBN] Set ADA: \", ada)\r\n setADA(text);\r\n }\r\n\r\n return (\r\n \r\n
\r\n {/*
{ada}
*/}\r\n \r\n \r\n {/*
*/}\r\n {/*
\r\n {}}\r\n />\r\n
*/}\r\n
\r\n );\r\n};\r\n\r\nexport default VbnIntro;\r\n","import React, { useRef, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getViewportDimensions, keepSpaceTogether } from '../../../../models/Utils';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './SectionTitleVideo.scss';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst SectionTitleVideo = ({ videoUrlDesktop, videoUrlMobile, adaText }) => {\r\n const [onMobile, setOnMobile] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const refScreenWidth = useRef(-1);\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n if (refScreenWidth.current !== viewport.width) {\r\n setOnMobile(viewport.width <= mobileScreenThreshold);\r\n\r\n refScreenWidth.current = viewport.width;\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n

{adaText}

\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SectionTitleVideo;","import React, { useState, useLayoutEffect } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions, keepSpaceTogether } from '../../../../models/Utils';\r\n\r\nimport './SectionIntroSlide.scss';\r\n\r\nimport Arrow from '../../../Common/Arrow/Arrow';\r\nimport AnimatedSectionTitle from '../AnimatedSectionTitle/AnimatedSectionTitle';\r\nimport SectionTitleVideo from '../SectionTitleVideo/SectionTitleVideo';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport { ADAARIARoles, ADAWidgitRoles } from '../../../../models/ADA';\r\n\r\nconst togetherString = \"V Team\";\r\n\r\nconst SectionIntroSlide = React.forwardRef((props, theRef) => {\r\n const [ heightParams, setHeightParams ] = useState({ marginTop: 0, height: 0 });\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const isDesktopView = useMediaQuery({ query: '(min-width: 767px)' });\r\n\r\n const handleResize = () => {\r\n const marginTop = getNavbarHeight();\r\n const viewport = getViewportDimensions();\r\n const height = viewport.height - marginTop;\r\n setHeightParams({\r\n marginTop,\r\n height,\r\n });\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {/*\r\n (props.title1 && props.title1.length > 0 || props.title2 && props.title2.length > 0) &&\r\n \r\n */}\r\n {\r\n props.videoTitleDesktop && props.videoTitleMobile && (props.title1 || props.title2) &&\r\n \r\n }\r\n {\r\n props.text &&\r\n (\r\n

{keepSpaceTogether(props.text, togetherString)}

\r\n

{keepSpaceTogether(props.text, togetherString)}

\r\n
)\r\n }\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default SectionIntroSlide;\r\n","import React, { useState, useRef, useLayoutEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport './InfoColumns.scss';\r\nimport { LearnMoreButton } from '../LearnMore/LearnMoreButton';\r\nimport Arrow from '../../../Common/Arrow/Arrow';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst InfoColumns = React.forwardRef((props, theRef) => {\r\n const [ isMobileLayout, setIsMobileLayout ] = useState(false);\r\n const refIsMobileLayout = useRef(isMobileLayout);\r\n const [ rightHeight, setRightHeight ] = useState(null);\r\n const titleRef = useRef(null);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const container = useRef(null);\r\n const columns = props.data.Columns.map(column => ({\r\n title: column.Header,\r\n text: column.Body,\r\n learnMore: column.LearnMore,\r\n columnImage: column.ColumnImage\r\n }));\r\n\r\n const hideLearnMoreLinks = columns.some((column) => column.learnMore == null || !column.learnMore.HasLink);\r\n\r\n const getColumns = () => {\r\n let items = [];\r\n columns.forEach((column, i) => {\r\n items.push(\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{column.title}

\r\n
{column.text}
\r\n \r\n
\r\n
\r\n
\r\n );\r\n });\r\n return items;\r\n };\r\n\r\n const handleScroll = () => {\r\n if (!refIsMobileLayout.current) return;\r\n\r\n // const viewport = getViewportDimensions();\r\n // columnRefs.forEach((column, i) => {\r\n // const rect = column.current.getBoundingClientRect();\r\n // const bodyText = columnBodyTextRefs[i].current;\r\n // const innerTextHeight = bodyText.getElementsByClassName('bbf-2cs-column--text-inner')[0].getBoundingClientRect().height;\r\n // bodyText.style.height = rect.y + rect.height + mobileSpaceBetween <= viewport.height ? `${innerTextHeight}px` : '0px';\r\n // });\r\n };\r\n\r\n const handleResize = () => {\r\n const marginTop = getNavbarHeight();\r\n const viewport = getViewportDimensions();\r\n const height = viewport.height - marginTop;\r\n const onMobile = viewport.width <= mobileScreenThreshold;\r\n setIsMobileLayout(onMobile);\r\n refIsMobileLayout.current = onMobile;\r\n if (!onMobile) {\r\n const rh = titleRef.current.getBoundingClientRect().height;\r\n setRightHeight(`${rh}px`);\r\n // columnRefs.forEach((columnRef, i) => {\r\n // columnRef.current.style.height = '';\r\n // columnBodyTextRefs[i].current.style.opacity = '';\r\n // });\r\n } else {\r\n setRightHeight('');\r\n // const maxH = getViewportDimensions().height * 0.4;\r\n // setMobileMaxHeight(maxH);\r\n // refMobileMaxHeight.current = maxH;\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n handleScroll();\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{props.data.Title}
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {getColumns()}\r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default InfoColumns;\r\n","import React, { useState, useRef, useLayoutEffect } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions, keepSpaceTogether } from '../../../../models/Utils';\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './VbnVideo.scss';\r\nimport { LearnMoreButton } from '../LearnMore/LearnMoreButton';\r\nimport Arrow from '../../../Common/Arrow/Arrow';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst videoRatio = 16 / 9;\r\nconst togetherString = 'V Team';\r\n\r\nconst VbnVideo = React.forwardRef((props, theRef) => {\r\n const [ isMobileLayout, setIsMobileLayout ] = useState(false);\r\n const [ videoDimensions, setVideoDimensions ] = useState({ width: 0, height: 0 });\r\n const [ rightHeight, setRightHeight ] = useState(null);\r\n const titleRef = useRef(null);\r\n const videoWrapperRef = useRef(null);\r\n const videoTimeout = useSelector(state => state.data.videoFadeTimeout);\r\n const [ isPlaying, setIsPlaying ] = useState(false);\r\n const [ hasStarted, setHasStarted ] = useState(false);\r\n const refIsInView = useRef(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n const handleResize = () => {\r\n const width = videoWrapperRef.current.getBoundingClientRect().width;\r\n const height = width / videoRatio;\r\n setVideoDimensions({ width, height });\r\n\r\n const onMobile = getViewportDimensions().width <= mobileScreenThreshold;\r\n setIsMobileLayout(onMobile);\r\n if (!onMobile) {\r\n const rh = titleRef.current.getBoundingClientRect().height;\r\n setRightHeight(`${rh}px`);\r\n } else {\r\n setRightHeight('');\r\n }\r\n };\r\n\r\n const handleScroll = () => {\r\n const viewport = getViewportDimensions();\r\n const rect = videoWrapperRef.current.getBoundingClientRect();\r\n if (!refIsInView.current && rect.y + rect.height / 2 > 0 && rect.y + rect.height / 2 < viewport.height) {\r\n refIsInView.current = true;\r\n loopVideo();\r\n } else if (refIsInView.current && (rect.y + rect.height < 0 || rect.y > viewport.height)) {\r\n refIsInView.current = false;\r\n setIsPlaying(false);\r\n }\r\n };\r\n\r\n const loopVideo = () => {\r\n if (!isPlaying && refIsInView.current) {\r\n setIsPlaying(true);\r\n }\r\n };\r\n\r\n const handleVideoStart = () => {\r\n setHasStarted(true);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
{props.data.Title}
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n props.data.Video\r\n &&\r\n
\r\n loopVideo()\r\n }\r\n }}\r\n onReady={ () => loopVideo() }\r\n onStart={handleVideoStart}\r\n />\r\n {/*
*/}\r\n
\r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n});\r\n\r\nexport default VbnVideo;\r\n","import React, { useRef, useLayoutEffect, useEffect, useState } from 'react';\r\nimport { getViewportDimensions } from '../../../../models/Utils';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './AnimatedNumbers.scss';\r\n\r\nconst AnimatedNumbers = ({ text, animatedPart }) => {\r\n const content = useRef(null);\r\n const animationDone = useRef(false);\r\n const [initialText, setInitialText] = useState(text);\r\n const refAnimatedPart = useRef(animatedPart);\r\n const refText = useRef(text);\r\n\r\n const numberWithCommas = (x) => {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n };\r\n\r\n const animateNumbers = () => {\r\n const fixedParts = refText.current.split(refAnimatedPart.current);\r\n const start = 0;\r\n const end = parseFloat(refAnimatedPart.current.replace(',', ''));\r\n const decimalPlaces = refAnimatedPart.current.indexOf('.') > -1 ? refAnimatedPart.current.split('.')[1].length : 0;\r\n const precision = Math.pow(10, decimalPlaces);\r\n const exponent = refAnimatedPart.current.replace(',', '').replace('.', '').length * 2;\r\n const t0 = Date.now();\r\n const tFinal = t0 + 2000;\r\n const animate = () => {\r\n let t = Date.now();\r\n if (t >= tFinal) t = tFinal;\r\n let tNormalized = (t - t0) / (tFinal - t0);\r\n const diff = (end - start) * (1 - Math.pow(1 - tNormalized, exponent)); // easeOutCirc\r\n content.current.innerHTML = `${fixedParts[0]}${numberWithCommas(Math.round((start + diff) * precision) / precision)}${fixedParts[1]}`;\r\n if (t < tFinal) {\r\n requestAnimationFrame(animate);\r\n }\r\n };\r\n requestAnimationFrame(animate);\r\n };\r\n\r\n const handleScroll = () => {\r\n if (animationDone.current) {\r\n // document.body.removeEventListener('scroll', handleScroll);\r\n return;\r\n }\r\n\r\n const rect = content.current.getBoundingClientRect();\r\n const viewport = getViewportDimensions();\r\n if (rect.y > 0 && rect.y + rect.height < viewport.height) {\r\n animationDone.current = true;\r\n animateNumbers();\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (animatedPart) {\r\n if (text.indexOf(animatedPart) < 0) {\r\n throw new Error('The text does not contain the provided animated part');\r\n }\r\n setInitialText(text.replace(animatedPart, 0));\r\n animationDone.current = false;\r\n } else {\r\n setInitialText(text);\r\n animationDone.current = true;\r\n }\r\n refText.current = text;\r\n refAnimatedPart.current = animatedPart;\r\n }, [text, animatedPart]);\r\n\r\n return (\r\n \r\n {text}\r\n {initialText}\r\n \r\n );\r\n};\r\n\r\nexport default AnimatedNumbers;\r\n","import React, { useRef, useLayoutEffect, useEffect, useState } from 'react';\r\n\r\nimport { ADAWidgitRoles } from '../../../../models/ADA';\r\n\r\nimport './InfoTooltip.scss';\r\nimport icon from './info-tooltip-icon.png';\r\n\r\nconst InfoTooltip = ({ text, parentRef }) => {\r\n const content = useRef(null);\r\n const [popupActive, setPopupActive] = useState(false);\r\n const refPopupActive = useRef(popupActive);\r\n const [popupDimensions, setPopupDimensions] = useState({\r\n left: 0,\r\n width: 0,\r\n });\r\n const [arrowLeft, setArrowLeft] = useState(0);\r\n\r\n const handleResize = () => {\r\n setPopupActive(false);\r\n refPopupActive.current = false;\r\n };\r\n\r\n const handleDocumentClick = (ev) => {\r\n if (refPopupActive.current) {\r\n let clickedOnPopup = false;\r\n let el = ev.target;\r\n while (el) {\r\n if (el === content.current) {\r\n clickedOnPopup = true;\r\n break;\r\n }\r\n el = el.parentNode;\r\n }\r\n if (!clickedOnPopup) {\r\n setPopupActive(false);\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (e) => {\r\n if(e.key === 'Escape' || e.key === 'Tab'){\r\n setPopupActive(false);\r\n }\r\n }\r\n\r\n const activatePopup = () => {\r\n if (popupActive) {\r\n setPopupActive(false);\r\n return;\r\n }\r\n\r\n const parentRect = parentRef.current.getBoundingClientRect();\r\n const rect = content.current.getBoundingClientRect();\r\n const popupLeft = rect.x - parentRect.x - 20;\r\n setPopupDimensions({\r\n left: `-${popupLeft}px`,\r\n width: `${parentRect.width - 2 * 20}px`\r\n });\r\n setArrowLeft(`${popupLeft + rect.width / 2}px`);\r\n setPopupActive(true);\r\n refPopupActive.current = true;\r\n };\r\n\r\n useLayoutEffect(() => {\r\n document.addEventListener('click', handleDocumentClick);\r\n document.addEventListener('keydown', handleKeyDown);\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.removeEventListener('click', handleDocumentClick);\r\n document.removeEventListener('keydown', handleKeyDown);\r\n\r\n };\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // if (animatedPart) {\r\n // if (text.indexOf(animatedPart) < 0) {\r\n // throw new Error('The text does not contain the provided animated part');\r\n // }\r\n // setInitialText(text.replace(animatedPart, 0));\r\n // animationDone.current = false;\r\n // } else {\r\n // setInitialText(text);\r\n // animationDone.current = true;\r\n // }\r\n // refText.current = text;\r\n // refAnimatedPart.current = animatedPart;\r\n // }, [text, animatedPart]);\r\n\r\n return (\r\n activatePopup()}\r\n onKeyDown={(e) => {\r\n if ((e.key === 'Enter' || e.keyCode === 32) && e.target === document.activeElement) {\r\n \r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }}\r\n onKeyUp={(e) => {\r\n if ((e.key === 'Enter' || e.keyCode === 32) && e.target === document.activeElement) {\r\n \r\n activatePopup();\r\n }\r\n }}\r\n >\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{text}
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default InfoTooltip;\r\n","import React from 'react';\r\nimport {\r\n\tBarChart as Chart,\r\n\tBar,\r\n\tXAxis,\r\n\tCartesianGrid,\r\n\tCell,\r\n\tLabelList, ResponsiveContainer\r\n} from 'recharts';\r\n\r\nimport './BarChart.scss';\r\n\r\nconst COLORS = ['#323232', '#d52b1e'];\r\n\r\nexport const BarChart = function({ data }) {\r\n\r\n\tconst last = data[data.length - 1];\r\n\tlast.labelFormatted = last.Value;\r\n\r\n\tconst renderCustomizedLabel = (props) => {\r\n\r\n\t\tconst { x, y, width, value } = props;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{ value ? `${value}+` : ''}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.map((entry, index) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n","import React from 'react';\r\nimport { PieChart as Chart, Pie, Cell, ResponsiveContainer } from 'recharts';\r\n\r\nimport './PieChart.scss';\r\n\r\nconst COLORS = ['#323232', '#d52b1e'];\r\nconst RADIAN = Math.PI / 180;\r\n\r\nexport const PieChart = function({ data }) {\r\n\r\n\tconst renderCustomizedLabel = (props) => {\r\n\t\tconst {\r\n\t\t\tcx, cy, midAngle,\r\n\t\t\tinnerRadius,\r\n\t\t\tpercent, index\r\n\t\t} = props;\r\n\r\n\t\tconst radius = innerRadius * 0.5;\r\n\t\tconst x = cx + radius * Math.cos(-midAngle * RADIAN);\r\n\t\tconst y = cy + radius * Math.sin(-midAngle * RADIAN);\r\n\r\n\t\treturn \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{`${(percent * 100).toFixed(1)}%`}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{data[index].Label}\r\n\t\t\t\r\n\t\t;\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.map((entry, index) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};","import React from 'react';\r\nimport './MapChart.scss';\r\nimport { useSelector } from 'react-redux';\r\n\r\n\r\nexport const MapChart = function({ data }) {\r\n\tconst cmsMediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};","import React from 'react';\r\nimport { BarChart } from './BarChart/BarChart';\r\nimport { PieChart } from './PieChart/PieChart';\r\nimport { MapChart } from './MapChart/MapChart';\r\n\r\nimport './ChartBox.scss';\r\n\r\nexport const ChartBox = function({data}) {\r\n\r\n\tlet chart = null;\r\n\tlet adaText = '';\r\n\r\n\tconsole.log(data)\r\n\tswitch (data.Type) {\r\n\r\n\t\tcase \"bar\":\r\n\t\t\tchart = ;\r\n\t\t\tlet tempbar = '';\r\n\t\t\tdata.Bar.Values.forEach((v, i, a) => tempbar += (v.Label + \": \" + v.Value + (i == a.length -1 ? \"+\":\"\") + \" schools \"));\r\n\t\t\tadaText = 'Animated bar chart. ' + tempbar;\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"pie\":\r\n\t\t\tchart = ;\r\n\t\t\tlet temppie = '';\r\n\t\t\tdata.Pie.Values.forEach(v => temppie += (v.Label + \": \" + v.Value + \"% \"));\r\n\r\n\t\t\tadaText = 'Animated pie chart. ' + temppie;\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"map\":\r\n\t\t\tchart = ;\r\n\t\t\tadaText = data.Map.AltText;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{chart}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};","import React, { useState, useRef, useLayoutEffect, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions, keepSpaceTogether } from '../../../../models/Utils';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './DataGrid.scss';\r\n\r\n\r\nimport AnimatedNumbers from '../AnimatedNumbers/AnimatedNumbers';\r\nimport InfoTooltip from '../InfoTooltip/InfoTooltip';\r\nimport { ChartBox } from '../Charts/ChartBox';\r\nimport { LearnMoreButton } from '../LearnMore/LearnMoreButton';\r\n\r\nconst togetherString = 'V Team';\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst DataGrid = React.forwardRef((props, theRef) => {\r\n const [ isMobileLayout, setIsMobileLayout ] = useState(false);\r\n const refIsMobileLayout = useRef(isMobileLayout);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const boxRefs = props.data.Boxes.map((box) => useRef(null));\r\n\r\n const handleScroll = () => {\r\n \r\n };\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n const onMobile = viewport.width <= mobileScreenThreshold;\r\n setIsMobileLayout(onMobile);\r\n refIsMobileLayout.current = onMobile;\r\n if (onMobile) {\r\n // boxRefs.forEach((boxRef) => {\r\n // const parentNode = boxRef.current.parentNode\r\n // const width = parentNode.getBoundingClientRect().width;\r\n // const chart = \r\n // });\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n const getCells = (inputBoxes, onMobile) => {\r\n let items = [];\r\n const boxes = [ ...inputBoxes ];\r\n const sumOfBoxes = boxes.reduce((acc, cur) => acc + (cur.Type === \"double\" ? 2 : 1), 0);\r\n if (sumOfBoxes % 3 !== 0) {\r\n throw new Error('Total size of data grid must be divisible by 3.');\r\n }\r\n if (onMobile) {\r\n for (let i = 0; i < boxes.length - 1; i++) {\r\n if (boxes[i].Type === 'double' && i > 1) {\r\n throw new Error('Double box can be only in the first or second place');\r\n }\r\n for (let j = i + 1; j < boxes.length; j++) {\r\n if (boxes[j].Type === \"double\" && boxes[i].Type !== \"double\") {\r\n let temp = boxes[i];\r\n boxes[i] = boxes[j];\r\n boxes[j] = temp;\r\n }\r\n }\r\n }\r\n }\r\n boxes.forEach((box, i) => {\r\n items.push(\r\n \r\n
\r\n
\r\n {\r\n box.Icon\r\n &&\r\n
\r\n
\r\n \"\"/\r\n
\r\n
\r\n }\r\n
\r\n \r\n
\r\n {/*
:
*/}\r\n
{box.Text}{ box.Tooltip && }
\r\n {\r\n box.LearnMore\r\n &&\r\n \r\n }\r\n
\r\n {\r\n box.Type === \"double\"\r\n &&\r\n \r\n }\r\n
\r\n \r\n );\r\n });\r\n let rows = [];\r\n let rowSum = 0;\r\n let tempItems = [];\r\n for (let i = 0; i < items.length; i++) {\r\n tempItems.push(items[i]);\r\n rowSum += boxes[i].Type === 'double' ? 2 : 1;\r\n if (rowSum >= 3) {\r\n rows.push(
{[...tempItems]}
);\r\n rowSum = 0;\r\n tempItems = [];\r\n }\r\n }\r\n return rows;\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
{props.data.Header}
\r\n
\r\n {getCells(props.data.Boxes, isMobileLayout)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default DataGrid;\r\n","import React, { useRef, useLayoutEffect, useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory, useParams } from \"react-router-dom\";\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../models/Utils';\r\nimport { getVBNIndex } from '../../../models/Utils';\r\nimport {\r\n setHasVisitedVBN\r\n} from '../../../store/reducers/mainReducer';\r\n\r\nimport CreditsWrapper from '../../BuildingBrighterFutures/subcomponents/CreditsWrapper/CreditsWrapper';\r\nimport ExhibitMenu from '../../Common/ExhibitMenu/ExhibitMenu';\r\nimport SectionIntroSlide from '../subcomponents/SectionIntroSlide/SectionIntroSlide';\r\nimport InfoColumns from '../subcomponents/InfoColumns/InfoColumns';\r\nimport VbnVideo from '../subcomponents/VbnVideo/VbnVideo';\r\nimport DataGrid from '../subcomponents/DataGrid/DataGrid';\r\n\r\nimport { ADAARIARoles, ADALandmarks } from '../../../models/ADA';\r\nimport './VbnSectionPage.scss';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst VbnSectionPage = () => {\r\n const dispatch = useDispatch();\r\n const creditsElement = useRef(null);\r\n const afterSlideEl = useRef(null);\r\n const isMobileScreen = useRef(false);\r\n const lastScreenWidth = useRef(-1);\r\n\r\n const initialized = useSelector(state => state.data.initialized);\r\n const cmsData = useSelector(state => state.data.cms.verizonByTheNumbers);\r\n const navbar = useSelector(state => state.data.menus.verizonByTheNumbers);\r\n const cmsMediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [index, setIndex] = useState(-1);\r\n const { sectionId } = useParams();\r\n const history = useHistory();\r\n\r\n const sectionColors = ['red', 'yellow', 'blue'];\r\n\r\n const sectionIndex = getVBNIndex(sectionId, cmsData, history);\r\n const theSection = cmsData && cmsData.Sections ? cmsData.Sections[sectionIndex] : null;\r\n\r\n useEffect(() => {\r\n dispatch(setHasVisitedVBN(true));\r\n }, []);\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n if (viewport.width !== lastScreenWidth.current) {\r\n // On Android devices, it appears that scrolling launches resize event on some devices\r\n // So we check whether the width of the screen was changed, as we only care about that for layout\r\n isMobileScreen.current = viewport.width <= mobileScreenThreshold;\r\n document.body.scrollTo(0, 0);\r\n lastScreenWidth.current = viewport.width;\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n if(!initialized || !theSection || sectionIndex < 0){\r\n return null;\r\n }\r\n\r\n if (theSection.InfoColumns) {\r\n theSection.InfoColumns.Columns.forEach(column => {\r\n if (column.ColumnImage && column.ColumnImage.Image && column.ColumnImage.Image.indexOf(cmsMediaPath) < 0) {\r\n column.ColumnImage.Image = cmsMediaPath + column.ColumnImage.Image;\r\n }\r\n });\r\n }\r\n\r\n if (theSection.IntroSlide) {\r\n if (theSection.IntroSlide.VideoTitleDesktop && theSection.IntroSlide.VideoTitleDesktop.indexOf(cmsMediaPath) < 0) {\r\n theSection.IntroSlide.VideoTitleDesktop = cmsMediaPath + theSection.IntroSlide.VideoTitleDesktop;\r\n }\r\n if (theSection.IntroSlide.VideoTitleMobile && theSection.IntroSlide.VideoTitleMobile.indexOf(cmsMediaPath) < 0) {\r\n theSection.IntroSlide.VideoTitleMobile = cmsMediaPath + theSection.IntroSlide.VideoTitleMobile;\r\n }\r\n }\r\n\r\n if (theSection.DataGrid) {\r\n if (theSection.DataGrid.Boxes) {\r\n theSection.DataGrid.Boxes.forEach((box) => {\r\n if (box.Icon && box.Icon.indexOf(cmsMediaPath) < 0) {\r\n box.Icon = cmsMediaPath + box.Icon;\r\n }\r\n });\r\n }\r\n }\r\n\r\n const goDownFromIntro = () => {\r\n const start = document.body.scrollTop;\r\n const end = afterSlideEl.current.getBoundingClientRect().y + document.body.scrollTop - getNavbarHeight();\r\n const speed = 500;\r\n const t0 = Date.now();\r\n const tFinal = t0 + (Math.abs(end - start) / 1000) * speed;\r\n const animate = () => {\r\n let t = Date.now();\r\n if (t >= tFinal) t = tFinal;\r\n let tNormalized = (t - t0) / (tFinal - t0);\r\n const distDiff = (end - start) * (--tNormalized * tNormalized * tNormalized + 1); // easeOutCubic\r\n document.body.scrollTo(0, start + distDiff);\r\n if (t < tFinal) {\r\n requestAnimationFrame(animate);\r\n }\r\n };\r\n requestAnimationFrame(animate);\r\n };\r\n \r\n // Navigation is circular\r\n const nextSectionIndex = (sectionIndex + 1) % cmsData.Sections.length;\r\n const nextSectionId = cmsData.Sections[nextSectionIndex];\r\n\r\n return (\r\n
\r\n \r\n \r\n {\r\n theSection.DataGrid\r\n &&\r\n \r\n }\r\n {\r\n theSection.InfoVideo && theSection.InfoVideo.Title != null && theSection.InfoVideo.Title !== \"\"\r\n &&\r\n \r\n }\r\n {\r\n (theSection.InfoColumns && theSection.InfoColumns.Active)\r\n &&\r\n \r\n }\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VbnSectionPage;\r\n","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './TitleArea.scss';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst TitleArea = React.forwardRef(({ theme, noThemeData, onSpin, darkMode, longestTitle, longestSubtitle }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const [spinInstructionsClass, setSpinInstructionsClass] = useState('');\r\n const refSpinInstructions = useRef(null);\r\n const refInstMaxHeight = useRef(0);\r\n\r\n useLayoutEffect(() => {\r\n const instHeight = refSpinInstructions.current.getBoundingClientRect().height;\r\n refInstMaxHeight.current = Math.max(refInstMaxHeight.current, instHeight);\r\n refSpinInstructions.current.style.height = refInstMaxHeight.current + 'px';\r\n\r\n if (theme && getViewportDimensions().width <= mobileScreenThreshold) {\r\n setSpinInstructionsClass('collapsed');\r\n } else {\r\n setSpinInstructionsClass('expanded');\r\n }\r\n }, [theme]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{longestTitle}
\r\n
{longestSubtitle}
\r\n
\r\n
\r\n

{theme ? theme.Title : noThemeData.Title}

\r\n
{theme ? theme.Subtitle : noThemeData.Subtitle}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{noThemeData.CallToAction}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default TitleArea;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './Slot.scss';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\nconst spinSpeed = 4000; // pixels per second\r\n\r\nconst Slot = React.forwardRef(({ offsetX, totalWidth, unitWidth, unitHeight, themes, isSpinning, targetIndex }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const refRail = useRef(null);\r\n const refSpinTime = useRef(null);\r\n const refSpinningActive = useRef(false);\r\n const refShuffledThemeIndices = useRef([]);\r\n\r\n useEffect(() => {\r\n if (isSpinning) {\r\n refSpinningActive.current = true;\r\n spin();\r\n } else {\r\n refSpinningActive.current = false;\r\n }\r\n }, [isSpinning]);\r\n\r\n const spin = () => {\r\n refSpinTime.current = Date.now();\r\n const railTargetIndex = targetIndex !== -1 ? refShuffledThemeIndices.current.indexOf(targetIndex) : Math.floor(Math.random() * themes.length);\r\n const targetBottom = - railTargetIndex * unitHeight;\r\n const animate = () => {\r\n if (!refRail.current) return;\r\n const t = Date.now();\r\n const currentBottom = parseFloat(refRail.current.style.bottom);\r\n const height = parseFloat(refRail.current.style.height);\r\n const newBottomTemp = currentBottom - spinSpeed * (t - refSpinTime.current) / 1000;\r\n const newBottom = newBottomTemp < -(height - unitHeight) ? newBottomTemp + (height - unitHeight) : newBottomTemp;\r\n refRail.current.style.bottom = `${newBottom}px`;\r\n refSpinTime.current = t;\r\n if (refSpinningActive.current) {\r\n requestAnimationFrame(animate);\r\n } else {\r\n if (newBottom > targetBottom) {\r\n requestAnimationFrame(animate);\r\n } else {\r\n refRail.current.style.bottom = `${targetBottom}px`;\r\n }\r\n }\r\n };\r\n requestAnimationFrame(animate);\r\n };\r\n\r\n const shuffleIndices = (count) => {\r\n const arr = Array.from(Array(count).keys());\r\n\r\n let currentIndex = arr.length, randomIndex;\r\n\r\n // While there remain elements to shuffle...\r\n while (currentIndex != 0) {\r\n\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex--;\r\n\r\n // And swap it with the current element.\r\n [arr[currentIndex], arr[randomIndex]] = [\r\n arr[randomIndex], arr[currentIndex]];\r\n }\r\n\r\n return arr;\r\n };\r\n\r\n const getThemesOnRail = (themes, offsetX, smProps) => {\r\n if (themes.length < 2) {\r\n throw new Error('There has to be at least two themes');\r\n }\r\n\r\n let fields = [];\r\n if (!refShuffledThemeIndices.current.length) {\r\n refShuffledThemeIndices.current = shuffleIndices(themes.length);\r\n }\r\n [...refShuffledThemeIndices.current, refShuffledThemeIndices.current[0]].forEach((themeInd, i) => {\r\n fields.push(\r\n
\r\n
\r\n \r\n );\r\n });\r\n return fields;\r\n };\r\n\r\n const getGap = () => {\r\n if (getViewportDimensions().width <= mobileScreenThreshold) {\r\n return 2;\r\n } else {\r\n return 4;\r\n }\r\n };\r\n\r\n const getProperImage = (theme) => {\r\n if (getViewportDimensions().width <= mobileScreenThreshold) {\r\n return theme.MobileImage;\r\n } else {\r\n return theme.DesktopImage;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {getThemesOnRail(themes, offsetX, { width: totalWidth, height: unitHeight })}\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default Slot;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport Slot from '../Slot/Slot';\r\n\r\nimport './SlotMachine.scss';\r\n\r\nconst numberOfSlots = 6;\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst SlotMachine = React.forwardRef(({ themes, themeIndex, onSpinStart, onSpinEnd, onIdleSpinStart, onIdleSpinEnd }, theRef) => {\r\n const [isMobile, setIsMobile] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [slotMachineProps, setSlotMachineProps] = useState({\r\n width: 0,\r\n height: 0,\r\n });\r\n const smWrapper = useRef(null);\r\n const smSizer = useRef(null);\r\n // Refs 0 ... numberOfSlots - 1\r\n const slotIndicesArray = Array.from(Array(numberOfSlots).keys());\r\n const slotRefs = slotIndicesArray.map((_) => useRef(null));\r\n const positionRefs = slotIndicesArray.map((_) => useRef(null));\r\n const [spinningStates, setSpinningStates] = useState(slotIndicesArray.map((index) => false));\r\n const refSpinningStates = useRef(spinningStates);\r\n const [showingOverlayImage, setShowingOverlayImage] = useState(false);\r\n const [themeForOverlayIndex, setThemeForOverlayIndex] = useState(themeIndex);\r\n const refFirstRender = useRef(true);\r\n const refNoUserSpinYet = useRef(true);\r\n\r\n const handleScroll = () => {\r\n // if(creditsElement && creditsElement.current){\r\n // const sliderRect = creditsElement.current.getBoundingClientRect();\r\n // const windowHeight = getViewportDimensions().height;\r\n // if ((sliderRect.y <= windowHeight)) {\r\n // setCreditsActive(true);\r\n // }\r\n // else if ((sliderRect.y > windowHeight)) {\r\n // setCreditsActive(false);\r\n // }\r\n // }\r\n };\r\n\r\n const handleResize = () => {\r\n setIsMobile(getViewportDimensions().width <= mobileScreenThreshold);\r\n if (smSizer.current) {\r\n const sizerSize = smSizer.current.getBoundingClientRect();\r\n const height = Math.floor(sizerSize.height);\r\n if (height <= 0) {\r\n setTimeout(() => {\r\n handleResize();\r\n }, 100);\r\n } else {\r\n setSlotMachineProps({\r\n ...slotMachineProps,\r\n width: sizerSize.width,\r\n height,\r\n });\r\n }\r\n }\r\n }\r\n\r\n useLayoutEffect(() => {\r\n // handleScroll();\r\n\r\n // document.body.addEventListener('scroll', handleScroll);\r\n // window.addEventListener('resize', handleScroll);\r\n\r\n // return () => {\r\n // document.body.removeEventListener('scroll', handleScroll);\r\n // window.removeEventListener('resize', handleScroll);\r\n // };\r\n\r\n handleResize();\r\n window.addEventListener('resize', handleResize);\r\n \r\n refNoUserSpinYet.current = true;\r\n setTimeout(() => {\r\n doIdleSpinning();\r\n }, 4000);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n refNoUserSpinYet.current = false;\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (refFirstRender.current) {\r\n refFirstRender.current = false;\r\n } else {\r\n doSomeSpinning();\r\n }\r\n }, [themeIndex]);\r\n\r\n const doSomeSpinning = () => {\r\n console.log(\"Now it's spinning\");\r\n refNoUserSpinYet.current = false;\r\n setShowingOverlayImage(false);\r\n onSpinStart();\r\n refSpinningStates.current = [...spinningStates];\r\n setTimeout(() => {\r\n setThemeForOverlayIndex(themeIndex);\r\n }, 2 * 300);\r\n for (let i = 0; i < numberOfSlots; i ++) {\r\n const targetIndex = i;\r\n setTimeout(() => {\r\n const newSpinningStates = [...refSpinningStates.current];\r\n newSpinningStates[targetIndex] = true;\r\n setSpinningStates(newSpinningStates);\r\n refSpinningStates.current = newSpinningStates;\r\n }, 300 + i * 100);\r\n }\r\n\r\n setTimeout(() => {\r\n for (let i = 0; i < numberOfSlots; i ++) {\r\n const targetIndex = i;\r\n setTimeout(() => {\r\n const newSpinningStates = [...refSpinningStates.current];\r\n newSpinningStates[targetIndex] = false;\r\n setSpinningStates(newSpinningStates);\r\n refSpinningStates.current = newSpinningStates;\r\n }, i * 100);\r\n }\r\n }, 3000);\r\n\r\n setTimeout(() => {\r\n console.log(\"And now it's stopped spinning\");\r\n setShowingOverlayImage(true);\r\n onSpinEnd();\r\n }, 3000 + 300 + numberOfSlots * 100 + 10);\r\n };\r\n\r\n const doIdleSpinning = () => {\r\n if (!refNoUserSpinYet.current) return;\r\n\r\n console.log(\"Now it's idle spinning\");\r\n onIdleSpinStart();\r\n refSpinningStates.current = [...spinningStates];\r\n\r\n for (let i = 0; i < numberOfSlots; i ++) {\r\n const targetIndex = i;\r\n setTimeout(() => {\r\n const newSpinningStates = [...refSpinningStates.current];\r\n newSpinningStates[targetIndex] = true;\r\n setSpinningStates(newSpinningStates);\r\n refSpinningStates.current = newSpinningStates;\r\n }, i * 100);\r\n }\r\n\r\n setTimeout(() => {\r\n for (let i = 0; i < numberOfSlots; i ++) {\r\n const targetIndex = i;\r\n setTimeout(() => {\r\n const newSpinningStates = [...refSpinningStates.current];\r\n newSpinningStates[targetIndex] = false;\r\n setSpinningStates(newSpinningStates);\r\n refSpinningStates.current = newSpinningStates;\r\n }, i * 100);\r\n }\r\n }, 1000);\r\n\r\n setTimeout(() => {\r\n console.log(\"And now it's stopped idle spinning\");\r\n onIdleSpinEnd();\r\n setTimeout(() => {\r\n doIdleSpinning();\r\n }, 4000);\r\n }, 1000 + numberOfSlots * 100 + 10);\r\n };\r\n\r\n const getSlots = (themes, smProps) => {\r\n const gap = getGap();\r\n const wrapper = smWrapper.current.getBoundingClientRect();\r\n const slotWidth = Math.round((wrapper.width - (numberOfSlots - 1) * gap) / numberOfSlots);\r\n let slots = [];\r\n slotRefs.forEach((ref, i) => {\r\n positionRefs[i].current = i * (slotWidth + gap);\r\n slots.push(\r\n \r\n );\r\n });\r\n return slots;\r\n };\r\n\r\n const getGap = () => {\r\n if (getViewportDimensions().width <= mobileScreenThreshold) {\r\n return 2;\r\n } else {\r\n return 4;\r\n }\r\n };\r\n\r\n const getProperImage = (theme) => {\r\n if (getViewportDimensions().width <= mobileScreenThreshold) {\r\n return theme.MobileImage;\r\n } else {\r\n return theme.DesktopImage;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {\r\n slotMachineProps.height\r\n && \r\n getSlots(themes, slotMachineProps)\r\n }\r\n
\r\n
\r\n {themes.map((theme, ind) =>
)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default SlotMachine;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\nimport { storyCardTypes } from '../../../../models/Models';\r\nimport {\r\n setActiveSlideKey,\r\n setActiveSlideType\r\n} from '../../../../store/reducers/mainReducer';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport CardHolder from '../../../Common/CardHolder/CardHolder';\r\nimport StoryCarousel from '../../../DigitalMuseum/StoryCarousel/StoryCarousel';\r\nimport QuoteStory from '../../../DigitalMuseum/QuoteStory/QuoteStory';\r\nimport AudioClip from '../../../DigitalMuseum/AudioClip/AudioClip';\r\nimport Video from '../../../DigitalMuseum/Video/Video';\r\nimport UserPoll from '../../../DigitalMuseum/UserPoll/UserPoll';\r\nimport InfographicCarousel from '../../../DigitalMuseum/InfographicCarousel/InfographicCarousel';\r\n\r\nimport { useWindowSize } from '../../../../models/Hooks';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport './ThemeContent.scss';\r\n\r\nconst ThemeContent = ({ cards, darkMode }) => {\r\n const el = useRef(null);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const dispatch = useDispatch();\r\n\r\n const cardElementRefs = useRef([]);\r\n const cardDataRefs = useRef([]);\r\n const activeCardIndex = useRef(null);\r\n\r\n const isFullScreen = window.innerHeight == window.screen.height;\r\n\r\n /* Handling new inline layout */\r\n const size = useWindowSize();\r\n const isLandscapeWithMargin = useMediaQuery({ query: '(min-width: 1274px)' });\r\n const isLandscapeNoMargin = useMediaQuery({\r\n query: '(orientation: landscape) and (max-width: 1274px)',\r\n });\r\n const aspectRatio = 2;\r\n const maxColumnWidth = 1234;\r\n const cardPadding = 30;\r\n const isInlineLayout = isLandscapeWithMargin || (isLandscapeNoMargin && !isFullScreen); // fullscreenElementHelper() ? false : \r\n\r\n const cardWidth = isInlineLayout ? Math.min(maxColumnWidth, size.width - 32) : size.width;\r\n const cardHeight = isInlineLayout\r\n ? Math.min(size.height * 0.7, cardWidth / aspectRatio)\r\n : size.height - getNavbarHeight() - 40; // based on CSS rule for the margin\r\n\r\n // const cardWidth = 900;\r\n // const cardHeight = 600;\r\n\r\n const handleScroll = () => {\r\n if (cardElementRefs.current) {\r\n const viewport = getViewportDimensions();\r\n const midScreen = (viewport.height + getNavbarHeight()) / 2;\r\n for (let i = 0; i < cardElementRefs.current.length; i++) {\r\n if (i === activeCardIndex.current) continue;\r\n\r\n const rect = cardElementRefs.current[i].getBoundingClientRect();\r\n if (rect.top <= midScreen && rect.top + rect.height > midScreen) {\r\n setActiveCard(i);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n \r\n };\r\n\r\n const setActiveCard = (index) => {\r\n activeCardIndex.current = index;\r\n dispatch(setActiveSlideKey(cardDataRefs.current[index].Key));\r\n dispatch(setActiveSlideType(cardDataRefs.current[index].Type));\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleScroll();\r\n\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n const dotGroups = el.current.getElementsByClassName('carousel__dot-group');\r\n for (let i = 0; i < dotGroups.length; i++) {\r\n const dotGroup = dotGroups[i];\r\n const j = i;\r\n setTimeout(() => {\r\n if (dotGroup.children && dotGroup.children.length) {\r\n dotGroup.children[0].click();\r\n }\r\n }, 50);\r\n }\r\n cardDataRefs.current = cards;\r\n if (el.current) cardElementRefs.current = el.current.getElementsByClassName('ccw-card-holder');\r\n }, [cards]);\r\n\r\n const getHtmlFromCard = (card, isInlineLayout, size) => {\r\n let value;\r\n switch (card.Type) {\r\n case storyCardTypes.VIDEO_INTRO:\r\n case storyCardTypes.OBJECT_3D:\r\n throw new Error(`Card type \"${card.Type}\" is not supported in this segment`);\r\n case storyCardTypes.TEXT_CAROUSEL:\r\n case storyCardTypes.TEXT_CAROUSEL_WITH_BG:\r\n case storyCardTypes.TEXT_IMAGE_CAROUSEL:\r\n case storyCardTypes.TEXT_VIDEO_CAROUSEL:\r\n case storyCardTypes.MIXED_MEDIA_CAROUSEL:\r\n value = (\r\n \r\n );\r\n break;\r\n case storyCardTypes.INFOGRAPHIC_CAROUSEL:\r\n value = ;\r\n break;\r\n case storyCardTypes.QUOTE:\r\n value = ;\r\n break;\r\n case storyCardTypes.VIDEO:\r\n value = (\r\n \r\n );\r\n break;\r\n case storyCardTypes.AUDIO_PODCAST:\r\n case storyCardTypes.AUDIO_MISC:\r\n value = ;\r\n break;\r\n case storyCardTypes.USER_POLL:\r\n value = ;\r\n break;\r\n default:\r\n throw new Error('No matching ID for component. See StorySelector.js');\r\n break;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const handleClickOnCard = (index) => {\r\n setActiveCard(index);\r\n };\r\n\r\n const generateCards = (cards) => {\r\n let retValue = [];\r\n const isInlineLayout = true;\r\n cards.forEach((card, index) => {\r\n retValue.push(\r\n
\r\n
handleClickOnCard(index)}>\r\n \r\n {getHtmlFromCard(card, isInlineLayout, { width: cardWidth, height: cardHeight })}\r\n \r\n
\r\n
\r\n );\r\n });\r\n\r\n return retValue;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {generateCards(cards)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ThemeContent;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getImageFilepath, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './AllThemesGrid.scss';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst AllThemesGrid = ({ themes, currentTheme, exploreButtonLabel, darkMode, onExploreClick }) => {\r\n const [isMobile, setIsMobile] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n const getThemeIndex = (theme) => {\r\n return themes.map((t) => t.Key).indexOf(theme.Key);\r\n };\r\n\r\n const getThemeList = () => {\r\n const size = getViewportDimensions();\r\n let retValue = [];\r\n let columns = [];\r\n const filteredThemes = themes.filter((theme) => !currentTheme || theme.Key !== currentTheme.Key);\r\n filteredThemes.forEach((theme, i) => {\r\n columns.push(\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{theme.Title}
\r\n
: {theme.Title}
\r\n
\r\n
\r\n );\r\n if (columns.length === 2 || i === filteredThemes.length - 1) {\r\n retValue.push(\r\n
\r\n {[...columns]}\r\n
\r\n );\r\n columns = [];\r\n }\r\n });\r\n return retValue;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {getThemeList()}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AllThemesGrid;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport './SpinAgainStrip.scss';\r\n\r\nconst SpinAgainStrip = ({ darkMode, onSpinAgain, label }) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SpinAgainStrip;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../models/Utils';\r\nimport {\r\n setHasVisitedCCW\r\n} from '../../../store/reducers/mainReducer';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../models/ADA';\r\n\r\nimport TitleArea from '../subcomponents/TitleArea/TitleArea';\r\nimport SlotMachine from '../subcomponents/SlotMachine/SlotMachine';\r\nimport ThemeContent from '../subcomponents/ThemeContent/ThemeContent';\r\nimport AllThemesGrid from '../subcomponents/AllThemesGrid/AllThemesGrid';\r\nimport SpinAgainStrip from '../subcomponents/SpinAgainStrip/SpinAgainStrip';\r\nimport CreditsWrapper from '../../BuildingBrighterFutures/subcomponents/CreditsWrapper/CreditsWrapper';\r\n\r\nimport './CcwMain.scss';\r\n\r\nconst CcwMain = props => {\r\n const dispatch = useDispatch();\r\n const [ heightParams, setHeightParams ] = useState({ marginTop: 0, height: 0 });\r\n const initialized = useSelector(state => state.data.initialized);\r\n const cmsData = useSelector(state => state.data.cms.communicationsChangeTheWorld);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n let [ada, setADA] = useState(\"\");\r\n const [chosenTheme, setChosenTheme] = useState(-1);\r\n const refShownThemes = useRef([]);\r\n const ccwBlocker = useRef(null);\r\n const [darkMode, setDarkMode] = useState(false);\r\n const [chosenThemeForContent, setChosenThemeForContent] = useState(chosenTheme);\r\n const titleAreaRef = useRef(null);\r\n const refIsIdleSpinning = useRef(false);\r\n const refRandomSpinQueued = useRef(false);\r\n\r\n useEffect(() => {\r\n document.title = \"The Verizon Story - Communications Change the World\";\r\n\r\n setTimeout(() => {\r\n dispatch(setHasVisitedCCW(true));\r\n setADANonRepeating(cmsData.Introduction.AltText);\r\n }, 100);\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n }, [ada]);\r\n\r\n const handleScroll = () => {\r\n // if(creditsElement && creditsElement.current){\r\n // const sliderRect = creditsElement.current.getBoundingClientRect();\r\n // const windowHeight = getViewportDimensions().height;\r\n // if ((sliderRect.y <= windowHeight)) {\r\n // setCreditsActive(true);\r\n // }\r\n // else if ((sliderRect.y > windowHeight)) {\r\n // setCreditsActive(false);\r\n // }\r\n // }\r\n };\r\n\r\n const handleResize = () => {\r\n const marginTop = getNavbarHeight();\r\n setHeightParams({ marginTop });\r\n };\r\n\r\n useLayoutEffect(() => {\r\n // handleScroll();\r\n\r\n // document.body.addEventListener('scroll', handleScroll);\r\n // window.addEventListener('resize', handleScroll);\r\n\r\n // return () => {\r\n // document.body.removeEventListener('scroll', handleScroll);\r\n // window.removeEventListener('resize', handleScroll);\r\n // };\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n if(!initialized){\r\n return null;\r\n }\r\n\r\n function setADANonRepeating(text) {\r\n if (ada == text) return;\r\n console.log(\"[VBN] Set ADA: \", ada)\r\n setADA(text);\r\n }\r\n\r\n function setRandomTheme() {\r\n if (refIsIdleSpinning.current) {\r\n refRandomSpinQueued.current = true;\r\n return;\r\n }\r\n\r\n refRandomSpinQueued.current = false;\r\n const filteredIndices = Array.from(Array(cmsData.Themes.length).keys()).filter((i) => !refShownThemes.current.includes(i));\r\n if (filteredIndices.length) {\r\n const index = filteredIndices[Math.floor(Math.random() * filteredIndices.length)];\r\n setChosenTheme(index);\r\n refShownThemes.current = [...refShownThemes.current, index];\r\n } else {\r\n setChosenTheme(-1);\r\n refShownThemes.current = [];\r\n }\r\n }\r\n\r\n function setTargetedTheme(themeIndex) {\r\n setChosenTheme(themeIndex);\r\n if (!refShownThemes.current.includes(themeIndex)) {\r\n refShownThemes.current = [...refShownThemes.current, themeIndex];\r\n }\r\n }\r\n\r\n function getLongestTitle() {\r\n let retValue = cmsData.Introduction.Title;\r\n cmsData.Themes.forEach((theme) => {\r\n if (theme.Title.length > retValue.length) {\r\n retValue = theme.Title;\r\n }\r\n });\r\n return retValue;\r\n }\r\n\r\n function getLongestSubtitle() {\r\n let retValue = cmsData.Introduction.Subtitle;\r\n cmsData.Themes.forEach((theme) => {\r\n if (theme.Subtitle.length > retValue.length) {\r\n retValue = theme.Subtitle;\r\n }\r\n });\r\n return retValue;\r\n }\r\n\r\n const spinStart = () => {\r\n if (ccwBlocker.current) ccwBlocker.current.style.display = 'block'; \r\n setDarkMode(false);\r\n };\r\n\r\n const spinEnd = () => {\r\n if (ccwBlocker.current) ccwBlocker.current.style.display = '';\r\n setDarkMode(chosenTheme !== -1);\r\n setChosenThemeForContent(chosenTheme);\r\n };\r\n\r\n const idleSpinStart = () => {\r\n refIsIdleSpinning.current = true;\r\n // if (ccwBlocker.current) ccwBlocker.current.style.display = 'block';\r\n };\r\n\r\n const idleSpinEnd = () => {\r\n refIsIdleSpinning.current = false;\r\n if (refRandomSpinQueued.current) {\r\n setRandomTheme();\r\n }\r\n // if (ccwBlocker.current) ccwBlocker.current.style.display = '';\r\n };\r\n\r\n const goUpAndSpinAgain = (targetTheme) => {\r\n if (ccwBlocker.current) ccwBlocker.current.style.display = 'block';\r\n const start = document.body.scrollTop;\r\n const end = titleAreaRef.current.getBoundingClientRect().top + document.body.scrollTop - heightParams.marginTop;\r\n // const speed = 1000;\r\n const t0 = Date.now();\r\n // const tFinal = t0 + (Math.abs(end - start) / 1000) * speed;\r\n const tFinal = t0 + 1000;\r\n const animate = () => {\r\n let t = Date.now();\r\n if (t >= tFinal) t = tFinal;\r\n let tNormalized = (t - t0) / (tFinal - t0);\r\n const distDiff = (end - start) * (--tNormalized * tNormalized * tNormalized + 1); // easeOutCubic\r\n document.body.scrollTo(0, start + distDiff);\r\n if (t < tFinal) {\r\n requestAnimationFrame(animate);\r\n } else {\r\n setTimeout(() => {\r\n if (ccwBlocker.current) ccwBlocker.current.style.display = '';\r\n if (typeof targetTheme === 'undefined') {\r\n setRandomTheme();\r\n } else {\r\n setTargetedTheme(targetTheme);\r\n }\r\n }, 100);\r\n }\r\n };\r\n requestAnimationFrame(animate);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {/* The div below is a hack for getNavbarHeight() to work */}\r\n
\r\n
\r\n
{ada}
\r\n \r\n { spinStart(); }}\r\n onSpinEnd={() => { spinEnd(); }}\r\n onIdleSpinStart={() => { idleSpinStart(); }}\r\n onIdleSpinEnd={() => { idleSpinEnd(); }}\r\n />\r\n {\r\n chosenThemeForContent > -1\r\n &&\r\n \r\n }\r\n {\r\n chosenThemeForContent > -1\r\n &&\r\n goUpAndSpinAgain()}\r\n />\r\n }\r\n {\r\n chosenThemeForContent > -1\r\n &&\r\n \r\n }\r\n {\r\n chosenThemeForContent > -1\r\n &&\r\n goUpAndSpinAgain()}\r\n />\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CcwMain;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport {deviceDetect, isMobile, mobileModel} from \"react-device-detect\";\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\n\r\nimport './TopSection.scss';\r\n\r\nconst mobileScreenThreshold = 767; // MUST BE IN SYNC WITH CSS\r\n\r\nconst TopSection = React.forwardRef(({ introData, sectionHeight, hideFromADA }, theRef) => {\r\n const [onMobile, setOnMobile] = useState(false);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const cmsMediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const refScreenWidth = useRef(-1);\r\n const refViewportDims = useRef(null);\r\n const refVideoHolder = useRef(null);\r\n const [videoDimensions, setVideoDimensions] = useState({ width: 0, height: 0 });\r\n const [videoMuted, setVideoMuted] = useState(true);\r\n const [videoPlaying, setVideoPlaying] = useState(true);\r\n const [showingCaret, setShowingCaret] = useState(true);\r\n const errorHandlingAttempted = useRef(false);\r\n\r\n const originalDimensions = {\r\n desktop: { width: 1920, height: 360},\r\n mobile: { width: 750, height: 450}\r\n };\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n if (refScreenWidth.current !== viewport.width) {\r\n const isMobile = viewport.width <= mobileScreenThreshold;\r\n setOnMobile(isMobile);\r\n\r\n const targetDimensions = isMobile ? originalDimensions.mobile : originalDimensions.desktop;\r\n const scaleFactor = viewport.width / targetDimensions.width;\r\n const finalDimensions = {\r\n width: targetDimensions.width * scaleFactor,\r\n height: targetDimensions.height * scaleFactor\r\n };\r\n setVideoDimensions(finalDimensions);\r\n \r\n if (refVideoHolder.current) {\r\n const parent = refVideoHolder.current.parentNode;\r\n const left = -parent.getBoundingClientRect().left;\r\n refVideoHolder.current.style.left = `${left}px`;\r\n }\r\n\r\n refScreenWidth.current = viewport.width;\r\n refViewportDims.current = {\r\n navbarHeight: getNavbarHeight(),\r\n ...viewport\r\n };\r\n }\r\n };\r\n\r\n const handleScroll = () => {\r\n if (!refVideoHolder.current || !refViewportDims.current) return;\r\n\r\n const viewDims = refViewportDims.current;\r\n const portionOfVideoIn = 0.5;\r\n const videoRect = refVideoHolder.current.getBoundingClientRect();\r\n if (videoRect.width <= 0 || videoRect.height <= 0) return;\r\n if (\r\n (\r\n videoRect.top > viewDims.navbarHeight && videoRect.top < viewDims.height && videoRect.top + videoRect.height * portionOfVideoIn < viewDims.height\r\n ||\r\n videoRect.top + videoRect.height < viewDims.height && videoRect.top + videoRect.height > viewDims.navbarHeight && videoRect.top + videoRect.height - videoRect.height * portionOfVideoIn > viewDims.navbarHeight\r\n )\r\n ) {\r\n setVideoPlaying(true);\r\n } else {\r\n setVideoPlaying(false);\r\n }\r\n\r\n if (document.body.scrollTop === 0) {\r\n setShowingCaret(true);\r\n } else {\r\n setShowingCaret(false);\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n handleScroll();\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n const loopVideo = () => {\r\n if (!videoPlaying) {\r\n setVideoPlaying(true);\r\n }\r\n };\r\n\r\n const setWaveformMute = (muted) => {\r\n setVideoMuted(muted);\r\n };\r\n\r\n useEffect( () => {\r\n console.log(deviceDetect());\r\n },[]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {onMobile && deviceDetect().os === 'iOS' && deviceDetect().model === 'iPhone' && introData.GifTitle !== null ?\r\n \r\n : \r\n loopVideo()\r\n }\r\n }}\r\n />}\r\n
\r\n
{introData.Subtitle}
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {\r\n setVideoMuted(true);\r\n setVideoPlaying(false);\r\n if (!errorHandlingAttempted.current) {\r\n setTimeout(() => {\r\n errorHandlingAttempted.current = true;\r\n setVideoPlaying(true);\r\n }, 10);\r\n }\r\n }}\r\n config={{\r\n youtube: introData.WaveformVideoMobile.indexOf(\"youtube.com\") < 0 ? null : {\r\n playerVars: {\r\n autoplay: 1,\r\n showinfo: 0,\r\n modestbranding: 1\r\n },\r\n onUnstarted: () => loopVideo()\r\n }\r\n }}\r\n onReady={ () => loopVideo() }\r\n />\r\n \r\n
\r\n
\r\n setWaveformMute(!videoMuted)}\r\n aria-label=\"Toggle audio\"\r\n tabIndex={!menuOpened ? 0 : -1}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n { showingCaret &&
}\r\n
\r\n );\r\n});\r\n\r\nexport default TopSection;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\nimport { credoStoryTypes } from '../../../../models/Models';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\n\r\nimport './Story.scss';\r\n\r\nconst Story = React.forwardRef(({ story, index, general, onDisplayStory, onFocusButton }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n\r\n const handleButtonFocus = (event) => {\r\n const element = event.target;\r\n setTimeout(() => {\r\n let offsetTop = 0;\r\n let currentElement = element;\r\n do {\r\n offsetTop += currentElement.offsetTop || 0;\r\n currentElement = currentElement.parentNode;\r\n } while (currentElement)\r\n const viewport = getViewportDimensions();\r\n if (offsetTop - document.body.scrollTop + element.offsetHeight > viewport.height) {\r\n try {\r\n element.scrollIntoView({ block: 'center' });\r\n } catch (e) {\r\n element.scrollIntoView(false);\r\n }\r\n onFocusButton();\r\n }\r\n }, 10);\r\n };\r\n\r\n const imagePart = (\r\n \r\n );\r\n const textPart = (\r\n
\r\n
{story.PreviewTitle}
\r\n
\r\n {general.StoryLearnMore}\r\n
\r\n
\r\n );\r\n\r\n return (\r\n \r\n {\r\n index % 2\r\n ?\r\n <>{textPart}{imagePart}\r\n :\r\n <>{imagePart}{textPart}\r\n }\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default Story;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\nimport { credoStoryTypes } from '../../../../models/Models';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\n\r\nimport './StoryDisplay.scss';\r\n\r\nconst StoryDisplay = React.forwardRef(({ story, general, onClose }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [videoShown, setVideoShown] = useState(false);\r\n const [videoDimensions, setVideoDimensions] = useState({ width: 0, height: 0 });\r\n const imgHolderRef = useRef(null);\r\n const headerRef = useRef(null);\r\n const [showingSchemeOverlay, setShowingSchemeOverlay] = useState(false);\r\n\r\n useEffect(() => {\r\n if (showingSchemeOverlay && headerRef.current) {\r\n setTimeout(() => {\r\n headerRef.current.getElementsByClassName('credo-ss-sd-scheme')[0].focus();\r\n }, 10);\r\n }\r\n }, [showingSchemeOverlay]);\r\n\r\n const getImageColumn = () => {\r\n const img = story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany ? story.Video.BackgroundMedia : story.Photo.Image;\r\n const alt = story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany ? story.Video.AltText : story.Photo.AltText;\r\n const imgHolderClass = story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany ? 'video-image' : '';\r\n return (\r\n
\r\n
\r\n
\r\n {alt}\r\n {\r\n (story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany) && !videoShown\r\n &&\r\n {\r\n const { width, height } = imgHolderRef.current.getBoundingClientRect();\r\n setVideoDimensions({ width, height });\r\n setVideoShown(true);\r\n }}\r\n >Play Video\r\n }\r\n {\r\n (story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany) && videoShown\r\n &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const getContentColumn = () => {\r\n const textTitle = \r\n (story.Template === credoStoryTypes.PhotoText || story.Template === credoStoryTypes.PhotoTextCompany || story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany)\r\n ?\r\n
{story.TextTitle}
\r\n :\r\n null;\r\n\r\n const textBody = \r\n (story.Template === credoStoryTypes.PhotoText || story.Template === credoStoryTypes.PhotoTextCompany || story.Template === credoStoryTypes.VideoText || story.Template === credoStoryTypes.VideoTextCompany)\r\n ?\r\n
{story.TextBody}
\r\n :\r\n null;\r\n\r\n const textQuote =\r\n (story.Template === credoStoryTypes.PhotoQuote || story.Template === credoStoryTypes.PhotoQuoteCompany)\r\n ?\r\n
“{story.Quote}”
\r\n :\r\n null;\r\n\r\n const companyPart =\r\n (story.Template === credoStoryTypes.PhotoTextCompany || story.Template === credoStoryTypes.PhotoQuoteCompany || story.Template === credoStoryTypes.VideoTextCompany)\r\n ?\r\n
\r\n
\r\n {story.CompanyInfo.Logo.AltText}\r\n
\r\n
\r\n
{story.CompanyInfo.Title}
\r\n setShowingSchemeOverlay(true)}\r\n aria-label={story.CompanyInfo.LearnMoreAltText ? story.CompanyInfo.LearnMoreAltText : general.CompanyLearnMoreButtonAltText}\r\n >{general.CompanyLearnMore}\r\n
\r\n
\r\n :\r\n null;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {textTitle}\r\n {textBody}\r\n {textQuote}\r\n {companyPart}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const handleX = () => {\r\n if (showingSchemeOverlay) {\r\n setShowingSchemeOverlay(false);\r\n } else {\r\n onClose();\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n setVideoShown(false);\r\n //headerRef.current.focus();\r\n }, [story]);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default StoryDisplay;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport Story from '../Story/Story';\r\nimport StoryDisplay from '../StoryDisplay/StoryDisplay';\r\n\r\nimport './StoriesSection.scss';\r\n\r\nconst StoriesSection = React.forwardRef(({ general, sections, storyDisplayCallback }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const bigRef = useRef(null);\r\n const sectionRefs = sections.map((section) => useRef(null));\r\n const progressRef = useRef(null);\r\n const [expansion, setExpansion] = useState(sections.map((section) => false));\r\n const refExpansion = useRef(expansion);\r\n const refDimensions = useRef({\r\n midHeight: 0,\r\n viewportHeight: 0,\r\n navbarHeight: 0\r\n });\r\n const [availableHeight, setAvailableHeight] = useState(0);\r\n const [storyInDisplay, setStoryInDisplay] = useState(null);\r\n const focusHelper = useRef({\r\n section: 0,\r\n story: 0\r\n });\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n const navbarHeight = getNavbarHeight();\r\n refDimensions.current = {\r\n midHeight: (viewport.height + navbarHeight) / 2,\r\n viewportHeight: viewport.height,\r\n navbarHeight\r\n };\r\n setAvailableHeight(viewport.height - navbarHeight);\r\n };\r\n\r\n const handleScroll = () => {\r\n const newExpansion = [];\r\n for (let i = 0; i < sectionRefs.length; i++) {\r\n const sectionRect = sectionRefs[i].current.getBoundingClientRect();\r\n newExpansion[i] = sectionRect.top <= refDimensions.current.midHeight && sectionRect.top + sectionRect.height > refDimensions.current.midHeight;\r\n }\r\n if (!newExpansion.every((exp, i) => exp === refExpansion.current[i])) {\r\n setExpansion(newExpansion);\r\n refExpansion.current = newExpansion;\r\n }\r\n\r\n const bigRect = bigRef.current.getBoundingClientRect();\r\n const smallRect = progressRef.current.getBoundingClientRect();\r\n const progressTop = Math.max(0, Math.min(refDimensions.current.navbarHeight - bigRect.top, bigRect.height - smallRect.height))\r\n progressRef.current.style.top = `${progressTop}px`;\r\n };\r\n\r\n const rememberFocus = (sectionIndex, storyIndex) => {\r\n focusHelper.current = {\r\n section: sectionIndex,\r\n story: storyIndex\r\n };\r\n };\r\n\r\n const restoreFocus = () => {\r\n setTimeout(() => {\r\n sectionRefs[focusHelper.current.section].current\r\n .getElementsByClassName('credo-ss-story')[focusHelper.current.story] // Must be the same class as in Story.js\r\n .getElementsByClassName('credo-button')[0]\r\n .focus();\r\n }, 10);\r\n };\r\n\r\n const generateSection = (section, index) => {\r\n return (\r\n
\r\n
{general.SectionLabel}
\r\n
{section.IntroText}
\r\n
\r\n {section.Stories.map((story, i) => (\r\n
\r\n {generateSeparator()}\r\n {\r\n setStoryInDisplay(story);\r\n storyDisplayCallback(true);\r\n rememberFocus(index, i);\r\n }}\r\n onFocusButton={handleScroll}\r\n />\r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const generateSeparator = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n handleScroll();\r\n\r\n window.addEventListener('resize', handleResize);\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {sections.map((section, i) =>
)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {sections.map((section, i) => generateSection(section, i))}\r\n
\r\n
\r\n \r\n {\r\n storyInDisplay\r\n &&\r\n {\r\n setStoryInDisplay(null);\r\n storyDisplayCallback(false);\r\n restoreFocus();\r\n }}\r\n />\r\n }\r\n \r\n );\r\n});\r\n\r\nexport default StoriesSection;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ReactComponent as CloseBtn } from '../../../../assets/images/graphics/btn-close.svg';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\n\r\nimport './VideoSection.scss';\r\n\r\nconst VideoSection = React.forwardRef(({ data, sectionHeight, hideFromADA }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const contentRef = useRef(null);\r\n const [contentHeight, setContentHeight] = useState(0);\r\n const [showingVideo, setShowingVideo] = useState(false);\r\n const [videoDimensions, setVideoDimensions] = useState({ top: 0, width: 0, height: 0 });\r\n const [isPlaying, setIsPlaying] = useState(false);\r\n\r\n const handleResize = () => {\r\n const viewport = getViewportDimensions();\r\n const top = getNavbarHeight();\r\n setVideoDimensions({\r\n top,\r\n width: viewport.width,\r\n height: viewport.height - top\r\n });\r\n setContentHeight(Math.min(contentRef.current.getBoundingClientRect().width * 9 / 16, sectionHeight - 2 * 30));\r\n };\r\n\r\n const playVideo = () => {\r\n handleResize();\r\n setIsPlaying(true);\r\n };\r\n\r\n const handleButtonFocus = () => {\r\n const viewport = getViewportDimensions();\r\n const rect = contentRef.current.getBoundingClientRect();\r\n if (rect.top + rect.height > viewport.height) {\r\n try {\r\n contentRef.current.scrollIntoView({ block: 'center' });\r\n } catch (err) {\r\n contentRef.current.scrollIntoView(false);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleResize();\r\n }, [sectionHeight]);\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{data.Title}
\r\n
{data.Subtitle}
\r\n
\r\n
\r\n
{data.Title}
\r\n
{data.Subtitle}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n showingVideo\r\n &&\r\n
\r\n
\r\n playVideo()\r\n }\r\n }}\r\n onReady={ () => playVideo() }\r\n />\r\n
\r\n setShowingVideo(false)}\r\n onClick={() => setShowingVideo(false)}\r\n />\r\n
\r\n }\r\n \r\n );\r\n});\r\n\r\nexport default VideoSection;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../../models/ADA';\r\n\r\nimport LearnMoreLink from '../../../Common/LearnMoreLink/LearnMoreLink';\r\n\r\nimport './BottomSection.scss';\r\n\r\nconst BottomSection = React.forwardRef(({ data, sectionHeight, hideFromADA }, theRef) => {\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{data.BigText}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default BottomSection;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../models/Utils';\r\nimport {\r\n setHasVisitedCredo,\r\n setIsShowingCredoPopup\r\n} from '../../../store/reducers/mainReducer';\r\n\r\nimport { ADALandmarks, ADAARIARoles } from '../../../models/ADA';\r\n\r\nimport CreditsWrapper from '../../BuildingBrighterFutures/subcomponents/CreditsWrapper/CreditsWrapper';\r\n\r\nimport TopSection from '../subcomponents/TopSection/TopSection';\r\nimport StoriesSection from '../subcomponents/StoriesSection/StoriesSection';\r\nimport VideoSection from '../subcomponents/VideoSection/VideoSection';\r\nimport BottomSection from '../subcomponents/BottomSection/BottomSection';\r\n\r\nimport './CredoMain.scss';\r\n\r\nconst CredoMain = props => {\r\n const dispatch = useDispatch();\r\n const [ heightParams, setHeightParams ] = useState({ marginTop: 0, height: 0 });\r\n const initialized = useSelector(state => state.data.initialized);\r\n const cmsData = useSelector(state => state.data.cms.credo);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const menuOpened = useSelector(state => state.data.menuOpened);\r\n const isShowingCredoPopup = useSelector(state => state.data.isShowingCredoPopup);\r\n let [ada, setADA] = useState(\"\");\r\n const credoBlocker = useRef(null);\r\n\r\n useEffect(() => {\r\n document.title = \"The Verizon Story - We are Verizon\";\r\n setTimeout(() => {\r\n dispatch(setHasVisitedCredo(true));\r\n setADANonRepeating(cmsData.Introduction.AltText);\r\n }, 100);\r\n }, []);\r\n\r\n useEffect(() => {\r\n\r\n }, [ada]);\r\n\r\n const handleScroll = () => {\r\n // if(creditsElement && creditsElement.current){\r\n // const sliderRect = creditsElement.current.getBoundingClientRect();\r\n // const windowHeight = getViewportDimensions().height;\r\n // if ((sliderRect.y <= windowHeight)) {\r\n // setCreditsActive(true);\r\n // }\r\n // else if ((sliderRect.y > windowHeight)) {\r\n // setCreditsActive(false);\r\n // }\r\n // }\r\n };\r\n\r\n const handleResize = () => {\r\n const marginTop = getNavbarHeight();\r\n setHeightParams({\r\n marginTop,\r\n height: getViewportDimensions().height - marginTop\r\n });\r\n };\r\n\r\n const handleStoryDisplay = (isShowingStory) => {\r\n dispatch(setIsShowingCredoPopup(isShowingStory));\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n if(!initialized){\r\n return null;\r\n }\r\n\r\n function setADANonRepeating(text) {\r\n if (ada == text) return;\r\n setADA(text);\r\n }\r\n\r\n return (\r\n
\r\n {/* The div below is a hack for getNavbarHeight() to work */}\r\n
\r\n
\r\n {/*
{ada}
*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CredoMain;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport ReactPlayer from 'react-player';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Link, useRouteMatch } from 'react-router-dom';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\nimport { innovationMediaTypes } from '../../../../models/Models';\r\n\r\nimport './DetailExpander.scss';\r\n\r\nconst DetailExpander = React.forwardRef(({ data, isActive, icon, label, activityHandler, wrapperParams, closeParams, onMobile }, theRef) => {\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [mobileContentStyle, setMobileContentStyle] = useState({ display: 'none' });\r\n const refInner = useRef(null);\r\n const refWrapperParams = useRef(null);\r\n const refCloseParams = useRef(null);\r\n const titleRef = useRef(null);\r\n\r\n const adjustDescription = () => {\r\n const desc = data.Description;\r\n const url = data.DescriptionLink;\r\n\r\n if (!url) return desc.replace('', '').replace('', '');\r\n\r\n const firstSplit = desc.split('');\r\n if (firstSplit.length < 2) return firstSplit.join('');\r\n\r\n const fullSplit = [firstSplit[0], ...firstSplit[1].split('')];\r\n if (fullSplit.length < 3) return fullSplit.join('');\r\n\r\n return <>{fullSplit[0]}{fullSplit[2]};\r\n };\r\n\r\n const getMedia = () => {\r\n if (data && data.MediaType === innovationMediaTypes.ImageOrGif) {\r\n return {data?.ImageMedia?.AltText}\r\n }\r\n\r\n if (data && data.MediaType === innovationMediaTypes.Video) {\r\n return (\r\n isActive ?\r\n
\r\n \r\n
\r\n :null\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const calculateMobileContentStyle = () => {\r\n if (!refWrapperParams.current || !refCloseParams.current || !refInner.current) {\r\n setTimeout(() => {\r\n calculateMobileContentStyle();\r\n }, 1);\r\n } else {\r\n const wrapperRect = refWrapperParams.current;\r\n const closeRect = refCloseParams.current;\r\n const innerRect = refInner.current.getBoundingClientRect();\r\n const left = wrapperRect.left - innerRect.left;\r\n const width = wrapperRect.width;\r\n const top = closeRect.top - innerRect.top + closeRect.height + 40;\r\n setMobileContentStyle({\r\n top: `${top}px`,\r\n left: `${left}px`,\r\n width: `${width}px`\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n refWrapperParams.current = wrapperParams;\r\n refCloseParams.current = closeParams;\r\n }, [wrapperParams, closeParams]);\r\n\r\n const handleResize = () => {\r\n calculateMobileContentStyle();\r\n \r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n

{data && data.Title}

\r\n {getMedia()}\r\n

{data && adjustDescription(data.Description)}

\r\n
\r\n
\r\n {\r\n activityHandler();\r\n titleRef.current.focus();\r\n }}\r\n >\r\n
\r\n
{label}
\r\n \r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default DetailExpander;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useParams, useLocation, Link, Redirect } from 'react-router-dom';\r\nimport { ADAWidgitRoles } from '../../../models/ADA';\r\n\r\nimport './InnovationNested.scss';\r\n\r\nimport DetailExpander from '../subcomponents/DetailExpander/DetailExpander';\r\n\r\nconst wholeTransitionDuration = 0.5; // Must be the same as in CSS\r\nconst transitionModes = { // Must match the CSS classes\r\n WHOLE: 'whole',\r\n PARTIAL: 'partial'\r\n};\r\n\r\nconst InnovationNested = ({ topic, linkToMain, linkToNext, nextTitle, topOffset, bubbleLabels, nestedParamHandler, onMobile, onClose }) => {\r\n const { innovationId } = useParams();\r\n const { hash } = useLocation();\r\n const [activeKey, setActiveKey] = useState(null);\r\n const [transitionClass, setTransitionClass] = useState('');\r\n const [transitionMode, setTransitionMode] = useState(transitionModes.WHOLE);\r\n const [redirectTo, setRedirectTo] = useState(null);\r\n const [wrapperParams, setWrapperParams] = useState(null);\r\n const [closeParams, setCloseParams] = useState(null);\r\n const refWrapper = useRef(null);\r\n const refClose = useRef(null);\r\n\r\n useEffect(() => {\r\n nestedParamHandler(innovationId);\r\n }, [innovationId]);\r\n\r\n useEffect(() => {\r\n setRedirectTo(null);\r\n\r\n if (!topic) {\r\n setActiveKey(null);\r\n return;\r\n }\r\n\r\n let targetActiveKey = topic.Overview.Key;\r\n if (hash) {\r\n switch (hash.replace('#', '').toLowerCase()) {\r\n case bubbleLabels.Origin.toLowerCase():\r\n targetActiveKey = topic.Origin.Key;\r\n break;\r\n case bubbleLabels.Context.toLowerCase():\r\n targetActiveKey = topic.Context.Key;\r\n break;\r\n case bubbleLabels.Impact.toLowerCase():\r\n targetActiveKey = topic.Impact.Key;\r\n break;\r\n case bubbleLabels.Future.toLowerCase():\r\n targetActiveKey = topic.Future.Key;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n setActiveKey(targetActiveKey);\r\n }, [topic]);\r\n\r\n useLayoutEffect(() => {\r\n //setTransitionClass('entering');\r\n setTimeout(() => {\r\n setTransitionClass('');\r\n setTransitionMode(transitionModes.WHOLE);\r\n }, wholeTransitionDuration * 1000);\r\n }, [topic]);\r\n\r\n const handleResize = () => {\r\n if (refWrapper.current && refClose.current) {\r\n setWrapperParams(refWrapper.current.getBoundingClientRect());\r\n setCloseParams(refClose.current.getBoundingClientRect());\r\n } else {\r\n setTimeout(() => {\r\n handleResize();\r\n }, 1);\r\n }\r\n };\r\n\r\n useLayoutEffect(() => {\r\n\r\n handleResize();\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n const handleRedirection = (event, to, mode) => {\r\n event.preventDefault();\r\n\r\n let objs = null;\r\n \r\n if(document.getElementsByClassName('innovation-nv-up-next-text').length > 0)\r\n {\r\n objs = document.getElementsByClassName('innovation-detail-expander');\r\n }\r\n \r\n setTransitionClass('exiting');\r\n setTransitionMode(mode === transitionModes.PARTIAL ? transitionModes.PARTIAL : transitionModes.WHOLE);\r\n\r\n if(objs != null && objs.length > 0)\r\n {\r\n for(let i = 0; i < objs.length; i++)\r\n {\r\n objs[i].style.opacity = 0;\r\n objs[i].style.transition = \"opacity 0.3s ease 0.3s\"\r\n }\r\n }\r\n //setRedirectTo(to);\r\n \r\n setTimeout(() => {\r\n setRedirectTo(to);\r\n setTimeout(() => {\r\n if(objs != null && objs.length > 0)\r\n {\r\n for(let i = 0; i < objs.length; i++)\r\n { \r\n objs[i].style.transition = \"width 0s ease 0s\";\r\n objs[i].style.opacity = 1;\r\n objs[i].style.transition = \"opacity 0.3s ease 0.3s\";\r\n\r\n setTimeout(() => {\r\n objs[i].style.transition = \"width 0.5s ease 0.25s\";\r\n }, wholeTransitionDuration * 1000);\r\n }\r\n }\r\n }, wholeTransitionDuration * 1000);\r\n\r\n }, wholeTransitionDuration * 1000);\r\n\r\n const element = event.target;\r\n\r\n }\r\n\r\n if (!topic) return null;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {setActiveKey(topic.Origin.Key); }}\r\n icon={onMobile ? 'prev' : (activeKey === topic.Origin.Key ? '' : 'prev')}\r\n label={bubbleLabels.Origin}\r\n wrapperParams={wrapperParams}\r\n closeParams={closeParams}\r\n onMobile={onMobile}\r\n />\r\n setActiveKey(topic.Context.Key)}\r\n icon={onMobile ? 'rw' : (activeKey === topic.Context.Key ? '' : activeKey === topic.Origin.Key ? 'ff': 'rw')}\r\n label={bubbleLabels.Context}\r\n wrapperParams={wrapperParams}\r\n closeParams={closeParams}\r\n onMobile={onMobile}\r\n />\r\n setActiveKey(topic.Overview.Key)}\r\n icon={onMobile ? 'play' : (activeKey === topic.Overview.Key ? '' : (activeKey === topic.Origin.Key || activeKey === topic.Context.Key) ? 'ff': 'rw')}\r\n label={bubbleLabels.Overview}\r\n wrapperParams={wrapperParams}\r\n closeParams={closeParams}\r\n onMobile={onMobile}\r\n />\r\n setActiveKey(topic.Impact.Key)}\r\n icon={onMobile ? 'ff' : (activeKey === topic.Impact.Key ? '' : activeKey === topic.Future.Key ? 'rw': 'ff')}\r\n label={bubbleLabels.Impact}\r\n wrapperParams={wrapperParams}\r\n closeParams={closeParams}\r\n onMobile={onMobile}\r\n />\r\n setActiveKey(topic.Future.Key)}\r\n icon={onMobile ? 'next' : (activeKey === topic.Future.Key ? '' : 'next')}\r\n label={bubbleLabels.Future}\r\n wrapperParams={wrapperParams}\r\n closeParams={closeParams}\r\n onMobile={onMobile}\r\n />\r\n
\r\n
\r\n {/* */}\r\n
\r\n {\r\n linkToNext\r\n &&\r\n
\r\n
\r\n
\r\n
Up Next: {nextTitle}
\r\n {/* */}\r\n
\r\n
\r\n }\r\n { redirectTo && }\r\n
\r\n );\r\n};\r\n\r\nexport default InnovationNested;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport './TopAnimation.scss';\r\n\r\nconst MAX_BUBBLE_SIZE = 420;\r\nconst MAX_BUBBLE_SIZE_MOBILE = 420;\r\n\r\nconst TopAnimation = React.forwardRef(({ isTopicSelected, introData, sectionHeight, sectionWidth, onAnimationEnd, mainBubbleSizeSetter, onMobile }, theRef) => {\r\n const [animated, setAnimated] = useState(false);\r\n const [bubbleSize, setBubbleSize] = useState(0);\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const refContent = useRef(null);\r\n const refTitle = useRef(null);\r\n const refSubtitle = useRef(null);\r\n const refSize = useRef(9999999);\r\n\r\n useEffect(() => {\r\n const size = onMobile ? Math.min(MAX_BUBBLE_SIZE_MOBILE, sectionWidth * 0.4) : Math.min(MAX_BUBBLE_SIZE, sectionWidth / (introData.AnimationImages.length - 1) * 2);\r\n refSize.current = size;\r\n setBubbleSize(size);\r\n mainBubbleSizeSetter(size);\r\n }, [sectionWidth, onMobile]);\r\n\r\n useLayoutEffect(() => {\r\n if (refContent.current && refSubtitle.current) {\r\n const margin = 20;\r\n const contentRect = refContent.current.getBoundingClientRect();\r\n const subtitleRect = refSubtitle.current.getBoundingClientRect();\r\n const availableSpace = (contentRect.top + contentRect.height / 2) - (subtitleRect.top + subtitleRect.height) - margin;\r\n if (availableSpace < refSize.current / 2) {\r\n refSize.current = availableSpace * 2;\r\n setBubbleSize(availableSpace * 2);\r\n mainBubbleSizeSetter(availableSpace * 2);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n setAnimated(true);\r\n setTimeout(() => {\r\n if (onAnimationEnd) onAnimationEnd();\r\n }, 800);\r\n }, 750);\r\n }, []);\r\n\r\n const animationImages = onMobile ? introData.AnimationImagesMobile : introData.AnimationImages;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n animationImages.map((image, i) => (\r\n onMobile && i > 6\r\n ?\r\n null\r\n :\r\n \r\n \r\n
\r\n ))\r\n }\r\n
\r\n
\r\n {introData.SectionTitle}
\r\n {introData.SectionSubtitle}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n\r\nexport default TopAnimation;","import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Link, useRouteMatch } from 'react-router-dom';\r\nimport { getNavbarHeight, getViewportDimensions } from '../../../../models/Utils';\r\nimport { ADALandmarks, ADAARIARoles, ADAWidgitRoles } from '../../../../models/ADA';\r\n\r\nimport './TopicElement.scss';\r\n\r\nconst TopicElement = React.forwardRef(({ topic, bubbleLabels, mainBubbleSize, isTopicSelected, isVisible, redirectHandler, onMobile }, theRef) => {\r\n const mediaPath = useSelector(state => state.config.basePath + state.config.apiMediaPath);\r\n const [isActive, setIsActive] = useState(false);\r\n const refIsVisible = useRef(false);\r\n const refOnMobile = useRef(false);\r\n const refMidLine = useRef(null);\r\n const refViewportDims = useRef(null);\r\n const { path, url } = useRouteMatch();\r\n\r\n useEffect(() => {\r\n refIsVisible.current = isVisible;\r\n refOnMobile.current = onMobile;\r\n if (isVisible) handleScroll();\r\n }, [isVisible, onMobile]);\r\n\r\n const handleScroll = () => {\r\n if (!refIsVisible.current) return;\r\n\r\n \r\n if (!refViewportDims.current || refViewportDims.current.onMobile !== refOnMobile.current) {\r\n refViewportDims.current = {\r\n onMobile: refOnMobile.current,\r\n navbarHeight: getNavbarHeight(),\r\n ...getViewportDimensions()\r\n };\r\n }\r\n if (refOnMobile.current) {\r\n const elementRect = refMidLine.current.parentNode.getBoundingClientRect();\r\n if (elementRect.top < refViewportDims.current.navbarHeight + (refViewportDims.current.height - refViewportDims.current.navbarHeight) * 0.5 && elementRect.top + elementRect.height > refViewportDims.current.navbarHeight + (refViewportDims.current.height - refViewportDims.current.navbarHeight) * 0.5) {\r\n setIsActive(true);\r\n } else {\r\n setIsActive(false);\r\n }\r\n } else {\r\n const centerRect = refMidLine.current.getBoundingClientRect();\r\n if (centerRect.top > refViewportDims.current.navbarHeight + (refViewportDims.current.height - refViewportDims.current.navbarHeight) * 0.25 && centerRect.top < refViewportDims.current.navbarHeight + (refViewportDims.current.height - refViewportDims.current.navbarHeight) * 0.75) {\r\n setIsActive(true);\r\n } else {\r\n setIsActive(false);\r\n }\r\n }\r\n };\r\n\r\n const initiateRedirect = (event, to) => {\r\n event.preventDefault();\r\n\r\n const element = event.target;\r\n\r\n //element.classList.add('ripple');\r\n redirectHandler(to);\r\n\r\n //setTimeout(() => {\r\n \r\n //element.classList.add('post-ripple');\r\n //setTimeout(() => {\r\n // if (element && element.classList) element.classList.remove('ripple', 'post-ripple');\r\n // }, 400);\r\n //}, 400);\r\n };\r\n\r\n useLayoutEffect(() => {\r\n handleScroll();\r\n\r\n document.body.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n document.body.removeEventListener('scroll', handleScroll);\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n setIsActive(true)}\r\n // onMouseLeave={() => setIsActive(false)}\r\n >\r\n \r\n
{topic.Title}
\r\n {/* */}\r\n
\r\n\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n {/* */}\r\n
\r\n\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n {/* */}\r\n
\r\n\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n
{bubbleLabels.Origin}
\r\n {/* */}\r\n : {story.Header}\r\n \r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n }\r\n return rows;\r\n }\r\n\r\n return (\r\n \r\n
\r\n {/* The div below is a hack for getNavbarHeight() to work */}\r\n
\r\n
\r\n
{ada}
\r\n
\r\n
\r\n
\r\n
\r\n

{cmsData.StoryArchive.LatestStoriesLabel}

\r\n
\r\n
\r\n
\r\n
\r\n {generateStories(cmsData.Stories, 2)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{cmsData.StoryArchive.Menu.Text}

\r\n
\r\n
\r\n
\r\n
\r\n {generateStories(cmsData.ArchivedStories, 3)}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default StoryArchive;\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Router, Switch, Route } from 'react-router-dom';\r\nimport Introduction from '../Introduction/Introduction';\r\nimport Home from '../Home/Home';\r\nimport PBPHome from '../PBPHome/PBPHome';\r\nimport Navbar from '../../components/Common/Navbar/Navbar';\r\nimport Frames from '../../components/Common/Frames/Frames';\r\nimport Version from '../../components/Common/Version/Version'; \r\n\r\nimport { Paths } from '../../models/Models';\r\n\r\nimport ScrollToTop from '../../components/Common/ScrollToTop/ScrollToTop';\r\nimport PillarsIntro from '../../components/BuildingBrighterFutures/PillarsIntro/PillarsIntro';\r\n\r\nimport PillarPage from '../../components/BuildingBrighterFutures/PillarPage/PillarPage';\r\nimport LandscapeMessage from '../../components/Common/LandscapeMessage/LandscapeMessage';\r\n\r\nimport VbnIntro from '../../components/VerizonByTheNumbers/VbnIntro/VbnIntro';\r\nimport VbnSectionPage from '../../components/VerizonByTheNumbers/VbnSectionPage/VbnSectionPage';\r\n\r\nimport CcwMain from '../../components/CommunicationsChangeTheWorld/CcwMain/CcwMain';\r\n\r\nimport CredoMain from '../../components/Credo/CredoMain/CredoMain';\r\n\r\nimport InnovationMain from '../../components/Innovation/InnovationMain/InnovationMain';\r\n\r\nimport StoryArchive from '../../components/StoryArchive/StoryArchive';\r\n\r\nimport { initGA } from '../../store/reducers/gaReducer';\r\n\r\n\r\nimport ReactGA from 'react-ga4';\r\n\r\nconst ga_data = {\r\n trackingID: \"G-T57S9JLJRB\"\r\n};\r\n\r\n\r\nconst Main = ({ version }) => {\r\n const cms = useSelector(state => state.data.cms);\r\n const isInitialized = useSelector(state => state.data.initialized);\r\n const fontsLoaded = useSelector(state => state.data.fontsloaded);\r\n const ga = useSelector(state => state.ga);\r\n const dispatch = useDispatch();\r\n\r\n\r\n if(!isInitialized || !fontsLoaded || !cms || !ga){\r\n return null;\r\n }\r\n\r\n \r\n if(!ga.history)\r\n dispatch(initGA(ga_data));\r\n \r\n\r\n return (\r\n <>\r\n {/* */}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Main;\r\n","const SET_CONFIG = 'SET_CONFIG';\r\n\r\nexport const setConfig = data => {\r\n return {\r\n type: SET_CONFIG,\r\n payload: data\r\n };\r\n};\r\n\r\n\r\nconst defaultState = {\r\n debug: true,\r\n basePath: \"http://verizon-digital-museum.s3.amazonaws.com/\",\r\n apiPath: {\r\n digitalMuseum: \"JSON/section/2\",\r\n poweredByPurpose: \"JSON/section/15\",\r\n buildingBrigtherFutures: \"JSON/section/35\",\r\n verizonByTheNumbers:\"JSON/section/176\",\r\n communicationsChangeTheWorld: \"JSON/section/214\",\r\n global: \"JSON/section/99\"\r\n },\r\n apiMediaPath: \"Images/\",\r\n pollServer: {\r\n basePath: \"\",\r\n endPoint: \"\"\r\n }\r\n};\r\n\r\nconst configReducer = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case SET_CONFIG:\r\n if(action.payload.config){\r\n if(action.payload.config.debug !== null){\r\n state.debug = action.payload.config.debug;\r\n }\r\n if(action.payload.config.basePath){\r\n state.basePath = action.payload.config.basePath;\r\n }\r\n if(action.payload.config.apiPath){\r\n state.apiPath = action.payload.config.apiPath;\r\n }\r\n if(action.payload.config.apiMediaPath){\r\n state.apiMediaPath = action.payload.config.apiMediaPath;\r\n }\r\n if(action.payload.config.pollServer){\r\n state.pollServer = action.payload.config.pollServer;\r\n }\r\n }\r\n return { ...state }\r\n default:\r\n return state;\r\n }\r\n };\r\n \r\n\r\nexport default configReducer;\r\n","import { combineReducers } from 'redux';\r\nimport mainReducer from './mainReducer';\r\nimport configReducer from './configReducer';\r\nimport gaReducer from './gaReducer';\r\n\r\nconst rootReducer = combineReducers({\r\n data: mainReducer,\r\n config: configReducer,\r\n ga: gaReducer\r\n});\r\nexport default rootReducer;\r\n","import React from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport { createStore } from 'redux';\r\nimport Main from '../Main/Main';\r\nimport rootReducer from '../../store/reducers/rootReducer';\r\n\r\nimport './App.scss';\r\nimport '../../assets/styles/fonts.css';\r\n\r\nimport { setConfig } from '../../store/reducers/configReducer';\r\nimport {\r\n setDigitalMuseumCMS,\r\n setPoweredByPurposeCMS,\r\n setBuildingBrighterFuturesCMS,\r\n setVerizonByTheNumbersCMS,\r\n setCommunicationsChangeTheWorldCMS,\r\n setCredoCMS,\r\n setInnovationCMS,\r\n setGlobal,\r\n setFontsLoaded\r\n} from '../../store/reducers/mainReducer';\r\n\r\n// import { ccwCmsData } from '../../models/TempCMSData';\r\n\r\nconst numberOfLatestStories = 4;\r\n\r\nconst App = () => {\r\n const version = 'v0.9.91c';\r\n const store = createStore(rootReducer);\r\n\r\n FetchConfig(store);\r\n GetFonts(store);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\n\r\nfunction FetchConfig(store) {\r\n fetch(randomizeUrl(process.env.PUBLIC_URL + '/config/config.json'), {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(configData => {\r\n if (configData) {\r\n store.dispatch(setConfig({ config: configData }));\r\n FetchCMS(\r\n randomizeUrl(configData.basePath + configData.apiPath.digitalMuseum),\r\n randomizeUrl(configData.basePath + configData.apiPath.poweredByPurpose),\r\n randomizeUrl(configData.basePath + configData.apiPath.buildingBrigtherFutures),\r\n randomizeUrl(configData.basePath + configData.apiPath.verizonByTheNumbers),\r\n randomizeUrl(configData.basePath + configData.apiPath.communicationsChangeTheWorld),\r\n randomizeUrl(configData.basePath + configData.apiPath.credo),\r\n randomizeUrl(configData.basePath + configData.apiPath.innovation),\r\n randomizeUrl(configData.basePath + configData.apiPath.global),\r\n store\r\n );\r\n } else {\r\n console.logWarning('Config is null!');\r\n }\r\n });\r\n }\r\n\r\n\r\nfunction randomizeUrl(val){\r\n return val + \"?r=\"+Math.random()*99999;\r\n}\r\n\r\nfunction FetchCMS(digitalURL,\r\n pbpURL, bbfURL,\r\n vbnURL,\r\n ccwURL, credoURL, innovationURL, global, store) {\r\n // Digital Museum Fetch\r\n fetch(digitalURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n if (cmsData[0].Stories && cmsData[0].Stories.length) {\r\n let latestStories = [], archivedStories = [];\r\n cmsData[0].Stories.forEach((story, i) => {\r\n if (i < numberOfLatestStories) {\r\n latestStories.push(story);\r\n } else {\r\n archivedStories.push(story);\r\n }\r\n });\r\n cmsData[0].Stories = latestStories;\r\n cmsData[0].ArchivedStories = archivedStories;\r\n cmsData[0].AllStories = [...latestStories, ...archivedStories];\r\n }\r\n store.dispatch(setDigitalMuseumCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n // Powered By Purpose Fetch\r\n fetch(pbpURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setPoweredByPurposeCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n // Verizon By The Numbers Fetch\r\n fetch(vbnURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setVerizonByTheNumbersCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n // Communicatinos Change the World Fetch\r\n fetch(ccwURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setCommunicationsChangeTheWorldCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n // Communicatinos Change the World Fetch\r\n fetch(credoURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setCredoCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n // Innovation Rewind Fetch\r\n fetch(innovationURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setInnovationCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n\r\n fetch(global, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setGlobal({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n\r\n\r\n fetch(bbfURL, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(cmsData => {\r\n if (cmsData[0]) {\r\n store.dispatch(setBuildingBrighterFuturesCMS({ data: cmsData[0] }));\r\n } else {\r\n console.log('CMS data is null!');\r\n }\r\n });\r\n}\r\n\r\nasync function GetFonts(store){\r\n const boldFont = await import(/* webpackPreload: true */ '../../assets/fonts/verizon/VerizonNHGDS-Bold.woff');\r\n const boldItalicFont = await import(/* webpackPreload: true */ '../../assets/fonts/verizon/VerizonNHGDS-BoldItalic.ttf');\r\n const ItalicsFont = await import(/* webpackPreload: true */ '../../assets/fonts/verizon/VerizonNHGDS-Italic.ttf');\r\n const RegularFont = await import(/* webpackPreload: true */ '../../assets/fonts/verizon/VerizonNHGDS-Regular.ttf');\r\n store.dispatch(setFontsLoaded());\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './pages/App/App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}