{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/v1/components/Footer/index.css?3c86","webpack:///./src/v1/components/Intro/index.css?c35f","webpack:///./src/v1/components/App.css?9824","webpack:///./node_modules/@nrk/serum-imagecrop-utils/lib/index.js","webpack:///./src/v1/components/VisualStory/index.css?6c70","webpack:///./src/v1/components/Section.css?da1b","webpack:///./src/v1/components/Email/index.css?33a0","webpack:///./src/v1/components/VideoElement/index.css?cbd4","webpack:///./src/v1/components/Tips/index.css?5470","webpack:///./src/v1/components/CaptionedAudio/TogglePlayButton.css?2988","webpack:///./src/v1/components/Asterism/index.css?e1b8","webpack:///./src/v1/components/LazyImage/index.css?c2ff","webpack:///./src/v1/components/CaptionedAudio/index.css?7c08","webpack:///./node_modules/domready/ready.js","webpack:///./node_modules/@nrk/dh-simple-error-report/dist/simple-error-report.min.js","webpack:///./node_modules/howler/dist/howler.js","webpack:///./src/v1/client.polyfill.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///(webpack)/buildin/global.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:///./src/lib/error-reporting.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:///./src/lib/google-analytic.js","webpack:///./src/lib/number.js","webpack:///./src/v1/components/Intro/IntroImage/index.js","webpack:///./src/v1/components/HtmlContent/index.js","webpack:///./src/v1/components/Intro/Ingress/index.js","webpack:///./src/v1/components/Intro/SerumLazySmartPicture/index.js","webpack:///./src/v1/components/Intro/index.js","webpack:///./src/lib/prefersReducedMotion.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/lib/image-url.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Avatar/AvatarImage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Avatar/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/ImageMessage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/TextMessage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/ImagesMessage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Date/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/lib/Figcaption.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/index.js","webpack:///./src/v1/components/Email/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Slideshow/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Slideshow/Slide.js","webpack:///./src/lib/preact-pure-component.js","webpack:///./src/v1/components/VisualStory/cards/DefaultCard.js","webpack:///./src/lib/image-helpers.js","webpack:///./src/v1/components/VisualStory/SmartPicture/index.js","webpack:///./src/v1/components/VisualStory/index.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/scroll.js","webpack:///./src/v1/components/Asterism/index.js","webpack:///./src/v1/components/LazyImage/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:///./node_modules/@nrk/dh-feature-components/dist/module/video/Video/index.js","webpack:///./src/v1/components/VideoElement/index.js","webpack:///./src/v1/components/CaptionedAudio/TogglePlayButton.js","webpack:///./src/v1/components/CaptionedAudio/index.js","webpack:///./src/v1/components/Tips/index.js","webpack:///./src/v1/components/Section.js","webpack:///./src/v1/components/Footer/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/v1/client.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/string.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","footer","byline_sharebutton_container","byline_sharebutton_group","byline_sharebutton_item","byline_block","byline_credit_nrklogo","byline_credit_list","byline_credit_list_item","byline_credit_list_item_role","byline_credit_list_item_names","headingWrapper","back","headinglogo","fadeOut","fadeIn","heading__introContainer","heading__spider","heading__background","heading__ingressContainer","heading__ingress","heading__stickyContainer","heading__parallaxContainer","heading__screen","heading__man","heading__titleWrapper","heading__title","byline","background-fade-in","root","app","container","factory","isPolopolyIdRegex","isPolopolyId","id","test","widths","ratios","qualities","_baseUrl","hasOption","option","createImageUrl","options","polopolyId","width","ratio","quality","Error","number","args","supportedRatios","Array","isArray","includes","isValidRatio","toString","supportedQualities","isValidQuality","Number","isInteger","isSupportedWidth","closestWidth","goal","targets","isValidGoal","isValid","length","isValidTargets","reduce","prev","curr","Math","abs","getClosestNumber","_ref","url","queryString","_ref2","replace","createQueryString","createUrl","_typeof","define","undefined","__WEBPACK_AMD_DEFINE_RESULT__","__WEBPACK_AMD_DEFINE_FACTORY__","apply","__WEBPACK_AMD_DEFINE_ARRAY__","visualStory","root--js","visualStory__slideshow","visualStory__slide","root--noJs","visualStory__cards","defaultCard","defaultCard__wrapper","defaultCard--right","defaultCard--left","section","section--first","center","chatLog","email__wrapper","email","email--left","email--right","email__header","videoPlayer","videoPlayer__clipContainer","videoPlayer__video","tips","tipsSpacer","togglePlayButton","togglePlayButton__pauseIcon","togglePlayButton--playing","togglePlayButton__playIcon","asterism","asterism__imageWrapper","asterism--larger","image","image__clipContainer","image--center","image--wide","captionedAudio","captionedAudio--active","listener","fns","doc","hack","loaded","document","documentElement","doScroll","readyState","addEventListener","removeEventListener","shift","fn","setTimeout","push","e","configurable","writable","TypeError","this","register","time","Date","message","filter","assign","arguments","dryRun","a","u","parseStack","errorRegister","window","filename","lineno","colno","line","column","error","then","sendErrorReport","stackTrace","reason","console","log","JSON","stringify","isInRegisterWithinRange","addErrorToRegister","XMLHttpRequest","open","setRequestHeader","send","SimpleErrorReport","HowlerGlobal","init","self","Howler","_counter","_html5AudioPool","html5PoolSize","_codecs","_howls","_muted","_volume","_canPlayEvent","_navigator","navigator","masterGain","noAudio","usingWebAudio","autoSuspend","ctx","autoUnlock","_setup","volume","vol","parseFloat","setupAudioContext","gain","setValueAtTime","currentTime","_webAudio","ids","_getSoundIds","j","sound","_soundById","_node","mute","muted","unload","close","codecs","ext","state","_autoSuspend","Audio","oncanplaythrough","_setupCodecs","audioTest","err","canPlayType","mpegTest","checkOpera","userAgent","match","isOldOpera","parseInt","split","mp3","mpeg","opus","ogg","oga","wav","aac","caf","m4a","mp4","weba","webm","dolby","flac","_unlockAudio","shouldUnlock","_audioUnlocked","_mobileUnloaded","sampleRate","_scratchBuffer","createBuffer","unlock","audioNode","_unlocked","_releaseHtml5Audio","load","_autoResume","source","createBufferSource","buffer","connect","destination","start","noteOn","resume","onended","disconnect","_emit","_obtainHtml5Audio","pop","testPlay","play","Promise","catch","warn","audio","suspend","_sounds","_paused","_suspendTimer","clearTimeout","_resumeAfterSuspend","Howl","src","_autoplay","autoplay","_format","format","_html5","html5","_loop","loop","_pool","pool","_preload","preload","_rate","rate","_sprite","sprite","_src","_xhrWithCredentials","xhrWithCredentials","_duration","_state","_endTimers","_queue","_playLock","_onend","onend","_onfade","onfade","_onload","onload","_onloaderror","onloaderror","_onplayerror","onplayerror","_onpause","onpause","_onplay","onplay","_onstop","onstop","_onmute","onmute","_onvolume","onvolume","_onrate","onrate","_onseek","onseek","_onunlock","onunlock","_onresume","event","action","str","exec","toLowerCase","location","protocol","slice","Sound","loadBuffer","internal","num","_ended","_id","_inactiveSound","soundId","_loadQueue","seek","max","_seek","duration","timeout","stop","setParams","_start","_stop","node","playWebAudio","_refreshBuffer","_playStart","bufferSource","noteGrainOn","Infinity","once","_clearTimer","playHtml5","playbackRate","paused","loadedNoReadyState","ejecta","isCocoonJS","pause","_rateSeek","_stopFade","noteOff","_cleanBuffer","isNaN","_interval","indexOf","fade","from","to","len","end","linearRampToValueAtTime","_startFadeInterval","isGroup","diff","steps","stepLen","lastTick","now","_fadeTo","setInterval","tick","min","round","clearInterval","cancelScheduledValues","loopStart","loopEnd","playing","realTime","rateSeek","seekAndEmit","emitSeek","sounds","_errorFn","_loadFn","index","splice","remCache","cache","on","events","off","isId","keys","msg","task","ended","_drain","reset","limit","cnt","_panner","isIOS","vendor","howl","_parent","parent","createGain","createGainNode","_errorListener","_loadListener","code","ceil","__default","loadSound","data","atob","dataView","Uint8Array","charCodeAt","decodeAudioData","xhr","withCredentials","responseType","status","response","onerror","safeXhrSend","arraybuffer","success","AudioContext","webkitAudioContext","iOS","platform","appVersion","version","safari","standalone","global","_super","_pos","_orientation","stereo","pan","pos","x","y","z","positionX","setTargetAtTime","positionY","positionZ","setPosition","orientation","xUp","yUp","zUp","or","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","_stereo","_pannerAttr","coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","panningModel","refDistance","rolloffFactor","_onstereo","onstereo","_onpos","onpos","_onorientation","onorientation","pannerType","createStereoPanner","setupPanner","orientationX","orientationY","orientationZ","pannerAttr","_coneInnerAngle","_coneOuterAngle","_coneOuterGain","_distanceModel","_maxDistance","_refDistance","_rolloffFactor","_panningModel","pa","panner","type","createPanner","__webpack_exports__","IntersectionObserverEntry","intersectionRatio","registry","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","target","_observationTargets","some","item","element","nodeType","_registerInstance","entry","_monitorIntersections","_checkForIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","threshold","sort","_parseRootMargin","opt_rootMargin","margins","map","margin","parts","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","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","getParentNode","atRoot","parentRect","parentComputedStyle","body","overflow","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","targetArea","intersectionArea","toFixed","callback","opt_options","timer","rootMargin","join","opt_useCapture","attachEvent","detatchEvent","el","child","parentNode","host","g","Function","VNode","preact_options","stack","EMPTY_CHILDREN","h","nodeName","lastSimple","simple","children","String","vnode","extend","obj","props","applyRef","ref","current","defer","resolve","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isNamedNode","normalizedNodeName","getNodeProps","defaultProps","removeNode","removeChild","setAccessor","old","isSvg","style","cssText","innerHTML","__html","useCapture","substring","eventProxy","_listeners","removeAttribute","removeAttributeNS","setAttributeNS","setAttribute","className","mounts","diffLevel","isSvgMode","hydrating","flushMounts","afterMount","componentDidMount","dom","context","mountAll","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","splitText","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","originalComponent","oldDom","isDirectOwner","_componentConstructor","isOwner","_parentComponent","constructor","setComponentProps","base","unmountComponent","createComponent","nextBase","buildComponentFromVNode","createElementNS","createElement","firstChild","fc","vchildren","nextSibling","isHydrating","f","vchild","originalChildren","childNodes","keyed","keyedLen","childrenLen","vlen","_child","__key","trim","insertBefore","innerDiffNode","dangerouslySetInnerHTML","attrs","diffAttributes","unmountOnly","removeChildren","lastChild","next","previousSibling","recyclerComponents","Ctor","inst","render","Component","doRender","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","preact_render","merge","setState","forceUpdate","toArray","nodeList","_toConsumableArray","arr","arr2","bem","blockName","_len","modifiers","_key","strings","modifier","objectString","toStrings","b","concat","testPositionSticky","position","isErrorReportingEnabled","simpleErrorReport","shallowEqual","PureComponent","_defineProperty","ViewportIntersections","_this","ViewportIntersections_classCallCheck","ViewportIntersections_getPrototypeOf","ViewportIntersections_assertThisInitialized","intersections","idx","_this2","_this$props","onChange","onEnter","onLeave","elm","intersectionObserver","entries","prevIntersection","childElm","createIntersectionObserver","_this3","_this$props2","isTrackingEnabled","trackAction","label","category","ga","sendToGoogleAnalytics","clamp","sizes","baseUrl","createSrc","file","size","createSrcSet","IntroImage","_Component","_getPrototypeOf2","IntroImage_classCallCheck","IntroImage_getPrototypeOf","IntroImage_defineProperty","IntroImage_assertThisInitialized","IntroImage_inherits","nextProps","loadImage","visibleSource","matchMedia","matches","dataset","visibleImage","loaderImage","Image","getSourceDataset","srcset","decode","updateImage","complete","requestAnimationFrame","currentSrc","_this4","verticalFile","media","srcSet","data-srcset","data-src","alt","data-srcSet","HtmlContent","HtmlContent_classCallCheck","HtmlContent_possibleConstructorReturn","HtmlContent_getPrototypeOf","HtmlContent_inherits","content","dataKey","data-key","Ingress","Ingress_classCallCheck","Ingress_possibleConstructorReturn","Ingress_getPrototypeOf","Ingress_inherits","ingress","viewportHeight","module_ViewportIntersections","handleParagraphEnter","HtmlContent_HtmlContent","IMAGE_WIDTHS","createResponsiveSrcSet","opts","imageUrl","SerumLazySmartPicture","SerumLazySmartPicture_classCallCheck","SerumLazySmartPicture_getPrototypeOf","SerumLazySmartPicture_defineProperty","SerumLazySmartPicture_assertThisInitialized","SerumLazySmartPicture_inherits","transform","horizontal","vertical","placeholderVerticalUrl","_objectSpread","placeholderHorizontalUrl","horizontalSourceSet","verticalSourceSet","Intro","Intro_classCallCheck","Intro_getPrototypeOf","Intro_defineProperty","Intro_assertThisInitialized","introElement","loadParallaxImages","Intro_inherits","scrollY","onResize","reduceMotion","animate","seed","stepOffsets","Intro_toConsumableArray","sin","floor","loadImages","animating","delta","previous","visible","isVisible","updateLogo","updateBackground","previousVisible","updateIllustration","classList","logoElement","contains","remove","add","prevVisible","backgroundElement","visibility","willChange","maximumDistanece","preferredDistance","backgroundOffset","personElement","personElement2","glitchOffsetTarget","random","glitchOffset","percent","clipPath","generateClipPath","webkitClipPath","opacity","even","corners","offset","stepSize","path","_","stepOffset","titleHeight","class","href","title","aria-hidden","xlinkHref","parallaxContainer","IntroImage_IntroImage","SerumLazySmartPicture_SerumLazySmartPicture","Ingress_Ingress","tittel","getImageUrl","_ref$width","_ref$ratio","styles","avatarImage","avatar","avatar__placeholder","avatar--right","date","date--isFirst","message--left","message--showAvatar","message--right","message--isLastInGroup","message__text","message__text--right","message__text--left","message__image","message__images","message__image--expanded","message__image--clickable","message__image--hover","message__image--left","message__image--right","message__name","message__content","message__content--left","message__content--right","message__content--showName","AvatarImage","nopin","data-pin-nopin","Avatar","Avatar_classCallCheck","Avatar_possibleConstructorReturn","Avatar_getPrototypeOf","Avatar_inherits","person","displayImage","side","initials","charAt","toUpperCase","getInitials","ImageMessage","isLastInGroup","showAvatar","showName","imageSrc","TextMessage","ImagesMessage","images","Message","Message_classCallCheck","Message_possibleConstructorReturn","Message_getPrototypeOf","Message_inherits","Date_classCallCheck","Date_possibleConstructorReturn","Date_getPrototypeOf","Date_inherits","isFirst","Figcaption","_ref$figcaption","figcaption","caption","credit","messages","ChatLog","nbsp","fromCharCode","Email","Email_classCallCheck","Email_possibleConstructorReturn","Email_getPrototypeOf","Email_inherits","emails","datetime","subject","align","email_header_datetime","Slideshow","viewport","activeIndex","inlineStyle","data-active-index","stacked","active","Slide","DefaultCard","wrapperInlineStyle","marginTop","SmartPicture","horizontalId","verticalId","squareId","defaultUrl","squareSourceSet","VisualStory","VisualStory_classCallCheck","VisualStory_getPrototypeOf","VisualStory_defineProperty","VisualStory_assertThisInitialized","scrollTop","pageYOffset","visibleIndex","slides","handleResize","cardsInlineStyle","paddingBottom","module_Slideshow","slide","Slideshow_Slide","VisualStory_SmartPicture","handleEnter","cards_DefaultCard","Asterism","Asterism_classCallCheck","Asterism_getPrototypeOf","Asterism_assertThisInitialized","Asterism_inherits","placeholderSrc","LazyImage","LazyImage_classCallCheck","LazyImage_getPrototypeOf","LazyImage_assertThisInitialized","LazyImage_inherits","backgroundColor","description","Scrubber","Scrubber_classCallCheck","Scrubber_getPrototypeOf","Scrubber_assertThisInitialized","isScrubbing","evt","onPositionUpdate","nextTime","preventDefault","focus","pageX","handleMouseMove","handleMouseUp","move","bgElm","touches","clientX","handleTouchMove","handleTouchEnd","handleKeyDown","handleMouseDown","handleTouchStart","handleElm","positionTimeout","role","aria-valuemin","aria-valuemax","aria-valuenow","TogglePlayButton","onClick","toggleMuteButton","toggleMuteButton__volumeIcon","toggleMuteButton--muted","toggleMuteButton__mutedIcon","ToggleMuteButton","VideoPlayer","VideoPlayer_classCallCheck","VideoPlayer_getPrototypeOf","VideoPlayer_assertThisInitialized","isPlaying","onUserTogglePlay","onUserToggleMute","video","_console","onPlay","onPause","_this$state","playsInline","handlePlay","handlePause","onCaptionCueEnter","handleCaptionCueEnter","onCaptionCueExit","handleCaptionCueExit","onDurationChange","handleDurationChange","onTimeupdate","handleTimeupdate","text","handleUserTogglePlay","handleScrubberPositionUpdate","handleUserToggleMute","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","Video","Video_classCallCheck","Video_getPrototypeOf","Video_assertThisInitialized","isResolvingPlay","textTracks","textTrack","track","addTextTrack","language","tracks","captions","addCue","VTTCue","in","TextTrackCue","cue","cues","onenter","startTime","endTime","onexit","onError","playPromise","sources","restProps","eventHandlers","dataProps","VideoElement","VideoElement_classCallCheck","VideoElement_getPrototypeOf","VideoElement_defineProperty","VideoElement_assertThisInitialized","VideoElement_inherits","video_VideoPlayer","video_Video","poster","CaptionedAudio","CaptionedAudio_classCallCheck","CaptionedAudio_getPrototypeOf","CaptionedAudio_defineProperty","CaptionedAudio_assertThisInitialized","progress","startProgress","stopProgress","interval","CaptionedAudio_inherits","handleStop","TogglePlayButton_TogglePlayButton","handleTogglePlay","newLine","Tips","Section","Section_classCallCheck","Section_getPrototypeOf","Section_defineProperty","Section_assertThisInitialized","ensureLoaded","playContent","loadContent","Section_inherits","contentList","getContenttype","first","sectionIndex","_slicedToArray","chapter","handleContentEnter","handleContentLeave","RegExp","module_ChatLog","Email_Email","v1_components_VisualStory","Tips_Tips","_element$value","Asterism_Asterism","LazyImage_LazyImage","VideoElement_VideoElement","CaptionedAudio_CaptionedAudio","Footer","Footer_classCallCheck","Footer_possibleConstructorReturn","Footer_getPrototypeOf","Footer_inherits","data-share","rel","subscribe","observer","isDynamicViewport","isTouching","listeners","orientationchange","resize","prevRect","Element","innerWidth","innerHeight","getRect","scroll","touchstart","touchend","unsubscribe","MaxViewportRect","viewport$","MaxViewportObservable","dispose","onViewportChange","App","App_classCallCheck","App_getPrototypeOf","App_defineProperty","App_assertThisInitialized","manus","App_inherits","_this$props$doc","MaxViewportRect_MaxViewportRect","handleViewportChange","Intro_Intro","handleSectionEnter","Section_Section","Footer_Footer","rootElementClassName","domready","getElementsByClassName","isInitialized","prefix","substr","createUniqueId","supported","preloadedState","parse","getAttribute","errorEventTrackingEnabled","trackingEnabled","gaInitialize","listenAndCatch","App_App","client_toConsumableArray","querySelectorAll","parentElement","querySelector"],"mappings":"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","file":"v1-bundle-8a3888aecbc3d87b0ecd.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 17);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"dh-dette-er-edderkoppen-footer\",\"byline_sharebutton_container\":\"dh-dette-er-edderkoppen-byline_sharebutton_container\",\"byline_sharebutton_group\":\"dh-dette-er-edderkoppen-byline_sharebutton_group\",\"byline_sharebutton_item\":\"dh-dette-er-edderkoppen-byline_sharebutton_item\",\"byline_block\":\"dh-dette-er-edderkoppen-byline_block\",\"byline_credit_nrklogo\":\"dh-dette-er-edderkoppen-byline_credit_nrklogo\",\"byline_credit_list\":\"dh-dette-er-edderkoppen-byline_credit_list\",\"byline_credit_list_item\":\"dh-dette-er-edderkoppen-byline_credit_list_item\",\"byline_credit_list_item_role\":\"dh-dette-er-edderkoppen-byline_credit_list_item_role\",\"byline_credit_list_item_names\":\"dh-dette-er-edderkoppen-byline_credit_list_item_names\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headingWrapper\":\"dh-dette-er-edderkoppen-headingWrapper\",\"back\":\"dh-dette-er-edderkoppen-back\",\"headinglogo\":\"dh-dette-er-edderkoppen-headinglogo\",\"fadeOut\":\"dh-dette-er-edderkoppen-fadeOut\",\"fadeIn\":\"dh-dette-er-edderkoppen-fadeIn\",\"heading__introContainer\":\"dh-dette-er-edderkoppen-heading__introContainer\",\"heading__spider\":\"dh-dette-er-edderkoppen-heading__spider\",\"heading__background\":\"dh-dette-er-edderkoppen-heading__background\",\"heading__ingressContainer\":\"dh-dette-er-edderkoppen-heading__ingressContainer\",\"heading__ingress\":\"dh-dette-er-edderkoppen-heading__ingress\",\"heading__stickyContainer\":\"dh-dette-er-edderkoppen-heading__stickyContainer\",\"heading__parallaxContainer\":\"dh-dette-er-edderkoppen-heading__parallaxContainer\",\"heading__screen\":\"dh-dette-er-edderkoppen-heading__screen\",\"heading__man\":\"dh-dette-er-edderkoppen-heading__man\",\"heading__titleWrapper\":\"dh-dette-er-edderkoppen-heading__titleWrapper\",\"heading__title\":\"dh-dette-er-edderkoppen-heading__title\",\"byline\":\"dh-dette-er-edderkoppen-byline\",\"background-fade-in\":\"dh-dette-er-edderkoppen-background-fade-in\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"dh-dette-er-edderkoppen-root\",\"app\":\"dh-dette-er-edderkoppen-app\",\"container\":\"dh-dette-er-edderkoppen-container\"};","(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 = {\"visualStory\":\"dh-dette-er-edderkoppen-visualStory\",\"root--js\":\"dh-dette-er-edderkoppen-root--js\",\"visualStory__slideshow\":\"dh-dette-er-edderkoppen-visualStory__slideshow\",\"visualStory__slide\":\"dh-dette-er-edderkoppen-visualStory__slide\",\"root--noJs\":\"dh-dette-er-edderkoppen-root--noJs\",\"visualStory__cards\":\"dh-dette-er-edderkoppen-visualStory__cards\",\"defaultCard\":\"dh-dette-er-edderkoppen-defaultCard\",\"defaultCard__wrapper\":\"dh-dette-er-edderkoppen-defaultCard__wrapper\",\"defaultCard--right\":\"dh-dette-er-edderkoppen-defaultCard--right\",\"defaultCard--left\":\"dh-dette-er-edderkoppen-defaultCard--left\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"section\":\"dh-dette-er-edderkoppen-section\",\"section--first\":\"dh-dette-er-edderkoppen-section--first\",\"center\":\"dh-dette-er-edderkoppen-center\",\"chatLog\":\"dh-dette-er-edderkoppen-chatLog\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"email__wrapper\":\"dh-dette-er-edderkoppen-email__wrapper\",\"email\":\"dh-dette-er-edderkoppen-email\",\"email--left\":\"dh-dette-er-edderkoppen-email--left\",\"email--right\":\"dh-dette-er-edderkoppen-email--right\",\"email__header\":\"dh-dette-er-edderkoppen-email__header\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoPlayer\":\"dh-dette-er-edderkoppen-videoPlayer\",\"videoPlayer__clipContainer\":\"dh-dette-er-edderkoppen-videoPlayer__clipContainer\",\"videoPlayer__video\":\"dh-dette-er-edderkoppen-videoPlayer__video\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tips\":\"dh-dette-er-edderkoppen-tips\",\"tipsSpacer\":\"dh-dette-er-edderkoppen-tipsSpacer\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"togglePlayButton\":\"dh-dette-er-edderkoppen-togglePlayButton\",\"togglePlayButton__pauseIcon\":\"dh-dette-er-edderkoppen-togglePlayButton__pauseIcon\",\"togglePlayButton--playing\":\"dh-dette-er-edderkoppen-togglePlayButton--playing\",\"togglePlayButton__playIcon\":\"dh-dette-er-edderkoppen-togglePlayButton__playIcon\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"asterism\":\"dh-dette-er-edderkoppen-asterism\",\"asterism__imageWrapper\":\"dh-dette-er-edderkoppen-asterism__imageWrapper\",\"asterism--larger\":\"dh-dette-er-edderkoppen-asterism--larger\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"image\":\"dh-dette-er-edderkoppen-image\",\"image__clipContainer\":\"dh-dette-er-edderkoppen-image__clipContainer\",\"image--center\":\"dh-dette-er-edderkoppen-image--center\",\"image--wide\":\"dh-dette-er-edderkoppen-image--wide\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"captionedAudio\":\"dh-dette-er-edderkoppen-captionedAudio\",\"captionedAudio--active\":\"dh-dette-er-edderkoppen-captionedAudio--active\"};","/*!\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[\"simple-error-report\"]={})}(this,function(e){\"use strict\";var n=function(){function e(e,n){for(var r=0;r0}}]),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","/*!\n * howler.js v2.1.1\n * howlerjs.com\n *\n * (c) 2013-2018, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var checkOpera = self._navigator && self._navigator.userAgent.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!audioTest.canPlayType('audio/wav; codecs=\"1\"').replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, ''),\n webm: !!audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, ''),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this on certain browsers/devices.\n var shouldUnlock = /iPhone|iPad|iPod|Android|BlackBerry|BB10|Silk|Mobi|Chrome|Safari/i.test(self._navigator && self._navigator.userAgent);\n if (self._audioUnlocked || !self.ctx || !shouldUnlock) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = loop;\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n self._loadQueue();\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n\n var listener = function() {\n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Make sure the volume is in the right bounds.\n vol = Math.max(0, vol);\n vol = Math.min(1, vol);\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n self._emit('seek', id);\n\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = 'auto';\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && Howler._navigator.standalone && !safari || Howler._navigator && !Howler._navigator.standalone && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : 1, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Define globally in case AMD is not available or unused.\n if (typeof window !== 'undefined') {\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n } else if (typeof global !== 'undefined') { // Add to global in Node.js (for testing, etc).\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.1.1\n * howlerjs.com\n *\n * (c) 2013-2018, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 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","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\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 { SimpleErrorReport } from '@nrk/dh-simple-error-report'\n\nlet isErrorReportingEnabled = false\n\nexport function initialize (errorReportingEnabled) {\n isErrorReportingEnabled = errorReportingEnabled\n}\n\nexport function simpleErrorReport () {\n return new SimpleErrorReport({\n name: 'dh-dette-er-edderkoppen',\n url: 'https://dh.nrk.no/catch',\n dryRun: !isErrorReportingEnabled\n })\n}\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;","let isTrackingEnabled = false\n// let label = null\n\nexport function gaInitialize (trackingEnabled) {\n isTrackingEnabled = trackingEnabled\n // label = name\n}\n\nexport function trackAction (action, label) {\n sendToGoogleAnalytics({\n category: 'dh-spesial-dette-er-edderkoppen',\n action,\n label\n })\n}\n\nfunction sendToGoogleAnalytics ({ category, action, label }) {\n if (window.ga && isTrackingEnabled) {\n window.ga('send', 'event', category, action, label)\n } else {\n if (typeof console !== 'undefined') {\n console.log(category, action, label)\n }\n }\n}\n","\nexport function clamp (number, min, max) {\n return Math.max(min, Math.min(number, max))\n}\n","/* eslint-disable react/no-deprecated */\n// @flow\n/** @jsx h */\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\n\nconst sizes = [100, 480, 600, 900, 1200, 1800, 2400]\n\nconst baseUrl = 'https://pmd-nrk.akamaized.net/nyheter/dette-er-edderkoppen/v4'\n\nfunction createSrc (file, size) {\n return `${baseUrl}${file}_${size}.png`\n}\n\nfunction createSrcSet (file) {\n return sizes.map(size => `${createSrc(file, size)} ${size}w`).join(', ')\n}\n\ntype ImageProps = {\n file: string,\n verticalFile: string,\n sizes: string,\n load: boolean\n}\n\ntype HTMLSourceElement = HTMLElement & {\n srcset: string\n}\n\ntype DecodeImage = Image & {\n decode?: Function\n}\n\nexport class IntroImage extends Component {\n visibleImage: HTMLImageElement\n visibleSource: HTMLSourceElement\n\n componentWillReceiveProps (nextProps: ImageProps) {\n if (nextProps.load && !this.props.load) {\n this.loadImage()\n }\n }\n\n shouldComponentUpdate () {\n return false\n }\n\n getSourceDataset () {\n if (this.visibleSource && window.matchMedia('(min-aspect-ratio: 1/1)').matches) {\n return this.visibleSource.dataset\n } else {\n return this.visibleImage.dataset\n }\n }\n\n loadImage () {\n const loaderImage: DecodeImage = new Image()\n const dataset = this.getSourceDataset()\n\n loaderImage.sizes = this.visibleImage.sizes || ''\n loaderImage.srcset = dataset.srcset || ''\n loaderImage.src = dataset.src\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 updateImage (loaderImage: HTMLImageElement) {\n requestAnimationFrame(() => {\n const src = loaderImage.currentSrc || loaderImage.src\n this.visibleImage.src = src\n if (this.visibleSource) {\n this.visibleSource.srcset = src\n }\n })\n }\n\n render () {\n const { file, verticalFile, sizes } = this.props\n if (verticalFile) {\n return (\n \n (this.visibleSource = elm)} />\n (this.visibleImage = elm)} />\n \n )\n } else {\n return (\n (this.visibleImage = elm)} />\n )\n }\n }\n}\n","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\n\ntype HtmlContentProps = {\n content: string,\n type: 'span' | 'p' | 'div',\n className?: string,\n dataKey?: number\n}\n\nexport class HtmlContent extends Component {\n shouldComponentUpdate (nextProps: HtmlContentProps) {\n return nextProps.content !== this.props.content\n }\n\n render () {\n const { content, className, dataKey } = this.props\n switch (this.props.type) {\n case 'p':\n return

\n case 'div':\n return

\n default:\n return \n }\n }\n}\n","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\n\nimport { ViewportIntersections } from '@nrk/dh-feature-components'\nimport { trackAction } from '../../../../lib/google-analytic'\nimport s from '../index.css'\nimport type { IngressElement } from '../../../domain/index'\nimport { HtmlContent } from '../../HtmlContent'\n\ntype IngressProps = {\n ingress: IngressElement[],\n viewportHeight: number\n}\n\nexport class Ingress extends Component {\n shouldComponentUpdate (nextProps: IngressProps) {\n return nextProps.ingress !== this.props.ingress || nextProps.viewportHeight !== this.props.viewportHeight\n }\n\n handleParagraphEnter (element: any, idx: number) {\n trackAction('SHOW_INGRESS', `ingress[${idx}]`)\n }\n\n render () {\n const { viewportHeight, ingress } = this.props\n return = 0 ? 2.3 * viewportHeight : null }}>\n {\n ingress.map((item, idx) => (\n

\n ))\n }\n \n }\n}\n","// @flow\n\n/** @jsx h */\n/* eslint-disable promise/catch-or-return */\n/* eslint-disable promise/always-return */\n\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils'\nimport { Component, h } from 'preact'\n\ntype ImageQuality = 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1.0\nconst IMAGE_WIDTHS = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400]\ntype SrcSetOpts = {\n id: string,\n ratio?: string,\n quality?: number\n}\n\nfunction createResponsiveSrcSet (opts: SrcSetOpts) {\n const { id, ratio, quality } = opts\n\n return IMAGE_WIDTHS.map(width => {\n const imageUrl = createImageUrl({ id, width, ratio, quality })\n return `${imageUrl} ${width}w`\n }).join(', ')\n}\n\nexport type ImageRef = {\n id: string,\n quality?: ImageQuality\n}\n\ntype DecodeImage = Image & {\n decode?: Function\n}\n\ntype HTMLSourceElement = HTMLElement & {\n srcset: string\n}\n\ntype Props = {\n alt: string,\n className?: string,\n horizontal: ImageRef,\n vertical: ImageRef\n}\n\nexport class SerumLazySmartPicture extends Component {\n visibleImage: HTMLImageElement\n visibleSource: HTMLSourceElement\n\n componentDidMount () {\n setTimeout(this.loadImage, 100)\n }\n\n shouldComponentUpdate () {\n return false\n }\n\n getSourceDataset () {\n if (window.matchMedia('(min-aspect-ratio: 4/5)').matches) {\n return this.visibleSource.dataset\n } else {\n return this.visibleImage.dataset\n }\n }\n\n loadImage = () => {\n const loaderImage: DecodeImage = new Image()\n const dataset = this.getSourceDataset()\n\n loaderImage.sizes = this.visibleImage.sizes || ''\n loaderImage.srcset = dataset.srcset || ''\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 updateImage (loaderImage: HTMLImageElement) {\n requestAnimationFrame(() => {\n const src = loaderImage.currentSrc || loaderImage.src\n this.visibleImage.src = src\n this.visibleImage.style.filter = 'blur(0.5px)'\n this.visibleImage.style.transform = 'scale(1)'\n if (this.visibleSource) {\n this.visibleSource.srcset = src\n }\n })\n }\n\n render () {\n const { className, alt, horizontal, vertical } = this.props\n\n const placeholderVerticalUrl = createImageUrl({\n ...vertical,\n width: 100,\n ratio: '16:9'\n })\n\n const placeholderHorizontalUrl = createImageUrl({\n ...horizontal,\n width: 100,\n ratio: '16:9'\n })\n\n const horizontalSourceSet = createResponsiveSrcSet({\n ...horizontal,\n ratio: '16:9'\n })\n\n const verticalSourceSet = createResponsiveSrcSet({\n ...vertical,\n ratio: '3:4'\n })\n\n return (\n \n (this.visibleSource = elm)} />\n (this.visibleImage = elm)} />\n \n )\n }\n}\n","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\nimport { clamp } from '../../../lib/number'\nimport { prefersReducedMotion } from '../../../lib/prefersReducedMotion'\nimport { IntroImage } from './IntroImage/index'\nimport { Ingress } from './Ingress/index'\nimport { SerumLazySmartPicture } from './SerumLazySmartPicture/index'\n\nimport type { BylineType } from '../../domain/index'\nimport s from './index.css'\n\ntype HeadingProps = {\n tittel: string,\n ingress: string[],\n byline: BylineType,\n viewportHeight: number\n}\n\ntype HeadingState = {\n loadParallaxImages: boolean\n}\n\nexport class Intro extends Component {\n animating = false\n glitchOffset = 0\n glitchOffsetTarget = 0\n start = 0\n height: number\n scrollY: number\n previous: number\n reduceMotion: boolean\n previousVisible: boolean\n introElement: HTMLElement\n backgroundElement: HTMLElement\n parallaxContainer: HTMLElement\n personElement: HTMLElement\n personElement2: HTMLElement\n logoElement: HTMLElement\n\n componentDidMount () {\n this.scrollY = window.scrollY\n this.height = this.introElement.clientHeight\n // this.parallaxHeight = this.parallaxContainer.clientHeight\n // this.parallaxTop = this.parallaxContainer.offsetTop\n window.addEventListener('resize', this.onResize)\n this.reduceMotion = prefersReducedMotion()\n this.animate()\n\n let seed = 40\n const random = () => {\n seed = Math.sin(seed) * 10000\n return seed - Math.floor(seed)\n }\n this.stepOffsets = [...new Array(40)].map(() => {\n return random() - 0.5\n })\n\n setTimeout(this.loadImages, 100)\n }\n\n componentWillUnmount () {\n this.animating = false\n window.removeEventListener('resize', this.onResize)\n }\n\n onResize = () => {\n this.height = this.introElement.clientHeight\n // this.parallaxHeight = this.parallaxContainer.clientHeight\n // this.parallaxTop = this.parallaxContainer.offsetTop\n }\n\n animate () {\n const loop = (now: number) => {\n if (!this.animating) {\n return\n }\n const delta = this.previous ? now - this.previous : 0\n const visible = this.isVisible()\n this.updateLogo()\n this.scrollY += (window.scrollY - this.scrollY) * Math.min(delta / 60.0, 0.8)\n if (!this.reduceMotion) {\n this.updateBackground(visible, this.previousVisible, delta)\n this.updateIllustration(visible, this.previousVisible)\n }\n this.previousVisible = visible\n\n this.previous = now\n requestAnimationFrame(loop)\n }\n\n this.animating = true\n requestAnimationFrame(loop)\n }\n\n isVisible () {\n return window.scrollY < this.height\n }\n\n updateLogo () {\n const classList = this.logoElement.classList\n if (!classList) {\n return\n }\n\n if (window.scrollY === 0 && !classList.contains(s.fadeIn)) {\n classList.remove(s.fadeOut)\n classList.add(s.fadeIn)\n } else if (window.scrollY > 0 && !classList.contains(s.fadeOut)) {\n classList.remove(s.fadeIn)\n classList.add(s.fadeOut)\n }\n }\n\n updateBackground (visible: boolean, prevVisible: boolean, delta: number) {\n if (!visible && prevVisible) {\n this.backgroundElement.style.visibility = 'hidden'\n this.backgroundElement.style.willChange = 'auto'\n return\n } else if (visible && !prevVisible) {\n this.backgroundElement.style.visibility = 'inherit'\n this.backgroundElement.style.willChange = 'transform'\n }\n\n const maximumDistanece = Math.max(this.height - this.props.viewportHeight, 0)\n const preferredDistance = this.props.viewportHeight\n\n const maxOffset = Math.min(preferredDistance, maximumDistanece)\n const percent = clamp(this.scrollY / this.height, 0, 1)\n // const backgroundOffset = (this.scrollY - maxOffset * percent).toFixed(2)\n const backgroundOffset = 0 - maxOffset * percent\n this.backgroundElement.style.transform = `translate3d(0, ${backgroundOffset.toFixed(2)}px, 0)`\n }\n\n updateIllustration (visible: boolean, prevVisible: boolean) {\n if (!visible && prevVisible) {\n this.personElement.style.willChange = 'auto'\n this.personElement2.style.willChange = 'auto'\n return\n } else if (visible && !prevVisible) {\n this.personElement.style.willChange = 'transform'\n this.personElement2.style.willChange = 'transform'\n }\n\n if (window.performance.now() - this.start > 150) {\n this.glitchOffsetTarget = Math.random()\n this.start = performance.now()\n }\n\n this.glitchOffset += 0.01 * (this.glitchOffsetTarget - this.glitchOffset)\n\n const { viewportHeight } = this.props\n const position = this.scrollY\n const maxLength = this.height - viewportHeight\n const percent = 1 - clamp(position / maxLength, 0, 1)\n this.personElement.style.transform = `translate3d(${percent * 3 * this.glitchOffset}%, 0, 0)`\n this.personElement2.style.transform = `translate3d(${percent * -3 * this.glitchOffset}%, 0, 0)`\n\n if (percent > 0) {\n this.personElement.style.clipPath = this.generateClipPath(7, false, percent * this.glitchOffset)\n this.personElement.style.webkitClipPath = this.generateClipPath(7, false, percent * this.glitchOffset)\n this.personElement.style.opacity = 1 - 0.3 * percent\n this.personElement2.style.clipPath = this.generateClipPath(7, true, percent * this.glitchOffset)\n this.personElement2.style.webkitClipPath = this.generateClipPath(7, true, percent * this.glitchOffset)\n this.personElement2.style.opacity = 1 - 0.3 * percent\n } else {\n this.personElement.style.clipPath = ''\n this.personElement.style.webkitClipPath = ''\n this.personElement.style.opacity = 1\n this.personElement2.style.clipPath = ''\n this.personElement2.style.webkitClipPath = ''\n this.personElement2.style.opacity = 1\n }\n }\n\n generateClipPath (steps, even, percent) {\n const corners = steps * 2\n const offset = even ? 1 : 0\n const stepSize = 100 / corners\n const stepArray = [...new Array(corners)].map((_, idx) => {\n const index = idx + offset\n\n const stepOffset = 2 * this.stepOffsets[index] * stepSize * percent\n const stepPosition = index * 100 / corners\n return clamp(stepPosition + stepOffset, 0, 100)\n })\n const path = stepArray.map((x, idx) => {\n return (idx % 2 === 1) ? `100% ${x}% , 0% ${x}% ` : `0% ${x}% , 100% ${x}% `\n }).join(', ')\n\n return `polygon(${path})`\n }\n\n loadImages = () => {\n this.setState({ loadParallaxImages: true })\n }\n\n render () {\n const { viewportHeight } = this.props\n const titleHeight = viewportHeight >= 0 ? 0.3 * viewportHeight : null\n\n return (\n
\n
\n
\n
\n
\n

