{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/v1/components/blokker/EpisodevelgerBlokk/index.css?4cf3","webpack:///./src/v1/components/App.css?9824","webpack:///./src/v1/components/Intro/index.css?c35f","webpack:///./src/v1/components/blokker/VideoHistorie/index.css?e5e4","webpack:///./src/v1/components/blokker/VitenskapBlokk/index.css?0f4c","webpack:///./src/v1/components/blokker/ImageGallery/index.css?4010","webpack:///./src/v1/components/blokker/VisuellHistorie/index.css?3463","webpack:///./src/lib/VoiceText/index.css?4a26","webpack:///./src/v1/components/blokker/VisuellHistorieScroll/index.css?857d","webpack:///./src/v1/components/Intro/Header/index.css?5ba8","webpack:///./src/v1/components/blokker/DobbelBildeBlokk/index.css?d633","webpack:///./src/v1/components/Footer/index.css?3c86","webpack:///./node_modules/@nrk/serum-imagecrop-utils/lib/index.js","webpack:///./src/v1/components/Byline/index.css?0882","webpack:///./src/v1/components/blokker/TekstBlokk/Person/index.css?b164","webpack:///./src/v1/components/Intro/Logo/index.css?b7f7","webpack:///./src/v1/components/blokker/TekstBlokk/Faktaboks/index.css?0139","webpack:///./src/v1/components/blokker/TekstBlokk/BildeLydtekst/index.css?c24f","webpack:///./src/v1/components/blokker/TekstBlokk/Inngang/index.css?e242","webpack:///./src/v1/components/blokker/StedintroBildeBlokk/index.css?bee1","webpack:///./src/lib/wrappers/lottieWrapper.js","webpack:///./src/v1/components/blokker/TekstBlokk/VideoElement/index.css?51e4","webpack:///./src/v1/components/blokker/TekstBlokk/LudoElement/index.css?1b21","webpack:///./src/v1/components/blokker/TekstBlokk/Sitat/index.css?d7aa","webpack:///./src/v1/components/grid.css?efd6","webpack:///./src/v1/components/blokker/LevendeStillbildeBlokk/index.css?9094","webpack:///./src/v1/components/blokker/StedintroVideoBlokk/index.css?70c4","webpack:///./src/lib/wrappers/sweetScrollWrapper.js","webpack:///./node_modules/domready/ready.js","webpack:///./node_modules/@nrk/dh-analytics-utils/dist/dh-analytics-utils.min.js","webpack:///./node_modules/@nrk/dh-simple-error-report/dist/simple-error-report.min.js","webpack:///./src/v1/components/blokker/TekstBlokk/index.css?2169","webpack:///./src/v1/components/blokker/TekstBlokk/Image/index.css?2687","webpack:///./src/v1/components/blokker/TekstBlokk/VideoElement/VideoContent/index.css?417f","webpack:///./src/v1/components/blokker/TekstBlokk/LevendeStillbilde/index.css?2d28","webpack:///./src/v1/components/blokker/TekstBlokk/Lydtekst/index.css?2a0f","webpack:///./src/v1/components/blokker/BildeBlokk/index.css?92c2","webpack:///./src/v1/client.publicpath.js","webpack:///./src/v1/client.polyfill.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./src/lib/wrappers/ludoWrapper.js","webpack:///./src/lib/wrappers/howlerWrapper.js","webpack:///./node_modules/preact/dist/preact.mjs","webpack:///./node_modules/@nrk/dh-utils/dist/module/array.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/bem.js","webpack:///./node_modules/@nrk/feature-tests/dist/feature-tests.module.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/lib/preact-pure-component.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ViewportIntersections/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/lib/HtmlContent/index.js","webpack:///./src/lib/provider.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/Video/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/SmartVideo/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/helpers.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/lazy/SerumLazySmartPicture/index.js","webpack:///./src/v1/components/Intro/Header/index.js","webpack:///./src/lib/DisableScroll/index.js","webpack:///./src/v1/components/Intro/Logo/index.js","webpack:///./src/v1/common.js","webpack:///./src/v1/components/Intro/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumResponsivePicture/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/Person/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/Faktaboks/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/lazy/SerumLazyResponsivePicture/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/Image/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/Scrubber.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/TogglePlayButton.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/ToggleMuteButton.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/lib/warn.js","webpack:///./src/v1/components/blokker/TekstBlokk/VideoElement/VideoContent/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/VideoElement/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/LudoElement/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/Sitat/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/LevendeStillbilde/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/Inngang/index.js","webpack:///./src/lib/VoiceText/TogglePlayButton.js","webpack:///./src/lib/VoiceText/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/Lydtekst/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/BildeLydtekst/index.js","webpack:///./src/v1/components/blokker/TekstBlokk/index.js","webpack:///./src/v1/components/blokker/BildeBlokk/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumImage/index.js","webpack:///./src/v1/components/blokker/DobbelBildeBlokk/index.js","webpack:///./src/v1/components/blokker/VitenskapBlokk/index.js","webpack:///./src/v1/components/blokker/LevendeStillbildeBlokk/index.js","webpack:///./src/v1/components/blokker/StedintroVideoBlokk/index.js","webpack:///./src/v1/components/blokker/EpisodevelgerBlokk/index.js","webpack:///./src/v1/components/blokker/StedintroBildeBlokk/index.js","webpack:///./src/v1/components/blokker/ImageGallery/index.js","webpack:///./src/v1/components/blokker/VisuellHistorie/index.js","webpack:///./src/v1/components/blokker/VideoHistorie/index.js","webpack:///./src/v1/components/blokker/VisuellHistorieScroll/index.js","webpack:///./src/v1/components/Footer/index.js","webpack:///./src/v1/components/Byline/index.js","webpack:///./node_modules/@nrk/max-viewport-observable/dist/max-viewport-observable.module.js","webpack:///./src/v1/components/MaxViewportRect.js","webpack:///./src/v1/components/App.js","webpack:///./src/lib/getContextId.js","webpack:///./src/v1/client.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/string.js","webpack:///./src/lib/errorReporting.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","installedModules","1","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","0","2","3","4","jsonpScriptSrc","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","error","Error","request","undefined","setTimeout","head","appendChild","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","episodevelger","episodevelger__spacerLeft","episodevelger__spacerRight","episodevelger__container","episodevelger__titlecontainer","episodevelger__inner","episodevelger__left","episodevelger__right","episodevelger__episodeWrapper","episodevelger__episode","episodevelger__poster","episodevelger__gradient","episodevelger__notpublised","episodevelger__text","episodevelger__title","episodevelger__subtitle","episodevelger__strek","episodevelger__episode--unpublished","root","light","app","background","background--backgroundVisible","byline","content","app--dark","app--light","nrklogo","fadeOut","fadeIn","nrklogo--dark","intro","intro__content","intro__mediaContainer","intro__smartVideo","root--nojs","intro__portrait","app--optimizeIntro","root--js","intro__mediaContainer--portraitVisible","intro__blocks","intro__block","intro__blockContent","intro__box","intro__text","intro__content--logoComplete","root--no-enhancement","intro__block--active","scale","squash","videoHistorie","videoHistorie__content","videoHistorie__videoItem","videoHistorie--right","videoHistorie__imageItem","videoHistorie__image","videoHistorie__cardItem","videoHistorie__cardItem--first","videoHistorie__cardItem--last","videoHistorie--active","videoHistorie__cardGradient","videoHistorie__card","videoHistorie__cardItem--current","videoHistorie__card--gray","videoHistorie__card--blue","videoHistorie__card--red","videoHistorie--left","vitenskapBlokk","vitenskapBlokk__gardin","vitenskapBlokk__wrapper","vitenskapBlokk__innerWrapper","vitenskapBlokk__wrapper--visible","vitenskapBlokk__grid","vitenskapBlokk__text","imageGallery","imageGallery__spacerLeft","imageGallery__spacerRight","imageGallery__container","imageGallery__left","imageGallery__right","imageGallery__imageWrapper","imageGallery__imageWrapper--visible","imageGallery__image","imageGallery__imageWrapper--vertical","visuellHistorie","visuellHistorie__content","visuellHistorie__imageItem","root--noJs","visuellHistorie--active","visuellHistorie--right","visuellHistorie__imageItem--visible","visuellHistorie__image","visuellHistorie__cardItem","visuellHistorie__cardItem--first","visuellHistorie__cardItem--last","visuellHistorie__cardGradient","visuellHistorie__card","visuellHistorie__cardItem--current","visuellHistorie__card--gray","visuellHistorie__card--blue","visuellHistorie__card--red","visuellHistorie--left","voiceText","voiceText--active","voiceText__name","voiceText__togglePlayButton","visuellHistorieScroll","visuellHistorieScroll__content","visuellHistorieScroll__imageItem","visuellHistorieScroll--active","visuellHistorieScroll--right","visuellHistorieScroll__imageItem--visible","visuellHistorieScroll__image","visuellHistorieScroll__image--55","visuellHistorieScroll__image--91","visuellHistorieScroll__image--120","visuellHistorieScroll__imageItem--currentPos0","visuellHistorieScroll__imageItem--currentPos2","visuellHistorieScroll__imageItem--currentPos55","visuellHistorieScroll__imageItem--currentPos91","visuellHistorieScroll__imageItem--currentPos120","visuellHistorieScroll__cardItem","visuellHistorieScroll__cardItem--first","visuellHistorieScroll__cardItem--last","visuellHistorieScroll__cardGradient","visuellHistorieScroll__card","visuellHistorieScroll__cardItem--current","visuellHistorieScroll__card--gray","visuellHistorieScroll__card--blue","visuellHistorieScroll__card--red","visuellHistorieScroll--left","header","header__content","intro__content--optimize","header__stikktittelContainer","header__stikktittelLead","header__stikktittel","header__byline","dobbelBildeBlokk","gridAspect","dobbelBildeBlokk__grid","dobbelBildeBlokk__image1","dobbelBildeBlokk__caption1","dobbelBildeBlokk__image2","dobbelBildeBlokk__caption2","dobbelBildeBlokk__text","footer","footer__group","footer__published","footer__navigation","footer__nrklogo","footer__shareButtons","isPolopolyIdRegex","isPolopolyId","id","test","widths","ratios","qualities","_baseUrl","hasOption","option","createImageUrl","options","polopolyId","width","ratio","quality","number","args","supportedRatios","Array","isArray","includes","isValidRatio","toString","supportedQualities","isValidQuality","Number","isInteger","errorMessage","isSupportedWidth","closestWidth","goal","targets","isValidGoal","isValid","isValidTargets","reduce","prev","curr","Math","abs","getClosestNumber","_ref","url","queryString","_ref2","replace","createQueryString","createUrl","factory","byline__jobTitle","personIntro","person","person__content","person__image","person__closewrapper","logo2","logo2__image","pulse","faktaboks","fakta","fakta__content","fakta__image","fakta__closewrapper","bildeLydtekst","bildeLydtekst__lydtekst","inngang","inngang__header","inngang__merkelapp","stedintroVideoBlokk","stedintroVideoBlokk__video","stedintroVideoBlokk__anim","getLottie","then","default","__webpack_exports__","videoElement","videoElement__video","ludoElement","ludoElement__video","sitat","sitat--right","sitat__text","sitat--left","levendeStillbildeBlokk","levendeStillbildeBlokk__video","getSweetScroll","listener","fns","doc","hack","loaded","documentElement","doScroll","readyState","addEventListener","removeEventListener","fn","ga","assign","arguments","createGoogleAnalyticsTracker","a","gaPropertyId","self","context","u","f","g","y","w","title","publishedDate","referrer","dimension1","dimension2","dimension3","String","getFullYear","dimension4","getMonth","dimension5","getDate","dimension6","dimension7","dimension10","v","category","action","trackingId","cookieDomain","eventCategory","eventAction","eventLabel","label","eventValue","nonInteraction","fieldsObject","setInterval","clearInterval","sendEvent","configurable","writable","TypeError","this","register","time","Date","message","filter","dryRun","parseStack","errorRegister","filename","lineno","colno","line","column","sendErrorReport","stackTrace","reason","log","JSON","stringify","isInRegisterWithinRange","addErrorToRegister","XMLHttpRequest","open","setRequestHeader","send","SimpleErrorReport","tekstBlokk","image","videoContent","levendeStillbilde","lydtekst","bildeBlokk","bildeBlokk__bilde","__webpack_public_path__","IntersectionObserverEntry","intersectionRatio","registry","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","_observationTargets","some","item","element","nodeType","_registerInstance","entry","_monitorIntersections","_checkForIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","threshold","sort","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","parseFloat","unit","_monitoringIntersections","_monitoringInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","top","bottom","left","right","height","forEach","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","performance","now","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","body","overflow","max","min","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","indexOf","index","splice","targetArea","intersectionArea","toFixed","callback","opt_options","timer","rootMargin","join","node","opt_useCapture","attachEvent","detatchEvent","el","child","parentNode","host","getLudo","getHowler","howler","VNode","stack","EMPTY_CHILDREN","h","nodeName","lastSimple","simple","children","pop","vnode","extend","obj","props","applyRef","ref","current","defer","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","removeNode","removeChild","setAccessor","old","isSvg","style","cssText","innerHTML","__html","useCapture","substring","eventProxy","_listeners","removeAttribute","removeAttributeNS","setAttributeNS","className","mounts","diffLevel","isSvgMode","hydrating","flushMounts","afterMount","componentDidMount","diff","dom","mountAll","componentRoot","ownerSVGElement","ret","idiff","out","prevSvgMode","splitText","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","originalComponent","oldDom","isDirectOwner","_componentConstructor","isOwner","_parentComponent","constructor","setComponentProps","base","unmountComponent","createComponent","nextBase","buildComponentFromVNode","createElementNS","firstChild","fc","vchildren","nextSibling","isHydrating","j","vchild","originalChildren","childNodes","keyed","keyedLen","len","childrenLen","vlen","_child","__key","trim","insertBefore","innerDiffNode","dangerouslySetInnerHTML","attrs","diffAttributes","unmountOnly","removeChildren","lastChild","next","previousSibling","recyclerComponents","Ctor","inst","render","Component","doRender","state","renderMode","_disable","__ref","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","toUnmount","childComponent","childProps","baseParent","componentRef","componentDidUpdate","afterUpdate","_renderCallbacks","beforeUnmount","componentWillUnmount","inner","merge","setState","forceUpdate","toArray","nodeList","_toConsumableArray","arr","arr2","from","bem","blockName","_len","modifiers","_key","strings","modifier","objectString","keys","toStrings","b","concat","testPositionSticky","position","shallowEqual","preact_pure_component","[object Object]","_defineProperty","module_ViewportIntersections","super","intersections","idx","_this$props","onChange","onEnter","onLeave","elm","intersectionObserver","entries","prevIntersection","childElm","createIntersectionObserver","_this$props2","HtmlContent_HtmlContent","nextProps","dataKey","_this$props$preventOr","preventOrphans","removeOrphans","data-key","Provider","__CTX__","_objectWithoutPropertiesLoose","connect","mapContextToProps","wrappedComponent","Connected","provider_defineProperty","ctx","_objectSpread","displayName","_extends","source","apply","_objectWithoutProperties","excluded","sourceKeys","Video_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Video_defineProperty","video_Video","isPlaying","isResolvingPlay","onPlay","onPause","onDurationChange","duration","onTimeupdate","currentTime","textTracks","playing","onCaptionCueEnter","onCaptionCueExit","textTrack","track","addTextTrack","language","tracks","captions","addCue","VTTCue","in","text","_","TextTrackCue","cues","cue","onenter","startTime","endTime","onexit","play","pause","onError","playPromise","catch","sources","restProps","eventHandlers","handlePlay","handlePause","handleDurationChange","handleTimeupdate","dataProps","SmartVideo_extends","SmartVideo_objectWithoutProperties","SmartVideo_objectWithoutPropertiesLoose","SmartVideo_defineProperty","SmartVideo_style","smartVideo","smartVideo__720p","smartVideo--horizontal","smartVideo--1080p","smartVideo__960p","smartVideo__1080p","THRESHOLD_1080P","THRESHOLD_HORIZONTAL","video_SmartVideo","prevIsHorizontal","isHorizontal","prevIs1080p","is1080p","seek","viewport","resolution1080p","resolution720p","resolution960p","isValidViewport","1080p","horizontal","IMAGE_WIDTHS","opts","derivedRatio","lib","createResponsiveSrcSet","SerumLazySmartPicture_objectSpread","ownKeys","sym","getOwnPropertyDescriptor","SerumLazySmartPicture_defineProperty","SerumLazySmartPicture_SerumLazySmartPicture","loaderImage","Image","dataset","getSourceDataset","sizes","visibleImage","srcset","decode","updateImage","complete","load","loadImage","mediaQuery","matchMedia","getMediaQuery","matches","visibleSource","requestAnimationFrame","currentSrc","alt","vertical","fallbackSrc","placeholderVerticalUrl","placeholderHorizontalUrl","horizontalSourceSet","verticalSourceSet","media","srcSet","data-srcset","data-src","Header","fornavn","etternavn","stikktittel","class","styles","role","header__navn","ScrollKeys","DisableScroll","DisableScroll_defineProperty","preventDefault","scrollTop","scrollTo","keyCode","scrollingElement","on","handleWheel","handleScroll","handleKeydown","off","Logo","Logo_defineProperty","fadingOut","opacity","onComplete","animation","destroy","disableScroll","require","fetch","res","json","lottie","animationData","animationStarted","loadAnimation","container","animationElm","renderer","loop","autoplay","setSpeed","handleAnimationComplete","goToAndPlay","allowed","logo2__box","VIDEO_BASE_PATH","toVideoSrc","video","poster","mp4","webm","Intro","Intro_defineProperty","activeIntersection","intersection","Intro_objectSpread","nextState","activeIdx","portraitVisible","logoAllowed","logoComplete","introVideo","profilbilde","_this$state","preload","muted","playsInline","Logo_Logo","setLogoComplete","handleChange","introElement","active","texts","block","textElement","Header_Header","serum_SerumResponsivePicture","defaultUrl","Person","connector","expanded","sendGaEvent","linkText","imageId","_intro$split","introStart","introEnd","href","aria-expanded","onClick","handleToggle","focusable","aria-hidden","xlinkHref","Faktaboks","SerumLazyResponsivePicture_objectSpread","SerumLazyResponsivePicture_defineProperty","lazy_SerumLazyResponsivePicture","_this$props$quality","_this$props$ratio","_this$props$style","placeholderSrc","sourceSet","caption","Scrubber_defineProperty","Scrubber_style","scrubber","scrubber__bgBar","scrubber__bufferedBar","scrubber__playedBar","VideoPlayer_Scrubber","isScrubbing","evt","onPositionUpdate","nextTime","focus","start","pageX","handleMouseMove","handleMouseUp","move","end","bgElm","floor","touches","clientX","handleTouchMove","handleTouchEnd","handleKeyDown","handleMouseDown","handleTouchStart","handleResize","handleElm","positionTimeout","aria-valuemin","aria-valuemax","aria-valuenow","TogglePlayButton_style","togglePlayButton","togglePlayButton__pauseIcon","togglePlayButton--playing","togglePlayButton__playIcon","TogglePlayButton","ToggleMuteButton_style","toggleMuteButton","toggleMuteButton__volumeIcon","toggleMuteButton--muted","toggleMuteButton__mutedIcon","ToggleMuteButton","VideoPlayer_defineProperty","VideoPlayer_style","videoPlayer","videoPlayer__container","videoPlayer__caption","videoPlayer__controls","videoPlayer__togglePlayButton","videoPlayer__toggleMuteButton","video_VideoPlayer","onUserTogglePlay","onUserToggleMute","warn","handleCaptionCueEnter","handleCaptionCueExit","handleUserTogglePlay","handleScrubberPositionUpdate","handleUserToggleMute","VideoContent","VideoContent_defineProperty","paused","handleVideoError","VideoElement","VideoContent_VideoContent","LudoElement","LudoElement_defineProperty","ludoPlayer","ludo","videoElm","analytics","mute","player","_this$props$autoplay","Sitat","float","sitatNavn","LevendeStillbilde","vid","disableRemotePlayback","Inngang","setProperty","tittel","merkelapp","VoiceText","VoiceText_defineProperty","progress","sound","startProgress","onStop","stopProgress","stopPropagation","interval","createSound","Howl","mp3","onplay","onpause","handleStop","onstop","onend","handleTogglePlay","TogglePlayButton_TogglePlayButton","newLine","Lydtekst","Lydtekst_defineProperty","propsValidated","VoiceText_VoiceText","BildeLydtekst","BildeLydtekst_defineProperty","LOADABLE_CONTENT","VISIBLE_CONTENT","FULLY_VISIBLE_CONTENT","TekstBlokk","TekstBlokk_defineProperty","ensureLoaded","tekst","visibleContent","blockId","trackOnlyOnce","fullyVisibleContent","contentList","change","isVisible","loadContent","getContenttype","trackedKeys","handleContentEnter","handleContentLeave","handleContentChange","Image_Image","_element$value","VideoElement_VideoElement","LudoElement_LudoElement","TekstBlokk_Person_Person","TekstBlokk_Faktaboks_Faktaboks","Sitat_Sitat","LevendeStillbilde_LevendeStillbilde","TekstBlokk_BildeLydtekst_BildeLydtekst","TekstBlokk_Lydtekst_Lydtekst","Inngang_Inngang","BildeBlokk","serum_SerumImage","DobbelBildeBlokk","images","VitenskapBlokk","VitenskapBlokk_defineProperty","visible","handleEnter","handleLeave","contentElement","LevendeStillbildeBlokk","StedintroVideoBlokk","StedintroVideoBlokk_defineProperty","layers","k","sted","toUpperCase","info","rendererSettings","preserveAspectRatio","aria-label","Link","EpisidevelgerBlokk","EpisodevelgerBlokk_defineProperty","containerWidth","offsetWidth","containerLeftHalf","containerRightHalf","firstImage","lastImage","activeImage","findActiveImage","leftImage","rightImage","setDisplayLeft","setDisplayRight","displayLeft","displayRight","sweetScroll","SweetScroll","hideScrollbar","updateSizes","getStartIndex","barHeight","offsetHeight","marginBottom","maxHeight","secondImage","smooth","offsetLeft","scroll","to","behavior","scrollLeft","matching","leftOfCenter","rightOfCenter","episoder","handleImageChange","intersectionsElm","episode","unpublished","published","episodevelger__image","subtitle","handleScrollLeft","disabled","handleScrollRight","StedintroBildeBlokk","StedintroBildeBlokk_defineProperty","VERTICAL_ASPECTS","ImageGallery","ImageGallery_defineProperty","changed","VisuellHistorie","VisuellHistorie_defineProperty","storyMargin","VisuellHistorie_objectSpread","cards","_this$props$align","align","_this$state$storyMarg","negativeStoryMargin","startsWith","card","first","last","videoHistorie__video","linecolor","VideoHistorie","VideoHistorie_defineProperty","querySelector","VideoHistorie_objectSpread","started","enableVideoSeek","targetTime","unmounting","calculateTargetTime","getSpeed","normalSpeed","easingDuration","shouldFastForward","prevTime","timestamp","dt","speed","num","decimals","multiplier","pow","round","playbackRate","VisuellHistorieScroll","VisuellHistorieScroll_defineProperty","VisuellHistorieScroll_objectSpread","activeCard","marginLeft","offset","Footer","credits","facebookUrl","twitterUrl","group","gruppenavn","personer","epost","navn","data-share","rel","Byline","bylinebilde","byline__content","byline__image","max_viewport_observable_module","subscribe","observer","isDynamicViewport","isTouching","listeners","orientationchange","resize","prevRect","Element","innerWidth","innerHeight","getRect","touchstart","touchend","unsubscribe","MaxViewportRect","MaxViewportRect_defineProperty","viewport$","MaxViewportObservable","dispose","onViewportChange","ACTIVATABLE_CONTENT","App","App_defineProperty","activeContent","introVisible","backgroundVisible","theme","optimizeIntro","MaxViewportRect_MaxViewportRect","handleViewportChange","dark","handleIntroEnter","handleIntroLeave","Intro_Intro","handleBackgroundEnter","handleBackgroundLeave","Byline_Byline","blokker_TekstBlokk_TekstBlokk","VitenskapBlokk_VitenskapBlokk","BildeBlokk_BildeBlokk","DobbelBildeBlokk_DobbelBildeBlokk","LevendeStillbildeBlokk_LevendeStillbildeBlokk","ImageGallery_ImageGallery","StedintroVideoBlokk_StedintroVideoBlokk","StedintroBildeBlokk_StedintroBildeBlokk","blokker_VisuellHistorie_VisuellHistorie","blokker_VisuellHistorieScroll_VisuellHistorieScroll","blokker_VideoHistorie_VideoHistorie","EpisodevelgerBlokk_EpisidevelgerBlokk","Footer_Footer","POLOPOLY_ID_REGEX","getContextId","str","match","extractPolopolyIdFromString","rootElementClassName","domready","getElementsByClassName","isInitialized","prefix","random","substr","createUniqueId","getAttribute","errorTrackingEnabled","simpleErrorReport","isErrorReportingEnabled","createErrorReporter","listenAndCatch","callbackFn","testSupport","supported","preloadedState","parse","metadata","selfId","googleAnalyticsTracker","location","sendError","eventObj","client_objectSpread","provider_Provider","components_App_App","querySelectorAll","parentElement"],"mappings":"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","file":"v1-bundle-6abde8b20a30ae28b463.esm.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"sweet-scroll\",\"2\":\"vendors--howler\",\"3\":\"vendors--lottie\",\"4\":\"vendors--ludo\"}[chunkId]||chunkId) + \"-\" + {\"0\":\"29d69085e2a313d90ce7\",\"2\":\"7cba8368ff025516bce1\",\"3\":\"845a45dd00085a8be510\",\"4\":\"89b6764d16459d8b07d2\"}[chunkId] + \".esm.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 39);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"episodevelger\":\"dh-vbm-episodevelger\",\"episodevelger__spacerLeft\":\"dh-vbm-episodevelger__spacerLeft\",\"episodevelger__spacerRight\":\"dh-vbm-episodevelger__spacerRight\",\"episodevelger__container\":\"dh-vbm-episodevelger__container\",\"episodevelger__titlecontainer\":\"dh-vbm-episodevelger__titlecontainer\",\"episodevelger__inner\":\"dh-vbm-episodevelger__inner\",\"episodevelger__left\":\"dh-vbm-episodevelger__left\",\"episodevelger__right\":\"dh-vbm-episodevelger__right\",\"episodevelger__episodeWrapper\":\"dh-vbm-episodevelger__episodeWrapper\",\"episodevelger__episode\":\"dh-vbm-episodevelger__episode\",\"episodevelger__poster\":\"dh-vbm-episodevelger__poster\",\"episodevelger__gradient\":\"dh-vbm-episodevelger__gradient\",\"episodevelger__notpublised\":\"dh-vbm-episodevelger__notpublised\",\"episodevelger__text\":\"dh-vbm-episodevelger__text\",\"episodevelger__title\":\"dh-vbm-episodevelger__title\",\"episodevelger__subtitle\":\"dh-vbm-episodevelger__subtitle\",\"episodevelger__strek\":\"dh-vbm-episodevelger__strek\",\"episodevelger__episode--unpublished\":\"dh-vbm-episodevelger__episode--unpublished\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"dh-vbm-root\",\"light\":\"dh-vbm-light\",\"app\":\"dh-vbm-app\",\"background\":\"dh-vbm-background\",\"background--backgroundVisible\":\"dh-vbm-background--backgroundVisible\",\"byline\":\"dh-vbm-byline\",\"content\":\"dh-vbm-content\",\"app--dark\":\"dh-vbm-app--dark\",\"app--light\":\"dh-vbm-app--light\",\"nrklogo\":\"dh-vbm-nrklogo\",\"fadeOut\":\"dh-vbm-fadeOut\",\"fadeIn\":\"dh-vbm-fadeIn\",\"nrklogo--dark\":\"dh-vbm-nrklogo--dark\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"intro\":\"dh-vbm-intro\",\"intro__content\":\"dh-vbm-intro__content\",\"intro__mediaContainer\":\"dh-vbm-intro__mediaContainer\",\"intro__smartVideo\":\"dh-vbm-intro__smartVideo\",\"root--nojs\":\"dh-vbm-root--nojs\",\"intro__portrait\":\"dh-vbm-intro__portrait\",\"app--optimizeIntro\":\"dh-vbm-app--optimizeIntro\",\"root--js\":\"dh-vbm-root--js\",\"intro__mediaContainer--portraitVisible\":\"dh-vbm-intro__mediaContainer--portraitVisible\",\"intro__blocks\":\"dh-vbm-intro__blocks\",\"intro__block\":\"dh-vbm-intro__block\",\"intro__blockContent\":\"dh-vbm-intro__blockContent\",\"intro__box\":\"dh-vbm-intro__box\",\"intro__text\":\"dh-vbm-intro__text\",\"intro__content--logoComplete\":\"dh-vbm-intro__content--logoComplete\",\"root--no-enhancement\":\"dh-vbm-root--no-enhancement\",\"intro__block--active\":\"dh-vbm-intro__block--active\",\"scale\":\"dh-vbm-scale\",\"squash\":\"dh-vbm-squash\",\"fadeIn\":\"dh-vbm-fadeIn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoHistorie\":\"dh-vbm-videoHistorie\",\"videoHistorie__content\":\"dh-vbm-videoHistorie__content\",\"root--js\":\"dh-vbm-root--js\",\"videoHistorie__videoItem\":\"dh-vbm-videoHistorie__videoItem\",\"videoHistorie--right\":\"dh-vbm-videoHistorie--right\",\"videoHistorie__imageItem\":\"dh-vbm-videoHistorie__imageItem\",\"videoHistorie__image\":\"dh-vbm-videoHistorie__image\",\"videoHistorie__cardItem\":\"dh-vbm-videoHistorie__cardItem\",\"videoHistorie__cardItem--first\":\"dh-vbm-videoHistorie__cardItem--first\",\"videoHistorie__cardItem--last\":\"dh-vbm-videoHistorie__cardItem--last\",\"videoHistorie--active\":\"dh-vbm-videoHistorie--active\",\"videoHistorie__cardGradient\":\"dh-vbm-videoHistorie__cardGradient\",\"videoHistorie__card\":\"dh-vbm-videoHistorie__card\",\"videoHistorie__cardItem--current\":\"dh-vbm-videoHistorie__cardItem--current\",\"videoHistorie__card--gray\":\"dh-vbm-videoHistorie__card--gray\",\"videoHistorie__card--blue\":\"dh-vbm-videoHistorie__card--blue\",\"videoHistorie__card--red\":\"dh-vbm-videoHistorie__card--red\",\"videoHistorie--left\":\"dh-vbm-videoHistorie--left\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"vitenskapBlokk\":\"dh-vbm-vitenskapBlokk\",\"vitenskapBlokk__gardin\":\"dh-vbm-vitenskapBlokk__gardin\",\"vitenskapBlokk__wrapper\":\"dh-vbm-vitenskapBlokk__wrapper\",\"vitenskapBlokk__innerWrapper\":\"dh-vbm-vitenskapBlokk__innerWrapper\",\"vitenskapBlokk__wrapper--visible\":\"dh-vbm-vitenskapBlokk__wrapper--visible\",\"vitenskapBlokk__grid\":\"dh-vbm-vitenskapBlokk__grid\",\"vitenskapBlokk__text\":\"dh-vbm-vitenskapBlokk__text\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageGallery\":\"dh-vbm-imageGallery\",\"imageGallery__spacerLeft\":\"dh-vbm-imageGallery__spacerLeft\",\"imageGallery__spacerRight\":\"dh-vbm-imageGallery__spacerRight\",\"imageGallery__container\":\"dh-vbm-imageGallery__container\",\"imageGallery__left\":\"dh-vbm-imageGallery__left\",\"imageGallery__right\":\"dh-vbm-imageGallery__right\",\"imageGallery__imageWrapper\":\"dh-vbm-imageGallery__imageWrapper\",\"root--js\":\"dh-vbm-root--js\",\"imageGallery__imageWrapper--visible\":\"dh-vbm-imageGallery__imageWrapper--visible\",\"imageGallery__image\":\"dh-vbm-imageGallery__image\",\"imageGallery__imageWrapper--vertical\":\"dh-vbm-imageGallery__imageWrapper--vertical\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"visuellHistorie\":\"dh-vbm-visuellHistorie\",\"visuellHistorie__content\":\"dh-vbm-visuellHistorie__content\",\"root--js\":\"dh-vbm-root--js\",\"visuellHistorie__imageItem\":\"dh-vbm-visuellHistorie__imageItem\",\"root--noJs\":\"dh-vbm-root--noJs\",\"visuellHistorie--active\":\"dh-vbm-visuellHistorie--active\",\"visuellHistorie--right\":\"dh-vbm-visuellHistorie--right\",\"visuellHistorie__imageItem--visible\":\"dh-vbm-visuellHistorie__imageItem--visible\",\"visuellHistorie__image\":\"dh-vbm-visuellHistorie__image\",\"visuellHistorie__cardItem\":\"dh-vbm-visuellHistorie__cardItem\",\"visuellHistorie__cardItem--first\":\"dh-vbm-visuellHistorie__cardItem--first\",\"visuellHistorie__cardItem--last\":\"dh-vbm-visuellHistorie__cardItem--last\",\"visuellHistorie__cardGradient\":\"dh-vbm-visuellHistorie__cardGradient\",\"visuellHistorie__card\":\"dh-vbm-visuellHistorie__card\",\"visuellHistorie__cardItem--current\":\"dh-vbm-visuellHistorie__cardItem--current\",\"visuellHistorie__card--gray\":\"dh-vbm-visuellHistorie__card--gray\",\"visuellHistorie__card--blue\":\"dh-vbm-visuellHistorie__card--blue\",\"visuellHistorie__card--red\":\"dh-vbm-visuellHistorie__card--red\",\"visuellHistorie--left\":\"dh-vbm-visuellHistorie--left\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"voiceText\":\"dh-vbm-voiceText\",\"voiceText--active\":\"dh-vbm-voiceText--active\",\"voiceText__name\":\"dh-vbm-voiceText__name\",\"voiceText__togglePlayButton\":\"dh-vbm-voiceText__togglePlayButton\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"visuellHistorieScroll\":\"dh-vbm-visuellHistorieScroll\",\"visuellHistorieScroll__content\":\"dh-vbm-visuellHistorieScroll__content\",\"root--js\":\"dh-vbm-root--js\",\"visuellHistorieScroll__imageItem\":\"dh-vbm-visuellHistorieScroll__imageItem\",\"root--noJs\":\"dh-vbm-root--noJs\",\"visuellHistorieScroll--active\":\"dh-vbm-visuellHistorieScroll--active\",\"visuellHistorieScroll--right\":\"dh-vbm-visuellHistorieScroll--right\",\"visuellHistorieScroll__imageItem--visible\":\"dh-vbm-visuellHistorieScroll__imageItem--visible\",\"visuellHistorieScroll__image\":\"dh-vbm-visuellHistorieScroll__image\",\"visuellHistorieScroll__image--55\":\"dh-vbm-visuellHistorieScroll__image--55\",\"visuellHistorieScroll__image--91\":\"dh-vbm-visuellHistorieScroll__image--91\",\"visuellHistorieScroll__image--120\":\"dh-vbm-visuellHistorieScroll__image--120\",\"visuellHistorieScroll__imageItem--currentPos0\":\"dh-vbm-visuellHistorieScroll__imageItem--currentPos0\",\"visuellHistorieScroll__imageItem--currentPos2\":\"dh-vbm-visuellHistorieScroll__imageItem--currentPos2\",\"visuellHistorieScroll__imageItem--currentPos55\":\"dh-vbm-visuellHistorieScroll__imageItem--currentPos55\",\"visuellHistorieScroll__imageItem--currentPos91\":\"dh-vbm-visuellHistorieScroll__imageItem--currentPos91\",\"visuellHistorieScroll__imageItem--currentPos120\":\"dh-vbm-visuellHistorieScroll__imageItem--currentPos120\",\"visuellHistorieScroll__cardItem\":\"dh-vbm-visuellHistorieScroll__cardItem\",\"visuellHistorieScroll__cardItem--first\":\"dh-vbm-visuellHistorieScroll__cardItem--first\",\"visuellHistorieScroll__cardItem--last\":\"dh-vbm-visuellHistorieScroll__cardItem--last\",\"visuellHistorieScroll__cardGradient\":\"dh-vbm-visuellHistorieScroll__cardGradient\",\"visuellHistorieScroll__card\":\"dh-vbm-visuellHistorieScroll__card\",\"visuellHistorieScroll__cardItem--current\":\"dh-vbm-visuellHistorieScroll__cardItem--current\",\"visuellHistorieScroll__card--gray\":\"dh-vbm-visuellHistorieScroll__card--gray\",\"visuellHistorieScroll__card--blue\":\"dh-vbm-visuellHistorieScroll__card--blue\",\"visuellHistorieScroll__card--red\":\"dh-vbm-visuellHistorieScroll__card--red\",\"visuellHistorieScroll--left\":\"dh-vbm-visuellHistorieScroll--left\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"dh-vbm-header\",\"header__content\":\"dh-vbm-header__content\",\"intro__content--optimize\":\"dh-vbm-intro__content--optimize\",\"header__stikktittelContainer\":\"dh-vbm-header__stikktittelContainer\",\"header__stikktittelLead\":\"dh-vbm-header__stikktittelLead\",\"header__stikktittel\":\"dh-vbm-header__stikktittel\",\"header__byline\":\"dh-vbm-header__byline\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dobbelBildeBlokk\":\"dh-vbm-dobbelBildeBlokk\",\"gridAspect\":\"dh-vbm-gridAspect\",\"dobbelBildeBlokk__grid\":\"dh-vbm-dobbelBildeBlokk__grid\",\"dobbelBildeBlokk__image1\":\"dh-vbm-dobbelBildeBlokk__image1\",\"dobbelBildeBlokk__caption1\":\"dh-vbm-dobbelBildeBlokk__caption1\",\"dobbelBildeBlokk__image2\":\"dh-vbm-dobbelBildeBlokk__image2\",\"dobbelBildeBlokk__caption2\":\"dh-vbm-dobbelBildeBlokk__caption2\",\"dobbelBildeBlokk__text\":\"dh-vbm-dobbelBildeBlokk__text\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"dh-vbm-footer\",\"footer__group\":\"dh-vbm-footer__group\",\"footer__published\":\"dh-vbm-footer__published\",\"footer__navigation\":\"dh-vbm-footer__navigation\",\"footer__nrklogo\":\"dh-vbm-footer__nrklogo\",\"footer__shareButtons\":\"dh-vbm-footer__shareButtons\"};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.nrkSerumImagecropUtils = {})));\n}(this, (function (exports) { 'use strict';\n\n var isPolopolyIdRegex = /^[1-9]{1,2}\\.\\d+$/;\n\n function isPolopolyId(id) {\n if (!id) {\n return false;\n }\n return isPolopolyIdRegex.test(id);\n }\n\n // prettier-ignore\n var widths = [100, 120, 150, 174, 200, 206, 225, 244, 250, 252, 300, 320, 350, 400, 450, 452, 460, 462, 500, 600, 650, 665, 682, 700, 734, 768, 900, 974, 1200, 1280, 1360, 1450, 1550, 1600, 1700, 1800, 1920, 2000, 2100, 2200, 2300, 2400];\n\n // prettier-ignore\n var ratios = ['1:1', '11', '16:9', '169', '16:3', '163', '3:4', '34'];\n\n // prettier-ignore\n var qualities = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];\n\n var _baseUrl = 'https://nrk.no/serum/api/imagecrop/';\n\n function createUrl(_ref) {\n var id = _ref.id,\n ratio = _ref.ratio,\n width = _ref.width,\n quality = _ref.quality;\n\n var url = '' + _baseUrl + id;\n var queryString = createQueryString({ ratio: ratio, width: width, quality: quality });\n if (queryString) {\n url += '?' + queryString;\n }\n return url;\n }\n\n function createQueryString(_ref2) {\n var ratio = _ref2.ratio,\n width = _ref2.width,\n quality = _ref2.quality;\n\n if (!ratio && !width) {\n return quality ? 'quality=' + quality : '';\n }\n var ratioPart = ratio ? 'f' + ratio.replace(':', '') : '';\n var widthPart = width ? 'w' + width : '';\n var qualityPart = quality ? '&quality=' + quality : '';\n return 'cropid=' + ratioPart + widthPart + qualityPart;\n }\n\n function getClosestNumber(goal, targets) {\n if (!isValidGoal(goal)) {\n throw new Error('\\n getClosestNumber(goal, targets): passing a goal of ' + goal + '\\n is not supported. Pass a number');\n }\n if (!isValidTargets(targets)) {\n throw new Error('\\n getClosestNumber(goal, targets): targets ' + targets.toString() + ' is invald.\\n Pass an array of numbers');\n }\n if (!targets.length) {\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n return targets.reduce(function (prev, curr) {\n return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n });\n }\n\n function isValidGoal(goal) {\n return typeof goal === 'number';\n }\n\n function isValidTargets(targets) {\n if (!targets) {\n return false;\n }\n var isValid = true;\n for (var i = 0; i < targets.length; i++) {\n if (typeof targets[i] !== 'number') {\n isValid = false;\n break;\n }\n }\n // return targets.some((target) => {\n // return (typeof target !== 'number')\n // })\n return isValid;\n }\n\n function isValidRatio(ratio, supportedRatios) {\n if (!Array.isArray(supportedRatios)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidRatio(ratio, supportedRatios): supportedRatios '\" + supportedRatios + \"' is not supported. Pass an array of supported ratios\");\n }\n if (!ratio) {\n return false;\n }\n return supportedRatios.includes(ratio);\n }\n\n function isValidQuality(quality, supportedQualities) {\n if (!Array.isArray(supportedQualities)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidQuality(quality, supportedQualities): supportedQualities '\" + supportedQualities + \"' is not supported. Pass an array of supported qualities\");\n }\n if (!quality) {\n return false;\n }\n return supportedQualities.includes(quality);\n }\n\n function createImageUrl(options) {\n var polopolyId = options.id,\n width = options.width,\n ratio = options.ratio,\n quality = options.quality;\n\n\n if (!isPolopolyId(polopolyId)) {\n throw new Error('createSerumImageUrl(): invalid polopolyId. Got ' + polopolyId);\n }\n\n var args = {\n id: polopolyId,\n ratio: null,\n quality: 0.8,\n width: 0\n\n // If a ratio is provided, ensure that it is valid\n };if (hasOption(ratio)) {\n if (!isValidRatio(ratio, ratios)) {\n throw new Error('\\n createSerumImageUrl(): ratio ' + ratio + ' is not supported.\\n Supported ratios are ' + ratios.toString());\n }\n args.ratio = ratio;\n }\n\n // If a quality is provided, ensure that it is valid\n if (hasOption(quality)) {\n if (!isValidQuality(quality, qualities)) {\n throw new Error('\\n createSerumImageUrl(): quality ' + quality + ' is not supported.\\n Supported qualities are ' + qualities.toString());\n }\n args.quality = quality;\n }\n\n // If a width is provided, ensure that is is a positive integer\n if (hasOption(width)) {\n if (!isNumber(width) || width <= 0) {\n var errorMessage = 'createSerumImageUrl(): width must be a positive integer, got ' + width;\n throw new Error(errorMessage);\n }\n var isSupportedWidth = widths.includes(width);\n var closestWidth = getClosestNumber(width, widths);\n if (typeof closestWidth !== 'undefined' && closestWidth) {\n args.width = isSupportedWidth ? width : closestWidth;\n }\n }\n\n return createUrl(args);\n }\n\n function hasOption(option) {\n return typeof option !== 'undefined' && option;\n }\n\n function isNumber(number) {\n return Number.isInteger(number);\n }\n\n exports.createImageUrl = createImageUrl;\n exports.ratios = ratios;\n exports.widths = widths;\n exports.qualities = qualities;\n exports.isPolopolyId = isPolopolyId;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"byline\":\"dh-vbm-byline\",\"byline__jobTitle\":\"dh-vbm-byline__jobTitle\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"personIntro\":\"dh-vbm-personIntro\",\"person\":\"dh-vbm-person\",\"person__content\":\"dh-vbm-person__content\",\"person__image\":\"dh-vbm-person__image\",\"person__closewrapper\":\"dh-vbm-person__closewrapper\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logo2\":\"dh-vbm-logo2\",\"intro__content--optimize\":\"dh-vbm-intro__content--optimize\",\"logo2__image\":\"dh-vbm-logo2__image\",\"pulse\":\"dh-vbm-pulse\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"faktaboks\":\"dh-vbm-faktaboks\",\"fakta\":\"dh-vbm-fakta\",\"fakta__content\":\"dh-vbm-fakta__content\",\"fakta__image\":\"dh-vbm-fakta__image\",\"fakta__closewrapper\":\"dh-vbm-fakta__closewrapper\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bildeLydtekst\":\"dh-vbm-bildeLydtekst\",\"bildeLydtekst__lydtekst\":\"dh-vbm-bildeLydtekst__lydtekst\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inngang\":\"dh-vbm-inngang\",\"inngang__header\":\"dh-vbm-inngang__header\",\"inngang__merkelapp\":\"dh-vbm-inngang__merkelapp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stedintroVideoBlokk\":\"dh-vbm-stedintroVideoBlokk\",\"stedintroVideoBlokk__video\":\"dh-vbm-stedintroVideoBlokk__video\",\"stedintroVideoBlokk__anim\":\"dh-vbm-stedintroVideoBlokk__anim\"};","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nexport function getLottie () {\n return import(/* webpackChunkName: \"lottie\", webpackPreload: true */ 'lottie-web').then(({ default: lottie }) => lottie)\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoElement\":\"dh-vbm-videoElement\",\"videoElement__video\":\"dh-vbm-videoElement__video\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ludoElement\":\"dh-vbm-ludoElement\",\"ludoElement__video\":\"dh-vbm-ludoElement__video\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sitat\":\"dh-vbm-sitat\",\"sitat--right\":\"dh-vbm-sitat--right\",\"sitat__text\":\"dh-vbm-sitat__text\",\"sitat--left\":\"dh-vbm-sitat--left\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"gridAspect\":\"dh-vbm-gridAspect\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"levendeStillbildeBlokk\":\"dh-vbm-levendeStillbildeBlokk\",\"levendeStillbildeBlokk__video\":\"dh-vbm-levendeStillbildeBlokk__video\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"stedintroVideoBlokk\":\"dh-vbm-stedintroVideoBlokk\",\"stedintroVideoBlokk__anim\":\"dh-vbm-stedintroVideoBlokk__anim\"};","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nexport function getSweetScroll () {\n return import(/* webpackChunkName: \"sweet-scroll\" */ 'sweet-scroll').then(({ default: SweetScroll }) => SweetScroll)\n}\n","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n */\n!function (name, definition) {\n\n if (typeof module != 'undefined') module.exports = definition()\n else if (typeof define == 'function' && typeof define.amd == 'object') define(definition)\n else this[name] = definition()\n\n}('domready', function () {\n\n var fns = [], listener\n , doc = document\n , hack = doc.documentElement.doScroll\n , domContentLoaded = 'DOMContentLoaded'\n , loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState)\n\n\n if (!loaded)\n doc.addEventListener(domContentLoaded, listener = function () {\n doc.removeEventListener(domContentLoaded, listener)\n loaded = 1\n while (listener = fns.shift()) listener()\n })\n\n return function (fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn)\n }\n\n});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n(e[\"dh-analytics-utils\"]={})}(this,function(e){\"use strict\";function n(){return window.ga}var t=Object.assign||function(e){for(var n=1;n0}}]),e}(),t=Object.assign||function(e){for(var n=1;n0&&(a.line=o),s>0&&(a.column=s),n.error&&\"function\"==typeof e.parseStack?e.parseStack(n.error).then(function(n){e.sendErrorReport(t({},a,{stackTrace:n}))}):e.sendErrorReport(a)}),window.addEventListener(\"unhandledrejection\",function(n){e.sendErrorReport({message:\"Unhandled Promise Rejection: \"+n.reason})}))}},{key:\"sendErrorReport\",value:function(e){var n,r,t;this.dryRun?\"undefined\"!=typeof console&&console.log(\"Dry run: \"+JSON.stringify(e)):this.errorRegister.isInRegisterWithinRange(e.message,500)||(this.errorRegister.addErrorToRegister(e.message),n=this.url+\"/\"+this.name,r=e,(t=new XMLHttpRequest).open(\"POST\",n),t.setRequestHeader(\"Content-Type\",\"application/json\"),t.send(JSON.stringify(r)))}}]),e}();e.SimpleErrorReport=s,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tekstBlokk\":\"dh-vbm-tekstBlokk\",\"app--light\":\"dh-vbm-app--light\",\"app--dark\":\"dh-vbm-app--dark\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"dh-vbm-image\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoContent\":\"dh-vbm-videoContent\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"levendeStillbilde\":\"dh-vbm-levendeStillbilde\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"lydtekst\":\"dh-vbm-lydtekst\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bildeBlokk\":\"dh-vbm-bildeBlokk\",\"bildeBlokk__bilde\":\"dh-vbm-bildeBlokk__bilde\"};","/* eslint-disable camelcase */\n\ndeclare var __webpack_public_path__\nwindow.__webpack_public_path__ = window['vbm-wpp']\n__webpack_public_path__ = window['vbm-wpp']\n","/* eslint-disable */\nimport 'intersection-observer'\n\nif (__IS_LEGACY__) {\n require('core-js/shim')\n require('whatwg-fetch')\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n(function(window, document) {\n'use strict';\n\n\n// Exits early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nexport function getLudo () {\n return import(/* webpackChunkName: \"ludo\", webpackPreload: true */ '@nrk/ludo').then(({ default: ludo }) => ludo)\n}\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nexport function getHowler () {\n return import(/* webpackChunkName: \"howler\", webpackPreload: true */ 'howler').then(howler => howler)\n}\n","var VNode = function VNode() {};\n\nvar options = {};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }return obj;\n}\n\nfunction applyRef(ref, value) {\n if (ref != null) {\n if (typeof ref == 'function') ref(value);else ref.current = value;\n }\n}\n\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p;\n\twhile (p = items.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\nfunction isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\treturn node.splitText !== undefined;\n\t}\n\tif (typeof vnode.nodeName === 'string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor === vnode.nodeName;\n}\n\nfunction isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\nfunction getNodeProps(vnode) {\n\tvar props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tvar defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps !== undefined) {\n\t\tfor (var i in defaultProps) {\n\t\t\tif (props[i] === undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {} else if (name === 'ref') {\n\t\tapplyRef(old, null);\n\t\tapplyRef(value, node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\ttry {\n\t\t\tnode[name] = value == null ? '' : value;\n\t\t} catch (e) {}\n\t\tif ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\nvar mounts = [];\n\nvar diffLevel = 0;\n\nvar isSvgMode = false;\n\nvar hydrating = false;\n\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.shift()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\tif (!diffLevel++) {\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t}\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t} else if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\tdiffAttributes(out, vnode.attributes, props);\n\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t} else if (min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\tunmountComponent(component);\n\t} else {\n\t\tif (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\nvar recyclerComponents = [];\n\nfunction createComponent(Ctor, props, context) {\n\tvar inst,\n\t i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor === Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\nfunction setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t} else if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode !== 0) {\n\t\tif (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tapplyRef(component.__ref, component);\n}\n\nfunction renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t snapshot = previousContext,\n\t rendered,\n\t inst,\n\t cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.push(component);\n\t} else if (!skip) {\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) {\n\t\tcomponent._renderCallbacks.pop().call(component);\n\t}if (!diffLevel && !isChild) flushMounts();\n}\n\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tapplyRef(component.__ref, null);\n}\n\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\tthis.context = context;\n\n\tthis.props = props;\n\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\nextend(Component.prototype, {\n\tsetState: function setState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\trender: function render() {}\n});\n\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\n\nfunction createRef() {\n\treturn {};\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tcreateRef: createRef,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexport default preact;\nexport { h, h as createElement, cloneElement, createRef, Component, render, rerender, options };\n//# sourceMappingURL=preact.mjs.map\n","export function toArray(nodeList) {\n return [].slice.call(nodeList);\n}","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction toStrings(object) {\n return Object.keys(object).filter(function (key) {\n return object[key];\n });\n}\n\nexport default (function (blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n var strings = modifiers.filter(function (modifier) {\n return typeof modifier === 'string';\n });\n var objects = modifiers.filter(function (modifier) {\n return typeof modifier === 'object';\n });\n\n var objectString = objects.map(function (object) {\n return toStrings(object);\n }).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n\n return [blockName].concat(strings.map(function (modifier) {\n return blockName + '--' + modifier;\n })).concat(objectString.map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\n});","var hasSupportCache = void 0;\n\nfunction testEventPassiveListener(callback) {\n if (hasSupportCache !== undefined) {\n callback(hasSupportCache);\n return;\n }\n\n hasSupportCache = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n hasSupportCache = true;\n }\n });\n\n window.addEventListener('test', null, opts);\n } catch (e) {}\n\n callback(hasSupportCache);\n}\n\nfunction testJs(callback) {\n callback(true);\n}\n\nfunction testJs$1(callback) {\n var el = document.createElement('img');\n\n callback(el.style.objectFit !== undefined);\n}\n\nfunction testPositionSticky(callback) {\n var el = document.createElement('a');\n\n el.style.cssText = 'position: sticky; position: -webkit-sticky; position: -ms-sticky;';\n\n callback(el.style.position.indexOf('sticky') !== -1);\n}\n\nvar videoAutoPlayCache = null;\n\nfunction testVideoAutoPlay(callback) {\n if (typeof window === 'undefined') {\n return callback(false);\n }\n\n if (videoAutoPlayCache !== null) {\n return callback(videoAutoPlayCache);\n }\n\n var videoElm = document.createElement('video');\n\n var isPlaying = false;\n\n videoElm.setAttribute('autoplay', '');\n videoElm.setAttribute('muted', '');\n videoElm.setAttribute('webkit-playsinline', 'webkit-playsinline');\n videoElm.setAttribute('playsinline', 'playsinline');\n\n try {\n if (videoElm.canPlayType('video/ogg')) {\n videoElm.src = 'data:video/ogg;base64,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';\n } else if (videoElm.canPlayType('video/mp4')) {\n videoElm.src = 'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAs1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0OCByMjYwMSBhMGNkN2QzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEwIHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAD2WIhAA3//728P4FNjuZQQAAAu5tb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAZAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACGHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAIAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAGQAAAAAAAEAAAAAAZBtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAACgAAAAEAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAE7bWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA+3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgACAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFkAAr/4QAYZ2QACqzZX4iIhAAAAwAEAAADAFA8SJZYAQAGaOvjyyLAAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAsUAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ==';\n } else {\n return callback(false);\n }\n } catch (_) {\n return callback(false);\n }\n\n videoElm.load();\n var playPromise = videoElm.play();\n\n if (playPromise) {\n playPromise.catch(function (e) {\n // Do nothing\n });\n }\n\n videoElm.oncanplay = function () {\n videoAutoPlayCache = isPlaying;\n callback(videoAutoPlayCache);\n };\n\n videoElm.onplay = function () {\n isPlaying = true;\n };\n}\n\nfunction testReducedMotion(callback) {\n if (typeof window === 'undefined') {\n if (callback) {\n callback(false);\n }\n return false;\n }\n\n var test = !!window.matchMedia && window.matchMedia('(prefers-reduced-motion)').matches;\n if (callback) {\n callback(test);\n }\n return test;\n}\n\nvar index = {\n testEventPassiveListener: testEventPassiveListener,\n testJs: testJs,\n testObjectFit: testJs$1,\n testPositionSticky: testPositionSticky,\n testVideoAutoPlay: testVideoAutoPlay,\n testReducedMotion: testReducedMotion\n};\n\nexport default index;\nexport { testEventPassiveListener, testJs, testJs$1 as testObjectFit, testPositionSticky, testVideoAutoPlay, testReducedMotion };\n","import { Component } from 'preact';\n\nfunction shallowEqual(a, b) {\n for (let key in a) if (a[key] !== b[key]) return false;\n\n for (let key in b) if (!(key in a)) return false;\n\n return true;\n}\n\nclass PureComponent extends Component {\n shouldComponentUpdate(props, state) {\n return !(shallowEqual(props, this.props) && shallowEqual(state, this.state));\n }\n\n}\n\nexport default PureComponent;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// @jsx h\nimport { toArray } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\n\nclass ViewportIntersections extends PureComponent {\n constructor(props) {\n super();\n\n _defineProperty(this, \"elm\", void 0);\n\n _defineProperty(this, \"intersectionObserver\", void 0);\n\n this.state = {\n intersections: props.children.map((child, idx) => {\n return {\n isIntersecting: false,\n ratio: null\n };\n })\n };\n }\n\n createIntersectionObserver() {\n const _this$props = this.props,\n onChange = _this$props.onChange,\n onEnter = _this$props.onEnter,\n onLeave = _this$props.onLeave,\n rootMargin = _this$props.rootMargin,\n threshold = _this$props.threshold,\n root = _this$props.root;\n const childNodes = toArray(this.elm.childNodes);\n this.intersectionObserver = new IntersectionObserver(entries => {\n const intersections = this.state.intersections.slice(0);\n entries.forEach(entry => {\n const idx = childNodes.indexOf(entry.target);\n const prevIntersection = intersections[idx];\n intersections.splice(idx, 1, {\n isIntersecting: entry.isIntersecting,\n ratio: entry.intersectionRatio\n });\n\n if (onEnter && !prevIntersection.isIntersecting && entry.isIntersecting) {\n onEnter(entry, idx);\n }\n\n if (onLeave && prevIntersection.isIntersecting && !entry.isIntersecting) {\n onLeave(entry, idx);\n }\n });\n this.setState({\n intersections\n });\n\n if (onChange) {\n onChange(intersections);\n }\n }, {\n root: root === 'self' ? this.elm : root,\n rootMargin: rootMargin || '0px 0px 0px 0px',\n threshold: threshold || 1.0\n });\n childNodes.forEach(childElm => this.intersectionObserver.observe(childElm));\n }\n\n componentDidMount() {\n this.createIntersectionObserver();\n }\n\n componentWillUnmount() {\n this.intersectionObserver.disconnect();\n }\n\n componentDidUpdate(previousProps) {\n if (this.props.rootMargin !== previousProps.rootMargin) {\n this.intersectionObserver.disconnect();\n this.createIntersectionObserver();\n }\n }\n\n render() {\n const _this$props2 = this.props,\n className = _this$props2.className,\n children = _this$props2.children,\n style = _this$props2.style;\n return h(\"div\", {\n ref: elm => this.elm = elm,\n className: className,\n style: style\n }, children);\n }\n\n}\n\nexport default ViewportIntersections;","/** @jsx h */\nimport { Component, h } from 'preact';\nexport function removeOrphans() {\n let content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return content.replace('\\n', '').replace(/\\s(((?!­|­|­)[^\\s])*)$/, ' $1').replace(/(­|­|­)([^\\s]*)$/, '$2');\n}\nexport default class HtmlContent extends Component {\n shouldComponentUpdate(nextProps) {\n return nextProps.content !== this.props.content;\n }\n\n render() {\n const _this$props = this.props,\n content = _this$props.content,\n className = _this$props.className,\n dataKey = _this$props.dataKey,\n _this$props$preventOr = _this$props.preventOrphans,\n preventOrphans = _this$props$preventOr === void 0 ? true : _this$props$preventOr;\n const html = preventOrphans ? removeOrphans(content) : content;\n\n switch (this.props.type) {\n case 'p':\n return h(\"p\", {\n className: className,\n dangerouslySetInnerHTML: {\n __html: html\n },\n \"data-key\": dataKey\n });\n\n case 'div':\n return h(\"div\", {\n className: className,\n dangerouslySetInnerHTML: {\n __html: html\n },\n \"data-key\": dataKey\n });\n\n default:\n return h(\"span\", {\n className: className,\n dangerouslySetInnerHTML: {\n __html: html\n },\n \"data-key\": dataKey\n });\n }\n }\n\n}","// @flow @jsx h\nimport { h, Component } from 'preact'\n\nclass Provider extends Component<{ children: Array }, {}> {\n getChildContext () {\n const { children, ...props } = this.props\n return { '__CTX__': props }\n }\n render () {\n return this.props.children[0]\n }\n}\n\nProvider.displayName = 'Provider'\n\ntype MapContextToProps = ({}) => Object\n\nfunction connect (mapContextToProps?: MapContextToProps) {\n return (wrappedComponent: any) => {\n class Connected extends Component<{}, {}> {\n mapContextToProps = (ctx: {}): Object => {\n return mapContextToProps ? mapContextToProps(ctx) : ctx\n }\n render () {\n return h(wrappedComponent, {\n ...this.mapContextToProps(this.context['__CTX__']),\n ...this.props\n })\n }\n }\n Connected.displayName = `connect(${wrappedComponent.displayName ||\n wrappedComponent.name ||\n 'Component'})`\n return Connected\n }\n}\n\nexport { Provider, connect }\n","function _extends() { _extends = Object.assign || 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); }\n\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; }\n\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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/media-has-caption */\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\n\nclass Video extends PureComponent {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"elm\", void 0);\n\n _defineProperty(this, \"state\", {\n isPlaying: false,\n isResolvingPlay: false,\n time: 0\n });\n\n _defineProperty(this, \"tracks\", []);\n\n _defineProperty(this, \"handlePlay\", () => {\n const onPlay = this.props.onPlay;\n this.setState({\n isPlaying: true\n });\n\n if (onPlay) {\n onPlay();\n }\n });\n\n _defineProperty(this, \"handlePause\", () => {\n const onPause = this.props.onPause;\n this.setState({\n isPlaying: false\n });\n\n if (onPause) {\n onPause();\n }\n });\n\n _defineProperty(this, \"handleDurationChange\", () => {\n const onDurationChange = this.props.onDurationChange;\n\n if (onDurationChange && this.elm) {\n onDurationChange(this.elm.duration);\n }\n });\n\n _defineProperty(this, \"handleTimeupdate\", () => {\n const onTimeupdate = this.props.onTimeupdate;\n const time = this.elm.currentTime;\n this.setState({\n time\n });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n });\n }\n\n componentDidMount() {\n const _this$props = this.props,\n textTracks = _this$props.textTracks,\n playing = _this$props.playing,\n onCaptionCueEnter = _this$props.onCaptionCueEnter,\n onCaptionCueExit = _this$props.onCaptionCueExit;\n\n if (textTracks) {\n textTracks.forEach(textTrack => {\n const track = this.elm.addTextTrack('subtitles', textTrack.language);\n track.mode = 'hidden';\n this.tracks.push(track);\n\n try {\n textTrack.captions.forEach(a => track.addCue(new window.VTTCue(Number(a.in), Number(a.out), a.text)));\n } catch (_) {\n // ignore error\n textTrack.captions.forEach(a => track.addCue(new window.TextTrackCue(Number(a.in), Number(a.out), a.text)));\n }\n\n for (let i = 0; i < track.cues.length; i++) {\n const cue = track.cues[i];\n\n try {\n cue.onenter = () => {\n if (typeof onCaptionCueEnter !== 'undefined') {\n onCaptionCueEnter({\n in: cue.startTime,\n out: cue.endTime,\n text: cue.text\n });\n }\n };\n\n cue.onexit = () => {\n if (typeof onCaptionCueExit !== 'undefined') {\n onCaptionCueExit();\n }\n };\n } catch (_) {// ignore error\n }\n }\n });\n }\n\n if (playing) {\n this.play();\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.playing !== this.props.playing) {\n if (this.props.playing) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n play() {\n const onError = this.props.onError;\n const playPromise = this.elm.play();\n\n if (playPromise) {\n this.setState({\n isResolvingPlay: true\n });\n playPromise.then(() => {\n this.setState({\n isResolvingPlay: false\n });\n }).catch(err => {\n if (onError) {\n onError(err.message);\n }\n\n this.setState({\n isResolvingPlay: false\n });\n });\n }\n }\n\n pause() {\n this.elm.pause();\n }\n\n seek(time) {\n this.elm.currentTime = time;\n }\n\n render() {\n const _this$props2 = this.props,\n playing = _this$props2.playing,\n sources = _this$props2.sources,\n restProps = _objectWithoutProperties(_this$props2, [\"playing\", \"sources\"]);\n\n const isPlaying = this.state.isPlaying;\n const eventHandlers = {\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onDurationChange: this.handleDurationChange,\n onTimeupdate: this.handleTimeupdate\n };\n const dataProps = {};\n\n if (isPlaying) {\n dataProps['data-playing'] = true;\n }\n\n return h(\"video\", _extends({}, restProps, eventHandlers, {\n ref: elm => this.elm = elm\n }, dataProps), sources.map(source => h(\"source\", _extends({}, source, {\n key: source.type\n }))));\n }\n\n}\n\nexport default Video;","function _extends() { _extends = Object.assign || 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); }\n\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; }\n\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; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// @jsx h\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport Video from '../Video';\nvar style = {\n \"smartVideo\": \"dhfc-1_0_0-beta_48-smartVideo\",\n \"smartVideo__720p\": \"dhfc-1_0_0-beta_48-smartVideo__720p\",\n \"smartVideo--horizontal\": \"dhfc-1_0_0-beta_48-smartVideo--horizontal\",\n \"smartVideo--1080p\": \"dhfc-1_0_0-beta_48-smartVideo--1080p\",\n \"smartVideo__960p\": \"dhfc-1_0_0-beta_48-smartVideo__960p\",\n \"smartVideo__1080p\": \"dhfc-1_0_0-beta_48-smartVideo__1080p\"\n};\nconst THRESHOLD_1080P = 960;\nconst THRESHOLD_HORIZONTAL = 2 / 3;\n\nclass SmartVideo extends PureComponent {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"resolution720p\", void 0);\n\n _defineProperty(this, \"resolution960p\", void 0);\n\n _defineProperty(this, \"resolution1080p\", void 0);\n\n _defineProperty(this, \"state\", {\n time: 0\n });\n\n _defineProperty(this, \"handleTimeupdate\", time => {\n const onTimeupdate = this.props.onTimeupdate;\n this.setState({\n time\n });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n });\n }\n\n componentDidUpdate(prevProps) {\n const prevIsHorizontal = this.isHorizontal(prevProps);\n const isHorizontal = this.isHorizontal(this.props);\n const prevIs1080p = this.is1080p(prevProps);\n const is1080p = this.is1080p(this.props);\n\n if (prevIsHorizontal !== isHorizontal || is1080p !== prevIs1080p) {\n this.seek(this.state.time);\n }\n }\n\n isHorizontal() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n const viewport = props.viewport;\n\n if (this.props.isHorizontal) {\n return this.props.isHorizontal(viewport);\n } else {\n return viewport.width / viewport.height >= THRESHOLD_HORIZONTAL;\n }\n }\n\n is1080p() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n const viewport = props.viewport;\n\n if (this.props.is1080p) {\n return this.props.is1080p(viewport);\n } else {\n return viewport.width >= THRESHOLD_1080P;\n }\n }\n\n seek(time) {\n const isHorizontal = this.isHorizontal();\n const is1080p = this.is1080p();\n\n if (isHorizontal) {\n if (is1080p) {\n this.resolution1080p.seek(time);\n } else {\n this.resolution720p.seek(time);\n }\n } else {\n this.resolution960p.seek(time);\n }\n }\n\n render() {\n const _this$props = this.props,\n playing = _this$props.playing,\n resolution720p = _this$props.resolution720p,\n resolution960p = _this$props.resolution960p,\n resolution1080p = _this$props.resolution1080p,\n viewport = _this$props.viewport,\n restProps = _objectWithoutProperties(_this$props, [\"playing\", \"resolution720p\", \"resolution960p\", \"resolution1080p\", \"viewport\"]);\n\n if (!resolution720p) {\n throw new Error('Missing `resolution720p` property');\n }\n\n if (!resolution960p) {\n throw new Error('Missing `resolution960p` property');\n }\n\n if (!resolution1080p) {\n throw new Error('Missing `resolution1080p` property');\n }\n\n const isValidViewport = viewport.width > -1 && viewport.height > -1;\n const isHorizontal = this.isHorizontal();\n const is1080p = isHorizontal && this.is1080p();\n const className = `${bem(style.smartVideo, {\n '1080p': is1080p,\n horizontal: isHorizontal\n })}${this.props.className ? ` ${this.props.className}` : ''}`;\n return h(\"div\", {\n className: className\n }, h(Video, _extends({}, resolution720p, restProps, {\n className: style.smartVideo__720p,\n playing: isValidViewport && isHorizontal && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: resolution720p => this.resolution720p = resolution720p\n })), h(Video, _extends({}, resolution960p, restProps, {\n className: style.smartVideo__960p,\n playing: isValidViewport && !isHorizontal && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: resolution960p => this.resolution960p = resolution960p\n })), h(Video, _extends({}, resolution1080p, restProps, {\n className: style.smartVideo__1080p,\n playing: isValidViewport && isHorizontal && is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: resolution1080p => this.resolution1080p = resolution1080p\n })));\n }\n\n}\n\nexport default SmartVideo;","import { createImageUrl as libCreateImageUrl } from '@nrk/serum-imagecrop-utils';\nexport const IMAGE_WIDTHS = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400];\nexport function createImageUrl(opts) {\n const id = opts.id,\n ratio = opts.ratio,\n quality = opts.quality,\n width = opts.width;\n const derivedRatio = ratio === 'original' ? null : ratio;\n return libCreateImageUrl({\n id,\n ratio: derivedRatio,\n quality,\n width\n });\n}\nexport function createResponsiveSrcSet(opts) {\n const id = opts.id,\n ratio = opts.ratio,\n quality = opts.quality;\n return IMAGE_WIDTHS.map(width => {\n const imageUrl = createImageUrl({\n id,\n width,\n ratio,\n quality\n });\n return `${imageUrl} ${width}w`;\n }).join(', ');\n}","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/** @jsx h */\n\n/* eslint-disable react/no-deprecated */\n\n/* eslint-disable promise/catch-or-return */\n\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact';\nimport { createImageUrl, createResponsiveSrcSet } from '../../helpers';\nexport default class SerumLazySmartPicture extends Component {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"visibleImage\", void 0);\n\n _defineProperty(this, \"visibleSource\", void 0);\n\n _defineProperty(this, \"loadImage\", () => {\n const loaderImage = new Image();\n const dataset = this.getSourceDataset();\n loaderImage.sizes = this.visibleImage.sizes || '';\n loaderImage.srcset = dataset.srcset || '';\n\n if (dataset.src) {\n loaderImage.src = dataset.src;\n }\n\n if (loaderImage.decode) {\n // Use Image Decode API to decode image upfront if available\n // (Unsure if this works when transferring src to other image, but worth the try)\n loaderImage.decode().then(() => this.updateImage(loaderImage));\n } else if (loaderImage.complete) {\n this.updateImage(loaderImage);\n } else {\n loaderImage.onload = () => this.updateImage(loaderImage);\n }\n });\n }\n\n componentDidMount() {\n if (this.props.load) {\n setTimeout(this.loadImage, 100);\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.load && !this.props.load) {\n this.loadImage();\n }\n }\n\n shouldComponentUpdate() {\n return false;\n }\n\n getMediaQuery() {\n return this.props.mediaQuery || '(min-aspect-ratio: 4/5)';\n }\n\n getSourceDataset() {\n if (window.matchMedia(this.getMediaQuery()).matches) {\n return this.visibleSource.dataset;\n } else {\n return this.visibleImage.dataset;\n }\n }\n\n updateImage(loaderImage) {\n requestAnimationFrame(() => {\n const src = loaderImage.currentSrc || loaderImage.src;\n this.visibleImage.src = src;\n\n if (this.visibleSource) {\n this.visibleSource.srcset = src;\n }\n });\n }\n\n render() {\n const _this$props = this.props,\n className = _this$props.className,\n alt = _this$props.alt,\n horizontal = _this$props.horizontal,\n vertical = _this$props.vertical,\n sizes = _this$props.sizes;\n const fallbackSrc = createImageUrl(_objectSpread({}, horizontal, {\n width: 1600,\n ratio: horizontal.ratio || '16:9'\n }));\n const placeholderVerticalUrl = createImageUrl(_objectSpread({}, vertical, {\n width: 100,\n ratio: vertical.ratio || '3:4'\n }));\n const placeholderHorizontalUrl = createImageUrl(_objectSpread({}, horizontal, {\n width: 100,\n ratio: horizontal.ratio || '16:9'\n }));\n const horizontalSourceSet = createResponsiveSrcSet(_objectSpread({}, horizontal, {\n ratio: horizontal.ratio || '16:9'\n }));\n const verticalSourceSet = createResponsiveSrcSet(_objectSpread({}, vertical, {\n ratio: vertical.ratio || '3:4'\n }));\n return h(\"picture\", {\n className: className\n }, h(\"source\", {\n media: this.getMediaQuery(),\n srcSet: placeholderHorizontalUrl,\n \"data-srcset\": horizontalSourceSet,\n ref: elm => this.visibleSource = elm\n }), h(\"img\", {\n src: placeholderVerticalUrl,\n \"data-src\": fallbackSrc,\n \"data-srcset\": verticalSourceSet,\n alt: alt,\n sizes: sizes || '100vw',\n ref: elm => this.visibleImage = elm\n }));\n }\n\n}","// @flow @jsx h\n/* eslint-disable jsx-a11y/aria-role */\nimport { Component, h } from 'preact'\n\nimport styles from './index.css'\n\ntype Props = {\n stikktittel: string,\n fornavn: string,\n etternavn: string,\n viewport: { height: number }\n}\n\nexport class Header extends Component {\n render () {\n const { fornavn, etternavn, stikktittel } = this.props\n\n return
\n
\n

\n
{fornavn} {etternavn}
\n
\n
\n
{stikktittel}
\n
\n

\n
\n
\n }\n}\n","const ScrollKeys = [32, 33, 34, 35, 36, 37, 38, 39, 40]\n\nexport class DisableScroll {\n callback\n element\n\n constructor (callback) {\n this.callback = callback\n this.element = document.scrollingElement\n }\n\n on () {\n document.addEventListener('wheel', this.handleWheel)\n document.addEventListener('touchmove', this.handleWheel)\n document.addEventListener('scroll', this.handleScroll)\n document.addEventListener('keydown', this.handleKeydown)\n }\n\n off () {\n document.removeEventListener('wheel', this.handleWheel)\n document.removeEventListener('touchmove', this.handleWheel)\n document.removeEventListener('scroll', this.handleScroll)\n document.removeEventListener('keydown', this.handleKeydown)\n }\n\n handleWheel = (e) => {\n e.preventDefault()\n if (this.callback) {\n this.callback()\n }\n }\n\n handleScroll = () => {\n if (this.element.scrollTop < 1200) {\n window.scrollTo(0, 0)\n if (this.callback) {\n this.callback()\n }\n }\n }\n\n handleKeydown = (e) => {\n if (ScrollKeys.includes(e.keyCode)) {\n e.preventDefault()\n }\n if (this.callback) {\n this.callback()\n }\n }\n}\n","// @flow @jsx h\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\n/* eslint-disable compat/compat */\n\nimport { Component, h } from 'preact'\nimport { DisableScroll } from '../../../../lib/DisableScroll'\n\nimport styles from './index.css'\n\ntype Props = {\n viewport: { height: number },\n allowed: boolean,\n complete: boolean,\n onComplete: () => void\n}\n\nexport class Logo extends Component {\n elm: HTMLElement\n animationElm: HTMLElement\n disableScroll: any\n animation: any\n animationStarted = false\n fadingOut = false\n\n componentDidMount () {\n this.disableScroll = new DisableScroll(this.handleScroll)\n\n Promise.all([\n require('../../../../lib/wrappers/lottieWrapper').getLottie(),\n fetch('https://static.nrk.no/dh/gfx/2019/sporten/vbm/lottie/vbm_tittel_final_m_tekst.json').then(res => res.json())\n ])\n .then(\n ([lottie, animationData]) => {\n if (this.fadingOut) {\n return\n }\n this.animationStarted = true\n\n this.animation = lottie.loadAnimation({\n container: this.animationElm, // the dom element that will contain the animation\n renderer: 'svg',\n loop: false,\n autoplay: false,\n animationData\n })\n this.animation.setSpeed(1.5)\n this.animation.addEventListener('complete', this.handleAnimationComplete)\n\n setTimeout(() => {\n this.elm.style.display = 'block'\n this.elm.style.opacity = '1'\n this.disableScroll.on()\n this.animation.goToAndPlay(0)\n }, 0)\n }\n )\n }\n\n componentDidUpdate (previousProps: Props) {\n if (!previousProps.complete && this.props.complete) {\n this.fadeOut()\n } else if (this.props.complete) {\n return\n }\n\n if (!previousProps.allowed && this.props.allowed) {\n // this.show()\n } else if (previousProps.allowed && !this.props.allowed) {\n this.fadeOut()\n }\n }\n\n handleScroll = () => {\n this.fadeOut()\n }\n\n fadeOut = () => {\n if (this.fadingOut) {\n return\n }\n\n this.fadingOut = true\n this.elm.style.opacity = '0'\n setTimeout(() => {\n this.elm.style.display = 'none'\n this.props.onComplete && this.props.onComplete()\n\n if (this.animation) {\n this.animation.destroy()\n }\n\n setTimeout(() => (this.disableScroll.off()), 300)\n }, 200)\n }\n\n handleAnimationComplete = () => {\n setTimeout(() => {\n this.fadeOut()\n }, 2000)\n }\n\n render () {\n return (this.elm = elm)}>\n
\n
(this.animationElm = elm)} />\n
\n }\n}\n","// @flow\n\nimport type { VideoType } from './components/domain'\n\nexport const VIDEO_BASE_PATH = 'https://static.nrk.no/dh/videos/sporten/2019/vbm'\n\nexport function toVideoSrc (video: VideoType) {\n return {\n poster: VIDEO_BASE_PATH + video.poster,\n sources: [\n { type: 'video/mp4', src: VIDEO_BASE_PATH + video.mp4 },\n { type: 'video/webm', src: VIDEO_BASE_PATH + video.webm }\n ]\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { SmartVideo, ViewportIntersections, HtmlContent, SerumLazySmartPicture } from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\nimport { Header } from './Header'\nimport { Logo } from './Logo'\nimport { toVideoSrc } from '../../common'\n\n/* styles */\nimport styles from './index.css'\nimport '@nrk/dh-feature-components/dist/module/video/SmartVideo/index.css'\n\n/* types */\nimport type { IntroElement, IntroVideo } from '../domain'\n\ntype Props = {\n intro: IntroElement[],\n introVideo: IntroVideo,\n fornavn: string,\n etternavn: string,\n stikktittel: string,\n byline: string,\n bylinebilde: string,\n profilbilde: string,\n viewport: { height: number }\n}\n\ntype State = {\n activeIdx: number,\n logoAllowed: boolean,\n logoComplete: boolean,\n portraitVisible: boolean,\n playing: boolean\n}\n\nexport class Intro extends Component {\n timeout: any\n texts: HTMLElement[] = []\n\n constructor () {\n super()\n this.state = {\n activeIdx: -1,\n playing: false,\n logoAllowed: false,\n logoComplete: false,\n portraitVisible: false\n }\n }\n\n handleChange = (intersections: any[]) => {\n const activeIntersection = intersections\n .map((intersection, idx) => ({ ...intersection, idx }))\n .filter(intersection => intersection.isIntersecting)\n .sort((a, b) => b.ratio - a.ratio)\n .shift()\n\n let nextState = {}\n if (!activeIntersection) {\n nextState = { activeIdx: -1, playing: false }\n } else {\n const idx = activeIntersection.idx\n if (idx === 0) {\n nextState = { activeIdx: 0, portraitVisible: false, playing: true, logoAllowed: true }\n } else if (idx < this.props.intro.length) {\n nextState = { activeIdx: idx, portraitVisible: false, playing: true, logoAllowed: false, logoComplete: true }\n } else {\n nextState = { activeIdx: -1, portraitVisible: true, playing: false, logoAllowed: false, logoComplete: true }\n }\n }\n\n this.setState(nextState)\n }\n\n setLogoComplete = () => {\n if (!this.state.logoComplete) {\n this.setState({ logoComplete: true })\n }\n }\n\n render () {\n const { intro, fornavn, etternavn, stikktittel, viewport, introVideo, profilbilde } = this.props\n const { playing, activeIdx, logoAllowed, logoComplete, portraitVisible } = this.state\n const rootMargin = `-50% 0px 0px 0px`\n\n return (\n
\n
\n
\n {introVideo && \n }\n
\n \n
\n
\n \n \n {\n intro.map((introElement, idx) => {\n return \n
\n
(this.texts[idx] = elm)}>\n {\n introElement.block.map((textElement, idx) => {\n return \n })\n }\n
\n
\n
\n
\n })}\n
\n \n
\n
\n )\n }\n}\n","/** @jsx h */\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport { createResponsiveSrcSet } from '../helpers';\n\nclass SerumResponsivePicture extends PureComponent {\n render() {\n const _this$props = this.props,\n className = _this$props.className,\n alt = _this$props.alt,\n id = _this$props.id,\n quality = _this$props.quality,\n ratio = _this$props.ratio,\n sizes = _this$props.sizes;\n const defaultUrl = createImageUrl({\n id,\n width: 1600,\n quality,\n ratio: ratio || '16:9'\n });\n const horizontalSourceSet = createResponsiveSrcSet({\n id,\n quality,\n ratio: ratio || '16:9'\n });\n return h(\"picture\", {\n className: className\n }, h(\"source\", {\n srcSet: horizontalSourceSet,\n sizes: sizes\n }), h(\"img\", {\n src: defaultUrl,\n alt: alt,\n sizes: sizes\n }));\n }\n\n}\n\nexport default SerumResponsivePicture;","// @flow @jsx h\n\nimport { h, Component } from 'preact'\nimport { SerumResponsivePicture, HtmlContent } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\nimport { connect } from '../../../../../lib/provider'\n\ntype Props = {\n intro: string,\n linkText: string,\n title: string,\n text: string,\n imageId: string,\n sendGaEvent: (Object) => void\n}\n\ntype ContextProps = {\n sendGaEvent?: any => void\n}\n\ntype State = {\n expanded: boolean\n}\n\nclass _Person extends Component {\n constructor () {\n super()\n this.state = {\n expanded: false\n }\n }\n\n handleToggle = (event: Event) => {\n event.preventDefault()\n this.setState({ expanded: !this.state.expanded })\n\n this.props.sendGaEvent &&\n this.props.sendGaEvent({\n action: this.state.expanded ? 'SHOW_PERSON_DETAILS' : 'HIDE_PERSON_DETAILS',\n label: this.props.title\n })\n }\n\n render () {\n const { intro, linkText, title, text, imageId } = this.props\n const { expanded } = this.state\n\n const [introStart, introEnd] = intro.split(linkText)\n\n return
\n

\n {introStart}\n \n \n \n \n {introEnd}\n

\n {expanded && (\n \n )}\n
\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const Person = connector(_Person)\n","// @flow @jsx h\n\nimport { h, Component } from 'preact'\nimport { HtmlContent } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\nimport { connect } from '../../../../../lib/provider'\n\ntype Props = {\n intro: string,\n linkText: string,\n title: string,\n text: string,\n sendGaEvent: (Object) => void\n}\n\ntype ContextProps = {\n sendGaEvent?: any => void\n}\n\ntype State = {\n expanded: boolean\n}\n\nclass _Faktaboks extends Component {\n constructor () {\n super()\n this.state = {\n expanded: false\n }\n }\n\n handleToggle = (event: Event) => {\n event.preventDefault()\n this.setState({ expanded: !this.state.expanded })\n\n this.props.sendGaEvent &&\n this.props.sendGaEvent({\n action: this.state.expanded ? 'SHOW_FAKTABOKS' : 'HIDE_FAKTABOKS',\n label: this.props.title\n })\n }\n\n render () {\n const { intro, linkText, title, text } = this.props\n const { expanded } = this.state\n\n const [introStart, introEnd] = intro.split(linkText)\n\n return
\n

\n {introStart}\n \n \n \n \n {introEnd}\n

\n {expanded && (\n \n )}\n
\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const Faktaboks = connector(_Faktaboks)\n","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/** @jsx h */\n\n/* eslint-disable react/no-deprecated */\nimport { h, Component } from 'preact';\nimport { createImageUrl, createResponsiveSrcSet } from '../../helpers';\n\nclass SerumLazyResponsivePicture extends Component {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"visibleImage\", void 0);\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.load && !this.props.load) {\n this.loadImage();\n }\n }\n\n shouldComponentUpdate() {\n return false;\n }\n\n loadImage() {\n const loaderImage = new Image();\n\n if (this.visibleImage.dataset) {\n loaderImage.srcset = this.visibleImage.dataset.srcset || '';\n loaderImage.sizes = this.visibleImage.sizes || '';\n }\n\n loaderImage.src = this.visibleImage.dataset.src;\n\n if (typeof loaderImage.decode === 'function') {\n // Use Image Decode API to decode image upfront if available\n // (Unsure if this works when transferring src to other image, but worth the try)\n loaderImage.decode().then(() => this.updateImage(loaderImage));\n } else if (loaderImage.complete) {\n this.updateImage(loaderImage);\n } else {\n loaderImage.onload = () => this.updateImage(loaderImage);\n }\n }\n\n updateImage(loaderImage) {\n requestAnimationFrame(() => {\n this.visibleImage.src = loaderImage.currentSrc || loaderImage.src;\n });\n }\n\n render() {\n const _this$props = this.props,\n className = _this$props.className,\n alt = _this$props.alt,\n id = _this$props.id,\n _this$props$quality = _this$props.quality,\n quality = _this$props$quality === void 0 ? 0.6 : _this$props$quality,\n _this$props$ratio = _this$props.ratio,\n ratio = _this$props$ratio === void 0 ? '16:9' : _this$props$ratio,\n sizes = _this$props.sizes,\n _this$props$style = _this$props.style,\n style = _this$props$style === void 0 ? {} : _this$props$style;\n const placeholderSrc = createImageUrl({\n id,\n width: 100,\n quality: 0.6,\n ratio\n });\n const defaultUrl = createImageUrl({\n id,\n width: 1600,\n quality,\n ratio\n });\n const sourceSet = createResponsiveSrcSet({\n id,\n quality,\n ratio\n });\n return h(\"picture\", {\n className: className,\n style: _objectSpread({}, style, {\n display: 'block',\n overflow: 'hidden'\n })\n }, h(\"img\", {\n src: placeholderSrc,\n alt: alt,\n \"data-src\": defaultUrl,\n \"data-srcset\": sourceSet,\n style: {\n width: '100%'\n },\n sizes: sizes,\n ref: elm => this.visibleImage = elm\n }));\n }\n\n}\n\nexport default SerumLazyResponsivePicture;","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { SerumLazyResponsivePicture } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\n\ntype Props = {\n id: string,\n alt: string,\n caption: string,\n ratio: string,\n load: boolean\n}\n\nexport class Image extends Component {\n render () {\n const { id, alt, caption, ratio, load } = this.props\n return
\n \n {caption &&
{caption}
}\n
\n }\n}\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// @jsx h\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nvar style = {\n \"scrubber\": \"dhfc-1_0_0-beta_48-scrubber\",\n \"scrubber__bgBar\": \"dhfc-1_0_0-beta_48-scrubber__bgBar\",\n \"scrubber__bufferedBar\": \"dhfc-1_0_0-beta_48-scrubber__bufferedBar\",\n \"scrubber__playedBar\": \"dhfc-1_0_0-beta_48-scrubber__playedBar\"\n};\n\nclass Scrubber extends PureComponent {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"bgElm\", void 0);\n\n _defineProperty(this, \"elm\", void 0);\n\n _defineProperty(this, \"handleElm\", void 0);\n\n _defineProperty(this, \"positionTimeout\", void 0);\n\n _defineProperty(this, \"state\", {\n left: 0,\n width: 0,\n isScrubbing: false,\n position: null\n });\n\n _defineProperty(this, \"handleKeyDown\", evt => {\n const _this$props = this.props,\n duration = _this$props.duration,\n time = _this$props.time,\n onPositionUpdate = _this$props.onPositionUpdate;\n\n if (onPositionUpdate) {\n let nextTime = time;\n\n switch (evt.key) {\n case 'ArrowLeft':\n nextTime -= 1;\n break;\n\n case 'ArrowRight':\n nextTime += 1;\n break;\n }\n\n onPositionUpdate(Math.max(Math.min(nextTime / duration, 1), 0));\n }\n });\n\n _defineProperty(this, \"handleMouseDown\", evt => {\n evt.preventDefault();\n this.focus();\n this.start(evt.pageX);\n this.elm.addEventListener('mousemove', this.handleMouseMove);\n window.addEventListener('mouseup', this.handleMouseUp);\n });\n\n _defineProperty(this, \"handleMouseMove\", evt => {\n this.move(evt.pageX);\n });\n\n _defineProperty(this, \"handleMouseUp\", evt => {\n this.focus();\n this.end();\n this.elm.removeEventListener('mousemove', this.handleMouseMove);\n window.removeEventListener('mouseup', this.handleMouseUp);\n });\n\n _defineProperty(this, \"handleResize\", () => {\n const rect = this.bgElm.getBoundingClientRect();\n this.setState({\n left: Math.floor(rect.left),\n width: rect.width\n });\n });\n\n _defineProperty(this, \"handleTouchStart\", evt => {\n if (evt.touches.length === 1) {\n evt.preventDefault();\n this.focus();\n this.start(evt.touches[0].clientX);\n this.elm.addEventListener('touchmove', this.handleTouchMove);\n window.addEventListener('touchend', this.handleTouchEnd);\n }\n });\n\n _defineProperty(this, \"handleTouchMove\", evt => {\n if (evt.touches.length === 1) {\n this.move(evt.touches[0].clientX);\n }\n });\n\n _defineProperty(this, \"handleTouchEnd\", evt => {\n this.focus();\n this.end();\n this.elm.removeEventListener('touchmove', this.handleTouchMove);\n window.removeEventListener('touchend', this.handleTouchEnd);\n });\n }\n\n componentDidMount() {\n if (this.props.onPositionUpdate) {\n this.elm.addEventListener('keydown', this.handleKeyDown);\n this.elm.addEventListener('mousedown', this.handleMouseDown);\n this.elm.addEventListener('touchstart', this.handleTouchStart);\n window.addEventListener('resize', this.handleResize);\n this.handleResize();\n }\n }\n\n componentWillUnmount() {\n if (this.props.onPositionUpdate) {\n this.elm.removeEventListener('keydown', this.handleKeyDown);\n this.elm.removeEventListener('mousedown', this.handleMouseDown);\n this.elm.removeEventListener('touchstart', this.handleTouchStart);\n window.removeEventListener('resize', this.handleResize);\n }\n }\n\n focus() {\n this.handleElm.focus();\n }\n\n start(clientX) {\n if (this.positionTimeout) {\n clearTimeout(this.positionTimeout);\n }\n\n this.setState({\n position: (clientX - this.state.left) / this.state.width,\n isScrubbing: true\n });\n }\n\n move(clientX) {\n this.setState({\n position: Math.max(Math.min((clientX - this.state.left) / this.state.width, 1), 0)\n });\n }\n\n end() {\n if (this.props.onPositionUpdate && this.state.position !== null) {\n this.props.onPositionUpdate(this.state.position);\n }\n\n this.setState({\n isScrubbing: false\n });\n this.positionTimeout = setTimeout(() => {\n this.setState({\n position: null\n });\n }, 350);\n }\n\n render() {\n const _this$props2 = this.props,\n duration = _this$props2.duration,\n time = _this$props2.time;\n const className = `${style.scrubber}${this.props.className ? ` ${this.props.className}` : ''}`;\n const position = this.state.position !== null ? this.state.position : time / duration;\n return h(\"div\", {\n className: className,\n ref: elm => this.elm = elm\n }, h(\"div\", {\n className: style.scrubber__bgBar,\n ref: bgElm => this.bgElm = bgElm\n }), h(\"div\", {\n className: style.scrubber__bufferedBar\n }), h(\"div\", {\n className: style.scrubber__playedBar,\n style: {\n width: `${position * 100}%`\n }\n }), h(\"button\", {\n ref: handleElm => this.handleElm = handleElm,\n role: \"slider\",\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": duration * 1000,\n \"aria-valuenow\": time * 1000,\n style: {\n left: `${position * 100}%`\n }\n }));\n }\n\n}\n\nexport default Scrubber;","// @jsx h\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nvar style = {\n \"togglePlayButton\": \"dhfc-1_0_0-beta_48-togglePlayButton\",\n \"togglePlayButton__pauseIcon\": \"dhfc-1_0_0-beta_48-togglePlayButton__pauseIcon\",\n \"togglePlayButton--playing\": \"dhfc-1_0_0-beta_48-togglePlayButton--playing\",\n \"togglePlayButton__playIcon\": \"dhfc-1_0_0-beta_48-togglePlayButton__playIcon\"\n};\nexport default function TogglePlayButton(props) {\n const playing = props.playing;\n const className = `${bem(style.togglePlayButton, playing && 'playing')}${props.className ? ` ${props.className}` : ''}`;\n return h(\"button\", {\n className: className,\n onClick: props.onClick\n }, h(\"span\", {\n className: \"nrk-sr\"\n }, playing ? 'Sett video på pause' : 'Spill av video'), h(\"svg\", {\n className: style.togglePlayButton__pauseIcon,\n \"aria-hidden\": \"true\",\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }), h(\"svg\", {\n className: style.togglePlayButton__playIcon,\n \"aria-hidden\": \"true\",\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }));\n}","// @jsx h\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nvar style = {\n \"toggleMuteButton\": \"dhfc-1_0_0-beta_48-toggleMuteButton\",\n \"toggleMuteButton__volumeIcon\": \"dhfc-1_0_0-beta_48-toggleMuteButton__volumeIcon\",\n \"toggleMuteButton--muted\": \"dhfc-1_0_0-beta_48-toggleMuteButton--muted\",\n \"toggleMuteButton__mutedIcon\": \"dhfc-1_0_0-beta_48-toggleMuteButton__mutedIcon\"\n};\nexport default function ToggleMuteButton(props) {\n const muted = props.muted;\n const className = `${bem(style.toggleMuteButton, muted && 'muted')}${props.className ? ` ${props.className}` : ''}`;\n return h(\"button\", {\n className: className,\n onClick: props.onClick\n }, h(\"span\", {\n className: \"nrk-sr\"\n }, muted ? 'Slå på lyd' : 'Slå av lyd'), h(\"svg\", {\n className: style.toggleMuteButton__mutedIcon,\n \"aria-hidden\": \"true\",\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }), h(\"svg\", {\n className: style.toggleMuteButton__volumeIcon,\n \"aria-hidden\": \"true\",\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }));\n}","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// @jsx h\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport warn from '../../lib/warn';\nimport Scrubber from './Scrubber';\nimport TogglePlayButton from './TogglePlayButton';\nimport ToggleMuteButton from './ToggleMuteButton';\nvar style = {\n \"videoPlayer\": \"dhfc-1_0_0-beta_48-videoPlayer\",\n \"videoPlayer__container\": \"dhfc-1_0_0-beta_48-videoPlayer__container\",\n \"videoPlayer__caption\": \"dhfc-1_0_0-beta_48-videoPlayer__caption\",\n \"videoPlayer__controls\": \"dhfc-1_0_0-beta_48-videoPlayer__controls\",\n \"videoPlayer__togglePlayButton\": \"dhfc-1_0_0-beta_48-videoPlayer__togglePlayButton\",\n \"videoPlayer__toggleMuteButton\": \"dhfc-1_0_0-beta_48-videoPlayer__toggleMuteButton\"\n};\n\nclass VideoPlayer extends PureComponent {\n constructor() {\n super(...arguments);\n\n _defineProperty(this, \"video\", void 0);\n\n _defineProperty(this, \"state\", {\n caption: null,\n duration: 0,\n isPlaying: false,\n time: 0\n });\n\n _defineProperty(this, \"handleUserTogglePlay\", () => {\n this.props.onUserTogglePlay();\n });\n\n _defineProperty(this, \"handleUserToggleMute\", () => {\n this.props.onUserToggleMute();\n });\n\n _defineProperty(this, \"handleScrubberPositionUpdate\", position => {\n if (this.video) {\n this.video.seek(this.state.duration * position);\n } else {\n warn('[@nrk/dh-feature-components] No video reference');\n }\n });\n\n _defineProperty(this, \"handleCaptionCueEnter\", caption => {\n this.setState({\n caption\n });\n });\n\n _defineProperty(this, \"handleCaptionCueExit\", () => {\n this.setState({\n caption: null\n });\n });\n\n _defineProperty(this, \"handleDurationChange\", duration => {\n this.setState({\n duration\n });\n });\n\n _defineProperty(this, \"handlePlay\", () => {\n const onPlay = this.props.onPlay;\n this.setState({\n isPlaying: true\n });\n\n if (onPlay) {\n onPlay();\n }\n });\n\n _defineProperty(this, \"handlePause\", () => {\n const onPause = this.props.onPause;\n this.setState({\n isPlaying: false\n });\n\n if (onPause) {\n onPause();\n }\n });\n\n _defineProperty(this, \"handleTimeupdate\", time => {\n this.setState({\n time\n });\n });\n }\n\n render() {\n const _this$props = this.props,\n muted = _this$props.muted,\n playing = _this$props.playing,\n video = _this$props.video;\n const _this$state = this.state,\n caption = _this$state.caption,\n duration = _this$state.duration,\n isPlaying = _this$state.isPlaying,\n time = _this$state.time;\n\n if (!video.attributes) {\n throw new Error('The `video` property must be a virtual node');\n }\n\n const className = `${style.videoPlayer}${this.props.className ? ` ${this.props.className}` : ''}`;\n video.attributes.muted = muted;\n video.attributes.playing = playing;\n video.attributes.playsInline = true;\n\n video.attributes.ref = video => this.video = video;\n\n video.attributes.onPlay = this.handlePlay;\n video.attributes.onPause = this.handlePause;\n video.attributes.onCaptionCueEnter = this.handleCaptionCueEnter;\n video.attributes.onCaptionCueExit = this.handleCaptionCueExit;\n video.attributes.onDurationChange = this.handleDurationChange;\n video.attributes.onTimeupdate = this.handleTimeupdate;\n return h(\"div\", {\n className: className\n }, h(\"div\", {\n className: style.videoPlayer__container\n }, video, caption && h(\"div\", {\n className: style.videoPlayer__caption,\n \"aria-hidden\": \"true\"\n }, caption.text.split('\\n').map((text, idx) => h(\"div\", {\n key: String(idx)\n }, h(\"span\", {\n dangerouslySetInnerHTML: {\n __html: text\n }\n })))), h(\"div\", {\n className: style.videoPlayer__controls\n }, h(TogglePlayButton, {\n className: style.videoPlayer__togglePlayButton,\n playing: isPlaying,\n onClick: this.handleUserTogglePlay\n }), h(Scrubber, {\n time: time,\n duration: duration,\n onPositionUpdate: this.handleScrubberPositionUpdate\n }), h(ToggleMuteButton, {\n className: style.videoPlayer__toggleMuteButton,\n muted: muted,\n onClick: this.handleUserToggleMute\n }))));\n }\n\n}\n\nexport default VideoPlayer;","export default function warn() {\n typeof window !== 'undefined' && console && console.warn && console.warn(...arguments);\n}","// @flow @jsx h\n\nimport { Component, h } from 'preact'\nimport { Video, VideoPlayer } from '@nrk/dh-feature-components'\n\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/index.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/Scrubber.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/ToggleMuteButton.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/TogglePlayButton.css'\n\nimport styles from './index.css'\n\ntype VideoSource = {\n type: 'video/mp4' | 'video/webm',\n src: string\n}\n\ntype Props = {\n poster: string,\n sources: VideoSource[],\n playing: boolean,\n textTracks: any[]\n}\n\ntype State = {\n paused: boolean,\n muted: boolean\n}\n\nexport class VideoContent extends Component {\n constructor () {\n super()\n this.state = {\n paused: false,\n muted: true\n }\n }\n\n handleUserToggleMute = () => {\n this.setState({ muted: !this.state.muted })\n }\n\n handleUserTogglePlay = () => {\n this.setState({ paused: !this.state.paused })\n }\n\n handleVideoError = () => {\n this.setState({ paused: true })\n }\n\n render () {\n const { sources, poster, textTracks } = this.props\n const { muted } = this.state\n\n const playing = !!this.props.playing && !this.state.paused\n\n const video = \n\n return (\n \n )\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { VideoContent } from './VideoContent'\n\n/* styles */\nimport styles from './index.css'\n\ntype Props = {\n playing: boolean,\n poster: string,\n mp4: string,\n webm: string\n}\n\nexport class VideoElement extends Component {\n render () {\n const { playing, poster, mp4, webm } = this.props\n const sources = [{ type: 'video/mp4', src: mp4 }, { type: 'video/webm', src: webm }]\n\n return
\n
\n \n
\n
\n }\n}\n","// @flow @jsx h\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\n\n/* styles */\nimport styles from './index.css'\n\ntype Props = {\n playing: boolean,\n id: string,\n autoplay: string\n}\n\nexport class LudoElement extends Component {\n videoElm: HTMLVideoElement\n ludoPlayer: any\n\n componentDidMount () {\n this.ludoPlayer = require('../../../../../lib/wrappers/ludoWrapper').getLudo().then(ludo => {\n return ludo(this.videoElm, this.props.id, {\n analytics: {\n ga: {\n trackingId: 'UA-3413696-1'\n }\n },\n mute: true\n })\n })\n }\n\n play () {\n this.ludoPlayer.then(player => {\n player.play()\n })\n }\n\n pause () {\n this.ludoPlayer.then(player => {\n player.pause()\n })\n }\n\n componentDidUpdate (previousProps: Props) {\n const { autoplay = 'true' } = this.props\n\n if (autoplay === 'true' && this.props.playing && !previousProps.playing) {\n this.play()\n } else if (!this.props.playing && previousProps.playing) {\n this.pause()\n }\n }\n\n render () {\n return
\n
(this.videoElm = elm)} />\n
\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { bem } from '@nrk/dh-utils'\n\n/* styles */\nimport styles from './index.css'\n\ntype Props = {\n sitat: string,\n sitatNavn: string,\n float?: string\n}\n\nexport class Sitat extends Component {\n render () {\n return
\n
\n

{this.props.sitat}

\n {this.props.sitatNavn}\n
\n
\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { Video } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\nimport type { VideoType } from '../../../domain'\nimport { toVideoSrc } from '../../../../common'\n\ntype Props = {\n playing: boolean,\n video: VideoType,\n title: string,\n caption: string\n}\n\nexport class LevendeStillbilde extends Component {\n render () {\n const { playing, video, caption, title } = this.props\n const vid = toVideoSrc(video)\n\n return
\n
\n \n {caption &&
{caption}
}\n
\n
\n }\n}\n","// @flow @jsx h\n\nimport { Component, h } from 'preact'\n\nimport styles from './index.css'\nimport { SerumLazyResponsivePicture } from '@nrk/dh-feature-components'\n\ntype Props = {\n tittel: string,\n merkelapp: string,\n url: string,\n polopolyId: string,\n ratio: string,\n load: boolean\n}\n\nexport class Inngang extends Component {\n elm: HTMLElement\n\n componentDidMount () {\n if (this.props.ratio) {\n this.elm.style.setProperty('--inngangHeight', this.props.ratio)\n }\n }\n\n componentDidUpdate (previousProps: Props) {\n if (this.props.ratio !== previousProps.ratio) {\n this.elm.style.setProperty('--inngangHeight', this.props.ratio)\n }\n }\n\n render () {\n const { tittel, merkelapp, url, polopolyId, load } = this.props\n return (this.elm = elm)}>\n {polopolyId &&
\n \n
}\n
\n

{tittel}

\n
{merkelapp}
\n \n \n \n
\n
\n }\n}\n","// @flow @jsx h\n\nimport { bem } from '@nrk/dh-utils'\nimport { h } from 'preact'\nimport style from './index.css'\n\ntype Props = {\n playing: boolean,\n onClick: Function\n}\n\nexport default function TogglePlayButton (props: Props) {\n const { playing } = props\n\n return (\n \n )\n}\n","// @flow @jsx h\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\nimport { bem } from '@nrk/dh-utils'\nimport TogglePlayButton from './TogglePlayButton'\nimport styles from './index.css'\n\ntype Caption = {\n in: number,\n newLine: boolean,\n text: string,\n name?: string\n}\n\ntype Props = {\n mp3: string,\n captions: Caption[],\n onPlay: (position: number) => void,\n onStop: (position: number) => void\n}\n\ntype State = {\n playing: boolean,\n progress: number\n}\n\nexport default class VoiceText extends Component {\n sound: any\n interval: any\n state = {\n playing: false,\n progress: 0\n }\n\n componentDidMount () {\n this.createSound()\n }\n\n createSound () {\n require('../wrappers/howlerWrapper.js').getHowler()\n .then(({ Howl }) => {\n this.sound = new Howl({\n src: [this.props.mp3],\n onplay: this.handlePlay,\n onpause: this.handleStop,\n onstop: this.handleStop,\n onend: this.handleStop\n })\n })\n }\n\n handlePlay = () => {\n try {\n this.props.onPlay(this.sound.seek())\n } catch (e) {\n // Do nothing\n }\n this.setState({ playing: true })\n this.startProgress()\n }\n\n handleStop = () => {\n try {\n this.props.onStop(this.sound.seek())\n } catch (e) {\n // Do nothing\n }\n this.setState({ playing: false })\n this.stopProgress()\n }\n\n handleTogglePlay = (e: Event) => {\n e.stopPropagation()\n if (this.state.playing) {\n this.sound.pause()\n } else {\n this.sound.play()\n }\n }\n\n startProgress = () => {\n if (!this.interval) {\n this.interval = setInterval(() => {\n this.setState({ progress: this.sound.seek() })\n }, 300)\n }\n }\n\n stopProgress = () => {\n if (this.interval) {\n clearInterval(this.interval)\n this.interval = null\n }\n }\n\n render () {\n return
\n 0 })}>\n \n \n {this.props.captions.map((caption, idx) => {\n const active = this.state.progress > caption.in\n return [\n caption.newLine &&
,\n \n {caption.name && {caption.name}: }\n {caption.text}\n \n ]\n })}\n
\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport VoiceText from '../../../../../lib/VoiceText'\n\nimport type Caption from '../../../../../lib/VoiceText'\nimport { connect } from '../../../../../lib/provider'\n\nimport styles from './index.css'\nimport '../../../../../lib/VoiceText/index.css'\n\ntype Props = {\n mp3: string,\n captions: Caption[],\n sendGaEvent: (Object) => void\n}\n\nexport class _Lydtekst extends Component {\n handlePlay = (position: number) => {\n this.props.sendGaEvent({\n action: 'play',\n label: this.props.mp3,\n value: position\n })\n }\n\n handleStop = (position: number) => {\n this.props.sendGaEvent({\n action: 'stop',\n label: this.props.mp3,\n value: position\n })\n }\n\n render () {\n const propsValidated = !!this.props.mp3 && this.props.captions && this.props.captions.length > 0\n return (\n
\n {propsValidated ? () : (
\n Komponenten mangler nødvendig informasjon\n
)}\n
\n )\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const Lydtekst = connector(_Lydtekst)\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { SerumLazyResponsivePicture } from '@nrk/dh-feature-components'\nimport VoiceText from '../../../../../lib/VoiceText'\n\nimport type Caption from '../../../../../lib/VoiceText'\nimport { connect } from '../../../../../lib/provider'\n\nimport styles from './index.css'\nimport '../../../../../lib/VoiceText/index.css'\n\ntype Props = {\n id: string,\n alt: string,\n mp3: string,\n captions: Caption[],\n load: boolean,\n sendGaEvent: (Object) => void\n}\n\nexport class _BildeLydtekst extends Component {\n handlePlay = (position: number) => {\n this.props.sendGaEvent({\n action: 'play',\n label: this.props.mp3,\n value: position\n })\n }\n\n handleStop = (position: number) => {\n this.props.sendGaEvent({\n action: 'stop',\n label: this.props.mp3,\n value: position\n })\n }\n\n render () {\n const { id, alt, load, mp3, captions } = this.props\n\n const propsValidated = !!mp3 && captions && captions.length > 0\n return (\n
\n
\n \n
\n\n {propsValidated ? (
\n \n
) : (
\n Komponenten mangler nødvendig informasjon\n
)}\n
\n )\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const BildeLydtekst = connector(_BildeLydtekst)\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { ViewportIntersections, HtmlContent } from '@nrk/dh-feature-components'\nimport { connect } from '../../../../lib/provider'\nimport { Person } from './Person'\nimport { Faktaboks } from './Faktaboks'\nimport { Image } from './Image'\nimport { VideoElement } from './VideoElement'\nimport { LudoElement } from './LudoElement'\nimport { Sitat } from './Sitat'\nimport { LevendeStillbilde } from './LevendeStillbilde'\nimport { Inngang } from './Inngang'\nimport { Lydtekst } from './Lydtekst'\nimport { BildeLydtekst } from './BildeLydtekst'\n\n/* styles */\nimport styles from './index.css'\n\n/* types */\nimport type { TextType } from '../../domain'\n\ntype Props = {\n tekst: TextType[],\n blockId: number,\n sendGaEvent: (Object) => void\n}\n\ntype State = {\n loadContent: any,\n visibleContent: any,\n fullyVisibleContent: any\n}\n\nconst LOADABLE_CONTENT = ['image', 'inngang', 'bildelydtekst']\nconst VISIBLE_CONTENT = ['levendeStillbilde']\nconst FULLY_VISIBLE_CONTENT = ['video', 'ludo']\n\nclass _TekstBlokk extends Component {\n trackedKeys = {}\n\n constructor () {\n super()\n this.state = {\n loadContent: [],\n visibleContent: [],\n fullyVisibleContent: []\n }\n }\n\n getContenttype (idx: number) {\n const contentList = this.props.tekst\n if (idx < 0 || idx >= contentList.length) {\n return null\n } else {\n return contentList[idx].type\n }\n }\n\n ensureLoaded (idx: number) {\n const type = this.getContenttype(idx)\n if (LOADABLE_CONTENT.indexOf(type) !== -1) {\n const loadContent = this.state.loadContent\n if (!loadContent[idx]) {\n loadContent[idx] = true\n this.setState({ loadContent })\n }\n }\n }\n\n trackOnlyOnce (key: string, action: string, label: string) {\n if (!this.trackedKeys[key]) {\n this.trackedKeys[key] = true\n this.props.sendGaEvent && this.props.sendGaEvent({ action, label })\n }\n }\n\n handleContentEnter = (element: any, idx: number) => {\n this.ensureLoaded(idx - 2)\n this.ensureLoaded(idx - 1)\n this.ensureLoaded(idx)\n this.ensureLoaded(idx + 1)\n this.ensureLoaded(idx + 2)\n\n const contentList = this.props.tekst\n const content = contentList[idx]\n\n if (VISIBLE_CONTENT.indexOf(content.type) !== -1) {\n const visibleContent = this.state.visibleContent\n if (!visibleContent[idx]) {\n visibleContent[idx] = true\n this.setState({ visibleContent })\n }\n }\n\n const key = this.props.blockId + '-' + idx\n this.trackOnlyOnce(key, 'SHOW_CONTENT', `${key}/${content.type}`)\n }\n\n handleContentLeave = (element: any, idx: number) => {\n const contentList = this.props.tekst\n const content = contentList[idx]\n\n if (VISIBLE_CONTENT.indexOf(content.type) !== -1) {\n const visibleContent = this.state.visibleContent\n if (visibleContent[idx]) {\n visibleContent[idx] = false\n this.setState({ visibleContent })\n }\n }\n }\n\n handleContentChange = (intersections: any[]) => {\n const { fullyVisibleContent } = this.state\n const contentList = this.props.tekst\n let change = false\n\n intersections.forEach((block, idx) => {\n const content = contentList[idx]\n if (FULLY_VISIBLE_CONTENT.indexOf(content.type) === -1) {\n return\n }\n\n const isVisible = !!fullyVisibleContent[idx]\n if (isVisible && block.ratio < 0.05) {\n fullyVisibleContent[idx] = false\n change = true\n } else if (!isVisible && block.isIntersecting && block.ratio > 0.95) {\n fullyVisibleContent[idx] = true\n change = true\n }\n })\n\n if (change) {\n this.setState({ fullyVisibleContent })\n }\n }\n\n render () {\n return \n {\n this.props.tekst.map((element, idx) => {\n switch (element.type) {\n case 'text':\n return \n case 'overskrift':\n return

{element.value}

\n case 'image':\n return \n case 'video':\n const { poster, mp4, webm } = element.value\n return \n case 'ludo':\n return \n case 'person':\n return \n case 'faktaboks':\n return \n case 'sitat':\n return \n case 'levendeStillbilde':\n return \n case 'bildelydtekst':\n return \n case 'lydtekst':\n return \n case 'inngang':\n return \n default:\n return
\n                {JSON.stringify(element, null, 2)}\n              
\n }\n })\n\n }\n \n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const TekstBlokk = connector(_TekstBlokk)\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { SerumLazyResponsivePicture } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\n\ntype Props = {\n id: string,\n alt: string,\n caption: string,\n load: boolean\n}\n\nexport class BildeBlokk extends Component {\n render () {\n const { id, alt, caption, load } = this.props\n return
\n
\n \n {caption &&
{caption}
}\n
\n
\n }\n}\n","/** @jsx h */\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\n\nclass SerumImage extends PureComponent {\n render() {\n const _this$props = this.props,\n className = _this$props.className,\n alt = _this$props.alt,\n id = _this$props.id,\n quality = _this$props.quality,\n ratio = _this$props.ratio,\n width = _this$props.width;\n const src = createImageUrl({\n id,\n width,\n quality,\n ratio\n });\n return h(\"img\", {\n className: className,\n src: src,\n alt: alt\n });\n }\n\n}\n\nexport default SerumImage;","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { SerumImage } from '@nrk/dh-feature-components'\n\n/* styles */\nimport styles from './index.css'\nimport { gridAspect } from '../../grid.css'\n\n/* types */\nimport type { SimpleImageType } from '../../domain'\n\ntype Props = {\n images: SimpleImageType[],\n}\n\nexport class DobbelBildeBlokk extends Component {\n render () {\n const { images } = this.props\n if (images.length < 2) {\n return
Denne komponenten krever minst 2 bilder.
\n }\n\n return
\n
\n
\n
\n
\n
\n \n
\n
\n \n {images[0].caption}\n \n
\n
\n
\n
\n \n
\n
\n \n {images[1].caption}\n \n
\n
\n
\n
\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { bem } from '@nrk/dh-utils'\nimport { ViewportIntersections, HtmlContent } from '@nrk/dh-feature-components'\n\n/* styles */\nimport styles from './index.css'\n\n/* types */\nimport type { TextType } from '../../domain'\n\ntype Props = {\n tekst: TextType[],\n}\n\ntype State = {\n visible: boolean\n}\n\nexport class VitenskapBlokk extends Component {\n handleEnter = () => {\n this.setState({ visible: true })\n }\n\n handleLeave = () => {\n this.setState({ visible: false })\n }\n\n render () {\n const { visible } = this.state\n return \n
\n\n
\n
\n
\n\n
\n
\n
\n {\n this.props.tekst.map((contentElement, idx) => {\n switch (contentElement.type) {\n case 'text':\n return \n }\n })\n\n }\n
\n
\n
\n
\n \n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { Video } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\nimport type { VideoType } from '../../domain'\nimport { toVideoSrc } from '../../../common'\n\ntype Props = {\n playing: boolean,\n video: VideoType,\n title: string,\n caption: string\n}\n\nexport class LevendeStillbildeBlokk extends Component {\n render () {\n const { playing, video, title, caption } = this.props\n const vid = toVideoSrc(video)\n\n return
\n
\n \n {caption &&
{caption}
}\n
\n
\n }\n}\n","// @flow @jsx h\n\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\n/* eslint-disable jsx-a11y/aria-role */\n/* eslint-disable compat/compat */\n\nimport { Component, h } from 'preact'\nimport { SmartVideo } from '@nrk/dh-feature-components'\nimport { toVideoSrc } from '../../../common'\n\nimport styles from './index.css'\nimport '@nrk/dh-feature-components/dist/module/video/SmartVideo/index.css'\nimport type { VideoType } from '../../domain'\n\ntype Props = {\n sted: string,\n info: string,\n alt: string,\n horizontal: VideoType,\n vertical: VideoType,\n playing: boolean,\n viewport: { width: number, height: number }\n}\n\nexport class StedintroVideoBlokk extends Component {\n animationElm: HTMLElement\n animation: any\n animationData: any\n lottie: any\n\n componentDidMount () {\n Promise.all([\n require('../../../../lib/wrappers/lottieWrapper').getLottie(),\n fetch('https://static.nrk.no/dh/gfx/2019/sporten/vbm/lottie/sted_moh_mal_ny2.json').then(res => res.json())\n ])\n .then(\n ([lottie, animationData]) => {\n animationData.layers[3].t.d.k[0].s.t = this.props.sted.toUpperCase()\n animationData.layers[4].t.d.k[0].s.t = this.props.info\n\n this.lottie = lottie\n this.animationData = animationData\n })\n }\n\n handleEnter () {\n this.animation = this.lottie.loadAnimation({\n container: this.animationElm, // the dom element that will contain the animation\n renderer: 'svg',\n loop: false,\n autoplay: false,\n rendererSettings: { preserveAspectRatio: 'xMinYMax meet' },\n animationData: this.animationData\n })\n this.animation.setSpeed(1.5)\n this.animation.play()\n }\n\n handleLeave () {\n this.animation.destroy()\n delete this.animation\n }\n\n componentDidUpdate (previousProps: Props) {\n if (this.lottie && !previousProps.playing && this.props.playing) {\n this.handleEnter()\n }\n\n if (this.animation && previousProps.playing && !this.props.playing) {\n this.handleLeave()\n }\n }\n\n isHorizontal = () => {\n if (typeof window !== 'undefined' && window.matchMedia) {\n return window.matchMedia('(min-width: 720px)').matches\n } else {\n return false\n }\n }\n\n render () {\n const { playing, horizontal, vertical, viewport } = this.props\n\n return
\n \n (this.animationElm = elm)}\n aria-label={this.props.sted + ' ' + this.props.info} role='text' />\n
\n }\n}\n","// @flow @jsx h\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\nimport { bem, toArray } from '@nrk/dh-utils'\nimport { ViewportIntersections, SerumLazyResponsivePicture } from '@nrk/dh-feature-components'\n\n/* Types */\nimport type { EpisodeType } from '../../domain'\n\n/* Styles */\nimport styles from './index.css'\n\ntype Props = {\n episoder: EpisodeType[],\n load: boolean\n}\n\ntype State = {\n displayLeft: boolean,\n displayRight: boolean,\n loadContent: boolean[],\n visibleContent: boolean[]\n}\n\ntype LinkProps = {\n active: boolean,\n url: string,\n className: string,\n children: any\n}\n\nfunction Link (props: LinkProps) {\n if (props.active) {\n return \n {props.children}\n \n } else {\n return
{props.children}
\n }\n}\n\nexport class EpisidevelgerBlokk extends Component {\n // looping = false\n elm: any\n sweetScroll: any\n\n constructor () {\n super()\n this.state = {\n displayLeft: true,\n displayRight: true,\n loadContent: [],\n visibleContent: []\n }\n }\n\n componentDidMount () {\n if (!('scrollBehavior' in this.elm.style && this.elm.scrollTo)) {\n this.sweetScroll = require('../../../../lib/wrappers/sweetScrollWrapper')\n .getSweetScroll()\n .then(SweetScroll => new SweetScroll({ horizontal: true }, this.elm))\n }\n this.hideScrollbar()\n this.updateSizes()\n window.addEventListener('resize', this.updateSizes)\n\n this.scrollTo(this.elm.children[this.getStartIndex()])\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.updateSizes)\n }\n\n updateSizes = () => {\n /* Calculating width of spacers. Too complicated to do in css */\n const containerWidth = this.elm.offsetWidth\n const containerLeftHalf = containerWidth / 2\n const containerRightHalf = containerWidth / 2\n\n const firstImage = this.elm.children[1]\n const lastImage = this.elm.children[this.elm.children.length - 2]\n\n this.elm.style.setProperty('--ev-component-width', `${this.elm.offsetWidth}px`)\n this.elm.style.setProperty('--ev-left-spacer-width', `${containerLeftHalf - firstImage.offsetWidth / 2}px`)\n this.elm.style.setProperty('--ev-right-spacer-width', `${containerRightHalf - lastImage.offsetWidth / 2}px`)\n }\n\n hideScrollbar () {\n const barHeight = this.elm.offsetHeight - this.elm.clientHeight\n this.elm.style.marginBottom = `-${barHeight}px`\n this.elm.style.maxHeight = `calc(100% + ${barHeight}px)`\n }\n\n getStartIndex () {\n // Calculate width of left half of container, including scroll padding\n const containerWidth = this.elm.offsetWidth\n const containerLeftHalf = containerWidth / 2\n\n const firstImage = this.elm.children[1]\n const secondImage = this.elm.children[2]\n\n if (containerLeftHalf > firstImage.offsetWidth + secondImage.offsetWidth / 2) {\n // Container is wide enough to show first image, when second image is selected\n return 2\n } else {\n return 1\n }\n }\n\n scrollTo (image: HTMLElement, smooth: boolean = false) {\n const elementCenter = image.offsetLeft + image.offsetWidth / 2\n const containerWidth = this.elm.offsetWidth\n const left = elementCenter - containerWidth / 2\n if (this.sweetScroll) {\n this.sweetScroll.then(scroll => (scroll.to({ left })))\n } else {\n this.elm.scrollTo({ left, behavior: smooth ? 'smooth' : 'instant' })\n }\n }\n\n findActiveImage () {\n const containerWidth = this.elm.offsetWidth\n const scrollLeft = this.elm.scrollLeft\n const matching = toArray(this.elm.children).filter(image => {\n const leftOfCenter = image.offsetLeft < scrollLeft + containerWidth / 2\n const rightOfCenter = image.offsetLeft + image.offsetWidth > scrollLeft + containerWidth / 2\n return leftOfCenter && rightOfCenter\n })\n\n if (matching && matching.length > 0) {\n return matching[0]\n } else {\n return undefined\n }\n }\n\n setDisplayLeft (displayLeft: boolean) {\n if (displayLeft !== this.state.displayLeft) {\n this.setState({ displayLeft })\n }\n }\n\n setDisplayRight (displayRight: boolean) {\n if (displayRight !== this.state.displayRight) {\n this.setState({ displayRight })\n }\n }\n\n handleScrollLeft = () => {\n const activeImage = this.findActiveImage()\n if (activeImage && activeImage.previousSibling) {\n this.scrollTo(activeImage.previousSibling, true)\n }\n }\n\n handleScrollRight = () => {\n const activeImage = this.findActiveImage()\n if (activeImage && activeImage.nextSibling) {\n this.scrollTo(activeImage.nextSibling, true)\n }\n }\n\n handleImageChange = (intersections: any[]) => {\n const images = intersections.slice(1, intersections.length - 1)\n\n const visibleContent = images.map((i, idx) => {\n const current = images[idx].isIntersecting\n const next = images[idx + 1] && images[idx + 1].isIntersecting\n const prev = images[idx - 1] && images[idx - 1].isIntersecting\n return current || next || prev\n })\n\n this.setState({ visibleContent: visibleContent })\n\n const leftImage = images[0]\n const rightImage = images[images.length - 1]\n this.setDisplayLeft(leftImage.ratio < 0.95)\n this.setDisplayRight(rightImage.ratio < 0.95)\n }\n\n render () {\n const { episoder, load } = this.props\n const { displayLeft, displayRight, visibleContent } = this.state\n\n return (\n
\n
\n

Vitenskapen bak medaljen

\n
\n
\n (this.elm = intersectionsElm.elm)}>\n
\n {\n episoder.map((episode, idx) => (\n \n
\n \n \n {episode.published !== 'true' &&\n
Kommer snart
}\n
\n
\n
\n {episode.title}\n
\n
\n {episode.subtitle}\n
\n
\n \n
\n
\n
))\n }\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n )\n }\n}\n","// @flow @jsx h\n\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\n/* eslint-disable jsx-a11y/aria-role */\n/* eslint-disable compat/compat */\n\nimport { Component, h } from 'preact'\nimport { Video, SerumLazySmartPicture } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\n\ntype Props = {\n sted: string,\n info: string,\n alt: string,\n polopolyId: string,\n load: boolean,\n playing: boolean\n}\n\nexport class StedintroBildeBlokk extends Component {\n animationElm: HTMLElement\n animationData: any\n lottie: any\n animation: any\n video: Video\n\n componentDidMount () {\n Promise.all([\n require('../../../../lib/wrappers/lottieWrapper').getLottie(),\n fetch('https://static.nrk.no/dh/gfx/2019/sporten/vbm/lottie/sted_moh_mal_ny2.json').then(res => res.json())\n ])\n .then(\n ([lottie, animationData]) => {\n animationData.layers[3].t.d.k[0].s.t = this.props.sted.toUpperCase()\n animationData.layers[4].t.d.k[0].s.t = this.props.info\n\n this.lottie = lottie\n this.animationData = animationData\n })\n }\n\n handleEnter () {\n this.animation = this.lottie.loadAnimation({\n container: this.animationElm, // the dom element that will contain the animation\n renderer: 'svg',\n loop: false,\n autoplay: false,\n rendererSettings: { preserveAspectRatio: 'xMinYMax meet' },\n animationData: this.animationData\n })\n this.animation.setSpeed(1.5)\n this.animation.play()\n }\n\n handleLeave () {\n this.animation.destroy()\n delete this.animation\n }\n\n componentDidUpdate (previousProps: Props) {\n if (this.lottie && !previousProps.playing && this.props.playing) {\n this.handleEnter()\n }\n\n if (this.animation && previousProps.playing && !this.props.playing) {\n this.handleLeave()\n }\n }\n\n render () {\n const { load, polopolyId } = this.props\n\n return
\n
\n \n (this.animationElm = elm)}\n aria-label={this.props.sted + ' ' + this.props.info} role='text'\n />\n
\n
\n }\n}\n","// @flow @jsx h\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\nimport { bem, toArray } from '@nrk/dh-utils'\nimport { ViewportIntersections, SerumLazyResponsivePicture } from '@nrk/dh-feature-components'\n\nimport styles from './index.css'\n\nimport type { SimpleImageType } from '../../domain'\n\nconst VERTICAL_ASPECTS = ['3:4', '34']\n\ntype Props = {\n images: SimpleImageType[],\n load: boolean\n}\n\ntype State = {\n displayLeft: boolean,\n displayRight: boolean,\n loadContent: boolean[],\n visibleContent: boolean[]\n}\n\nexport class ImageGallery extends Component {\n // looping = false\n elm: any\n sweetScroll: any\n\n constructor () {\n super()\n this.state = {\n displayLeft: true,\n displayRight: true,\n loadContent: [],\n visibleContent: []\n }\n }\n\n componentDidMount () {\n if (!('scrollBehavior' in this.elm.style && this.elm.scrollTo)) {\n this.sweetScroll = require('../../../../lib/wrappers/sweetScrollWrapper')\n .getSweetScroll()\n .then(SweetScroll => new SweetScroll({ horizontal: true }, this.elm))\n }\n this.hideScrollbar()\n this.updateSizes()\n window.addEventListener('resize', this.updateSizes)\n\n this.scrollTo(this.elm.children[this.getStartIndex()])\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.updateSizes)\n }\n\n updateSizes = () => {\n /* Calculating width of spacers. Too complicated to do in css */\n const containerWidth = this.elm.offsetWidth\n const containerLeftHalf = containerWidth / 2\n const containerRightHalf = containerWidth / 2\n\n const firstImage = this.elm.children[1]\n const lastImage = this.elm.children[this.elm.children.length - 2]\n\n this.elm.style.setProperty('--bs-component-width', `${this.elm.offsetWidth}px`)\n this.elm.style.setProperty('--bs-left-spacer-width', `${containerLeftHalf - firstImage.offsetWidth / 2}px`)\n this.elm.style.setProperty('--bs-right-spacer-width', `${containerRightHalf - lastImage.offsetWidth / 2}px`)\n }\n\n hideScrollbar () {\n const barHeight = this.elm.offsetHeight - this.elm.clientHeight\n this.elm.style.marginBottom = `-${barHeight}px`\n this.elm.style.maxHeight = `calc(100% + ${barHeight}px)`\n }\n\n getStartIndex () {\n // Calculate width of left half of container, including scroll padding\n const containerWidth = this.elm.offsetWidth\n const containerLeftHalf = containerWidth / 2\n\n const firstImage = this.elm.children[1]\n const secondImage = this.elm.children[2]\n\n if (containerLeftHalf > firstImage.offsetWidth + secondImage.offsetWidth / 2) {\n // Container is wide enough to show first image, when second image is selected\n return 2\n } else {\n return 1\n }\n }\n\n scrollTo (image: HTMLElement, smooth: boolean = false) {\n const elementCenter = image.offsetLeft + image.offsetWidth / 2\n const containerWidth = this.elm.offsetWidth\n const left = elementCenter - containerWidth / 2\n if (this.sweetScroll) {\n this.sweetScroll.then(scroll => (scroll.to({ left })))\n } else {\n this.elm.scrollTo({ left, behavior: smooth ? 'smooth' : 'instant' })\n }\n }\n\n findActiveImage () {\n const containerWidth = this.elm.offsetWidth\n const scrollLeft = this.elm.scrollLeft\n const matching = toArray(this.elm.children).filter(image => {\n const leftOfCenter = image.offsetLeft < scrollLeft + containerWidth / 2\n const rightOfCenter = image.offsetLeft + image.offsetWidth > scrollLeft + containerWidth / 2\n return leftOfCenter && rightOfCenter\n })\n\n if (matching && matching.length > 0) {\n return matching[0]\n } else {\n return undefined\n }\n }\n\n setDisplayLeft (displayLeft: boolean) {\n if (displayLeft !== this.state.displayLeft) {\n this.setState({ displayLeft })\n }\n }\n\n setDisplayRight (displayRight: boolean) {\n if (displayRight !== this.state.displayRight) {\n this.setState({ displayRight })\n }\n }\n\n handleScrollLeft = () => {\n const activeImage = this.findActiveImage()\n if (activeImage && activeImage.previousSibling) {\n this.scrollTo(activeImage.previousSibling, true)\n }\n }\n\n handleScrollRight = () => {\n const activeImage = this.findActiveImage()\n if (activeImage && activeImage.nextSibling) {\n this.scrollTo(activeImage.nextSibling, true)\n }\n }\n\n handleImageChange = (intersections: any[]) => {\n const images = intersections.slice(1, intersections.length - 1)\n images.forEach((image, idx) => {\n if (image.isIntersecting) {\n this.ensureLoaded(idx)\n }\n })\n\n const visibleContent = images.map((i, idx) => {\n const current = images[idx].isIntersecting\n const next = images[idx + 1] && images[idx + 1].isIntersecting\n const prev = images[idx - 1] && images[idx - 1].isIntersecting\n return current || next || prev\n })\n\n this.setState({ visibleContent: visibleContent })\n\n const leftImage = images[0]\n const rightImage = images[images.length - 1]\n this.setDisplayLeft(leftImage.ratio < 0.95)\n this.setDisplayRight(rightImage.ratio < 0.95)\n }\n\n ensureLoaded = (idx: number) => {\n const { loadContent } = this.state\n\n const start = Math.max(idx - 1, 0)\n const end = Math.min(idx + 1, this.props.images.length - 1)\n\n let changed = false\n for (let i = start; i <= end; i++) {\n if (!loadContent[i]) {\n loadContent[i] = true\n changed = true\n }\n }\n\n if (changed) {\n this.setState({ loadContent })\n }\n }\n\n render () {\n const { images } = this.props\n const { displayLeft, displayRight, visibleContent } = this.state\n\n return (\n
\n (this.elm = intersectionsElm.elm)}>\n
\n {\n images.map((image, idx) => (\n \n
\n \n
\n {image.caption}\n
\n
\n
))\n }\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { Video, ViewportIntersections, SerumLazyResponsivePicture, HtmlContent } from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\n\nimport styles from './index.css'\n\nimport type { VisuellHistorieCardType } from '../../domain'\nimport { connect } from '../../../../lib/provider'\nimport { toVideoSrc } from '../../../common'\n\ntype Props = {\n cards: VisuellHistorieCardType[],\n align: 'left' | 'right',\n load: boolean,\n active: boolean,\n blockId: number,\n sendGaEvent: (Object) => void\n}\n\ntype State = {\n activeIdx: number,\n storyMargin: string\n}\n\nclass _VisuellHistorie extends Component {\n elm: HTMLElement\n trackedKeys = {}\n\n constructor () {\n super()\n this.state = {\n activeIdx: 0,\n storyMargin: '0px'\n }\n }\n\n componentDidMount () {\n this.updateSizes()\n window.addEventListener('resize', this.updateSizes)\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.updateSizes)\n }\n\n updateSizes = () => {\n const firstImage = this.elm.children[0].children[0]\n const storyMargin = window.getComputedStyle(firstImage).top\n this.setState({ storyMargin })\n }\n\n trackOnlyOnce (key: string, action: string, label: string) {\n if (!this.trackedKeys[key]) {\n this.trackedKeys[key] = true\n this.props.sendGaEvent && this.props.sendGaEvent({ action, label })\n }\n }\n\n handleChange = (intersections: any[]) => {\n const activeIntersection = intersections\n .map((intersection, idx) => ({ ...intersection, idx }))\n .filter(i => i.idx % 2 === 1)\n .filter(i => i.isIntersecting && i.ratio > 0)\n .pop()\n\n if (!activeIntersection) {\n return\n }\n\n const activeIdx = (activeIntersection.idx - 1) / 2\n if (activeIdx !== this.state.activeIdx) {\n this.setState({ activeIdx })\n\n const key = this.props.blockId + '-' + activeIdx\n this.trackOnlyOnce(key, 'SHOW_CONTENT', `${key}/vh-card`)\n }\n }\n\n render () {\n const { cards, align = 'left', active } = this.props\n const { storyMargin = '0px', activeIdx } = this.state\n const negativeStoryMargin = storyMargin.startsWith('-') ? storyMargin.substring(1) : '-' + storyMargin\n const rootMargin = `${negativeStoryMargin} 0px ${negativeStoryMargin} 0px`\n\n return
(this.elm = elm)}>\n \n {\n cards.map((card, index) => {\n const visible = index <= activeIdx && index > activeIdx - 2\n const first = index === 0\n const last = index === cards.length - 1\n const current = index === activeIdx\n\n const video = card.video && toVideoSrc(card.video)\n return [\n \n {\n card.polopolyId && \n }\n {\n video && \n }\n
,\n \n
\n \n
\n
\n ]\n })\n }\n \n
\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const VisuellHistorie = connector(_VisuellHistorie)\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { Video, ViewportIntersections, SerumLazyResponsivePicture, HtmlContent } from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\n\nimport styles from './index.css'\n\nimport type { VideoType, VisuellHistorieCardType } from '../../domain'\nimport { connect } from '../../../../lib/provider'\nimport { toVideoSrc } from '../../../common'\n\nfunction round (num: number, decimals: number) {\n const multiplier = Math.pow(10.0, decimals)\n return Math.round(num * multiplier) / multiplier\n}\n\nfunction easeOutQuad (t) {\n return t * (2 - t)\n}\n\nfunction clamp (n, min, max) {\n return Math.max(Math.min(n, max), min)\n}\n\ntype Props = {\n cards: VisuellHistorieCardType[],\n video: VideoType,\n align: 'left' | 'right',\n load: boolean,\n active: boolean,\n blockId: number,\n sendGaEvent: (Object) => void\n}\n\ntype State = {\n activeIdx: number,\n storyMargin: string,\n started: boolean\n}\n\nclass _VideoHistorie extends Component {\n elm: HTMLElement\n trackedKeys = {}\n videoElm: any\n duration: number\n currentTime: number\n targetTime: number\n unmounting = false\n easingDuration = 0.6\n\n constructor () {\n super()\n this.state = {\n activeIdx: -1,\n storyMargin: '0px',\n started: false\n }\n }\n\n componentDidMount () {\n this.updateSizes()\n window.addEventListener('resize', this.updateSizes)\n\n this.videoElm.elm.setAttribute('autobuffer', 'autobuffer')\n this.enableVideoSeek()\n this.duration = 0\n this.videoElm.elm.currentTime = 0\n this.targetTime = 0\n }\n\n componentWillUnmount () {\n this.unmounting = true\n window.removeEventListener('resize', this.updateSizes)\n }\n\n calculateTargetTime (idx) {\n const { cards } = this.props\n const card = cards[idx]\n if (!card) {\n return null\n }\n\n if (card.targetTime) {\n return parseFloat(card.targetTime)\n } else {\n const length = cards.length - 1\n return this.duration / length * idx\n }\n }\n\n componentDidUpdate (previousProps: Props, previousState: State) {\n const { activeIdx } = this.state\n const { active } = this.props\n if (activeIdx !== previousState.activeIdx) {\n const targetTime = this.calculateTargetTime(activeIdx)\n if (typeof targetTime === 'number') {\n this.targetTime = targetTime\n }\n }\n\n if (active && !previousProps.active) {\n this.enableVideoSeek()\n }\n }\n\n updateSizes = () => {\n const firstImage = this.elm && this.elm.querySelector('.' + styles.videoHistorie__videoItem)\n if (!firstImage) {\n return\n }\n\n const storyMargin = window.getComputedStyle(firstImage).top\n\n if (storyMargin !== this.state.storyMargin) {\n this.setState({ storyMargin })\n }\n }\n\n getSpeed (diff: number) {\n const normalSpeed = clamp(diff / this.easingDuration, -1, 1)\n const multiplier = this.shouldFastForward(diff) ? 2 : 1\n return multiplier * easeOutQuad(normalSpeed)\n }\n\n shouldFastForward (diff: number) {\n if (diff > 0) {\n const targetTime = this.calculateTargetTime(this.state.activeIdx - 1)\n return targetTime && (this.videoElm.elm.currentTime < targetTime)\n } else {\n const targetTime = this.calculateTargetTime(this.state.activeIdx + 1)\n return targetTime && (this.videoElm.elm.currentTime > targetTime)\n }\n }\n\n enableVideoSeek () {\n let prevTime\n const loop = (timestamp) => {\n if (this.unmounting) {\n return\n }\n if (!prevTime) {\n prevTime = timestamp\n }\n\n if (typeof this.targetTime === 'number' && this.videoElm.elm.currentTime !== this.targetTime) {\n /* Approximate normal playback */\n const dt = (timestamp - prevTime) / 1000\n const diff = this.targetTime - this.videoElm.elm.currentTime\n const speed = this.getSpeed(diff)\n\n const nextTime = round(this.videoElm.elm.currentTime + dt * speed, 2.0)\n\n if (speed >= 0) {\n // Use normal playback for better Firefox support\n if (Math.abs(nextTime - this.targetTime) < 0.1) {\n this.videoElm.pause()\n this.videoElm.elm.currentTime = this.targetTime\n } else if (this.videoElm.elm.currentTime !== nextTime) {\n this.videoElm.elm.playbackRate = speed\n if (!this.videoElm.elm.playing) {\n this.videoElm.elm.play()\n }\n // this.videoElm.seek(nextTime)\n // this.videoElm.elm.currentTime = nextTime\n }\n } else {\n this.videoElm.pause()\n if (Math.abs(nextTime - this.targetTime) < 0.1) {\n this.videoElm.elm.currentTime = this.targetTime\n } else if (this.videoElm.elm.currentTime !== nextTime) {\n this.videoElm.elm.currentTime = nextTime\n }\n }\n }\n\n prevTime = timestamp\n if (this.props.active) {\n requestAnimationFrame(loop)\n }\n }\n requestAnimationFrame(loop)\n }\n\n trackOnlyOnce (key: string, action: string, label: string) {\n if (!this.trackedKeys[key]) {\n this.trackedKeys[key] = true\n this.props.sendGaEvent && this.props.sendGaEvent({ action, label })\n }\n }\n\n handleChange = (intersections: any[]) => {\n const activeIntersection = intersections\n .map((intersection, idx) => ({ ...intersection, idx }))\n .filter(i => i.idx % 2 === 1)\n .filter(i => i.isIntersecting && i.ratio > 0)\n .pop()\n\n if (!activeIntersection) {\n return\n }\n\n const activeIdx = (activeIntersection.idx - 1) / 2\n if (activeIdx !== this.state.activeIdx) {\n this.setState({ activeIdx })\n\n const key = this.props.blockId + '-' + activeIdx\n this.trackOnlyOnce(key, 'SHOW_CONTENT', `${key}/vh-card`)\n }\n }\n\n handleDurationChange = (duration: number) => {\n this.duration = duration\n }\n\n handlePlay = () => {\n // Set video as started to cancle playback. Playback should be controlled by cards (activeIdx)\n this.setState({ started: true })\n }\n\n render () {\n const { cards, align = 'left', active, video } = this.props\n const { storyMargin = '0px', activeIdx } = this.state\n const negativeStoryMargin = storyMargin.startsWith('-') ? storyMargin.substring(1) : '-' + storyMargin\n const rootMargin = `${negativeStoryMargin} 0px ${negativeStoryMargin} 0px`\n\n const vid = toVideoSrc(video)\n\n return
(this.elm = elm)}>\n \n {\n cards.map((card, index) => {\n const visible = index <= activeIdx && index > activeIdx - 2\n const first = index === 0\n const last = index === cards.length - 1\n const current = index === activeIdx\n return [\n \n \n
,\n \n
\n \n
\n
\n ]\n })\n }\n
\n (this.videoElm = elm)}\n playing={this.props.active && !this.state.started}\n poster={vid.poster}\n sources={vid.sources}\n className={styles.videoHistorie__video}\n muted\n playsInline\n disableRemotePlayback\n preload='none'\n onPlay={this.handlePlay}\n onDurationChange={this.unmounting ? null : this.handleDurationChange} />\n
\n \n
\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const VideoHistorie = connector(_VideoHistorie)\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { ViewportIntersections, SerumLazyResponsivePicture, HtmlContent } from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\n\nimport styles from './index.css'\n\nimport type { VisuellHistorieCardType } from '../../domain'\nimport { connect } from '../../../../lib/provider'\n\ntype Props = {\n cards: VisuellHistorieCardType[],\n align: 'left' | 'right',\n load: boolean,\n active: boolean,\n blockId: number,\n sendGaEvent: (Object) => void\n}\n\ntype State = {\n activeIdx: number,\n storyMargin: string\n}\n\nclass _VisuellHistorieScroll extends Component {\n elm: HTMLElement\n trackedKeys = {}\n\n constructor () {\n super()\n this.state = {\n activeIdx: 0,\n storyMargin: '0px'\n }\n }\n\n componentDidMount () {\n this.updateSizes()\n window.addEventListener('resize', this.updateSizes)\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.updateSizes)\n }\n\n updateSizes = () => {\n const firstImage = this.elm.children[0].children[0]\n const storyMargin = window.getComputedStyle(firstImage).top\n this.setState({ storyMargin })\n }\n\n trackOnlyOnce (key: string, action: string, label: string) {\n if (!this.trackedKeys[key]) {\n this.trackedKeys[key] = true\n this.props.sendGaEvent && this.props.sendGaEvent({ action, label })\n }\n }\n\n handleChange = (intersections: any[]) => {\n const activeIntersection = intersections\n .map((intersection, idx) => ({ ...intersection, idx }))\n .filter(i => i.idx % 2 === 1)\n .filter(i => i.isIntersecting && i.ratio > 0)\n .pop()\n\n if (!activeIntersection) {\n return\n }\n\n const activeIdx = (activeIntersection.idx - 1) / 2\n if (activeIdx !== this.state.activeIdx) {\n this.setState({ activeIdx })\n\n const key = this.props.blockId + '-' + activeIdx\n this.trackOnlyOnce(key, 'SHOW_CONTENT', `${key}/vh-card`)\n }\n }\n\n componentDidUpdate () {\n const { cards } = this.props\n const { activeIdx } = this.state\n if (activeIdx > -1 && activeIdx < cards.length) {\n const card = cards[activeIdx]\n this.elm.style.setProperty('--vhs-position', card.position + '%')\n }\n }\n\n render () {\n const { cards, align = 'left', active } = this.props\n const { storyMargin = '0px', activeIdx } = this.state\n const negativeStoryMargin = storyMargin.startsWith('-') ? storyMargin.substring(1) : '-' + storyMargin\n const rootMargin = `${negativeStoryMargin} 0px ${negativeStoryMargin} 0px`\n const activeCard = cards[activeIdx]\n\n return
(this.elm = elm)}>\n \n {\n cards.map((card, index) => {\n const visible = index <= activeIdx && index > activeIdx - 2\n const first = index === 0\n const last = index === cards.length - 1\n const current = index === activeIdx\n return [\n \n \n
,\n \n
\n \n
\n
\n ]\n })\n }\n \n
\n }\n}\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const VisuellHistorieScroll = connector(_VisuellHistorieScroll)\n","// @flow @jsx h\n\nimport { Component, h } from 'preact'\n\nimport styles from './index.css'\n\ntype Person = {\n navn: string,\n epost: string\n}\n\ntype Group = {\n gruppenavn: string,\n personer: Person[]\n}\n\ntype FooterType = {\n credits: Group[],\n published: string,\n facebookUrl: string,\n twitterUrl: string\n}\n\ntype Props = {\n footer: FooterType\n}\n\nexport class Footer extends Component {\n render () {\n const { footer } = this.props\n const { credits, published, facebookUrl, twitterUrl } = footer\n return
\n\n {\n credits.map((group, idx) => {\n return
\n

{group.gruppenavn}

\n
    \n {group.personer.map((person, idx) => {\n if (person.epost) {\n return
  • {person.navn}
  • \n } else {\n return
  • {person.navn}
  • \n }\n })}\n
\n
\n })\n }\n\n
{published}
\n
\n
\n \n Gå til nrk.no\n
\n\n \n
\n
\n }\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\n\nimport styles from './index.css'\nimport { SerumResponsivePicture, HtmlContent } from '@nrk/dh-feature-components'\n\ntype Props = {\n byline: string,\n bylinebilde: string,\n load: boolean\n}\n\nexport class Byline extends Component {\n render () {\n const { byline, bylinebilde, load } = this.props\n return
\n
\n
\n \n
\n \n Journalist\n
\n
\n }\n}\n","function create() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var root = opts.root;\n\n\n var getRect = function getRect() {\n if (root instanceof Element) {\n var rect = root.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height\n };\n }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n };\n\n var subscribe = function subscribe(observer) {\n var isDynamicViewport = false;\n var isTouching = false;\n var rect = { width: -1, height: -1 };\n\n var listeners = {\n orientationchange: function orientationchange() {\n rect = { width: -1, height: -1 };\n },\n resize: function resize() {\n var prevRect = rect;\n\n rect = getRect();\n\n if (isDynamicViewport && rect.height < prevRect.height) {\n rect.height = prevRect.height;\n }\n\n observer.next(rect);\n },\n scroll: function scroll() {\n if (isTouching) {\n isDynamicViewport = true;\n window.removeEventListener('scroll', listeners.scroll);\n }\n },\n touchstart: function touchstart() {\n isTouching = true;\n },\n touchend: function touchend() {\n isTouching = false;\n }\n };\n\n window.addEventListener('orientationchange', listeners.orientationchange);\n window.addEventListener('resize', listeners.resize);\n window.addEventListener('scroll', listeners.scroll);\n window.addEventListener('touchstart', listeners.touchstart);\n window.addEventListener('touchend', listeners.touchend);\n\n // Trigger initial \"resize\"\n listeners.resize();\n\n return {\n unsubscribe: function unsubscribe() {\n window.removeEventListener('orientationchange', listeners.orientationchange);\n window.removeEventListener('resize', listeners.resize);\n window.removeEventListener('scroll', listeners.scroll);\n window.removeEventListener('touchstart', listeners.touchstart);\n window.removeEventListener('touchend', listeners.touchend);\n }\n };\n };\n\n return { subscribe: subscribe };\n}\n\nvar index = { create: create };\n\nexport { create };\nexport default index;\n","// @flow\n\n/** @jsx h */\n\nimport MaxViewportObservable from '@nrk/max-viewport-observable'\nimport { Component, h } from 'preact'\n\ntype Props = {\n height?: string,\n onViewportChange: (viewport: any) => void\n}\n\nexport default class MaxViewportRect extends Component {\n dispose: () => void\n elm: HTMLDivElement\n viewport$: any\n\n componentDidMount () {\n this.viewport$ = MaxViewportObservable.create({\n root: this.elm\n })\n\n this.dispose = this.viewport$.subscribe({\n next: (viewport) => {\n this.props.onViewportChange(viewport)\n }\n })\n }\n\n componentWillUnmount () {\n this.dispose()\n }\n\n render () {\n const height = this.props.height || 100\n const inlineStyle = { height: `${height}vh`, width: '100%', position: 'absolute' }\n return
(this.elm = elm)} style={inlineStyle} />\n }\n}\n","// @flow @jsx h\nimport { h, Component } from 'preact'\nimport { bem } from '@nrk/dh-utils'\nimport { ViewportIntersections, HtmlContent } from '@nrk/dh-feature-components'\nimport { connect } from '../../lib/provider'\nimport { Intro } from './Intro'\nimport { TekstBlokk } from './blokker/TekstBlokk'\nimport { BildeBlokk } from './blokker/BildeBlokk'\nimport { DobbelBildeBlokk } from './blokker/DobbelBildeBlokk'\nimport { VitenskapBlokk } from './blokker/VitenskapBlokk'\nimport { LevendeStillbildeBlokk } from './blokker/LevendeStillbildeBlokk'\nimport { StedintroVideoBlokk } from './blokker/StedintroVideoBlokk'\nimport { EpisidevelgerBlokk } from './blokker/EpisodevelgerBlokk'\nimport { StedintroBildeBlokk } from './blokker/StedintroBildeBlokk'\nimport { ImageGallery } from './blokker/ImageGallery'\nimport { VisuellHistorie } from './blokker/VisuellHistorie'\nimport { VideoHistorie } from './blokker/VideoHistorie'\nimport { VisuellHistorieScroll } from './blokker/VisuellHistorieScroll'\nimport { Footer } from './Footer'\nimport { Byline } from './Byline'\n\n/* types */\nimport type { Doc } from './domain'\nimport MaxViewportRect from './MaxViewportRect'\n\n/* style */\nimport styles from './App.css'\n\nconst LOADABLE_CONTENT = ['visuellHistorieBlokk', 'visuellHistorieScrollBlokk', 'bildeBlokk', 'episodevelgerBlokk', 'stedintroBildeBlokk', 'imageGallery']\nconst ACTIVATABLE_CONTENT = ['videoBlokk', 'levendeStillbildeBlokk', 'visuellHistorieBlokk', 'videoHistorie']\nconst FULLY_VISIBLE_CONTENT = ['stedintroVideoBlokk', 'stedintroBildeBlokk']\n\ntype Props = {\n sendGaEvent: (Object) => void,\n doc: Doc\n}\n\ntype State = {\n viewport: { height: number, width: number },\n visibleContent: any,\n fullyVisibleContent: any,\n loadContent: any,\n introVisible: boolean,\n backgroundVisible: boolean\n}\n\nclass _App extends Component {\n elm: HTMLElement\n trackedKeys = {}\n\n constructor () {\n super()\n this.state = {\n viewport: { height: -1, width: -1 },\n visibleContent: [],\n fullyVisibleContent: [],\n loadContent: [],\n backgroundVisible: false,\n introVisible: true\n }\n }\n\n getContenttype (idx: number) {\n const contentList = this.props.doc.tekst\n if (idx < 0 || idx >= contentList.length) {\n return null\n } else {\n return contentList[idx].type\n }\n }\n\n ensureLoaded (idx: number) {\n const type = this.getContenttype(idx)\n if (LOADABLE_CONTENT.indexOf(type) !== -1) {\n const loadContent = this.state.loadContent\n if (!loadContent[idx]) {\n loadContent[idx] = true\n this.setState({ loadContent })\n }\n }\n }\n\n handleViewportChange = (viewport: any) => {\n if (\n this.state.viewport.height !== viewport.height ||\n this.state.viewport.width !== viewport.width\n ) {\n this.elm.style.setProperty('--viewport-height', `${viewport.height}px`)\n this.elm.style.setProperty('--viewport-height--half', `${viewport.height / 2}px`)\n this.setState({ viewport })\n }\n }\n\n handleContentEnter = (element: any, idx: number) => {\n this.ensureLoaded(idx - 1)\n this.ensureLoaded(idx)\n this.ensureLoaded(idx + 1)\n\n const contentList = this.props.doc.tekst\n const content = contentList[idx]\n\n if (ACTIVATABLE_CONTENT.indexOf(content.type) !== -1) {\n const activeContent = this.state.visibleContent\n activeContent[idx] = true\n this.setState({ visibleContent: activeContent })\n }\n\n this.trackOnlyOnce(idx, 'SHOW_CONTENT', `${idx}/${content.type}`)\n }\n\n handleContentLeave = (element: any, idx: number) => {\n const contentList = this.props.doc.tekst\n const content = contentList[idx]\n\n if (ACTIVATABLE_CONTENT.indexOf(content.type) !== -1) {\n const activeContent = this.state.visibleContent\n activeContent[idx] = false\n this.setState({ visibleContent: activeContent })\n }\n }\n\n handleContentChange = (intersections: any[]) => {\n const { fullyVisibleContent } = this.state\n const contentList = this.props.doc.tekst\n let change = false\n\n intersections.forEach((block, idx) => {\n const content = contentList[idx]\n if (FULLY_VISIBLE_CONTENT.indexOf(content.type) === -1) {\n return\n }\n\n const isVisible = !!fullyVisibleContent[idx]\n if (isVisible && block.ratio < 0.05) {\n fullyVisibleContent[idx] = false\n change = true\n } else if (!isVisible && block.isIntersecting && block.ratio > 0.95) {\n fullyVisibleContent[idx] = true\n change = true\n }\n })\n\n if (change) {\n this.setState({ fullyVisibleContent })\n }\n }\n\n handleIntroEnter = () => {\n this.setState({ introVisible: true })\n }\n\n handleIntroLeave = () => {\n this.setState({ introVisible: false })\n }\n\n handleBackgroundEnter = () => {\n this.setState({ backgroundVisible: true })\n }\n\n handleBackgroundLeave = () => {\n this.setState({ backgroundVisible: false })\n }\n\n trackOnlyOnce (key, action: string, label: string) {\n if (!this.trackedKeys[key]) {\n this.trackedKeys[key] = true\n this.props.sendGaEvent && this.props.sendGaEvent({ action, label })\n }\n }\n\n render () {\n const { doc } = this.props\n const { viewport, introVisible, backgroundVisible } = this.state\n\n return (\n (this.elm = elm)}>\n \n \n \n \n \n \n \n\n \n
\n \n\n \n {\n (doc.tekst || []).map((item, idx) => {\n switch (item.type) {\n case 'text':\n return \n case 'tekstBlokk':\n return \n case 'vitenskapBlokk':\n return \n case 'bildeBlokk':\n return \n case 'dobbelBildeBlokk':\n return \n case 'levendeStillbildeBlokk':\n return \n case 'imageGallery':\n return \n case 'stedintroVideoBlokk':\n return \n case 'stedintroBildeBlokk':\n return \n case 'visuellHistorieBlokk':\n case 'visuellHistorie':\n return \n case 'visuellHistorieScrollBlokk':\n case 'visuellHistorieScroll':\n return \n case 'videoHistorie':\n return \n case 'episodevelgerBlokk':\n return \n default:\n return
\n                        {JSON.stringify(item, null, 2)}\n                      
\n }\n })\n }\n \n {doc.footer &&
}\n
\n \n \n )\n }\n}\n\n/*\nconst mapContextToProps = context => ({\n ...context,\n sendCustomGaEvent: () => context.sendEvent({ action: 'my custom event action' })\n})\n*/\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const App = connector(_App)\n","// @flow\n\nconst POLOPOLY_ID_REGEX = /[1-9]{1,2}\\.\\d+/g\n\nexport function getContextId (url: string): ?string {\n return extractPolopolyIdFromString(url)\n}\n\nfunction extractPolopolyIdFromString (str: string): ?string {\n const matches = str.match(POLOPOLY_ID_REGEX)\n if (matches && matches.length) {\n return matches[0]\n }\n return null\n}\n","/* global __HOT__ */\n// @jsx h\nimport domready from 'domready'\nimport { h, render } from 'preact'\nimport { toArray, createUniqueId } from '@nrk/dh-utils'\nimport { createGoogleAnalyticsTracker } from '@nrk/dh-analytics-utils'\nimport { testPositionSticky } from '@nrk/feature-tests'\nimport { createErrorReporter } from '../lib/errorReporting'\nimport { App } from './components/App'\nimport { root as rootElementClassName } from './components/App.css'\nimport { getContextId } from '../lib/getContextId'\nimport { Provider as CustomProvider } from '../lib/provider'\n\nwindow[rootElementClassName] = window[rootElementClassName] || {}\n\nfunction init () {\n findElements(rootElementClassName).forEach(el => {\n el.id = createUniqueId()\n window[rootElementClassName][el.id] = true\n\n const name = el.getAttribute('data-name')\n const errorTrackingEnabled = el.getAttribute('data-error-tracking-enabled') === 'true'\n\n // setup error reporting\n const simpleErrorReport = createErrorReporter(name, errorTrackingEnabled)\n simpleErrorReport.listenAndCatch()\n\n testSupport(supported => {\n if (supported) {\n // Extract values sent from server\n const preloadedState = JSON.parse(el.getAttribute('data-preloaded-state'))\n\n // Extract metadata required to create google analytics tracker\n const gaPropertyId = el.getAttribute('data-ga-property-id')\n const metadata = JSON.parse(el.getAttribute('data-metadata'))\n const { title, selfId, published } = metadata\n\n // create google analytics tracker\n const googleAnalyticsTracker = createGoogleAnalyticsTracker({\n name: 'dh',\n gaPropertyId,\n self: {\n id: selfId,\n title,\n publishedDate: published ? new Date(published) : null\n },\n context: {\n id: getContextId(document.location.href)\n }\n })\n\n const sendError = (message) => {\n simpleErrorReport.sendErrorReport({ message })\n }\n\n const sendGaEvent = (eventObj) => {\n googleAnalyticsTracker.sendEvent({\n category: `dh-modul-${name}`,\n ...eventObj\n })\n }\n\n // Replace noJs class with js\n el.className = el.className.replace('noJs', 'js')\n\n // ... and render with the exact same props as on server\n render(\n \n \n , el, el.firstChild\n )\n\n // Enable webpack hot-reloading\n if (__HOT__) {\n // Reload and re-render preact application\n module.hot.accept('./client', () => {\n const { App } = require('./components/App')\n const { Provider: CustomProvider } = require('../lib/provider')\n render(\n \n \n , el, el.firstChild)\n })\n }\n } else {\n simpleErrorReport.sendErrorReport({ message: 'Warning: This browser does not support `position: sticky`' })\n\n // Extra class when it doesn't cut the mustard\n el.className = `${el.className} ${rootElementClassName}--no-enhancement`\n\n // Load all images that would otherwise be lazy loaded\n const images = toArray(document.querySelectorAll('img[data-srcset]'))\n images.forEach(image => {\n const source = image.parentElement.querySelector('source')\n if (source) {\n source.srcset = source.dataset.srcset\n }\n\n image.src = image.dataset.src\n image.srcset = image.dataset.srcset\n })\n }\n })\n })\n}\n\nif (__HOT__) {\n require('preact/debug')\n}\n\nfunction findElements (className) {\n return toArray(document.getElementsByClassName(className)).filter(el => !isInitialized(el, className))\n}\n\nfunction isInitialized (el, className) {\n return el.id && window[className][el.id]\n}\n\nfunction testSupport (callbackFn) {\n return testPositionSticky(callbackFn)\n}\n\ndomready(init)\n","export function createUniqueId() {\n var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return '' + prefix + Math.random().toString(36).substr(2, len - prefix.length);\n}","// @flow\nimport { SimpleErrorReport } from '@nrk/dh-simple-error-report'\n\nexport function createErrorReporter (name: string, isErrorReportingEnabled: boolean): SimpleErrorReport {\n return new SimpleErrorReport({\n name: name,\n url: 'https://dh.nrk.no/catch',\n dryRun: !isErrorReportingEnabled\n })\n}\n"],"sourceRoot":""}