\n {this.props.tittel}\n

\n
\n
\n
\n
\n )\n }\n}\n","\nexport function prefersReducedMotion () {\n return matchMedia('(prefers-reduced-motion)').matches\n}\n","import { createImageUrl } from '@nrk/serum-imagecrop-utils';\nexport function getImageUrl(image, options) {\n const _ref = options || {},\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? 120 : _ref$width,\n _ref$ratio = _ref.ratio,\n ratio = _ref$ratio === void 0 ? '1:1' : _ref$ratio;\n\n switch (image.type) {\n case 'polopoly-image':\n {\n return createImageUrl({\n id: image.id,\n width,\n ratio\n });\n }\n\n case 'url-image':\n {\n return image.url;\n }\n }\n}","// @jsx h\nimport { h } from 'preact';\nimport { getImageUrl } from '../../lib/image-url';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nexport function AvatarImage(props) {\n const image = props.image,\n alt = props.alt,\n title = props.title;\n return h(\"img\", {\n className: styles.avatarImage,\n title: title,\n src: getImageUrl(image),\n alt: alt,\n nopin: \"no-pin\",\n \"data-pin-nopin\": \"true\"\n });\n}","// @jsx h\nimport { Component, h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { AvatarImage } from './AvatarImage';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nexport class Avatar extends Component {\n render() {\n const person = this.props.person;\n const name = person.name,\n image = person.image;\n const displayImage = image && image.type !== 'none';\n return h(\"div\", {\n \"aria-hidden\": true,\n className: bem(styles.avatar, person.side)\n }, displayImage && h(AvatarImage, {\n image: image,\n alt: person.name,\n title: person.name\n }), !displayImage && h(\"span\", {\n className: styles.avatar__placeholder,\n title: name\n }, getInitials(name)));\n }\n\n}\nexport function getInitials() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n const initials = name.replace(/\\(.*\\)/, '').trim().split(/[ -]/).map(item => item.charAt(0).toUpperCase());\n if (initials.length < 2) return initials[0];\n return [initials[0], initials[initials.length - 1]].join('');\n}","// @jsx h\nimport { h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { Avatar } from '../../Avatar/index';\nimport { getImageUrl } from '../../lib/image-url';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nexport const ImageMessage = props => {\n const message = props.message,\n isLastInGroup = props.isLastInGroup;\n const from = message.from,\n content = message.content;\n const name = from.name,\n side = from.side,\n display = from.display;\n const showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n const showName = ['name', 'both'].indexOf(display) !== -1;\n const imageSrc = getImageUrl(content.image, {\n width: 320,\n ratio: '1:1'\n });\n return h(\"div\", {\n className: bem(styles.message, side, {\n showAvatar,\n isLastInGroup\n })\n }, h(\"span\", {\n className: \"nrk-sr\"\n }, name, \":\"), showAvatar && h(Avatar, {\n person: from\n }), h(\"div\", {\n className: bem(styles.message__content, side, {\n showName\n })\n }, h(\"span\", {\n \"aria-hidden\": true,\n className: bem(styles.message__name, side)\n }, showName && name), h(\"span\", {\n className: bem(styles.message__image, side)\n }, h(\"img\", {\n src: imageSrc,\n alt: content.image.alt || '',\n nopin: \"nopin\",\n \"data-pin-nopin\": \"true\"\n }))));\n};","// @jsx h\nimport { h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { Avatar } from '../../Avatar';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nexport const TextMessage = props => {\n const message = props.message,\n isLastInGroup = props.isLastInGroup;\n const from = message.from,\n content = message.content;\n const name = from.name,\n side = from.side,\n display = from.display;\n const showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n const showName = ['name', 'both'].indexOf(display) !== -1;\n return h(\"div\", {\n className: bem(styles.message, side, {\n showAvatar,\n isLastInGroup\n })\n }, h(\"span\", {\n className: \"nrk-sr\"\n }, name, \":\"), showAvatar && h(Avatar, {\n person: from\n }), h(\"div\", {\n className: bem(styles.message__content, side, {\n showName\n })\n }, h(\"span\", {\n \"aria-hidden\": true,\n className: bem(styles.message__name, side)\n }, showName && name), h(\"span\", {\n className: bem(styles.message__text, side),\n dangerouslySetInnerHTML: {\n __html: content.message\n }\n })));\n};","// @jsx h\nimport { h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { Avatar } from '../../Avatar/index';\nimport { getImageUrl } from '../../lib/image-url';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nexport const ImagesMessage = props => {\n const message = props.message,\n isLastInGroup = props.isLastInGroup;\n const from = message.from,\n content = message.content;\n const name = from.name,\n side = from.side,\n display = from.display;\n const showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n const showName = ['name', 'both'].indexOf(display) !== -1;\n return h(\"div\", {\n className: bem(styles.message, side, {\n showAvatar,\n isLastInGroup\n })\n }, h(\"span\", {\n className: \"nrk-sr\"\n }, name, \":\"), showAvatar && h(Avatar, {\n person: from\n }), h(\"div\", {\n className: bem(styles.message__content, side, {\n showName\n })\n }, h(\"span\", {\n \"aria-hidden\": true,\n className: bem(styles.message__name, side)\n }, showName && name), h(\"ul\", {\n className: bem(styles.message__images, side)\n }, content.images.map((image, idx) => {\n const imageSrc = getImageUrl(image, {\n width: 160,\n ratio: '1:1'\n });\n return h(\"li\", {\n key: idx\n }, h(\"img\", {\n src: imageSrc,\n alt: image.alt || '',\n nopin: \"nopin\",\n \"data-pin-nopin\": \"true\"\n }));\n }))));\n};","// @jsx h\nimport { Component, h } from 'preact';\nimport { ImageMessage } from './ImageMessage';\nimport { TextMessage } from './TextMessage';\nimport { ImagesMessage } from './ImagesMessage/index';\nexport class Message extends Component {\n render() {\n const _this$props = this.props,\n isLastInGroup = _this$props.isLastInGroup,\n message = _this$props.message;\n const content = message.content;\n const type = content.type;\n\n switch (type) {\n case 'image':\n return h(ImageMessage, {\n message: message,\n isLastInGroup: isLastInGroup\n });\n\n case 'images':\n return h(ImagesMessage, {\n message: message,\n isLastInGroup: isLastInGroup\n });\n\n case 'text':\n return h(TextMessage, {\n message: message,\n isLastInGroup: isLastInGroup\n });\n\n default:\n throw new Error(`Unknown message type ${type}`);\n }\n }\n\n}","// @jsx h\nimport { Component, h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nexport class Date extends Component {\n render() {\n const _this$props = this.props,\n date = _this$props.date,\n index = _this$props.index;\n if (!date) return null;\n return h(\"h4\", {\n className: bem(styles.date, {\n isFirst: index === 0\n }),\n dangerouslySetInnerHTML: {\n __html: date\n }\n });\n }\n\n}","// @jsx h\nimport { h } from 'preact';\nexport function Figcaption(_ref) {\n let _ref$figcaption = _ref.figcaption,\n figcaption = _ref$figcaption === void 0 ? {} : _ref$figcaption;\n const caption = figcaption.caption,\n credit = figcaption.credit;\n\n if (!caption && !credit) {\n return null;\n }\n\n return h(\"figcaption\", null, caption && h(\"p\", null, caption), credit && h(\"small\", null, credit));\n}","// @jsx h\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nimport { Message } from './Message';\nimport { Date } from './Date';\nvar styles = {\n \"chatLog\": \"dhfc-1_0_0-beta_47-chatLog\",\n \"avatarImage\": \"dhfc-1_0_0-beta_47-avatarImage\",\n \"avatar\": \"dhfc-1_0_0-beta_47-avatar\",\n \"avatar__placeholder\": \"dhfc-1_0_0-beta_47-avatar__placeholder\",\n \"avatar--right\": \"dhfc-1_0_0-beta_47-avatar--right\",\n \"date\": \"dhfc-1_0_0-beta_47-date\",\n \"date--isFirst\": \"dhfc-1_0_0-beta_47-date--isFirst\",\n \"message\": \"dhfc-1_0_0-beta_47-message\",\n \"message--left\": \"dhfc-1_0_0-beta_47-message--left\",\n \"message--showAvatar\": \"dhfc-1_0_0-beta_47-message--showAvatar\",\n \"message--right\": \"dhfc-1_0_0-beta_47-message--right\",\n \"message--isLastInGroup\": \"dhfc-1_0_0-beta_47-message--isLastInGroup\",\n \"message__text\": \"dhfc-1_0_0-beta_47-message__text\",\n \"message__text--right\": \"dhfc-1_0_0-beta_47-message__text--right\",\n \"message__text--left\": \"dhfc-1_0_0-beta_47-message__text--left\",\n \"message__image\": \"dhfc-1_0_0-beta_47-message__image\",\n \"message__images\": \"dhfc-1_0_0-beta_47-message__images\",\n \"message__image--expanded\": \"dhfc-1_0_0-beta_47-message__image--expanded\",\n \"message__image--clickable\": \"dhfc-1_0_0-beta_47-message__image--clickable\",\n \"message__image--hover\": \"dhfc-1_0_0-beta_47-message__image--hover\",\n \"message__image--left\": \"dhfc-1_0_0-beta_47-message__image--left\",\n \"message__image--right\": \"dhfc-1_0_0-beta_47-message__image--right\",\n \"message__name\": \"dhfc-1_0_0-beta_47-message__name\",\n \"message__content\": \"dhfc-1_0_0-beta_47-message__content\",\n \"message__content--left\": \"dhfc-1_0_0-beta_47-message__content--left\",\n \"message__content--right\": \"dhfc-1_0_0-beta_47-message__content--right\",\n \"message__content--showName\": \"dhfc-1_0_0-beta_47-message__content--showName\"\n};\nimport { Figcaption } from '../lib/Figcaption';\n\nclass ChatLog extends PureComponent {\n render() {\n const _this$props = this.props,\n messages = _this$props.messages,\n figcaption = _this$props.figcaption;\n const className = `${styles.chatLog}${this.props.className ? ` ${this.props.className}` : ''}`;\n return h(\"div\", {\n className: className\n }, messages.map((message, idx) => [h(Date, {\n date: message.date,\n index: idx,\n key: `date_${idx}`\n }), h(Message, {\n key: idx,\n isLastInGroup: isLastInGroup(messages, idx),\n message: message\n })]), h(Figcaption, {\n figcaption: figcaption\n }));\n }\n\n}\n\nfunction isLastInGroup(messages, index) {\n return messages.length - 1 === index;\n}\n\nexport default ChatLog;","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\nimport { bem } from '@nrk/dh-utils'\n\nimport styles from './index.css'\nimport { HtmlContent } from '../HtmlContent/index'\n\nexport type EmailType = {\n datetime?: string,\n from?: string,\n to?: string,\n subject?: string,\n message: string,\n align?: 'left' | 'right'\n}\n\ntype EmailProps = {\n emails: EmailType[]\n}\n\nconst nbsp = String.fromCharCode(160)\n\nexport class Email extends Component {\n render () {\n const { emails } = this.props\n return (\n
\n {\n emails.map((email, idx) => {\n const { datetime, from, to, subject, message, align } = email\n return (\n
\n
\n {from && (\n
Fra: {from}
\n )}\n {to && (\n
Til: {to}
\n )}\n {datetime && (\n
Sendt: {datetime}
\n )}\n {subject && (\n
Emne: {subject}
\n )}\n
\n \n
\n )\n })\n }\n
\n )\n }\n}\n","// @jsx h\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n \"slideshow\": \"dhfc-1_0_0-beta_47-slideshow\",\n \"slideshow__slide\": \"dhfc-1_0_0-beta_47-slideshow__slide\",\n \"slideshow__slide--stacked\": \"dhfc-1_0_0-beta_47-slideshow__slide--stacked\",\n \"slideshow__slide--visible\": \"dhfc-1_0_0-beta_47-slideshow__slide--visible\",\n \"slideshow__slide--active\": \"dhfc-1_0_0-beta_47-slideshow__slide--active\"\n};\n\nclass Slideshow extends PureComponent {\n render() {\n const _this$props = this.props,\n children = _this$props.children,\n viewport = _this$props.viewport;\n const activeIndex = this.props.activeIndex || 0;\n const className = `${style.slideshow}${this.props.className ? ` ${this.props.className}` : ''}`;\n const inlineStyle = {};\n\n if (viewport && viewport.height > -1) {\n inlineStyle.height = `${viewport.height}px`;\n }\n\n return h(\"div\", {\n className: className,\n style: inlineStyle,\n \"data-active-index\": String(activeIndex)\n }, children.map((child, idx) => {\n if (idx <= activeIndex) {\n child.attributes.stacked = true;\n }\n\n if (idx >= activeIndex - 1 && idx <= activeIndex + 1) {\n child.attributes.visible = true;\n }\n\n child.attributes.active = idx === activeIndex;\n return child;\n }));\n }\n\n}\n\nexport default Slideshow;","// @jsx h\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n \"slideshow\": \"dhfc-1_0_0-beta_47-slideshow\",\n \"slideshow__slide\": \"dhfc-1_0_0-beta_47-slideshow__slide\",\n \"slideshow__slide--stacked\": \"dhfc-1_0_0-beta_47-slideshow__slide--stacked\",\n \"slideshow__slide--visible\": \"dhfc-1_0_0-beta_47-slideshow__slide--visible\",\n \"slideshow__slide--active\": \"dhfc-1_0_0-beta_47-slideshow__slide--active\"\n};\n\nclass Slide extends PureComponent {\n render() {\n const _this$props = this.props,\n active = _this$props.active,\n children = _this$props.children,\n stacked = _this$props.stacked,\n visible = _this$props.visible;\n const className = `${bem(style.slideshow__slide, stacked && 'stacked', visible && 'visible', active && 'active')}${this.props.className ? ` ${this.props.className}` : ''}`;\n return h(\"div\", {\n className: className\n }, children);\n }\n\n}\n\nexport default Slide;","// @flow\n\nimport { Component } from 'preact'\n\nfunction shallowEqual (a: any, b: any) {\n for (let key in a) if (a[key] !== b[key]) return false\n for (let key in b) if (!(key in a)) return false\n return true\n}\n\nclass PureComponent extends Component {\n shouldComponentUpdate (props: Props, state: State) {\n return !(shallowEqual(props, this.props) && shallowEqual(state, this.state))\n }\n}\n\nexport default PureComponent\n","// @flow @jsx h\n\nimport { h } from 'preact'\nimport { bem } from '@nrk/dh-utils'\nimport PureComponent from '../../../../lib/preact-pure-component.js'\nimport style from '../index.css'\n\nimport type { Viewport } from '../types'\n\ntype Props = {\n viewport: Viewport,\n align: 'left' | 'right',\n content: any\n}\n\ntype State = {}\n\nclass DefaultCard extends PureComponent {\n render () {\n const { viewport, align, content } = this.props\n const html = content.replace('-post', '‑post')\n\n const wrapperInlineStyle = {}\n\n if (viewport.height > -1) {\n wrapperInlineStyle.marginTop = `${viewport.height - 10}px`\n }\n\n return (\n
\n \n
\n )\n }\n}\n\nexport default DefaultCard\n","// @flow\n\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils'\n\nexport const IMAGE_WIDTHS = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400]\n\nexport function createSrc (id: string, width: number, quality: number) {\n return createImageUrl({ id, width, quality })\n}\n\nexport function createSrcSet (id: string, quality: number) {\n return IMAGE_WIDTHS.map(width => `${createSrc(id, width, quality)} ${width}w`).join(', ')\n}\n","// @flow\n\n/** @jsx h */\n\nimport { h } from 'preact'\nimport PureComponent from '../../../../lib/preact-pure-component'\nimport { createSrc, createSrcSet } from '../../../../lib/image-helpers'\n\ntype Props = {\n alt: string,\n className?: string,\n horizontalId: string,\n verticalId: string,\n squareId: string\n}\n\nclass SmartPicture extends PureComponent {\n render () {\n const { className, alt, horizontalId, verticalId, squareId } = this.props\n\n const defaultUrl = createSrc(horizontalId, 1600, 0.8)\n const horizontalSourceSet = createSrcSet(horizontalId, 0.8)\n const verticalSourceSet = createSrcSet(verticalId, 0.8)\n const squareSourceSet = createSrcSet(squareId, 0.8)\n\n return (\n \n \n \n \n {alt}\n \n )\n }\n}\n\nexport default SmartPicture\n","// @flow @jsx h\n\nimport { h } from 'preact'\nimport { Slideshow, Slide, ViewportIntersections } from '@nrk/dh-feature-components'\nimport { getScrollTop } from '@nrk/dh-utils'\nimport PureComponent from '../../../lib/preact-pure-component.js'\nimport style from './index.css'\nimport '@nrk/dh-feature-components/dist/module/Slideshow/index.css'\n\n// Import card types\nimport DefaultCard from './cards/DefaultCard'\nimport type { Rect, SlideProps, Viewport } from './types'\nimport SmartPicture from './SmartPicture/index'\n\nexport type Props = {\n slides: SlideProps[],\n viewport: Viewport,\n load: boolean\n}\n\nexport type State = {\n rect: Rect | null,\n visibleIndex: number\n}\n\nclass VisualStory extends PureComponent {\n elm: HTMLDivElement\n\n constructor (props: Props) {\n super(props)\n\n this.state = {\n rect: null,\n visibleIndex: props.slides.length ? 0 : -1\n }\n }\n\n componentDidMount () {\n this.handleResize()\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.handleResize)\n }\n\n handleResize = () => {\n const scrollTop = getScrollTop()\n const rect = this.elm.getBoundingClientRect()\n\n this.setState({\n rect: {\n height: rect.height,\n top: rect.top + scrollTop,\n bottom: rect.bottom + scrollTop\n }\n })\n }\n\n handleEnter = (entry: any, idx: number) => {\n this.setState({ visibleIndex: idx })\n }\n\n render () {\n const { slides, viewport, load } = this.props\n const { visibleIndex } = this.state\n\n const cardsInlineStyle = {}\n\n if (viewport.height > -1) {\n cardsInlineStyle.marginTop = `${0 - viewport.height}px`\n cardsInlineStyle.paddingBottom = `${viewport.height}px`\n }\n\n return (\n
(this.elm = elm)} className={style.visualStory}>\n \n {\n slides.map((slide, idx) => (\n \n {load && \n }\n \n ))\n }\n \n \n {\n slides.map((slide, idx) => {\n return (\n \n )\n })\n }\n \n
\n )\n }\n}\n\nexport default VisualStory\n","export function getScrollLeft() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || 0;\n}\n\nexport function getScrollTop() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || 0;\n}","// @flow @jsx h\n/* eslint-disable promise/catch-or-return,react/no-deprecated */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\nimport { createSrc, createSrcSet } from '../../../lib/image-helpers'\nimport { bem } from '@nrk/dh-utils'\nimport styles from './index.css'\n\ntype Props = {\n polopolyId: string,\n alt: string,\n height: string,\n load: boolean,\n modifier?: string\n}\n\ntype DecodeImage = Image & {\n decode?: Function\n}\n\nexport class Asterism extends Component {\n visibleImage: HTMLImageElement\n\n componentWillReceiveProps (nextProps: Props) {\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: DecodeImage = new Image()\n if (this.visibleImage.dataset) {\n loaderImage.srcset = this.visibleImage.dataset.srcset || ''\n loaderImage.sizes = this.visibleImage.sizes || ''\n }\n loaderImage.src = this.visibleImage.dataset.src\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 updateImage (loaderImage: HTMLImageElement) {\n requestAnimationFrame(() => {\n this.visibleImage.src = loaderImage.currentSrc || loaderImage.src\n this.visibleImage.style.filter = 'blur(0)'\n })\n }\n\n render () {\n const { polopolyId, modifier, height, alt } = this.props\n\n if (!polopolyId) {\n return
***
\n }\n const placeholderSrc = createSrc(polopolyId, 100, 0.4)\n const src = createSrc(polopolyId, 1600, 0.6)\n const srcSet = createSrcSet(polopolyId, 0.6)\n const sizes = modifier === 'larger' ? '14em' : '10em'\n\n return (\n
\n
\n (this.visibleImage = elm)} />\n
\n
\n )\n }\n}\n","// @flow @jsx h\n/* eslint-disable promise/catch-or-return,react/no-deprecated */\n/* eslint-disable promise/always-return */\nimport { Component, h } from 'preact'\nimport { createSrc, createSrcSet } from '../../../lib/image-helpers'\nimport styles from './index.css'\nimport { bem } from '@nrk/dh-utils'\n\ntype Props = {\n polopolyId: string,\n alt: string,\n description: string,\n height?: string,\n backgroundColor?: string,\n modifier: string,\n load: boolean\n}\n\ntype DecodeImage = Image & {\n decode?: Function\n}\n\nexport class LazyImage extends Component {\n visibleImage: HTMLImageElement\n\n componentWillReceiveProps (nextProps: Props) {\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: DecodeImage = new Image()\n if (this.visibleImage.dataset) {\n loaderImage.srcset = this.visibleImage.dataset.srcset || ''\n loaderImage.sizes = this.visibleImage.sizes || ''\n }\n loaderImage.src = this.visibleImage.dataset.src\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: HTMLImageElement) {\n requestAnimationFrame(() => {\n this.visibleImage.src = loaderImage.currentSrc || loaderImage.src\n this.visibleImage.style.filter = 'blur(0)'\n })\n }\n\n render () {\n const { polopolyId, modifier, load, height, backgroundColor, alt, description } = this.props\n\n if (!polopolyId) {\n return
Mangler PolopolyId
\n }\n const placeholderSrc = createSrc(polopolyId, 100, 0.6)\n const src = createSrc(polopolyId, 1600, 0.8)\n const srcSet = createSrcSet(polopolyId, 0.8)\n const sizes = (modifier === 'center') ? '(min-width: 460px) 44em, 100vw' : '100vw'\n\n return
\n \n (this.visibleImage = elm)}\n />\n \n
{description}
\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_47-scrubber\",\n \"scrubber__bgBar\": \"dhfc-1_0_0-beta_47-scrubber__bgBar\",\n \"scrubber__bufferedBar\": \"dhfc-1_0_0-beta_47-scrubber__bufferedBar\",\n \"scrubber__playedBar\": \"dhfc-1_0_0-beta_47-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_47-togglePlayButton\",\n \"togglePlayButton__pauseIcon\": \"dhfc-1_0_0-beta_47-togglePlayButton__pauseIcon\",\n \"togglePlayButton--playing\": \"dhfc-1_0_0-beta_47-togglePlayButton--playing\",\n \"togglePlayButton__playIcon\": \"dhfc-1_0_0-beta_47-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_47-toggleMuteButton\",\n \"toggleMuteButton__volumeIcon\": \"dhfc-1_0_0-beta_47-toggleMuteButton__volumeIcon\",\n \"toggleMuteButton--muted\": \"dhfc-1_0_0-beta_47-toggleMuteButton--muted\",\n \"toggleMuteButton__mutedIcon\": \"dhfc-1_0_0-beta_47-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_47-videoPlayer\",\n \"videoPlayer__container\": \"dhfc-1_0_0-beta_47-videoPlayer__container\",\n \"videoPlayer__caption\": \"dhfc-1_0_0-beta_47-videoPlayer__caption\",\n \"videoPlayer__controls\": \"dhfc-1_0_0-beta_47-videoPlayer__controls\",\n \"videoPlayer__togglePlayButton\": \"dhfc-1_0_0-beta_47-videoPlayer__togglePlayButton\",\n \"videoPlayer__toggleMuteButton\": \"dhfc-1_0_0-beta_47-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}","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;","// @flow @jsx h\n\nimport { Video, VideoPlayer } from '@nrk/dh-feature-components'\nimport { Component, h } from 'preact'\n\nimport '@nrk/dh-feature-components/dist/module/video/ResponsiveVideo/index.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/Scrubber.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/TogglePlayButton.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/ToggleMuteButton.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/index.css'\n\nimport type { Caption } from '../../domain/index'\nimport style from './index.css'\n\nexport type Props = {\n active: boolean,\n poster: string,\n webm: string,\n mp4: string,\n captions: Caption[]\n}\n\ntype State = {\n paused: boolean,\n muted: boolean\n}\n\nexport class VideoElement extends Component {\n state = {\n paused: false,\n muted: true\n }\n\n handlePlay = () => {\n console.log('play')\n }\n\n handlePause = () => {\n console.log('pause')\n }\n\n handleUserTogglePlay = () => {\n this.setState({ paused: !this.state.paused })\n }\n\n handleUserToggleMute = () => {\n this.setState({ muted: !this.state.muted })\n }\n\n render () {\n const { active } = this.props\n const { muted, paused } = this.state\n\n return (\n
\n
\n \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 './TogglePlayButton.css'\n\ntype Props = {\n className?: string,\n playing: boolean,\n onClick: Function\n}\n\nexport default function TogglePlayButton (props: Props) {\n const { playing } = props\n const className = `${bem(style.togglePlayButton, playing && 'playing')}${props.className ? ` ${props.className}` : ''}`\n\n return (\n \n )\n}\n","// @flow @jsx h\nimport { Component, h } from 'preact'\nimport { Howl } from 'howler'\nimport { bem } from '@nrk/dh-utils'\nimport TogglePlayButton from './TogglePlayButton'\nimport styles from './index.css'\nimport type { Caption } from '../../domain/index'\n\ntype Props = {\n mp3: string,\n captions: Caption[]\n}\n\ntype State = {\n playing: boolean,\n progress: number\n}\n\nexport class CaptionedAudio extends Component {\n sound: Howl\n interval: any\n state = {\n playing: false,\n progress: 0\n }\n\n componentDidMount () {\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 handlePlay = () => {\n this.setState({ playing: true })\n this.startProgress()\n }\n\n handleStop = () => {\n this.setState({ playing: false })\n this.stopProgress()\n }\n\n handleTogglePlay = () => {\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
\n {this.props.captions.map((caption, idx) => {\n const active = this.state.progress > caption.in\n return [\n caption.newLine &&
,\n {caption.text}\n ]\n })}\n\n
\n }\n}\n","// @flow @jsx h\nimport { h } from 'preact'\nimport styles from './index.css'\nimport { bem } from '@nrk/dh-utils'\n\ntype Props = {\n modifier: string\n}\n\nexport function Tips (props: Props) {\n return
\n

Har du tips til saken?

\n
\n \n \n \n Epost\n \n |\n Tlf: +47 412 62 381\n |\n Signal: +47 412 62 381\n
\n
\n}\n","// @flow\n/** @jsx h */\n/* eslint-disable jsx-a11y/aria-role */\nimport { Component, h } from 'preact'\nimport { ChatLog, ViewportIntersections } from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\nimport { trackAction } from '../../lib/google-analytic'\nimport { Email } from './Email/index'\nimport VisualStory from './VisualStory/index'\nimport { Asterism } from './Asterism/index'\nimport { LazyImage } from './LazyImage/index'\nimport { VideoElement } from './VideoElement/index'\nimport { CaptionedAudio } from './CaptionedAudio/index'\n\nimport { Tips } from './Tips/index'\n\nimport type { ContentType, SectionType } from '../domain/index'\nimport styles from './Section.css'\nimport '@nrk/dh-feature-components/dist/module/ChatLog/index.css'\nimport { HtmlContent } from './HtmlContent/index'\n\nconst nbsp = String.fromCharCode(160)\n\ntype SectionProps = {\n section: SectionType,\n viewport: { width: number, height: number },\n first: boolean,\n index: number\n}\n\ntype SectionState = {\n loadContent: any,\n playContent: any\n}\n\nexport class Section extends Component {\n constructor () {\n super()\n this.state = { loadContent: [], playContent: [] }\n }\n\n handleContentEnter = (element: any, idx: number) => {\n const sectionIndex = this.props.index\n const key = sectionIndex + '-' + idx\n const contentList = this.props.section.value.text\n const content = contentList[idx]\n const type = content.type\n\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 if (content.type === 'asterism' || content.type === 'image') {\n trackAction('SHOW_CONTENT', `${key}/${type}(${content.value.alt})`)\n } else {\n trackAction('SHOW_CONTENT', `${key}/${type}`)\n }\n\n if (content.type === 'video') {\n const playContent = this.state.playContent\n playContent[idx] = true\n this.setState({ playContent })\n }\n }\n\n handleContentLeave = (element: any, idx: number) => {\n const contentList = this.props.section.value.text\n const content = contentList[idx]\n\n if (content.type === 'video') {\n const playContent = this.state.playContent\n playContent[idx] = false\n this.setState({ playContent })\n }\n }\n\n getContenttype (idx: number) {\n const contentList = this.props.section.value.text\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 (type === 'asterism' || type === 'image' || type === 'visualstory') {\n const loadContent = this.state.loadContent\n if (!loadContent[idx]) {\n loadContent[idx] = true\n this.setState({ loadContent })\n }\n }\n }\n\n render () {\n const { section, viewport, first, index: sectionIndex } = this.props\n const { tittel } = section.value\n const [chapter, title] = tittel.indexOf(':') > -1 ? tittel.split(':') : [null, tittel]\n return (\n
\n
\n

\n \n {chapter && `${chapter}: `}\n {title}\n \n

\n
\n \n {section.value.text && section.value.text.map((element: ContentType, idx) => {\n const key = sectionIndex + '-' + idx\n switch (element.type) {\n case 'text':\n const content = element.value\n .replace('-post', '‑post')\n .replace(new RegExp(nbsp, 'g'), ' ')\n return \n case 'chatlog':\n return
\n case 'emails':\n const emails = element.value || []\n return
\n case 'visualstory':\n return
\n \n
\n case 'tips':\n return
\n case 'asterism':\n const { polopolyId, alt, modifier, height } = element.value\n return
\n case 'image':\n return
\n case 'video':\n return
\n \n
\n case 'captioned-audio':\n return
\n \n
\n default:\n return
{JSON.stringify(element, null, 2)}
\n }\n })}\n \n\n
\n )\n }\n}\n","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\nimport styles from './index.css'\n\nexport class Footer extends Component<{}> {\n render () {\n return (\n
\n
\n \n\n \n
\n Gå til nrk.no\n
\n
\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`, position: 'absolute' }\n return
(this.elm = elm)} style={inlineStyle} />\n }\n}\n","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\nimport { ViewportIntersections } from '@nrk/dh-feature-components'\n\nimport type { BylineType, SectionType } from '../domain/index'\nimport { trackAction } from '../../lib/google-analytic'\nimport { Intro } from './Intro'\nimport { Section } from './Section'\nimport { Footer } from './Footer'\nimport MaxViewportRect from './MaxViewportRect'\n\nimport styles from './App.css'\n\ntype AppProps = {\n doc: {\n tittel: string,\n ingress: string[],\n manus: Array,\n byline: BylineType\n }\n}\n\ntype AppState = {\n viewport: { height: number, width: number }\n}\n\nexport class App extends Component {\n constructor () {\n super()\n this.state = {\n viewport: { height: -1, width: -1 }\n }\n }\n\n handleViewportChange = (viewport: any) => {\n if (this.state.viewport.height !== viewport.height || this.state.viewport.width !== viewport.width) {\n this.setState({ viewport })\n }\n }\n\n handleSectionEnter = (entry: any, idx: number) => {\n if (idx < this.props.doc.manus.length) {\n trackAction('SHOW_SECTION', this.props.doc.manus[idx].value.tittel)\n } else {\n trackAction('SHOW_FOOTER', 'footer')\n }\n }\n\n render () {\n const { manus, tittel, ingress, byline } = this.props.doc\n return (\n
\n \n
\n \n \n {\n manus.map((section, idx) => {\n return \n })\n }\n
\n \n
\n
\n )\n }\n}\n","/* global __HOT__ */\n/** @jsx h */\nimport domready from 'domready'\nimport { h, render } from 'preact'\nimport { createUniqueId, toArray } from '@nrk/dh-utils'\nimport { testPositionSticky } from '@nrk/feature-tests'\nimport { simpleErrorReport, initialize as errorReportingInitialize } from '../lib/error-reporting'\n\nimport { App } from './components/App'\nimport { root as rootElementClassName } from './components/App.css'\nimport { gaInitialize } from '../lib/google-analytic'\n\nwindow[rootElementClassName] = window[rootElementClassName] || {}\n\nfunction init () {\n findElements().forEach(el => {\n el.id = createUniqueId(10, '_')\n window[rootElementClassName][el.id] = true\n\n cutTheMustard(supported => {\n if (supported) {\n // Tell CSS that JS is supported\n el.className = el.className.replace('root--noJs', 'root--js')\n\n // Extract preloaded state sent from server\n const preloadedState = JSON.parse(el.getAttribute('data-preloaded-state'))\n const { errorEventTrackingEnabled, trackingEnabled } = preloadedState\n gaInitialize(trackingEnabled)\n errorReportingInitialize(errorEventTrackingEnabled)\n simpleErrorReport().listenAndCatch()\n\n // ... and render with the exact same props\n render(, el, el.firstChild)\n\n // Enable webpack hot-reloading\n if (__HOT__) {\n // Reload and re-render React application\n module.hot.accept('./client', () => {\n render(require('./components/App').default, el, el.firstChild)\n })\n }\n } else {\n simpleErrorReport().sendErrorReport({ message: 'Warning: This browser does not support `position: sticky`' })\n\n // Load all images that would otherwise be lazy loaded\n const images = [...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 image.style.filter = 'blur(0)'\n image.style.opacity = '1'\n })\n }\n })\n })\n}\n\nfunction findElements () {\n return toArray(document.getElementsByClassName(rootElementClassName))\n .filter(el => !isInitialized(el))\n}\n\nfunction isInitialized (el) {\n return el.id && window[rootElementClassName][el.id]\n}\n\nfunction cutTheMustard (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}"],"sourceRoot":""}