{"version":3,"sources":["webpack:///./node_modules/babel-runtime/core-js/symbol.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","webpack:///./src/utils/readingTime.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./src/components/product/MobileBannerBottom.js","webpack:///./src/components/product/MobileBannerTop.js","webpack:///./src/components/product/ProductCtaBar.js","webpack:///./src/components/global/StickyProductNav.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/node-libs-browser/node_modules/util/util.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/assert/assert.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/babel-runtime/core-js/object/create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-proto.js","webpack:///./node_modules/babel-runtime/helpers/typeof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/babel-runtime/core-js/object/keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","webpack:///./src/components/MagicVideo.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-create.js","webpack:///./src/utils/order.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/get-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/define-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/babel-runtime/core-js/object/assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/babel-runtime/helpers/extends.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/babel-runtime/core-js/object/define-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/babel-runtime/helpers/createClass.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js","webpack:///./src/components/product/ProductCategoryCards.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/gatsby-image/withIEPolyfill/index.js","webpack:///./src/components/PageHero.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/symbol/index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack:///./src/utils/markdown.js","webpack:///./node_modules/babel-runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/babel-runtime/helpers/inherits.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./src/components/Gutter.js","webpack:///./src/components/hub/GutterAnnotation.js","webpack:///./src/components/hub/GutterCta.js","webpack:///./src/components/hub/GutterImage.js","webpack:///./src/components/hub/GutterElement.js","webpack:///./src/components/hub/ContentWithCallout.js","webpack:///./src/components/hub/ArticleQA.js","webpack:///./src/components/hub/ArticleMythFact.js","webpack:///./src/components/hub/ArticleStandaloneAnswer.js","webpack:///./src/components/hub/ArticleStandaloneImage.js","webpack:///./src/components/hub/ArticleBlockQuote.js","webpack:///./src/components/hub/ArticleContentGeneric.js","webpack:///./src/components/hub/ArticleEssentialTakeaways.js","webpack:///./src/components/hub/ArticleInterviewerBio.js","webpack:///./src/components/hub/ArticleRelated.js","webpack:///./src/components/hub/ArticleExperts.js","webpack:///./node_modules/react-share/es/utils/objectToGetParams.js","webpack:///./node_modules/react-share/es/utils/createShareButton.js","webpack:///./node_modules/react-share/es/FacebookShareButton.js","webpack:///./node_modules/react-share/es/TwitterShareButton.js","webpack:///./node_modules/react-share/es/PinterestShareButton.js","webpack:///./node_modules/react-share/es/EmailShareButton.js","webpack:///./src/components/hub/ArticleShare.js","webpack:///./src/components/hub/VideoOverlay.js","webpack:///./src/components/home/ProductCards.js","webpack:///./src/components/seo/Article.js","webpack:///./src/components/hub/ArticleReadProgress.js","webpack:///./src/components/hub/ArticleHero.js","webpack:///./src/utils/luma.js","webpack:///./src/templates/contentfulFreeformArticle.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/fn/object/create.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gpo.js"],"names":["module","exports","__esModule","Object","defineProperty","get","a","ceil","Math","floor","it","isNaN","f","getOwnPropertySymbols","toInteger","min","calculateReadingTime","primaryContent","reduce","total","node","contentBody","childMarkdownRemark","timeToRead","keys","META","isObject","has","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","value","i","w","meta","KEY","NEED","fastKey","create","getWeak","onFreeze","global","core","LIBRARY","wksExt","name","$Symbol","Symbol","charAt","$export","S","F","assign","Wrapper","styled","div","attrs","className","Color","white","MobileBannerBottom","render","this","props","checkoutButtonProps","Container","Row","CheckoutButton","React","Component","Banner","Font","circular","rem","p","messageBannerHeight","ProductTitle","h1","dutch","MobileBannerTop","state","isScrollingDown","messageBannerPresent","offsetFromBanner","lastScrollTop","componentDidMount","$","window","on","setIsScrollingDown","bind","context","height","setState","componentWillUnmount","off","st","pageYOffset","document","documentElement","scrollTop","bannerText","yieldedContent","linkNode","to","MagicLink","dangerouslySetInnerHTML","__html","KustomerIcon","createGlobalStyle","raised","BarWrapper","responsive","sm","md","media","mobile","BarContainer","tablet","linkWidth","Column","ProductName","h2","ritualBlue","YieldedLinkContainer","ProductLinks","MobileBannerContainer","ProductCtaBar","buttonCta","mainText","productName","hasActiveLink","onClick","children","product","showTopBar","scrollOffset","useState","showProductCtaBar","setShowProductCtaBar","atLeastTablet","setAtLeastTablet","productNameHtml","NameMap","html","useEffect","atLeast","handleScroll","throttle","header","getElementsByTagName","footer","position","headerHeight","offsetHeight","footerHeight","footerPosition","offsetTop","isBelowFooter","isAboveHero","handleResize","addEventListener","removeEventListener","buttonLocation","buttonText","appendText","stockStatus","trackCTAClick","linkAnchor","linkText","linkHref","ProductLink","StickyProductNav","contentfulProducts","intl","cf","data","allContentfulProduct","nodes","trackProductCTAClick","title","location","e","event","nonInteraction","metrics","track","productSku","sku","ctaLocation","showLearnMore","contentfulProduct","find","ctaText","t","amount","formatCurrency","price","round","Text","defaultMessage","query","toObject","$keys","done","getOwnPropertyDescriptors","obj","descriptors","length","getOwnPropertyDescriptor","formatRegExp","format","isString","objects","arguments","push","inspect","join","args","len","str","String","replace","x","Number","JSON","stringify","_","isNull","deprecate","fn","msg","process","noDeprecation","apply","warned","throwDeprecation","Error","traceDeprecation","console","trace","error","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","isFunction","constructor","prototype","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","array","hash","forEach","val","idx","arrayToHash","getOwnPropertyNames","isError","indexOf","formatError","isRegExp","RegExp","toString","call","isDate","Date","output","base","braces","isArray","toUTCString","l","hasOwnProperty","formatProperty","key","match","formatArray","map","pop","prev","cur","numLinesEst","reduceToSingleString","desc","set","split","line","substr","ar","Array","arg","re","objectToString","d","o","pad","n","debuglog","NODE_DEBUG","toUpperCase","test","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","time","getHours","getMinutes","getSeconds","getDate","getMonth","prop","log","inherits","origin","add","kCustomPromisifiedSymbol","undefined","callbackifyOnRejected","reason","cb","newReason","promisify","original","TypeError","enumerable","writable","configurable","promiseResolve","promiseReject","promise","Promise","resolve","reject","err","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","self","then","nextTick","rej","Function","__g","objectAssign","compare","b","y","Buffer","_isBuffer","util","hasOwn","pSlice","slice","functionsHaveNames","pToString","isView","arrbuf","ArrayBuffer","DataView","buffer","assert","ok","regex","getName","func","truncate","s","something","rawname","fail","actual","expected","message","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","getTime","source","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","sort","objEquiv","object","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","options","generatedMessage","getMessage","captureStackTrace","stack","out","fn_name","next_line","substring","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","toIObject","arrayIndexOf","IE_PROTO","names","O","result","dP","createDesc","is","createElement","DESCRIPTORS","getKeys","gOPS","pIE","IObject","$assign","A","B","K","k","target","T","aLen","index","getSymbols","isEnum","concat","j","OFI","propRegex","testImg","Image","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","getAttribute","nativeSetAttribute","setAttribute","autoModeEnabled","setPlaceholder","img","width","placeholder","onImageReady","callback","naturalWidth","setTimeout","fixOne","el","parsed","getComputedStyle","fontFamily","exec","getStyle","ofi","skipTest","srcset","src","naturalHeight","ss","keepSrcUsable","warn","picturefill","pf","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","fix","imgs","startAutoMode","querySelectorAll","body","tagName","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","$at","iterated","_t","_i","point","defined","symbols","anObject","check","proto","buggy","__proto__","_iterator2","_interopRequireDefault","_symbol2","_typeof","default","bitmap","_typeof2","_typeof3","ReferenceError","ctor","superCtor","super_","TempCtor","gOPN","windowNames","getWindowNames","propertyIsEnumerable","TO_STRING","that","pos","charCodeAt","IE8_DOM_DEFINE","toPrimitive","P","Attributes","MagicVideoWrapper","videoStyle","langLabel","en","MagicVideo","videoElement","createRef","locale","navigator","language","play","current","pause","autoPlay","captions","controls","crossorigin","loop","poster","preload","sources","onPause","onEnded","onPlay","onSeeking","onSeeked","videoElementStyle","videoProps","crossOrigin","ref","file","url","type","contentType","caption","description","kind","srcLang","label","$getPrototypeOf","descriptor","setToStringTag","IteratorPrototype","Constructor","NAME","next","orderArray","order","property","aIndex","bIndex","valueOf","$Object","redefine","hide","Iterators","$iterCreate","ITERATOR","BUGGY","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","getMethod","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","_assign","_assign2","gOPD","classNames","classes","argType","inner","isForced","inheritIfRequired","getFlags","stickyHelpers","fails","setInternalState","setSpecies","MATCH","wellKnownSymbol","NativeRegExp","RegExpPrototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","RegExpWrapper","pattern","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","cof","own","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","C","c","virtual","R","U","_defineProperty","_defineProperty2","protoProps","staticProps","version","__e","shared","uid","hiddenKeys","TO_STRING_TAG","DOMIterables","Collection","addToUnscopables","step","_k","Arguments","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","D","protoDesc","wrap","tag","sym","iterator","$defineProperty","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","store","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","dPs","enumBugKeys","Empty","createDict","iframeDocument","iframe","display","appendChild","contentWindow","open","write","lt","close","Properties","section","CategoryCardsContainer","scrollable","Slide","lg","GridSlide","ImageContainer","ritualYellow","RibbonStyle","css","OrderedCardShortNames","ProductCategoryCards","categories","allContentfulProductCategory","orderedCategoryNodes","_getOrderedCategories","handleClick","allCategoryNodes","renderSlides","slides","SlideComponent","slide","fluid","loading","backgroundColor","alt","altText","userSelect","userDrag","pointerEvents","touchCallout","imgStyle","objectPosition","flag","contentStyle","bundleImage","bundleImages","discountData","getDiscountData","shortName","shopLandingReference","slug","cardImage","titleCopy","bleedLeft","bleedRight","ProductCategoryCardsQuery","componentQuery","_interopRequireWildcard3","require","_extends2","_objectWithoutPropertiesLoose2","_interopRequireWildcard2","_inheritsLoose2","_react","_propTypes","_index","ImageWithIEPolyfill","_Component","_this","_len","_key","imageRef","innerRef","placeholderRef","_proto","_this2","objectFit","_ref","ObjectFitImages","_this$props","polyfillStyle","placeholderStyle","propTypes","string","defaultProps","_default","forwardRef","ContentArea","PageHero","columnStyling","imageMobile","imageDesktop","imageObjectPosition","defaultStyle","left","top","zIndex","exp","instance","px","random","copy","fill","readUInt8","parseMarkdown","content","localized","g1","g2","localizePath","Marked","parseInline","processHtml","def","stat","_setPrototypeOf2","_create2","subClass","superClass","aFunction","max","mode","copyright","GutterContainer","aside","hideGutter","GutterSeperator","hr","Gutter","Annotation","AnnotationLineWrapper","Title","h3","Description","ContainedImage","Content","hasImage","CtaLink","GutterAnnotation","renderImage","image","detailCopy","ctaUrl","hasCta","CtaContent","notDesktop","Box","CtaTitle","CtaCopy","maxLines","GutterCta","shortCopy","overrideContent","StyledGutter","CategoryName","ArticleName","ImageArea","ImageContent","GutterImage","renderContent","article","category","href","magicUrl","ariaLabel","GutterElement","__typename","ContentWithCallout","answerRef","shouldInterpolate","isMobile","gutterItem","updateGutterItemOnResize","onResize","shouldInterpolateAnnotation","unbindResize","updateIsMobile","updateCodePosition","shouldBeMobile","atMost","firstCode","codeTop","outerHeight","onCalloutMoved","regexPeriodAndSpaceAfterCallout","insertAnnotationAfterEndOfSentence","gutterItemHtml","renderToStaticMarkup","regexResult","r","renderContentWithAnnotation","contentWithAnnotation","Article","ArticleQuestion","ArticleQA","annotation","questionRef","annotationTop","setAnnotationTop","setHideGutter","question","answer","firstGutterItem","gutterContent","Myth","MythIcon","ritualRed","MythTitle","ArticleMyth","FactContent","FactIcon","FactTitle","ArticleMythFact","mythRef","myth","fact","ArticleStandaloneAnswer","ImageModule","ImageCol","ImageWrapper","ArticleStandaloneImage","maxWidth","Quote","blockquote","ArticleBlockQuote","renderGutter","quote","ContentRow","ArticleContentGeneric","ArticleEssentialTakeaways","BioAvatar","BioContent","Arrow","ArticleInterviewerBio","interviewerName","bio","avatar","viewBox","xmlns","xmlnsXlink","points","stroke","strokeWidth","fillRule","xlinkHref","mask","RelatedWrapper","role","RelatedHeader","RelatedArticle","RelatedArticleContent","color","RelatedFloatBottom","RelatedReadtime","span","RelatedTitle","RelatedPreview","StyledArticlesButton","RitualButton","StyledArticlesButtonContainer","ArticleRelated","renderArticles","showPreview","previewText","heroImage","heroBackgroundColor","heroSecondaryColor","readingTime","fixed","desktop","readTime","StyledRow","StyledColumn","ExpertsSection","ExpertsContainer","MobileExpert","rgba","DesktopExpert","ArticleExperts","renderExpert","expert","articleTitle","currentTitle","expertTitle","minWidth","experts","expertsHeading","expertsSubheading","heading","subheading","objectToGetParams","filter","encodeURIComponent","getBoxPositionOnWindowCenter","outerWidth","screenX","screenLeft","screenY","screenTop","getBoxPositionOnScreenCenter","screen","windowOpen","onClose","_ref$height","_ref$width","configRest","config","toolbar","status","directories","menubar","scrollbars","resizable","centerscreen","chrome","shareDialog","interval","setInterval","closed","clearInterval","_PureComponent","ShareButton","_ref2","_temp","_ret","disabled","openWindow","beforeOnClick","preventDefault","link","clickHandler","returnVal","onKeyPress","_this$props2","windowPosition","onShareWindowClose","windowWidth","windowHeight","_props","networkLink","_props2","additionalProps","disabledStyle","network","tabIndex","opacity","optsMap","CreatedButton","hashtag","u","picture","via","_ref$hashtags","hashtags","text","arrayOf","isRequired","subject","separator","ShareRow","ShareTitle","ShareColumn","SVGWrapper","ArticleShare","getMailto","trackWithSegment","shareUrl","siteUrl","shareImageUrl","share","email","Facebook","Twitter","Pinterest","Email","OverlayContainer","OverlayContent","OverlayBackground","CloseButton","button","VideoOverlay","session_id","sendSeekStarted","sendSeekCompleted","video","v4","isPhone","userAgent","webkitEnterFullscreen","stop","_trackVideoEvent","eventName","currentTime","duration","volume","articleVideo","content_asset_id","content_asset_title","content_asset_description","content_pod_id","total_length","video_player","sound","ad_enabled","quality","livestream","sendSeekStartedTimeout","clearTimeout","sendSeekCompletedTimeout","visible","aria-label","Close","ProductContainer","noTopMargin","Grid","numberOfProducts","ProductContent","ProductDescription","ProductCards","products","ProductCard","plain","cardBackgroundColor","hrefLang","fadeIn","shortDescription","ArticleSEO","defaultTitle","siteTitle","imgUrlPartial","imgWidth","imgHeight","pagePath","pageUrl","imgUrl","schemaOrgJSONLD","itemListElement","item","alternateName","siteTitleAlt","headline","author","authorUrl","publisher","logo","siteLogo","mainEntityOfPage","GeneralTags","Helmet","ProgressBar","ArticleReadProgress","scrolled","topPosition","timeout","initializeScrollMagic","updateScrollMagicOnResize","handleScrollPosition","destroyScrollMagic","prevState","debouncedUpdateScrollMagic","scrollMagicTimeout","updateScrollMagic","controller","destroy","ScrollMagic","Controller","globalSceneOptions","initializeProgressBar","articleLength","innerHeight","halfViewport","Scene","triggerElement","setTween","progressTween","addTo","barLength","stationaryLength","gsap","timeline","fromTo","right","ease","delay","HeroRow","HeroColumn","HeroContent","Category","ReadingTime","PlayButton","ArticleImageHero","darkOrBright","luma","rgb","parseInt","isBright","lengthInMinutes","videoLength","paddingTop","variant","Play","ArticleContainer","CardsSection","ProductCardContainer","Components","ContentfulContentInterviewQA","ContentfulContentMythFact","ContentfulContentInterviewStandaloneAnswer","ContentfulContentStandaloneImage","ContentfulContentBlockquote","ContentfulContentGeneric","ContentfulContentInterviewBio","contentfulArticleFreeform","pageTitle","showVideoOverlay","seo","contentHubArticlesUrl","videoOverlay","updatePageData","updateLayoutState","navColor","banner","showOverlay","hideOverlay","renderComponent","componentNode","component","essentialTakeaways","relatedArticles","desktopImage","mobileImage","productsHasContent","hasProducts","hasCategories","floatRightSingleProductCard","USE_SYMBOL"],"mappings":"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","file":"component---src-templates-contentful-freeform-article-js-e6f3854cdc65e707c12f.js","sourcesContent":["module.exports = {\n \"default\": require(\"core-js/library/fn/symbol\"),\n __esModule: true\n};","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","exports.f = require('./_wks');\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","export function calculateReadingTime(primaryContent) {\n return primaryContent.reduce((total, node) => {\n return node.contentBody\n ? total + node.contentBody.childMarkdownRemark.timeToRead\n : total;\n }, 0);\n}\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","module.exports = true;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Color } from \"../../utils/style\";\nimport Container from \"../Container\";\nimport Row from \"../Row\";\nimport CheckoutButton from \"./CheckoutButton\";\n\nconst Wrapper = styled.div.attrs({\n className: \"mobile-banner-bottom\",\n})`\n position: fixed;\n bottom: 0;\n width: 100%;\n z-index: 999;\n\n .mobile-banner-bottom-btn-container {\n background-color: ${Color.white};\n border-top: 1px solid #ccc;\n padding-bottom: 12px;\n width: 100%;\n z-index: 399;\n\n .row {\n align-items: center;\n height: 100%;\n\n a {\n width: 100%;\n }\n }\n\n padding-top: 12px;\n padding-bottom: max(env(safe-area-inset-bottom), 12px);\n }\n`;\n\nexport default class MobileBannerBottom extends React.Component {\n render() {\n const { checkoutButtonProps, id } = this.props;\n\n return (\n \n \n \n \n \n \n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Font, Color, rem } from \"../../utils/style\";\nimport MagicLink from \"../MagicLink\";\nimport $ from \"jquery\";\n\nconst Banner = styled.div`\n ${Font.circular}\n background-color: ${Color.white};\n font-size: ${rem(18)};\n\n width: 100%;\n height: 52px;\n\n position: fixed;\n top: ${p => p.messageBannerHeight};\n left: 0;\n z-index: 999;\n\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n\n border-bottom: 1px solid rgba(0, 0, 0, 0.16);\n padding: 0 15px;\n\n display: none;\n &.compacted {\n display: flex;\n }\n`;\n\nconst ProductTitle = styled.h1`\n ${Font.circular}\n background-color: ${Color.white};\n font-size: ${rem(18)};\n display: flex;\n margin: 0;\n\n > p {\n margin: 0;\n }\n em {\n ${Font.dutch}\n font-style: italic;\n }\n`;\n\nexport default class MobileBannerTop extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isScrollingDown: true,\n messageBannerPresent: false,\n messageBannerHeight: props.offsetFromBanner || 0,\n };\n this.lastScrollTop = 0;\n }\n\n componentDidMount() {\n $(window).on(\"scroll.banner\", this.setIsScrollingDown.bind(this));\n\n $(window).on(\"messageBanner.open\", (context, height) => {\n this.setState({\n messageBannerPresent: true,\n messageBannerHeight: height,\n });\n });\n\n $(window).on(\"messageBanner.close\", () => {\n this.setState({\n messageBannerPresent: false,\n messageBannerHeight: 0,\n });\n });\n }\n\n componentWillUnmount() {\n $(window).off(\"scroll.banner\");\n }\n\n setIsScrollingDown() {\n let st = window.pageYOffset || document.documentElement.scrollTop; // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\n\n this.setState({\n isScrollingDown: st > this.lastScrollTop,\n });\n this.lastScrollTop = st <= 0 ? 0 : st;\n }\n\n render() {\n const { bannerText, yieldedContent, id } = this.props;\n\n const { isScrollingDown, messageBannerHeight } = this.state;\n const linkNode = yieldedContent ? yieldedContent.props.to : null;\n\n return (\n \n {linkNode ? (\n \n \n \n ) : (\n \n )}\n {yieldedContent}\n \n );\n }\n}\n","import React, { useEffect, useState } from \"react\";\nimport styled, { createGlobalStyle } from \"styled-components\";\nimport throttle from \"lodash/throttle\";\n\n// Utils\nimport {\n Font,\n Color,\n rem,\n media,\n atLeast,\n responsive,\n} from \"../../utils/style\";\nimport NameMap from \"../../utils/nameMap\";\n\n// Components\nimport Container from \"../Container\";\nimport Row from \"../Row\";\nimport CheckoutButton from \"./CheckoutButton\";\nimport MobileBannerBottom from \"./MobileBannerBottom\";\nimport MobileBannerTop from \"./MobileBannerTop\";\n\n// Styled Elements\nconst KustomerIcon = createGlobalStyle`\n ${p => {\n if (p.raised) {\n return `\n .kustomer-app-icon {\n bottom: 75px !important;\n margin-bottom: env(safe-area-inset-bottom) !important;\n }\n `;\n }\n }}\n`;\n\nconst BarWrapper = styled.div.attrs({\n id: \"product-cta-bar-desktop\",\n className: \"product-banner\",\n})`\n position: fixed;\n top: 64px;\n right: 0;\n left: 0;\n z-index: 106;\n background-color: ${Color.white};\n border-bottom: 1px solid #ccc;\n transform: translateY(-200%);\n transition: transform 320ms ease-in-out, opacity 200ms ease-out;\n opacity: 0;\n\n &.active {\n top: initial;\n\n ${responsive.sm`\n transform: translateY(0);\n top: ${p => {\n const headerHeight = 52;\n return p.offsetFromBanner\n ? p.offsetFromBanner + headerHeight\n : headerHeight;\n }}px;\n opacity: 1;\n `}\n\n ${responsive.md`\n top: ${p => (p.offsetFromBanner ? p.offsetFromBanner + 64 : 64)}px;\n `}\n }\n\n ${media.mobile`\n top: initial;\n bottom: 0;\n transform: translateY(100%);\n border-top: 1px solid #ccc;\n border-bottom: 0;\n `};\n`;\n\nconst BarContainer = styled(Container).attrs({\n id: \"product-cta-bar-desktop_container\",\n})`\n ${media.tablet`\n padding-left: max(15px, env(safe-area-inset-left));\n padding-right: max(15px, env(safe-area-inset-right));\n `} a {\n width: ${p => (p.linkWidth ? p.linkWidth + \"px\" : \"auto\")};\n }\n\n ${media.mobile`\n padding-bottom: env(safe-area-inset-bottom);\n\n a {\n width: 100% !important;\n margin: 0 auto;\n }\n `};\n`;\n\nconst Column = styled.div.attrs({\n className: \"col-12\",\n})`\n padding: 0 !important;\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 64px;\n\n ${media.tablet`\n width: 100%;\n `};\n`;\n\nconst ProductName = styled.h2.attrs({\n id: \"product-cta-bar-desktop_container_column_product-name\",\n})`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(22)};\n line-height: ${rem(32)};\n font-weight: 500;\n text-align: left;\n letter-spacing: -0.2px;\n margin: 0;\n\n em {\n ${Font.dutch}\n font-style: italic;\n }\n\n ${media.tablet`\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n letter-spacing: 0;\n `}\n\n ${media.mobile`\n display: none !important;\n `}\n`;\n\nconst YieldedLinkContainer = styled.div`\n display: flex;\n align-items: center;\n margin-right: 32px;\n\n &.active {\n display: none;\n }\n\n & > * {\n margin: 0;\n }\n`;\n\nconst ProductLinks = styled.div.attrs({\n id: \"product-cta-bar-desktop_container_column_links\",\n})`\n display: flex;\n`;\n\nconst MobileBannerContainer = styled.div`\n width: 100%;\n z-index: 999;\n opacity: 0;\n visibility: hidden;\n\n &.active {\n opacity: 1;\n visibility: visible;\n }\n`;\n\nexport default function ProductCtaBar({\n buttonCta,\n mainText,\n productName,\n hasActiveLink,\n onClick,\n linkWidth,\n offsetFromBanner,\n children,\n product,\n showTopBar = true,\n scrollOffset = 700,\n}) {\n const [showProductCtaBar, setShowProductCtaBar] = useState(false);\n const [atLeastTablet, setAtLeastTablet] = useState(false);\n const productNameHtml = NameMap(productName).html;\n\n useEffect(() => {\n setAtLeastTablet(atLeast.tablet());\n }, []);\n\n useEffect(() => {\n const handleScroll = throttle(() => {\n let header = document.getElementsByTagName(\"header\")[0];\n let footer = document.getElementsByTagName(\"footer\")[0];\n let position = window.pageYOffset;\n\n let headerHeight = header.offsetHeight;\n let footerHeight = footer.offsetHeight;\n let footerPosition = footer.offsetTop;\n\n let isBelowHeroAndAboveFooter =\n position >= scrollOffset - headerHeight &&\n position < footerPosition - headerHeight - footerHeight / 2 &&\n !showProductCtaBar;\n\n let isBelowFooter =\n position >= footerPosition - headerHeight - footerHeight / 2 &&\n showProductCtaBar;\n\n let isAboveHero =\n position < scrollOffset - headerHeight && showProductCtaBar;\n\n if (isBelowHeroAndAboveFooter) {\n setShowProductCtaBar(true);\n } else if (isBelowFooter) {\n setShowProductCtaBar(false);\n } else if (isAboveHero) {\n setShowProductCtaBar(false);\n }\n }, 200);\n\n const handleResize = throttle(\n () => setAtLeastTablet(atLeast.tablet()),\n 400,\n );\n\n window.addEventListener(\"scroll\", handleScroll);\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [showProductCtaBar]);\n\n let checkoutButtonProps = {\n buttonLocation: \"Sticky Nav\",\n buttonText: mainText,\n appendText: buttonCta,\n stockStatus: product.stockStatus,\n trackCTAClick: onClick,\n product,\n className: \"ProductCtaButton\",\n };\n\n return atLeastTablet ? (\n \n \n \n \n \n \n {children && (\n {children}\n )}\n \n \n \n \n \n \n ) : (\n \n \n {showTopBar && (\n \n )}\n \n \n );\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { StaticQuery, graphql } from \"gatsby\";\n\nimport ProductCtaBar from \"../product/ProductCtaBar\";\nimport MagicLink from \"../MagicLink\";\nimport Text from \"../Text\";\n\nimport { rem, Font, Color } from \"../../utils/style\";\nimport metrics from \"../../utils/metrics\";\n\n// Services\nimport intl from \"../../services/intl\";\n\nconst ProductLink = styled(MagicLink)`\n ${Font.circular};\n font-size: ${rem(14)} !important;\n line-height: ${rem(24)} !important;\n border-bottom: 2px solid ${Color.ritualBlue};\n`;\n\nconst componentQuery = graphql`\n query stickyProductNavQuery {\n allContentfulProduct {\n nodes {\n node_locale\n __typename\n name {\n name\n }\n sku\n slug\n price\n socialImage {\n file {\n url\n }\n }\n stockStatus\n }\n }\n }\n`;\n\nclass StickyProductNav extends React.Component {\n constructor(props) {\n super(props);\n this.contentfulProducts = intl.cf(props.data.allContentfulProduct.nodes);\n }\n\n trackProductCTAClick(title, location, e) {\n let event = {\n title: title,\n nonInteraction: false,\n location: location,\n };\n metrics.track(\"CTA Clicked\", event);\n }\n\n render() {\n const productSku = this.props.sku;\n\n const {\n ctaLocation,\n scrollOffset,\n showLearnMore,\n showTopBar,\n offsetFromBanner,\n } = this.props;\n\n const contentfulProduct = this.contentfulProducts.find(product => {\n return productSku === product.sku;\n });\n\n const ctaText = intl.t(\"general.button-add-cart\", \"Add to Cart\");\n\n return (\n \n {showLearnMore && (\n \n \n \n )}\n \n );\n }\n}\n\nexport default function(props) {\n return (\n }\n />\n );\n}\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n\n return descriptors;\n};\n\nvar formatRegExp = /%[sdj%]/g;\n\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n default:\n return x;\n }\n });\n\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n\n return str;\n}; // Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\n\n\nexports.deprecate = function (fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n } // Allow for deprecating things in the process of starting up.\n\n\n if (typeof process === 'undefined') {\n return function () {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\nvar debugs = {};\nvar debugEnviron;\n\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n\n debugs[set] = function () {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function () {};\n }\n }\n\n return debugs[set];\n};\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n\n/* legacy: obj, showHidden, depth, colors*/\n\n\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n }; // legacy...\n\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n } // set default options\n\n\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\nexports.inspect = inspect; // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\ninspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n}; // Don't use 'blue' not visible on cmd.exe\n\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return \"\\x1B[\" + inspect.colors[style][0] + 'm' + str + \"\\x1B[\" + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\nfunction arrayToHash(array) {\n var hash = {};\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n return hash;\n}\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n\n return ret;\n } // Primitive types cannot have properties\n\n\n var primitive = formatPrimitive(ctx, value);\n\n if (primitive) {\n return primitive;\n } // Look up the keys of the object.\n\n\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n } // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\n\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n } // Some type of object without properties can be shortcutted.\n\n\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '',\n array = false,\n braces = ['{', '}']; // Make Array say that they are Array\n\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n } // Make functions say that they are functions\n\n\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n } // Make RegExps say that they are RegExps\n\n\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n } // Make dates with properties first say the date\n\n\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n } // Make error with message first say the error\n\n\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n var output;\n\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function (key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); // For some reason typeof null is \"object\", so special case here.\n\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n\n name = JSON.stringify('' + key);\n\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function (prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n} // NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 26 Feb 16:19:34\n\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n} // log is just a thin wrapper to console.log that prepends a timestamp\n\n\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\n\n\nexports.inherits = require('inherits');\n\nexports._extend = function (origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function') throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return Object.defineProperties(fn, getOwnPropertyDescriptors(original));\n};\n\nexports.promisify.custom = kCustomPromisifiedSymbol;\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n } // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n\n\n function callbackified() {\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n\n var self = this;\n\n var cb = function cb() {\n return maybeCb.apply(self, arguments);\n }; // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n\n\n original.apply(this, args).then(function (ret) {\n process.nextTick(cb, null, ret);\n }, function (rej) {\n process.nextTick(callbackifyOnRejected, rej, cb);\n });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\n\nexports.callbackify = callbackify;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","'use strict';\n\nvar objectAssign = require('object-assign'); // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n\n return !!(b != null && b._isBuffer);\n} // based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\nvar util = require('util/');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\n\nvar functionsHaveNames = function () {\n return function foo() {}.name === 'foo';\n}();\n\nfunction pToString(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n\n if (!arrbuf) {\n return false;\n }\n\n if (arrbuf instanceof DataView) {\n return true;\n }\n\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n\n return false;\n} // 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\n\nvar assert = module.exports = ok; // 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/; // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\n\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n\n if (functionsHaveNames) {\n return func.name;\n }\n\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\n\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n\n var stackStartFunction = options.stackStartFunction || fail;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n\n if (err.stack) {\n var out = err.stack; // try to strip useless frames\n\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n}; // assert.AssertionError instanceof Error\n\n\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\n\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\n\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' + self.operator + ' ' + truncate(inspect(self.expected), 128);\n} // At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n} // EXTENSION! allows for well behaved errors defined elsewhere.\n\n\nassert.fail = fail; // 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\n\nassert.ok = ok; // 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n}; // 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n}; // 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0; // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime(); // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source && actual.global === expected.global && actual.multiline === expected.multiline && actual.lastIndex === expected.lastIndex && actual.ignoreCase === expected.ignoreCase; // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') && (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected; // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) && pToString(actual) === pToString(expected) && !(actual instanceof Float32Array || actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer), new Uint8Array(expected.buffer)) === 0; // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {\n actual: [],\n expected: []\n };\n var actualIndex = memos.actual.indexOf(actual);\n\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined) return false; // if one is a primitive, the other must be same\n\n if (util.isPrimitive(a) || util.isPrimitive(b)) return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if (aIsArgs && !bIsArgs || !aIsArgs && bIsArgs) return false;\n\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i; // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n\n if (ka.length !== kb.length) return false; //the same set of keys (although not necessarily the same order),\n\n ka.sort();\n kb.sort(); //~~~cheap key test\n\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) return false;\n } //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n\n\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) return false;\n }\n\n return true;\n} // 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n} // 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n}; // 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {// Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n\n try {\n block();\n } catch (e) {\n error = e;\n }\n\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if (isUnwantedException && userProvidedMessage && expectedException(actual, expected) || isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if (shouldThrow && actual && expected && !expectedException(actual, expected) || !shouldThrow && actual) {\n throw actual;\n }\n} // 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\n\nassert.throws = function (block,\n/*optional*/\nerror,\n/*optional*/\nmessage) {\n _throws(true, block, error, message);\n}; // EXTENSION! This is annoying to write outside this module.\n\n\nassert.doesNotThrow = function (block,\n/*optional*/\nerror,\n/*optional*/\nmessage) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function (err) {\n if (err) throw err;\n}; // Expose a strict only variant of assert\n\n\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n\n return keys;\n};","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/create\"),\n __esModule: true\n};","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {\n style: {\n 'object-position': 1\n }\n} : new Image();\nvar supportsObjectFit = ('object-fit' in testImg.style);\nvar supportsObjectPosition = ('object-position' in testImg.style);\nvar supportsOFI = ('background-size' in testImg.style);\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\";\n}\n\nfunction polyfillCurrentSrc(el) {\n if (el.srcset && !supportsCurrentSrc && window.picturefill) {\n var pf = window.picturefill._; // parse srcset with picturefill where currentSrc isn't available\n\n if (!el[pf.ns] || !el[pf.ns].evaled) {\n // force synchronous srcset parsing\n pf.fillImg(el, {\n reselect: true\n });\n }\n\n if (!el[pf.ns].curSrc) {\n // force picturefill to parse srcset\n el[pf.ns].supported = false;\n pf.fillImg(el, {\n reselect: true\n });\n } // retrieve parsed currentSrc, if any\n\n\n el.currentSrc = el[pf.ns].curSrc || el.src;\n }\n}\n\nfunction getStyle(el) {\n var style = getComputedStyle(el).fontFamily;\n var parsed;\n var props = {};\n\n while ((parsed = propRegex.exec(style)) !== null) {\n props[parsed[1]] = parsed[2];\n }\n\n return props;\n}\n\nfunction setPlaceholder(img, width, height) {\n // Default: fill width, no height\n var placeholder = createPlaceholder(width || 1, height || 0); // Only set placeholder if it's different\n\n if (nativeGetAttribute.call(img, 'src') !== placeholder) {\n nativeSetAttribute.call(img, 'src', placeholder);\n }\n}\n\nfunction onImageReady(img, callback) {\n // naturalWidth is only available when the image headers are loaded,\n // this loop will poll it every 100ms.\n if (img.naturalWidth) {\n callback(img);\n } else {\n setTimeout(onImageReady, 100, img, callback);\n }\n}\n\nfunction fixOne(el) {\n var style = getStyle(el);\n var ofi = el[OFI];\n style['object-fit'] = style['object-fit'] || 'fill'; // default value\n // Avoid running where unnecessary, unless OFI had already done its deed\n\n if (!ofi.img) {\n // fill is the default behavior so no action is necessary\n if (style['object-fit'] === 'fill') {\n return;\n } // Where object-fit is supported and object-position isn't (Safari < 10)\n\n\n if (!ofi.skipTest && // unless user wants to apply regardless of browser support\n supportsObjectFit && // if browser already supports object-fit\n !style['object-position'] // unless object-position is used\n ) {\n return;\n }\n } // keep a clone in memory while resetting the original to a blank\n\n\n if (!ofi.img) {\n ofi.img = new Image(el.width, el.height);\n ofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n ofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src; // preserve for any future cloneNode calls\n // https://github.com/bfred-it/object-fit-images/issues/53\n\n nativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\n if (el.srcset) {\n nativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n }\n\n setPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height); // remove srcset because it overrides src\n\n if (el.srcset) {\n el.srcset = '';\n }\n\n try {\n keepSrcUsable(el);\n } catch (err) {\n if (window.console) {\n console.warn('https://bit.ly/ofi-old-browser');\n }\n }\n }\n\n polyfillCurrentSrc(ofi.img);\n el.style.backgroundImage = \"url(\\\"\" + (ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"') + \"\\\")\";\n el.style.backgroundPosition = style['object-position'] || 'center';\n el.style.backgroundRepeat = 'no-repeat';\n el.style.backgroundOrigin = 'content-box';\n\n if (/scale-down/.test(style['object-fit'])) {\n onImageReady(ofi.img, function () {\n if (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n el.style.backgroundSize = 'contain';\n } else {\n el.style.backgroundSize = 'auto';\n }\n });\n } else {\n el.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n }\n\n onImageReady(ofi.img, function (img) {\n setPlaceholder(el, img.naturalWidth, img.naturalHeight);\n });\n}\n\nfunction keepSrcUsable(el) {\n var descriptors = {\n get: function get(prop) {\n return el[OFI].img[prop ? prop : 'src'];\n },\n set: function set(value, prop) {\n el[OFI].img[prop ? prop : 'src'] = value;\n nativeSetAttribute.call(el, \"data-ofi-\" + prop, value); // preserve for any future cloneNode\n\n fixOne(el);\n return value;\n }\n };\n Object.defineProperty(el, 'src', descriptors);\n Object.defineProperty(el, 'currentSrc', {\n get: function get() {\n return descriptors.get('currentSrc');\n }\n });\n Object.defineProperty(el, 'srcset', {\n get: function get() {\n return descriptors.get('srcset');\n },\n set: function set(ss) {\n return descriptors.set(ss, 'srcset');\n }\n });\n}\n\nfunction hijackAttributes() {\n function getOfiImageMaybe(el, name) {\n return el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n }\n\n if (!supportsObjectPosition) {\n HTMLImageElement.prototype.getAttribute = function (name) {\n return nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n };\n\n HTMLImageElement.prototype.setAttribute = function (name, value) {\n return nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n };\n }\n}\n\nfunction fix(imgs, opts) {\n var startAutoMode = !autoModeEnabled && !imgs;\n opts = opts || {};\n imgs = imgs || 'img';\n\n if (supportsObjectPosition && !opts.skipTest || !supportsOFI) {\n return false;\n } // use imgs as a selector or just select all images\n\n\n if (imgs === 'img') {\n imgs = document.getElementsByTagName('img');\n } else if (typeof imgs === 'string') {\n imgs = document.querySelectorAll(imgs);\n } else if (!('length' in imgs)) {\n imgs = [imgs];\n } // apply fix to all\n\n\n for (var i = 0; i < imgs.length; i++) {\n imgs[i][OFI] = imgs[i][OFI] || {\n skipTest: opts.skipTest\n };\n fixOne(imgs[i]);\n }\n\n if (startAutoMode) {\n document.body.addEventListener('load', function (e) {\n if (e.target.tagName === 'IMG') {\n fix(e.target, {\n skipTest: opts.skipTest\n });\n }\n }, true);\n autoModeEnabled = true;\n imgs = 'img'; // reset to a generic selector for watchMQ\n } // if requested, watch media queries for object-fit change\n\n\n if (opts.watchMQ) {\n window.addEventListener('resize', fix.bind(null, imgs, {\n skipTest: opts.skipTest\n }));\n }\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\nhijackAttributes();\nmodule.exports = fix;","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj;\n};\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {\n \"default\": require(\"core-js/library/fn/symbol/iterator\"),\n __esModule: true\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/keys\"),\n __esModule: true\n};","exports.f = {}.propertyIsEnumerable;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\n\n// Styled Elements\nconst MagicVideoWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n video {\n max-width: 100%;\n max-height: 100%;\n\n [data-whatintent=\"mouse\"] &:focus,\n [data-whatintent=\"touch\"] &:focus {\n outline: none;\n }\n }\n\n ${p => p.videoStyle};\n`;\n\n// Video related\nconst langLabel = {\n en: \"English\",\n};\n\nexport default class MagicVideo extends React.Component {\n static propTypes = {\n captions: PropTypes.array,\n className: PropTypes.string,\n sources: PropTypes.array,\n videoStyle: PropTypes.any,\n };\n\n constructor(props) {\n super(props);\n\n this.videoElement = React.createRef();\n this.locale = null;\n }\n\n componentDidMount() {\n this.locale = window.navigator.language;\n }\n\n play() {\n this.videoElement.current.play();\n }\n\n pause() {\n this.videoElement.current.pause();\n }\n\n render() {\n const {\n /* Attributes */\n autoPlay = false,\n captions,\n controls = true,\n crossorigin,\n loop = false,\n poster,\n preload = \"metadata\",\n sources,\n /* Interaction Callbacks */\n onPause,\n onEnded,\n onPlay,\n onSeeking,\n onSeeked,\n onClick,\n /* Other */\n className,\n videoStyle = {},\n videoElementStyle = {},\n } = this.props;\n\n if (!sources) {\n console.warn(\"No video sources found\");\n return null;\n }\n\n if (!captions) console.warn(\"Captions missing for video\");\n\n let videoProps = {\n /* Attributes */\n autoPlay,\n controls,\n loop,\n poster,\n preload,\n /* Interaction Callbacks */\n onPause,\n onEnded,\n onPlay,\n onSeeking,\n onSeeked,\n onClick,\n };\n\n if (crossorigin) {\n videoProps.crossOrigin = crossorigin;\n }\n\n /* eslint-disable jsx-a11y/media-has-caption */\n /* ^ jsx-a11y cant see inside the .map ¯\\_(ツ)_/¯ */\n return (\n \n \n {sources.map((source, i) => {\n const { file, id } = source;\n return (\n \n );\n })}\n {captions &&\n captions.map((caption, i) => {\n let { description, file } = caption;\n if (!description) description = \"en-us\";\n\n return (\n \n );\n })}\n \n \n );\n /* eslint-enable */\n }\n}\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","export function orderArray(array, order, property) {\n // Make a copy to ensure we're not modifying the original data.\n array = [...array];\n\n return array.sort((a, b) => {\n const aIndex = order.indexOf(a[property]);\n const bIndex = order.indexOf(b[property]);\n\n if (aIndex < 0 && bIndex < 0) return 0;\n if (aIndex < 0) return 1;\n if (bIndex < 0) return -1;\n\n return aIndex - bIndex;\n });\n}\n","module.exports = function () { /* empty */ };\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/assign\"),\n __esModule: true\n};","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/define-property\"),\n __esModule: true\n};","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","require('./_wks-define')('observable');\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/get-prototype-of\"),\n __esModule: true\n};","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { graphql, StaticQuery } from \"gatsby\";\n\n// Services\nimport intl from \"../../services/intl\";\n\n// Utils\nimport { Font, Color, media, rem, responsive } from \"../../utils/style\";\nimport metrics from \"../../utils/metrics\";\nimport { getDiscountData } from \"../../utils/bundle\";\nimport { orderArray } from \"../../utils/order\";\n\n// Components\nimport Container from \"../Container\";\nimport Img from \"gatsby-image\";\nimport Ribbon from \"../global/Ribbon\";\nimport ScrollableOverflow from \"../ScrollableOverflow\";\nimport MagicLink from \"../MagicLink\";\n\nconst Wrapper = styled.section``;\n\nconst CategoryCardsContainer = styled(Container)`\n padding: 0 20px;\n\n display: flex;\n flex-direction: row;\n flex-wrap: ${p => (p.scrollable ? \"nowrap\" : \"wrap\")};\n\n ${responsive.sm`\n padding: 0px;\n `}\n`;\n\nconst Slide = styled(MagicLink)`\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n width: calc(100vw * (84/320));\n margin-right: calc(100vw * (8/320));\n background-color: rgba(242, 241, 245, 0.56);\n\n :last-of-type {\n margin-right: 0;\n }\n\n p {\n ${Font.circular};\n color: ${Color.ritualBlue};\n font-size: ${rem(14)};\n line-height: ${rem(20)};\n font-weight: 300;\n letter-spacing: 0px;\n text-align: center;\n margin: 0;\n padding: 6px 0;\n }\n\n ${responsive.sm`\n width: 160px;\n margin-right: 20px;\n\n p:before {\n content: \"Shop \";\n }\n\n img {\n transition: transform 0.2s ease-in !important;\n }\n\n &:hover {\n img {\n transform: scale(1.1);\n }\n }\n `}\n\n ${responsive.md`\n width: 214px;\n margin-right: 26px;\n\n p {\n font-size: ${rem(18)};\n line-height: ${rem(24)};\n padding: 12px 0;\n }\n `}\n\n ${responsive.lg`\n width: 270px;\n margin-right: 30px;\n `}\n`;\n\nconst GridSlide = styled(Slide)`\n ${media.mobile`\n width: calc(50% - 7px);\n margin-right: 14px;\n margin-bottom: 16px;\n\n &:nth-of-type(2n) {\n margin-right: 0;\n }\n\n &:nth-last-of-type(2):nth-of-type(odd),\n &:last-of-type {\n margin-bottom: 0;\n }\n `}\n`;\n\nconst ImageContainer = styled.div`\n display: flex;\n flex-direction: column;\n position: relative;\n\n img {\n background-color: ${Color.ritualYellow};\n height: 52px;\n }\n\n span {\n position: absolute;\n bottom: 4px;\n left: 4px;\n }\n\n\n ${responsive.sm`\n height: 82px;\n\n span {\n bottom: 8px;\n left: 8px;\n }\n `}\n\n ${responsive.md`\n height: 110px;\n\n span {\n bottom: 12px;\n left: 12px;\n }\n `}\n\n ${responsive.lg`\n height: 140px;\n `}\n`;\n\nconst RibbonStyle = css`\n height: 20px;\n padding: 0px 8px;\n font-size: ${rem(8)};\n line-height: ${rem(16)};\n letter-spacing: 0.53px;\n\n &::before,\n &::after {\n border-width: 10px 4px;\n }\n\n ${responsive.md`\n height: 30px;\n padding: 0 14px;\n font-size: ${rem(10)};\n letter-spacing: 0.67px;\n\n &::before,\n &::after {\n border-width: 15px 8px;\n }\n `}\n`;\n\nconst OrderedCardShortNames = [\n \"44TmdusDzEH95uGu0URjIr\", // Women\n \"71526baqpQqVsScHBZpIEl\", // Men\n \"16dqMm2vfVsgy539guPkkE\", // Kids & Teens\n];\n\nexport class ProductCategoryCards extends React.Component {\n constructor(props) {\n super(props);\n\n const categories = intl.cf(props.data.allContentfulProductCategory.nodes);\n this.orderedCategoryNodes = this._getOrderedCategories(categories);\n }\n\n handleClick(name) {\n metrics.track(\"CTA Clicked\", {\n title: name,\n location: \"Product Category Card\",\n nonInteraction: false,\n });\n }\n\n _getOrderedCategories(allCategoryNodes) {\n return orderArray(allCategoryNodes, OrderedCardShortNames, \"contentful_id\");\n }\n\n renderSlides(slides, scrollable) {\n const SlideComponent = scrollable ? Slide : GridSlide;\n\n return (\n <>\n {slides.map((slide, i) => {\n return (\n \n \n \n {slide.flag && (\n \n {slide.flag}\n \n )}\n \n

{slide.title}

\n \n );\n })}\n \n );\n }\n\n render() {\n const { data, className, scrollable = false } = this.props;\n\n const bundleImage = intl.cf(data.bundleImages.nodes, true);\n const discountData = getDiscountData();\n\n const slides = this.orderedCategoryNodes.map(node => {\n const flag = node.shortName === \"Kids\" ? \"New\" : \"\";\n return {\n title: node.shortName,\n url: `/${node.shopLandingReference.slug}`,\n altText: `Shop ${node.shortName}`,\n img: node.cardImage,\n flag,\n };\n });\n\n slides.push({\n title: intl.t(\"product.category-cards.slide-bundles\", \"Bundles\"),\n url: \"/shop-bundles\",\n altText: \"Shop Bundles\",\n img: bundleImage,\n flag: discountData.titleCopy,\n });\n\n return (\n \n \n {scrollable && (\n \n {this.renderSlides(slides, scrollable)}\n \n )}\n {!scrollable && <>{this.renderSlides(slides, scrollable)}}\n \n \n );\n }\n}\n\nexport const ProductCategoryCardsQuery = props => (\n }\n />\n);\n\nexport default ProductCategoryCardsQuery;\n\nconst componentQuery = graphql`\n query ProductCategoryCardsQuery {\n bundleImages: allContentfulAsset(\n filter: { contentful_id: { eq: \"2RQ7pdzdW9JmLk0z0shhzM\" } }\n ) {\n nodes {\n node_locale\n title\n description\n fluid(maxWidth: 580, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n }\n allContentfulProductCategory {\n nodes {\n node_locale\n shortName\n contentful_id\n cardImage {\n title\n description\n fluid(maxWidth: 580, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n backgroundColor\n shopLandingReference {\n slug\n header {\n childMarkdownRemark {\n rawMarkdownBody\n }\n }\n }\n }\n }\n }\n`;\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","\"use strict\";\n\nvar _interopRequireWildcard3 = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _interopRequireWildcard2 = _interopRequireDefault(require(\"@babel/runtime/helpers/interopRequireWildcard\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = _interopRequireWildcard3(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _index = _interopRequireDefault(require(\"../index\"));\n\nvar ImageWithIEPolyfill = /*#__PURE__*/function (_Component) {\n (0, _inheritsLoose2.default)(ImageWithIEPolyfill, _Component);\n\n function ImageWithIEPolyfill() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.imageRef = _this.props.innerRef || /*#__PURE__*/(0, _react.createRef)();\n _this.placeholderRef = /*#__PURE__*/(0, _react.createRef)();\n return _this;\n }\n\n var _proto = ImageWithIEPolyfill.prototype;\n\n // Load object-fit/position polyfill if required (e.g. in IE)\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var testImg = document.createElement(\"img\");\n\n if (typeof testImg.style.objectFit === \"undefined\" || typeof testImg.style.objectPosition === \"undefined\") {\n Promise.resolve().then(function () {\n return (0, _interopRequireWildcard2.default)(require(\"object-fit-images\"));\n }).then(function (_ref) {\n var ObjectFitImages = _ref.default;\n ObjectFitImages(_this2.imageRef.current.imageRef.current);\n ObjectFitImages(_this2.placeholderRef.current);\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n objectFit = _this$props.objectFit,\n objectPosition = _this$props.objectPosition,\n props = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"objectFit\", \"objectPosition\"]);\n var polyfillStyle = {\n objectFit: objectFit,\n objectPosition: objectPosition,\n fontFamily: \"\\\"object-fit: \" + objectFit + \"; object-position: \" + objectPosition + \"\\\"\"\n };\n return /*#__PURE__*/_react.default.createElement(_index.default, (0, _extends2.default)({\n ref: this.imageRef,\n placeholderRef: this.placeholderRef\n }, props, {\n imgStyle: (0, _extends2.default)({}, props.imgStyle, polyfillStyle),\n placeholderStyle: (0, _extends2.default)({}, props.placeholderStyle, polyfillStyle)\n }));\n };\n\n return ImageWithIEPolyfill;\n}(_react.Component); // If you modify these propTypes, please don't forget to update following files as well:\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-image/withIEPolyfill/index.d.ts\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-image/README.md#gatsby-image-props\n// https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/gatsby-image.md#gatsby-image-props\n\n\nImageWithIEPolyfill.propTypes = {\n objectFit: _propTypes.default.string,\n objectPosition: _propTypes.default.string\n};\nImageWithIEPolyfill.defaultProps = {\n objectFit: \"cover\",\n objectPosition: \"50% 50%\"\n};\n\nvar _default = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(ImageWithIEPolyfill, (0, _extends2.default)({}, props, {\n innerRef: ref\n }));\n});\n\nexports.default = _default;","import React from \"react\";\nimport styled from \"styled-components\";\n\n// Utils\nimport { responsive, media } from \"../utils/style\";\n\n// Components\nimport Img from \"gatsby-image/withIEPolyfill\";\n\n// Styled Elements\nconst Wrapper = styled.div`\n background-color: ${p => p.backgroundColor};\n position: relative;\n overflow: hidden;\n margin: 0 auto;\n margin-top: 52px;\n\n ${responsive.md`\n margin-top: 64px;\n `};\n\n width: calc(100vw - 16px);\n height: calc(100vw - 16px);\n\n &.short {\n height: calc((100vw - 16px) * 0.72368421052);\n }\n\n &.height-fit {\n height: fit-content;\n }\n\n &.full-width-mobile {\n ${media.mobile`\n width: 100%;\n `}\n }\n\n padding-left: 8px;\n padding-right: 8px;\n\n ${responsive.sm`\n width: calc(100vw - 48px);\n height: calc((100vw - 48px) * 0.52778);\n padding-left: 0px;\n padding-right: 0px;\n\n &.short {\n height: calc((100vw - 48px) * 0.52778);\n }\n\n &.height-fit {\n height: fit-contet;\n }\n\n `}\n\n ${responsive.md`\n height: calc((100vw - 48px) * 0.3883196721);\n\n &.short {\n height: calc((100vw - 48px) * 0.3883196721);\n }\n\n &.height-fit {\n height: fit-content;\n }\n\n `}\n\n ${responsive.lg`\n width: calc(100vw - 80px);\n height: calc((100vw - 80px) * 0.3888024883);\n max-width: 1920px;\n max-height: calc(1920px * 0.3888024883);\n\n &.short {\n height: calc((100vw - 80px) * 0.3888024883);\n }\n\n &.height-fit {\n height: fit-content;\n max-height: fit-content;\n }\n\n `}\n\n > .container {\n height: 100%;\n\n > .row {\n height: 100%;\n\n > .col-12 {\n height: 100%;\n }\n }\n }\n`;\n\nconst Column = styled.div`\n position: relative;\n`;\n\nconst ContentArea = styled.div`\n z-index: 1;\n position: relative;\n height: 100%;\n width: 100%;\n`;\n\nexport default class PageHero extends React.Component {\n render() {\n const {\n id = \"page-hero\",\n backgroundColor = \"#ffd600\",\n children,\n className,\n columnStyling = \"col-12\",\n imageMobile,\n imageDesktop,\n imageObjectPosition = \"50% 50%\",\n } = this.props;\n\n const defaultStyle = {\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n zIndex: \"0\",\n userSelect: \"none\",\n userDrag: \"none\",\n pointerEvents: \"none\",\n touchCallout: \"none\",\n };\n\n return (\n \n
\n
\n \n {children}\n \n
\n
\n
\n {imageMobile && (\n \n )}\n {imageDesktop && (\n \n )}\n
\n
\n );\n }\n}\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","module.exports = {};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};","import Marked from \"marked\";\nimport intl from \"../services/intl\";\n\nexport function localizeMarkdownLinks(data) {\n return data.replace(\n /\\[([^\\]]*)\\]\\(([^)]*)\\)/g,\n (_, g1, g2) => `[${g1}](${intl.localizePath(g2)})`,\n );\n}\n\nexport function localizeHtmlLinks(data) {\n return data.replace(\n /href=\"(.*?)\"/g,\n (_, g1) => `href=\"${intl.localizePath(g1)}\"`,\n );\n}\n\nexport function parseMarkdown(content) {\n const localized = localizeMarkdownLinks(content);\n return Marked.parseInline(localized);\n}\n\nexport function processHtml(content) {\n return localizeHtmlLinks(content);\n}\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/set-prototype-of\"),\n __esModule: true\n};","import React from \"react\";\nimport styled from \"styled-components\";\nimport { media } from \"../utils/style\";\n\nconst GutterContainer = styled.aside.attrs({\n className: \"col-12 col-md-4\",\n})`\n position: relative;\n\n ${media.tablet`\n ${p => {\n return p.hideGutter ? \"display: none !important;\" : \"\";\n }}\n `};\n`;\n\nconst GutterSeperator = styled.hr`\n margin: 0;\n width: 0;\n height: 0;\n`;\n\nexport default class Gutter extends React.Component {\n render() {\n if (!this.props.children) {\n return ;\n }\n\n return (\n \n \n {this.props.children}\n \n \n );\n }\n}\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport Gutter from \"../Gutter\";\nimport Row from \"../Row\";\nimport MagicLink from \"../MagicLink\";\nimport Img from \"gatsby-image\";\nimport { Font, media, rem, Color } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst Annotation = styled.div`\n position: absolute;\n width: 100%;\n top: ${p => {\n return p.top ? `${p.top}px` : \"45px\";\n }};\n\n ${media.tablet`\n position: static;\n `};\n`;\nconst AnnotationLineWrapper = styled.div`\n border-top: 3px solid ${Color.ritualBlue};\n width: 100%;\n\n &:after {\n content: \"\";\n border: 3px solid ${Color.ritualBlue};\n border-radius: 10px;\n padding: 4px;\n right: -12px;\n top: -6px;\n position: absolute;\n }\n\n ${media.tablet`\n border-top: 0;\n margin: 30px 0;\n\n &:after {\n content: none;\n }\n `};\n`;\n\nconst Title = styled.h3`\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n ${Font.circular} font-weight: 400;\n text-align: left;\n letter-spacing: 0;\n line-height: ${rem(30)};\n margin: ${rem(16)} 0 0;\n\n ${media.tablet`\n margin-top: 22px;\n margin-bottom: 16px;\n border-top: 2px solid ${Color.ritualBlue};\n padding-top: 22px;\n `};\n`;\n\nconst Description = styled.div`\n color: ${Color.ritualBlue};\n font-size: ${rem(16)};\n ${Font.dutch} font-style: italic;\n text-align: left;\n letter-spacing: 0;\n line-height: ${rem(26)};\n margin-bottom: ${rem(16)};\n`;\n\nconst ContainedImage = styled.div`\n width: 280px;\n height: 180px;\n position: absolute;\n top: -180px;\n\n ${media.tablet`\n top: 0;\n position: relative;\n margin-bottom: 1rem;\n `};\n`;\n\nconst Content = styled.div.attrs({\n className: \"col-12 col-md-9\",\n})`\n ${p => {\n return p.hasImage\n ? css`\n padding-right: 10px;\n background-color: white;\n margin-top: -40px;\n `\n : \"\";\n }} ${media.tablet`\n margin-top: 0;\n `};\n`;\n\nconst CtaLink = styled(MagicLink).attrs({\n className: \"btn btn--primary fact-link\",\n})`\n margin: 0;\n width: auto;\n height: auto;\n padding: 12px 32px;\n max-width: 280px;\n`;\n\nexport default class GutterAnnotation extends React.Component {\n renderImage() {\n let { image, title } = this.props;\n return (\n \n \n \n );\n }\n\n render() {\n let {\n title,\n detailCopy,\n top,\n image,\n ctaText,\n ctaUrl,\n className,\n hideGutter,\n } = this.props;\n let hasCta = ctaText && ctaUrl,\n hasImage = image != null;\n return (\n \n \n \n \n \n {hasImage && this.renderImage()}\n {title}\n {detailCopy}\n {hasCta && (\n \n {ctaText}\n \n )}\n \n \n \n \n \n );\n }\n}\n\nexport const myQuery = graphql`\n fragment gutterSummary on ContentfulGutterAnnotation {\n __typename\n title\n detailCopy\n ctaText\n ctaUrl\n image {\n file {\n url\n }\n fluid(maxWidth: 280, maxHeight: 180, quality: 100) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Gutter from \"../Gutter\";\nimport { Font, media, rem, Color, maxLines } from \"../../utils/style\";\nimport MagicLink from \"../MagicLink\";\nimport { graphql } from \"gatsby\";\n\nconst Annotation = styled.div`\n position: relative;\n top: ${p => {\n return p.top ? `${p.top}px` : \"45px\";\n }}\n ${media.tablet`\n position: static;\n `};\n`;\n\nconst CtaContent = styled.div`\n border: 2px solid ${Color.ritualBlue};\n padding: 40px;\n display: flex;\n align-items: flex-end;\n justify-content: left;\n transition: all 0.3s;\n\n * {\n transition: all 0.3s;\n }\n\n &:hover {\n background: ${Color.ritualBlue};\n color: white;\n\n * {\n color: white;\n }\n\n .fact-link {\n background: white !important;\n\n span {\n color: ${Color.ritualBlue} !important;\n }\n }\n }\n\n ${media.notDesktop`\n padding: 40px 24px;\n `} ${media.tablet`\n margin: 30px 0;\n `};\n`;\n\nconst Box = styled.div`\n padding: 0;\n width: 100%;\n`;\n\nconst CtaTitle = styled.h2`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(18)};\n font-weight: 400;\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 1px;\n line-height: ${rem(26)};\n`;\n\nconst CtaCopy = styled.p`\n ${Font.dutch} margin: 64px 0 32px;\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n font-weight: normal;\n text-align: left;\n\n ${maxLines(26, 3)} ${media.notDesktop`\n font-size: ${rem(18)};\n line-height: ${rem(24)}\n ${maxLines(24, 3)}\n `};\n`;\n\nconst CtaLink = styled(MagicLink).attrs({\n className: \"btn btn--primary fact-link\",\n})`\n width: 100% !important;\n margin: 0;\n`;\n\nexport default class GutterCta extends React.Component {\n render() {\n let {\n title,\n shortCopy,\n ctaText,\n ctaUrl,\n top,\n overrideContent,\n hideGutter,\n className,\n } = this.props;\n if (overrideContent || !title) {\n return {overrideContent};\n }\n return (\n \n \n \n \n {title}\n {shortCopy}\n \n {ctaText}\n \n \n \n \n \n );\n }\n}\n\nexport const myQuery = graphql`\n fragment gutterCtaSummary on ContentfulGutterCta {\n __typename\n title\n shortCopy\n ctaUrl\n ctaText\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Gutter from \"../Gutter\";\nimport { Font, media, rem, Color } from \"../../utils/style\";\nimport MagicLink, { magicUrl } from \"../MagicLink\";\nimport Img from \"gatsby-image\";\nimport { graphql } from \"gatsby\";\n\nconst StyledGutter = styled(Gutter)``;\n\nconst Annotation = styled.div`\n position: relative;\n top: ${p => {\n return p.top ? `${p.top}px` : \"45px\";\n }}\n ${media.tablet`\n position: static;\n `};\n`;\n\nconst CtaCopy = styled.p`\n ${Font.dutch}\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n font-style: italic;\n text-align: left;\n letter-spacing: 0;\n padding: 24px;\n margin: 0;\n\n ${media.tablet`\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n `}\n`;\n\nconst CtaContent = styled.div`\n border: 2px solid ${Color.ritualBlue};\n display: flex;\n align-items: flex-end;\n justify-content: left;\n transition: color 200ms;\n\n * {\n transition: color 200ms;\n }\n\n &:hover {\n cursor: pointer;\n color: white;\n\n * {\n color: white;\n }\n\n ${CtaCopy} {\n color: ${Color.ritualBlue};\n }\n }\n\n ${media.tablet`\n margin: 30px 0;\n `};\n`;\n\nconst Box = styled.div`\n padding: 0;\n width: 100%;\n`;\n\nconst CategoryName = styled.h2`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(18)};\n font-weight: 300;\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 1px;\n line-height: ${rem(28)};\n`;\n\nconst ArticleName = styled.h2`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(30)};\n font-weight: 500;\n text-align: left;\n letter-spacing: 0;\n line-height: ${rem(36)};\n margin: 0;\n\n ${media.tablet`\n font-size: ${rem(26)};\n line-height: ${rem(36)};\n `}\n`;\n\nconst ImageArea = styled.div`\n width: 100%;\n height: 300px;\n display: flex;\n align-items: flex-end;\n position: relative;\n\n ${media.tablet`\n height: 250px;\n `};\n`;\n\nconst ImageContent = styled.div`\n margin: 24px;\n z-index: 1;\n`;\n\nexport default class GutterImage extends React.Component {\n renderContent() {\n let { title, shortCopy, article, image } = this.props;\n return (\n \n \n {shortCopy && {shortCopy}}\n \n \n \n {article.category.title}\n {article.title}\n \n \n \n \n );\n }\n\n render() {\n let {\n title,\n article,\n top,\n overrideContent,\n className,\n hideGutter,\n } = this.props;\n if (overrideContent || !title) {\n return {overrideContent};\n }\n return (\n \n \n {article ? (\n \n {this.renderContent()}\n \n ) : (\n this.renderContent()\n )}\n \n \n );\n }\n}\n\nexport const myQuery = graphql`\n fragment gutterImageSummary on ContentfulGutterImage {\n __typename\n title\n shortCopy\n article {\n __typename\n title\n slug\n category {\n title\n }\n }\n image {\n file {\n url\n }\n fluid(maxHeight: 300, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n backgroundColor\n }\n`;\n","import React from \"react\";\nimport Gutter from \"../Gutter\";\nimport GutterAnnotation from \"./GutterAnnotation\";\nimport GutterCta from \"./GutterCta\";\nimport GutterImage from \"./GutterImage\";\n\nexport default class GutterElement extends React.Component {\n render() {\n let { __typename, title, overrideContent } = this.props;\n if (overrideContent || !title) {\n return {overrideContent};\n }\n if (__typename === \"ContentfulGutterAnnotation\") {\n return ;\n } else if (__typename === \"ContentfulGutterCta\") {\n return ;\n } else if (__typename === \"ContentfulGutterImage\") {\n return ;\n } else {\n return null;\n }\n }\n}\n","import React from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport $ from \"jquery\";\nimport styled from \"styled-components\";\nimport GutterElement from \"./GutterElement\";\nimport { rem, atMost, media, Font, Color } from \"../../utils/style\";\n\nconst Content = styled.div`\n * {\n ${Font.dutch}\n }\n\n p {\n ${Font.dutch}\n font-size: ${rem(20)};\n line-height: ${rem(32)};\n margin: 0 0 ${rem(26)};\n\n &:last-of-type {\n margin: 0;\n }\n\n ${media.mobile`\n font-size: ${rem(17)};\n line-height: ${rem(28)};\n `}\n }\n\n h1,\n h2,\n h3 {\n ${Font.circular}\n font-weight: 400;\n margin-bottom: ${rem(16)};\n\n em {\n ${Font.dutch}\n }\n }\n\n a {\n ${Font.dutch}\n cursor: pointer;\n text-decoration: underline;\n text-decoration-color: ${Color.ritualBlue};\n\n &:hover {\n text-decoration: underline;\n text-decoration-color: ${Color.ritualYellow};\n }\n }\n\n li {\n font-size: ${rem(20)};\n\n &::marker {\n ${Font.circular}\n }\n }\n\n strong, em {\n ${Font.circular}\n }\n\n &.answer {\n position: relative;\n padding-left: 70px;\n\n &:after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 32px;\n height: 32px;\n border-radius: 32px;\n background-color: ${Color.ritualBlue};\n }\n\n ${media.mobile`\n padding-left: 45px;\n `}\n }\n`;\n\nexport default class ContentWithCallout extends React.Component {\n constructor(props) {\n super(props);\n this.answerRef = undefined;\n this.shouldInterpolate = false;\n this.state = { isMobile: false };\n }\n\n componentDidMount() {\n let { hideGutter, content, gutterItem } = this.props;\n this.updateGutterItemOnResize();\n this.onResize();\n this.shouldInterpolate =\n gutterItem && this.shouldInterpolateAnnotation(content);\n if (hideGutter) {\n hideGutter(this.shouldInterpolate);\n }\n }\n\n componentWillUnmount() {\n this.unbindResize();\n }\n\n unbindResize() {\n $(window).off(\"resize.contentCallout\");\n }\n\n updateGutterItemOnResize() {\n $(window).on(\"resize.contentCallout\", this.onResize.bind(this));\n }\n\n onResize() {\n this.updateIsMobile();\n this.updateCodePosition();\n }\n\n updateIsMobile() {\n const shouldBeMobile = atMost.mobile();\n if (this.state.isMobile !== shouldBeMobile) {\n this.setState({ isMobile: shouldBeMobile });\n }\n }\n\n updateCodePosition() {\n if (this.answerRef) {\n let firstCode = $(this.answerRef).find(\"code\");\n let codeTop = firstCode.length\n ? firstCode.position().top + firstCode.outerHeight() / 2 + 20\n : 45;\n this.props.onCalloutMoved(codeTop);\n }\n }\n\n regexPeriodAndSpaceAfterCallout() {\n return new RegExp(/<\\/code>((.|[\\r\\n])*?)\\.\\s/);\n }\n\n shouldInterpolateAnnotation(content) {\n return this.regexPeriodAndSpaceAfterCallout().test(content);\n }\n\n insertAnnotationAfterEndOfSentence(content, gutterItem) {\n let gutterItemHtml = renderToStaticMarkup(\n ,\n );\n let nestableContent = content;\n let regexResult = \"$&\"; // Regex syntax for any matches found\n return nestableContent.replace(\n this.regexPeriodAndSpaceAfterCallout(),\n regexResult + \"

\" + gutterItemHtml + \"

\",\n );\n }\n\n renderContent(content, type) {\n return (\n {\n this.answerRef = r;\n }}\n dangerouslySetInnerHTML={{ __html: content }}\n />\n );\n }\n\n renderContentWithAnnotation(content, type) {\n return (\n

\n \n
\n );\n }\n\n render() {\n let { content, gutterItem, type } = this.props;\n let { isMobile } = this.state;\n let contentWithAnnotation = this.shouldInterpolate\n ? this.insertAnnotationAfterEndOfSentence(content, gutterItem)\n : content;\n return (\n
\n {isMobile\n ? this.renderContentWithAnnotation(contentWithAnnotation, type)\n : this.renderContent(content, type)}\n
\n );\n }\n}\n","import React from \"react\";\nimport $ from \"jquery\";\nimport styled from \"styled-components\";\nimport GutterElement from \"./GutterElement\";\nimport ContentWithCallout from \"./ContentWithCallout\";\nimport Row from \"../Row\";\nimport { Font, media, Color, rem } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst Article = styled(Row)`\n color: ${Color.ritualBlue};\n margin-top: 30px;\n margin-bottom: 30px;\n`;\n\nconst ArticleQuestion = styled.h3`\n ${Font.circular} position: relative;\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n letter-spacing: -0.2px;\n padding-left: 70px;\n margin: 0 0 26px;\n\n ${media.mobile`\n padding-left: 45px;\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n `} &:after {\n content: \"\";\n position: absolute;\n left: 0;\n top: 0;\n width: 32px;\n height: 32px;\n border-radius: 32px;\n background-color: ${Color.ritualYellow};\n }\n\n &:before {\n content: \"\";\n position: absolute;\n left: 2px;\n top: 34px;\n width: 28px;\n height: 3px;\n background-color: ${Color.ritualYellow};\n }\n`;\n\nexport default class ArticleQA extends React.Component {\n constructor(props) {\n super(props);\n this.annotation = null;\n this.questionRef = null;\n this.state = { annotationTop: 0, hideGutter: false };\n }\n\n setAnnotationTop(top) {\n this.setState({\n annotationTop: top + $(this.questionRef).outerHeight(),\n });\n }\n\n setHideGutter(hideGutter) {\n this.setState({\n hideGutter: hideGutter,\n });\n }\n\n render() {\n let { question, answer, gutterItem } = this.props.data;\n let firstGutterItem = gutterItem ? gutterItem[0] : null;\n let { annotationTop, hideGutter } = this.state;\n return (\n
\n {\n this.annotation = p;\n }}\n {...firstGutterItem}\n overrideContent={this.props.gutterContent}\n top={annotationTop}\n hideGutter={hideGutter}\n className=\"d-md-block\"\n />\n
\n (this.questionRef = p)}>\n {question}\n \n \n
\n
\n );\n }\n}\n\nexport const myQuery = graphql`\n fragment articleQABlock on ContentfulContentInterviewQA {\n question\n answer {\n childMarkdownRemark {\n html\n }\n }\n contentBody: answer {\n childMarkdownRemark {\n timeToRead\n }\n }\n gutterItem {\n ... on ContentfulGutterAnnotation {\n ...gutterSummary\n }\n ... on ContentfulGutterCta {\n ...gutterCtaSummary\n }\n ... on ContentfulGutterImage {\n ...gutterImageSummary\n }\n }\n }\n`;\n","import React from \"react\";\nimport $ from \"jquery\";\nimport styled from \"styled-components\";\nimport GutterElement from \"./GutterElement\";\nimport ContentWithCallout from \"./ContentWithCallout\";\nimport Row from \"../Row\";\nimport Text from \"../Text\";\nimport { Font, media, Color, rem } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst Article = styled(Row)`\n color: ${Color.ritualBlue};\n margin-top: 30px;\n margin-bottom: 30px;\n`;\n\nconst Myth = styled.div`\n position: relative;\n padding-left: 70px;\n margin: 0 0 26px;\n\n ${media.mobile`\n padding-left: 45px;\n `};\n`;\n\nconst MythIcon = styled.i`\n content: \"\";\n position: absolute;\n left: 0;\n top: 5px;\n width: 33px;\n height: 33px;\n border-radius: 32px;\n background-color: ${Color.ritualRed};\n\n &:before {\n content: \"\";\n position: absolute;\n width: 4px;\n height: 16px;\n border-radius: 2.5px;\n background-color: ${Color.white};\n top: calc(50% - (16px / 2));\n left: calc(50% - (3px / 2));\n transform: rotate(45deg);\n }\n\n &:after {\n content: \"\";\n position: absolute;\n width: 4px;\n height: 16px;\n border-radius: 2.5px;\n background-color: ${Color.white};\n top: calc(50% - (16px / 2));\n left: calc(50% - (3px / 2));\n transform: rotate(-45deg);\n }\n`;\n\nconst MythTitle = styled.h3`\n ${Font.circular}\n color: ${Color.ritualRed};\n font-size: ${rem(34)};\n line-height: ${rem(40)};\n font-weight: 400;\n margin: 0 0 ${rem(6)};\n letter-spacing: -0.5px;\n\n ${media.mobile`\n font-size: ${rem(30)};\n line-height: ${rem(38)};\n `}\n`;\n\nconst ArticleMyth = styled.p`\n ${Font.circular}\n color: ${Color.ritualRed};\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n font-weight: 400;\n margin: 0;\n\n ${media.mobile`\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n `}\n`;\n\nconst FactContent = styled.div`\n position: relative;\n padding-left: 70px;\n\n ${media.mobile`\n padding-left: 45px;\n `}\n\n h1,\n h2 {\n ${Font.circular}\n font-size: ${rem(24)};\n line-height: ${rem(32)};\n font-weight: 400;\n color: ${Color.ritualBlue};\n margin: 0 0 ${rem(26)};\n\n ${media.mobile`\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n `}\n }\n`;\n\nconst FactIcon = styled.i`\n content: \"\";\n position: absolute;\n left: 0;\n top: 5px;\n width: 33px;\n height: 33px;\n border-radius: 32px;\n background-color: ${Color.ritualBlue};\n\n &:before {\n content: \"\";\n position: absolute;\n width: 4px;\n height: 16px;\n border-radius: 2.5px;\n background-color: ${Color.white};\n top: calc(50% - (16px / 2));\n left: 50%;\n transform: rotate(45deg);\n }\n\n &:after {\n content: \"\";\n position: absolute;\n width: 4px;\n height: 8px;\n border-radius: 2.5px;\n background-color: ${Color.white};\n transform: rotate(-45deg);\n top: calc(50% - 2px);\n left: 10px;\n }\n`;\n\nconst FactTitle = styled.h3`\n ${Font.circular}\n font-size: ${rem(34)};\n line-height: ${rem(40)};\n font-weight: 400;\n color: ${Color.ritualBlue};\n margin: 0 0 ${rem(6)};\n letter-spacing: -0.5px;\n\n ${media.mobile`\n font-size: ${rem(30)};\n line-height: ${rem(38)};\n `}\n`;\n\nexport default class ArticleMythFact extends React.Component {\n constructor(props) {\n super(props);\n this.annotation = null;\n this.mythRef = null;\n this.state = {\n annotationTop: 0,\n hideGutter: false,\n };\n }\n\n setAnnotationTop(top) {\n this.setState({\n annotationTop: top + $(this.mythRef).outerHeight(),\n });\n }\n\n setHideGutter(hideGutter) {\n this.setState({\n hideGutter: hideGutter,\n });\n }\n\n render() {\n let { myth, fact, gutterItem } = this.props.data;\n let { annotationTop, hideGutter } = this.state;\n let firstGutterItem = gutterItem ? gutterItem[0] : null;\n return (\n
\n {\n this.annotation = p;\n }}\n {...firstGutterItem}\n top={annotationTop}\n hideGutter={hideGutter}\n className=\"d-md-block\"\n />\n
\n (this.mythRef = p)}>\n \n \n \n \n {myth}\n \n {\n this.answerRef = r;\n }}\n >\n \n \n \n \n \n \n
\n
\n );\n }\n}\n\nexport const myQuery = graphql`\n fragment articleMythFactBlock on ContentfulContentMythFact {\n myth\n fact {\n childMarkdownRemark {\n html\n }\n }\n contentBody: fact {\n childMarkdownRemark {\n timeToRead\n }\n }\n gutterItem {\n ... on ContentfulGutterAnnotation {\n ...gutterSummary\n }\n ... on ContentfulGutterCta {\n ...gutterCtaSummary\n }\n ... on ContentfulGutterImage {\n ...gutterImageSummary\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Row from \"../Row\";\nimport GutterElement from \"./GutterElement\";\nimport ContentWithCallout from \"./ContentWithCallout\";\nimport { Color } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst Article = styled(Row)`\n color: ${Color.ritualBlue};\n margin-top: 30px;\n margin-bottom: 30px;\n`;\n\nexport default class ArticleStandaloneAnswer extends React.Component {\n constructor(props) {\n super(props);\n this.annotation = null;\n this.state = { annotationTop: 0, hideGutter: false };\n }\n\n setAnnotationTop(top) {\n this.setState({\n annotationTop: top,\n });\n }\n\n setHideGutter(hideGutter) {\n this.setState({\n hideGutter: hideGutter,\n });\n }\n\n render() {\n let { answer, gutterItem } = this.props.data;\n let firstGutterItem = gutterItem ? gutterItem[0] : null;\n let { annotationTop, hideGutter } = this.state;\n return (\n
\n {\n this.annotation = p;\n }}\n {...firstGutterItem}\n hideGutter={hideGutter}\n top={annotationTop}\n className=\"d-none d-md-block\"\n />\n
\n \n
\n
\n );\n }\n}\n\nexport const myQuery = graphql`\n fragment articleAnswerBlock on ContentfulContentInterviewStandaloneAnswer {\n answer {\n childMarkdownRemark {\n html\n }\n }\n contentBody: answer {\n childMarkdownRemark {\n timeToRead\n }\n }\n gutterItem {\n ... on ContentfulGutterAnnotation {\n ...gutterSummary\n }\n ... on ContentfulGutterCta {\n ...gutterCtaSummary\n }\n ... on ContentfulGutterImage {\n ...gutterImageSummary\n }\n }\n }\n`;\n","import $ from \"jquery\";\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport Row from \"../Row\";\nimport GutterElement from \"./GutterElement\";\nimport Img from \"gatsby-image\";\nimport { media, Color } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst ImageModule = styled(Row)`\n margin-top: 30px;\n margin-bottom: 30px;\n`;\n\nconst ImageCol = styled.div.attrs({\n className: \"col-12 col-md-7 offset-md-1\",\n})``;\n\nconst ImageWrapper = styled.div`\n border: 4px solid ${Color.ritualBlue};\n padding: 25px 35px;\n\n ${media.mobile`\n padding: 10px 15px;\n border-width: 2px;\n `} img {\n display: block;\n width: 100%;\n margin: 0;\n }\n`;\n\nexport default class ArticleStandaloneImage extends React.Component {\n constructor(props) {\n super(props);\n this.annotation = null;\n this.imageRef = null;\n this.state = {\n annotationTop: 0,\n hideGutter: false,\n };\n }\n\n setAnnotationTop(top) {\n this.setState({\n annotationTop: top + $(this.imageRef).outerHeight(),\n });\n }\n\n setHideGutter(hideGutter) {\n this.setState({\n hideGutter: hideGutter,\n });\n }\n\n render() {\n let {\n data: { image, gutterItem },\n gutterContent,\n } = this.props;\n let firstGutterItem = gutterItem ? gutterItem[0] : null;\n let { annotationTop, hideGutter } = this.state;\n return (\n \n \n \n (this.imageRef = r)}>\n \n \n \n \n );\n }\n}\n\nexport const myQuery = graphql`\n fragment standaloneImageBlock on ContentfulContentStandaloneImage {\n title\n image {\n description\n file {\n url\n }\n fluid(maxWidth: 960, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n gutterItem {\n __typename\n ... on ContentfulGutterAnnotation {\n ...gutterSummary\n }\n ... on ContentfulGutterCta {\n ...gutterCtaSummary\n }\n ... on ContentfulGutterImage {\n ...gutterImageSummary\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Row from \"../Row\";\nimport Gutter from \"../Gutter\";\nimport GutterAnnotation from \"./GutterAnnotation\";\nimport { Font, media, rem, Color } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst Quote = styled.blockquote.attrs({\n className: \"col-12 col-md-7 offset-md-1\",\n})`\n margin-top: 30px;\n margin-bottom: 30px;\n\n p {\n position: relative;\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(34)};\n line-height: ${rem(40)};\n letter-spacing: -0.5px;\n font-weight: 400;\n text-align: left;\n margin-bottom: 0;\n padding-left: 70px;\n\n ${media.mobile`\n padding-left: 45px;\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n letter-spacing: -0.2px;\n `}\n\n &:after {\n content: '';\n position: absolute;\n left: 0;\n width: 4px;\n top: 0;\n bottom: 0;\n background-color: ${Color.ritualBlue};\n\n ${media.mobile`\n width: 6px;\n `}\n }\n }\n`;\n\nexport default class ArticleBlockQuote extends React.Component {\n renderGutter() {\n let {\n gutterContent,\n data: { gutterItem },\n } = this.props;\n let { annotationTop } = this.state;\n return gutterContent ? (\n {gutterContent}\n ) : (\n \n );\n }\n\n render() {\n let { quote } = this.props.data;\n return (\n \n \n \n \n );\n }\n}\n\nexport const myQuery = graphql`\n fragment blockQuoteBlock on ContentfulContentBlockquote {\n quote {\n childMarkdownRemark {\n html\n }\n }\n contentBody: quote {\n childMarkdownRemark {\n timeToRead\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Row from \"../Row\";\nimport GutterElement from \"./GutterElement\";\nimport ContentWithCallout from \"./ContentWithCallout\";\nimport { processHtml } from '../../utils/markdown';\nimport { graphql } from \"gatsby\";\n\nimport { Font, media, rem, Color } from \"../../utils/style\";\n\nconst ContentRow = styled(Row)`\n margin-top: 30px;\n margin-bottom: 30px;\n`;\n\nconst Content = styled.div.attrs({\n className: \"col-12 col-md-7 offset-md-1\",\n})`\n * {\n color: ${Color.ritualBlue};\n }\n\n .gatsby-resp-image-wrapper {\n margin: 30px 0;\n }\n\n h3 {\n ${Font.circular}\n font-size: ${rem(24)};\n line-height: ${rem(32)};\n margin: 0 0 ${rem(26)};\n\n ${media.mobile`\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n `}\n }\n\n p {\n ${Font.dutch}\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n margin: 0 0 ${rem(26)};\n\n &:last-of-type {\n margin: 0;\n }\n\n ${media.mobile`\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n `}\n }\n`;\n\nexport default class ArticleContentGeneric extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n annotationTop: 0,\n hideGutter: false,\n };\n }\n\n setAnnotationTop(top) {\n this.setState({\n annotationTop: top,\n });\n }\n\n setHideGutter(hideGutter) {\n this.setState({\n hideGutter: hideGutter,\n });\n }\n\n render() {\n let {\n data: { body, gutterItem },\n gutterContent,\n } = this.props;\n let firstGutterItem = gutterItem ? gutterItem[0] : null;\n let { annotationTop, hideGutter } = this.state;\n const content = processHtml(body.childMarkdownRemark.html);\n\n return (\n \n \n \n \n \n \n );\n }\n}\n\nexport const myQuery = graphql`\n fragment genericContentBlock on ContentfulContentGeneric {\n body {\n childMarkdownRemark {\n html\n }\n }\n contentBody: body {\n childMarkdownRemark {\n timeToRead\n }\n }\n gutterItem {\n ... on ContentfulGutterAnnotation {\n ...gutterSummary\n }\n ... on ContentfulGutterCta {\n ...gutterCtaSummary\n }\n ... on ContentfulGutterImage {\n ...gutterImageSummary\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Font, media, rem, Color } from \"../../utils/style\";\nimport Text from \"../Text\";\n\nconst Wrapper = styled.div`\n border: 2px solid ${Color.ritualBlue};\n padding: 40px;\n\n ${media.notDesktop`\n padding: 30px 24px;\n margin-bottom: 60px;\n `};\n`;\n\nconst Content = styled.div`\n text-align: left;\n\n ul {\n padding-left: 0;\n margin: 0;\n }\n\n li, p {\n ${Font.dutch}\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n font-style: italic;\n margin: 0 0 20px;\n list-style-position: inside;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n * {\n font: inherit;\n color: inherit;\n }\n\n ${media.notDesktop`\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n `}\n }\n`;\n\nconst Title = styled.h3`\n ${Font.circular};\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n font-weight: 400;\n text-align: left;\n letter-spacing: 0;\n margin: 0 0 16px;\n\n ${media.notDesktop`\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n `};\n`;\n\nexport default class ArticleEssentialTakeaways extends React.Component {\n render() {\n let {\n childMarkdownRemark: { html },\n } = this.props.content;\n return (\n \n \n <Text\n id=\"hub.essential-takeaways.title\"\n defaultMessage=\"Essential Takeaways\"\n />\n \n \n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Row from \"../Row\";\nimport Gutter from \"../Gutter\";\nimport { graphql } from \"gatsby\";\n\nimport { Font, media, rem, Color } from \"../../utils/style\";\n\nconst Content = styled.div.attrs({\n className: \"col-12 col-md-7 offset-md-1\",\n})`\n margin-top: 30px;\n margin-bottom: 50px;\n display: flex;\n align-items: center;\n\n ${media.mobile`\n margin-bottom: 30px;\n `};\n`;\n\nconst BioAvatar = styled.div`\n position: relative;\n width: 114px;\n height: 114px;\n overflow: hidden;\n border-radius: 114px;\n float: left;\n\n ${media.mobile`\n width: 84px;\n height: 84px;\n align-self: start;\n `} img {\n display: block;\n width: 100%;\n height: 100%;\n margin: 0;\n }\n`;\n\nconst BioContent = styled.div`\n float: left;\n padding-left: 40px;\n width: calc(100% - 114px);\n ${Font.dutch}\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n\n ${media.mobile`\n width: calc(100% - 84px);\n padding-left: 14px;\n padding-top: 0;\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n `}\n\n p {\n font: inherit;\n color: inherit;\n margin: 0;\n }\n`;\n\nconst Arrow = styled.div`\n position: absolute;\n bottom: -48px;\n left: 85px;\n\n svg {\n transform: rotate(-10deg);\n }\n\n ${media.mobile`\n display: none;\n `};\n`;\n\nexport default class ArticleInterviewerBio extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n annotationTop: 0,\n };\n }\n\n setAnnotationTop(top) {\n this.setState({\n annotationTop: top,\n });\n }\n\n render() {\n let { interviewerName, bio, avatar } = this.props.data;\n return (\n \n \n \n \n {interviewerName}\n \n \n \n \n <desc />\n <defs>\n <polygon\n id=\"path-1\"\n points=\"0.00030939968 -6.21968775e-05 111.051 -6.21968775e-05 111.051 45.8388 0.00030939968 45.8388\"\n />\n </defs>\n <g\n id=\"Page-1\"\n stroke=\"none\"\n strokeWidth=\"1\"\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <g id=\"Group-3\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\" />\n </mask>\n <g id=\"Clip-2\" />\n <path\n d=\"M109.1098,8.0742 C107.3778,7.2112 105.2778,7.9182 104.4178,9.6482 C93.8438,30.8862 70.7968,42.6912 49.6148,37.7122 C30.2168,33.1552 20.6088,16.4232 17.1898,8.8902 L26.8608,11.5052 C27.1668,11.5872 27.4738,11.6272 27.7758,11.6272 C29.3188,11.6272 30.7318,10.5992 31.1528,9.0392 C31.6578,7.1732 30.5538,5.2522 28.6878,4.7472 L11.5468,0.1132 C11.5158,0.1042 11.4858,0.1052 11.4548,0.0972 C11.3308,0.0672 11.2068,0.0532 11.0808,0.0362 C10.9758,0.0232 10.8708,0.0052 10.7658,0.0012 C10.6448,-0.0038 10.5258,0.0072 10.4058,0.0142 C10.2968,0.0222 10.1898,0.0252 10.0838,0.0422 C9.9698,0.0602 9.8598,0.0922 9.7498,0.1212 C9.6428,0.1492 9.5358,0.1732 9.4328,0.2112 C9.3258,0.2502 9.2238,0.3032 9.1208,0.3532 C9.0228,0.4002 8.9238,0.4432 8.8308,0.4992 C8.7318,0.5582 8.6418,0.6302 8.5488,0.6992 C8.4618,0.7642 8.3718,0.8262 8.2908,0.8992 C8.2078,0.9742 8.1348,1.0592 8.0588,1.1422 C7.9798,1.2282 7.8998,1.3122 7.8298,1.4062 C7.7668,1.4912 7.7138,1.5862 7.6578,1.6782 C7.5918,1.7852 7.5258,1.8912 7.4718,2.0062 C7.4588,2.0342 7.4398,2.0572 7.4268,2.0862 L0.2958,18.3482 C-0.4802,20.1192 0.3248,22.1832 2.0948,22.9602 C2.5528,23.1602 3.0298,23.2552 3.4988,23.2552 C4.8458,23.2552 6.1298,22.4722 6.7068,21.1602 L10.8268,11.7652 C14.7908,20.4162 25.7948,39.3062 48.0138,44.5262 C51.7828,45.4122 55.5988,45.8392 59.4048,45.8392 C80.1478,45.8392 100.5398,33.1432 110.6828,12.7672 C111.5458,11.0372 110.8398,8.9352 109.1098,8.0742\"\n id=\"Fill-1\"\n fill=\"#FFDD17\"\n mask=\"url(#mask-2)\"\n />\n </g>\n </g>\n </svg>\n </Arrow>\n <BioContent\n dangerouslySetInnerHTML={{ __html: bio.childMarkdownRemark.html }}\n />\n </Content>\n </Row>\n );\n }\n}\n\nexport const myQuery = graphql`\n fragment interviewerBioContentBlock on ContentfulContentInterviewBio {\n interviewerName\n bio {\n childMarkdownRemark {\n html\n }\n }\n avatar {\n file {\n url\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport MagicLink from \"../MagicLink\";\nimport Img from \"gatsby-image\";\nimport Row from \"../Row\";\nimport Container from \"../Container\";\nimport Text from \"../Text\";\nimport RitualButton from \"../global/RitualButton\";\nimport { Font, media, Color, rem, maxLines } from \"../../utils/style\";\nimport { calculateReadingTime } from \"../../utils/readingTime\";\n\nconst RelatedWrapper = styled.div.attrs({\n role: \"section\",\n})`\n margin-top: 50px;\n background-color: rgba(225, 233, 240, 0.56);\n\n ${media.tablet`\n margin-top: 30px;\n `};\n`;\n\nconst RelatedHeader = styled.div.attrs({\n className: \"col-12\",\n})`\n h2 {\n ${Font.circular};\n text-align: center !important;\n font-size: ${rem(48)};\n font-weight: 500;\n line-height: ${rem(54)};\n letter-spacing: ${rem(-1.4)};\n color: ${Color.ritualBlue};\n margin: ${rem(120)} 0 ${rem(55)};\n\n ${media.tablet`\n font-size: ${rem(30)};\n line-height: ${rem(36)};\n letter-spacing: ${rem(-0.4)};\n margin: ${rem(80)} 0 ${rem(24)};\n `};\n }\n`;\n\nconst RelatedArticle = styled.div.attrs(p => ({\n className: `col-12 col-sm-6 col-lg-5 ${p.i === 0 ? \"offset-lg-1\" : \"\"}`,\n}))`\n &:first-child {\n padding-left: 0 !important;\n }\n\n &:last-child {\n padding-right: 0 !important;\n }\n\n ${media.tablet`\n &:first-child {\n padding-left: 0 !important;\n padding-right: 13px !important;\n }\n\n &:last-child {\n padding-right: 0 !important;\n padding-left: 13px !important;\n }\n `};\n\n ${media.mobile`\n &:first-child {\n padding-left: 20px !important;\n padding-right: 20px !important;\n margin-bottom: 24px;\n }\n\n &:last-child {\n padding-right: 20px !important;\n padding-left: 20px !important;\n }\n `};\n`;\n\nconst RelatedArticleContent = styled.div.attrs({\n className: \"content\",\n})`\n position: relative;\n text-decoration: none;\n padding: 50px;\n height: 427px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: left;\n cursor: pointer;\n background-color: ${props => props.color};\n\n img {\n transition: all 0.2s ease-in-out !important;\n }\n\n &:hover {\n cursor: pointer;\n\n img {\n transform: scale(1.1);\n }\n }\n\n ${media.mobile`\n &:hover img {\n transform: none;\n }\n `};\n\n ${media.notDesktop`\n height: 340px;\n padding: 40px 24px;\n `};\n\n ${media.tablet`\n padding: 24px;\n `};\n`;\n\nconst RelatedFloatBottom = styled.div`\n align-self: flex-end;\n max-width: 320px;\n text-decoration: none;\n z-index: 2;\n color: ${props => (props.color ? props.color : Color.ritualBlue)};\n\n span,\n h2,\n p {\n color: inherit;\n }\n\n &:hover {\n text-decoration: none;\n color: ${props => (props.color ? props.color : Color.ritualBlue)};\n }\n`;\n\nconst RelatedReadtime = styled.span`\n ${Font.circular};\n display: block;\n margin: 0;\n padding: 0;\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n margin: 0 0 ${rem(5)};\n`;\n\nconst RelatedTitle = styled.p`\n ${Font.circular};\n font-size: ${rem(24)};\n line-height: ${rem(32)};\n font-weight: 400;\n margin: 0;\n padding: 0;\n\n ${media.tablet`\n font-size: ${rem(22)};\n line-height: ${rem(32)};\n letter-spacing: -0.2px;\n `};\n`;\n\nconst RelatedPreview = styled.p`\n ${Font.dutch}\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n margin: ${rem(16)} 0 0;\n ${maxLines(30, 3)};\n\n ${media.tablet`\n ${maxLines(26, 3)}\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n `};\n`;\n\nconst StyledArticlesButton = styled(RitualButton)`\n color: ${Color.ritualBlue};\n background-color: transparent;\n margin: auto;\n`;\n\nconst StyledArticlesButtonContainer = styled(Container)`\n display: flex;\n padding: ${rem(56)} 0px ${rem(120)};\n\n ${media.mobile`\n padding: ${rem(40)} 0px ${rem(80)};\n `};\n`;\n\nexport default class ArticleRelated extends React.Component {\n renderArticles() {\n let { data, showPreview = false } = this.props;\n if (!data || !data.length) {\n return null;\n }\n return (\n data &&\n data.map((node, i) => {\n let {\n title,\n previewText,\n heroImage,\n primaryContent,\n heroBackgroundColor,\n heroSecondaryColor,\n } = node;\n let readingTime = calculateReadingTime(primaryContent);\n return (\n <RelatedArticle key={`article-${i}`} i={i}>\n <MagicLink to={node} ariaLabel={title}>\n <RelatedArticleContent color={heroBackgroundColor}>\n <Img\n className=\"d-sm-none\"\n fixed={heroImage.mobile}\n loading=\"eager\"\n color={heroBackgroundColor}\n alt={title}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n zIndex: \"1\",\n userSelect: \"none\",\n userDrag: \"none\",\n pointerEvents: \"none\",\n touchCallout: \"none\",\n }}\n />\n <Img\n className=\"d-none d-sm-block\"\n fixed={heroImage.desktop}\n loading=\"eager\"\n color={heroBackgroundColor}\n alt={title}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n zIndex: \"1\",\n userSelect: \"none\",\n userDrag: \"none\",\n pointerEvents: \"none\",\n touchCallout: \"none\",\n }}\n />\n <RelatedFloatBottom color={heroSecondaryColor} to={node}>\n <RelatedReadtime>\n <Text\n id=\"hub.hero.reading-time\"\n defaultMessage=\"{readTime} min read\"\n values={{ readTime: readingTime }}\n />\n </RelatedReadtime>\n <RelatedTitle>{title}</RelatedTitle>\n {showPreview && (\n <RelatedPreview>{previewText}</RelatedPreview>\n )}\n </RelatedFloatBottom>\n </RelatedArticleContent>\n </MagicLink>\n </RelatedArticle>\n );\n })\n );\n }\n\n render() {\n return (\n <RelatedWrapper>\n <Container>\n <Row>\n <RelatedHeader>\n <h2 className=\"mt-10\">Related Articles</h2>\n </RelatedHeader>\n </Row>\n <Row>{this.renderArticles()}</Row>\n </Container>\n <StyledArticlesButtonContainer>\n <StyledArticlesButton to={\"/articles\"}>\n See All Articles\n </StyledArticlesButton>\n </StyledArticlesButtonContainer>\n </RelatedWrapper>\n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Color, Font, responsive, rgba, rem } from \"../../utils/style\";\nimport Row from \"../Row\";\nimport Img from \"gatsby-image\";\n\n// Services\nimport intl from \"../../services/intl\";\n\nconst StyledRow = styled(Row)`\n margin-top: 80px;\n`;\n\nconst StyledColumn = styled.div.attrs({\n className: \"col-12 col-md-7 offset-md-5\",\n})``;\n\nconst ExpertsSection = styled.div`\n h3 {\n color: ${Color.ritualBlue};\n font-size: ${rem(30)};\n font-weight: 500;\n letter-spacing: -0.4px;\n line-height: ${rem(36)};\n margin-bottom: 16px;\n\n ${responsive.md`\n font-size: ${rem(48)};\n letter-spacing: -1.4px;\n line-height: ${rem(54)};\n `}\n }\n\n p {\n ${Font.dutch};\n color: ${Color.ritualBlue};\n font-size: ${rem(18)};\n font-weight: normal;\n letter-spacing: 0px;\n line-height: ${rem(28)};\n margin-bottom: 32px;\n\n ${responsive.md`\n font-size: ${rem(20)};\n font-weight: normal;\n line-height: ${rem(30)};\n margin-bottom: 40px;\n `}\n }\n`;\n\nconst ExpertsContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: left;\n\n p {\n ${Font.circular}\n }\n`;\n\nconst MobileExpert = styled.div.attrs({\n className: \"d-block d-md-none\",\n})`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: left;\n margin-bottom: 32px;\n\n p {\n color: ${rgba(Color.ritualBlue, 0.56)}\n font-size: ${rem(14)};\n font-weight: 500;\n letter-spacing: 0px;\n line-height: ${rem(24)};\n margin-bottom: 0;\n }\n\n > div {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 8px;\n\n .gatsby-image-wrapper {\n height: 84px;\n width: 84px;\n border-radius: 135px;\n margin-right: 14px;\n margin-bottom: 0;\n }\n\n p {\n color: ${Color.ritualBlue};\n font-size: ${rem(16)};\n font-weight: 500;\n letter-spacing: 0px;\n line-height: ${rem(26)};\n margin-bottom: 0;\n }\n }\n`;\n\nconst DesktopExpert = styled.div.attrs({\n className: \"d-none d-md-flex\",\n})`\n display: flex;\n flex-direction: row;\n margin-bottom: 40px;\n\n .gatsby-image-wrapper {\n border-radius: 135px;\n margin-right: 30px;\n }\n\n div {\n display: flex;\n flex-direction: column;\n justift-content: left;\n align-items: top;\n\n p:first-of-type {\n font-size: ${rem(20)};\n font-weight: 500;\n letter-spacing: 0px;\n line-height: ${rem(30)};\n margin-bottom: 16px;\n }\n\n p:last-of-type {\n color: ${rgba(Color.ritualBlue, 0.56)};\n font-size: ${rem(16)};\n font-weight: 300;\n letter-spacing: 0px;\n line-height: ${rem(26)};\n margin-bottom: 0;\n }\n }\n`;\n\nexport default class ArticleExperts extends React.Component {\n renderExpert(expert) {\n const { image, name, articleTitle, currentTitle, bio } = expert;\n const expertTitle = articleTitle\n ? articleTitle\n : `${name}, ${currentTitle}`;\n\n if (!image || !name || !bio || !currentTitle) return;\n\n return (\n <>\n <MobileExpert>\n <div>\n <Img\n className=\"\"\n fluid={image.fluid}\n loading=\"eager\"\n alt={image.title}\n color={Color.white}\n style={{\n position: \"relative\",\n width: \"84px\",\n height: \"84px\",\n minWidth: \"84px\",\n zIndex: \"1\",\n userSelect: \"none\",\n userDrag: \"none\",\n pointerEvents: \"none\",\n touchCallout: \"none\",\n }}\n />\n <p>{expertTitle}</p>\n </div>\n <p>{bio.bio}</p>\n </MobileExpert>\n\n <DesktopExpert>\n <Img\n className=\"\"\n fluid={image.fluid}\n loading=\"eager\"\n alt={image.title}\n color={Color.white}\n style={{\n position: \"relative\",\n width: \"170px\",\n height: \"170px\",\n minWidth: \"170px\",\n zIndex: \"1\",\n userSelect: \"none\",\n userDrag: \"none\",\n pointerEvents: \"none\",\n touchCallout: \"none\",\n }}\n />\n <div>\n <p>{expertTitle}</p>\n <p>{bio.bio}</p>\n </div>\n </DesktopExpert>\n </>\n );\n }\n\n render() {\n const { experts, expertsHeading, expertsSubheading } = this.props.data;\n\n const heading =\n expertsHeading || intl.t(\"hub.exports.heading\", \"Meet the Experts\");\n const subheading =\n expertsSubheading ||\n intl.t(\n \"hub.exports.subheading\",\n \"The experts have helped inform the contents of this article.\",\n );\n return (\n <StyledRow>\n <StyledColumn>\n <ExpertsSection>\n <h3>{heading}</h3>\n <p>{subheading}</p>\n <ExpertsContainer>\n {experts.map(expert => {\n return this.renderExpert(expert);\n })}\n </ExpertsContainer>\n </ExpertsSection>\n </StyledColumn>\n </StyledRow>\n );\n }\n}\n","import _Object$keys from 'babel-runtime/core-js/object/keys';\n/* eslint-disable prefer-template */\n\nexport default function objectToGetParams(object) {\n return '?' + _Object$keys(object).filter(function (key) {\n return !!object[key];\n }).map(function (key) {\n return key + '=' + encodeURIComponent(object[key]);\n }).join('&');\n}\n/* eslint-enable prefer-template */","import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport _Object$keys from 'babel-runtime/core-js/object/keys';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport React, { PureComponent } from 'react';\nimport cx from 'classnames';\n\nvar isPromise = function isPromise(obj) {\n return !!obj && ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n};\n\nvar getBoxPositionOnWindowCenter = function getBoxPositionOnWindowCenter(width, height) {\n return {\n left: window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2,\n top: window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2\n };\n};\n\nvar getBoxPositionOnScreenCenter = function getBoxPositionOnScreenCenter(width, height) {\n return {\n top: (window.screen.height - height) / 2,\n left: (window.screen.width - width) / 2\n };\n};\n\nfunction windowOpen(url, _ref, onClose) {\n var _ref$height = _ref.height,\n height = _ref$height === undefined ? 400 : _ref$height,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? 550 : _ref$width,\n configRest = _objectWithoutProperties(_ref, ['height', 'width']);\n\n var config = _extends({\n height: height,\n width: width,\n location: 'no',\n toolbar: 'no',\n status: 'no',\n directories: 'no',\n menubar: 'no',\n scrollbars: 'yes',\n resizable: 'no',\n centerscreen: 'yes',\n chrome: 'yes'\n }, configRest);\n\n var shareDialog = window.open(url, '', _Object$keys(config).map(function (key) {\n return key + '=' + config[key];\n }).join(', '));\n\n if (onClose) {\n var interval = window.setInterval(function () {\n try {\n if (shareDialog === null || shareDialog.closed) {\n window.clearInterval(interval);\n onClose(shareDialog);\n }\n } catch (e) {\n /* eslint-disable no-console */\n console.error(e);\n /* eslint-enable no-console */\n }\n }, 1000);\n }\n\n return shareDialog;\n}\n\nvar ShareButton = function (_PureComponent) {\n _inherits(ShareButton, _PureComponent);\n\n function ShareButton() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ShareButton);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = ShareButton.__proto__ || _Object$getPrototypeOf(ShareButton)).call.apply(_ref2, [this].concat(args))), _this), _this.onClick = function (e) {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n onClick = _this$props.onClick,\n openWindow = _this$props.openWindow,\n beforeOnClick = _this$props.beforeOnClick;\n\n if (disabled) {\n return;\n }\n\n e.preventDefault();\n\n var link = _this.link();\n\n var clickHandler = openWindow ? function () {\n return _this.openWindow(link);\n } : function () {\n return onClick(link);\n };\n\n if (beforeOnClick) {\n var returnVal = beforeOnClick();\n\n if (isPromise(returnVal)) {\n returnVal.then(clickHandler);\n } else {\n clickHandler();\n }\n } else {\n clickHandler();\n }\n }, _this.onKeyPress = function (e) {\n if (e.key === 'Enter' || e.key === 13 || e.key === ' ' || e.key === 32) {\n _this.onClick(e);\n }\n }, _this.openWindow = function (link) {\n var _this$props2 = _this.props,\n windowPosition = _this$props2.windowPosition,\n onShareWindowClose = _this$props2.onShareWindowClose,\n windowWidth = _this$props2.windowWidth,\n windowHeight = _this$props2.windowHeight;\n\n var windowConfig = _extends({\n height: windowHeight,\n width: windowWidth\n }, windowPosition === 'windowCenter' ? getBoxPositionOnWindowCenter(windowWidth, windowHeight) : getBoxPositionOnScreenCenter(windowWidth, windowHeight));\n\n windowOpen(link, windowConfig, onShareWindowClose);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ShareButton, [{\n key: 'link',\n value: function link() {\n var _props = this.props,\n url = _props.url,\n opts = _props.opts,\n networkLink = _props.networkLink;\n return networkLink(url, opts);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n additionalProps = _props2.additionalProps,\n children = _props2.children,\n className = _props2.className,\n disabled = _props2.disabled,\n disabledStyle = _props2.disabledStyle,\n network = _props2.network,\n role = _props2.role,\n style = _props2.style,\n tabIndex = _props2.tabIndex;\n var classes = cx('SocialMediaShareButton', 'SocialMediaShareButton--' + network, {\n 'SocialMediaShareButton--disabled': !!disabled,\n disabled: !!disabled\n }, className);\n return React.createElement('div', _extends({\n 'aria-label': network\n }, additionalProps, {\n role: role,\n tabIndex: tabIndex,\n onClick: this.onClick,\n onKeyPress: this.onKeyPress,\n className: classes,\n style: _extends({}, style, disabled ? disabledStyle : {})\n }), children);\n }\n }]);\n\n return ShareButton;\n}(PureComponent);\n\nShareButton.defaultProps = {\n disabledStyle: {\n opacity: 0.6\n },\n openWindow: true,\n role: 'button',\n windowPosition: 'windowCenter',\n tabIndex: '0'\n};\n\nfunction createShareButton(network, link) {\n var optsMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {\n return {};\n };\n var propTypes = arguments[3];\n var defaultProps = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var CreatedButton = React.forwardRef(function (props, ref) {\n return React.createElement(ShareButton, _extends({}, props, {\n ref: ref,\n network: network,\n networkLink: link,\n opts: optsMap(props)\n }));\n });\n CreatedButton.defaultProps = defaultProps;\n return CreatedButton;\n}\n\nexport default createShareButton;","import PropTypes from 'prop-types';\nimport assert from 'assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './utils/createShareButton';\n\nfunction facebookLink(url, _ref) {\n var quote = _ref.quote,\n hashtag = _ref.hashtag;\n assert(url, 'facebook.url');\n return 'https://www.facebook.com/sharer/sharer.php' + objectToGetParams({\n u: url,\n quote: quote,\n hashtag: hashtag\n });\n}\n\nvar FacebookShareButton = createShareButton('facebook', facebookLink, function (props) {\n /* eslint-disable no-console */\n if (props.picture) {\n console.warn('FacebookShareButton warning: picture is a deprecated prop.');\n }\n\n if (props.title) {\n console.warn('FacebookShareButton warning: title is a deprecated prop. Use \"quote\" instead.');\n }\n\n if (props.description) {\n console.warn('FacebookShareButton warning: description is a deprecated prop.\\n Use \"quote\" instead.');\n }\n /* eslint-enable no-console */\n\n\n return {\n quote: props.quote,\n hashtag: props.hashtag\n };\n}, {\n quote: PropTypes.string,\n hashtag: PropTypes.string\n}, {\n windowWidth: 550,\n windowHeight: 400\n});\nexport default FacebookShareButton;","import PropTypes from 'prop-types';\nimport assert from 'assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './utils/createShareButton';\n\nfunction twitterLink(url, _ref) {\n var title = _ref.title,\n via = _ref.via,\n _ref$hashtags = _ref.hashtags,\n hashtags = _ref$hashtags === undefined ? [] : _ref$hashtags;\n assert(url, 'twitter.url');\n assert(Array.isArray(hashtags), 'twitter.hashtags is not an array');\n return 'https://twitter.com/share' + objectToGetParams({\n url: url,\n text: title,\n via: via,\n hashtags: hashtags.join(',')\n });\n}\n\nvar TwitterShareButton = createShareButton('twitter', twitterLink, function (props) {\n return {\n hashtags: props.hashtags,\n title: props.title,\n via: props.via\n };\n}, {\n hashtags: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string,\n via: PropTypes.string\n}, {\n windowWidth: 550,\n windowHeight: 400\n});\nexport default TwitterShareButton;","import PropTypes from 'prop-types';\nimport assert from 'assert';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './utils/createShareButton';\n\nfunction pinterestLink(url, _ref) {\n var media = _ref.media,\n description = _ref.description;\n assert(url, 'pinterest.url');\n assert(media, 'pinterest.media');\n return 'https://pinterest.com/pin/create/button/' + objectToGetParams({\n url: url,\n media: media,\n description: description\n });\n}\n\nvar PinterestShareButton = createShareButton('pinterest', pinterestLink, function (props) {\n return {\n media: props.media,\n description: props.description\n };\n}, {\n media: PropTypes.string.isRequired,\n description: PropTypes.string\n}, {\n windowWidth: 1000,\n windowHeight: 730\n});\nexport default PinterestShareButton;","import PropTypes from 'prop-types';\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './utils/createShareButton';\n\nfunction emailLink(url, _ref) {\n var subject = _ref.subject,\n body = _ref.body,\n separator = _ref.separator;\n return 'mailto:' + objectToGetParams({\n subject: subject,\n body: body ? body + separator + url : url\n });\n}\n\nvar EmailShareButton = createShareButton('email', emailLink, function (props) {\n return {\n subject: props.subject,\n body: props.body,\n separator: props.separator\n };\n}, {\n subject: PropTypes.string,\n body: PropTypes.string,\n separator: PropTypes.string\n}, {\n separator: ' ',\n openWindow: false,\n onClick: function onClick(link) {\n window.location.href = link;\n }\n});\nexport default EmailShareButton;","import React from \"react\";\nimport styled from \"styled-components\";\nimport {\n FacebookShareButton,\n TwitterShareButton,\n PinterestShareButton,\n EmailShareButton,\n} from \"react-share\";\n\n// Services\nimport intl from \"../../services/intl\";\n\n// Components\nimport Row from \"../Row\";\nimport Text from \"../Text\";\n\n// Utils\nimport { Font, media, Color, rem } from \"../../utils/style\";\nimport config from \"../../utils/siteConfig\";\nimport metrics from \"../../utils/metrics\";\nimport { Icons, Social } from \"../../utils/svg\";\n\nconst ShareRow = styled(Row)`\n margin-top: 60px;\n`;\n\nconst StyledColumn = styled.div.attrs({\n className: \"col-12 col-md-3 offset-md-5\",\n})`\n position: relative;\n padding-top: ${rem(30)};\n\n &:after {\n content: \"\";\n position: absolute;\n top: -3px;\n left: 0;\n width: 300%;\n height: 3px;\n background-color: ${Color.ritualBlue};\n\n ${media.mobile`\n width: auto;\n right: 20px;\n left: 20px;\n `};\n }\n`;\n\nconst ShareTitle = styled.h2`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(30)};\n font-weight: 400;\n margin: 0;\n`;\n\nconst ShareColumn = styled.div.attrs({\n className: \"col-2\",\n})`\n overflow: hidden;\n\n & > div {\n margin: 2px 0 0;\n cursor: pointer;\n float: right;\n width: 22px;\n height: 20px;\n text-align: center;\n transition: opacity 200ms ease-in-out;\n\n [data-whatintent=\"mouse\"] &:focus,\n [data-whatintent=\"touch\"] &:focus {\n outline: none;\n }\n\n &:hover {\n opacity: 0.56;\n }\n\n svg {\n vertical-align: middle;\n }\n }\n`;\n\nconst SVGWrapper = styled.div`\n height: ${p => (p.height ? p.height : 18)}px;\n width: auto;\n position: relative;\n\n svg {\n height: 100%;\n }\n`;\n\nexport default class ArticleShare extends React.Component {\n getMailto() {\n let subject = \"Subject Line Here\";\n let body = \"Body goes here\";\n\n let mailto = `mailto:?subject=${subject}&body=${body}`.replace(\n /\\s/g,\n \"%20\",\n );\n return mailto;\n }\n\n trackWithSegment(location) {\n metrics.track(\"Article Shared\", {\n location: location,\n });\n }\n\n render() {\n let { title, slug, heroImage } = this.props.data;\n let shareUrl = `${config.siteUrl}/articles/${slug}`;\n let shareImageUrl = `https:${heroImage.share.src}`;\n let email = {\n subject: intl.t(\n \"hub.article.share.email-subject\",\n \"I was skeptical too...\",\n ),\n body: intl.t(\n \"hub.article.share.email-body\",\n `I read \"{title}\" and thought you'd want the facts too. Check it out here: {shareUrl}`,\n { title, shareUrl },\n ),\n };\n return (\n <ShareRow>\n <StyledColumn>\n <Row>\n <div className=\"col-4\">\n <ShareTitle>\n <Text id=\"hub.article.share.title\" defaultMessage=\"Share\" />\n </ShareTitle>\n </div>\n <ShareColumn>\n <FacebookShareButton\n url={shareUrl}\n beforeOnClick={() => {\n this.trackWithSegment(\"Facebook\");\n }}\n >\n <SVGWrapper>\n <Social.Facebook />\n </SVGWrapper>\n </FacebookShareButton>\n </ShareColumn>\n <ShareColumn>\n <TwitterShareButton\n url={shareUrl}\n title={title}\n via={\"ritual\"}\n beforeOnClick={() => {\n this.trackWithSegment(\"Twitter\");\n }}\n >\n <SVGWrapper>\n <Social.Twitter />\n </SVGWrapper>\n </TwitterShareButton>\n </ShareColumn>\n <ShareColumn>\n <PinterestShareButton\n url={shareUrl}\n media={shareImageUrl}\n description={title}\n beforeOnClick={() => {\n this.trackWithSegment(\"Pinterest\");\n }}\n >\n <SVGWrapper>\n <Social.Pinterest />\n </SVGWrapper>\n </PinterestShareButton>\n </ShareColumn>\n <ShareColumn>\n <EmailShareButton\n url={shareUrl}\n subject={email.subject}\n body={email.body}\n beforeOnClick={() => {\n this.trackWithSegment(\"Email\");\n }}\n >\n <SVGWrapper height={14}>\n <Icons.Email />\n </SVGWrapper>\n </EmailShareButton>\n </ShareColumn>\n </Row>\n </StyledColumn>\n </ShareRow>\n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\n\n// Utils\nimport { v4 } from \"uuid\";\nimport { Icons } from \"../../utils/svg\";\nimport { media } from \"../../utils/style\";\nimport metrics from \"../../utils/metrics\";\n\n// Components\nimport MagicVideo from \"../MagicVideo\";\n\n// Styled Elements\nconst OverlayContainer = styled.div`\n cursor: pointer;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 999;\n`;\n\nconst OverlayContent = styled.div.attrs({\n className: \"d-flex align-items-center justify-content-center\",\n})`\n z-index: 1001;\n position: fixed;\n top: 120px;\n bottom: 120px;\n left: 135px;\n right: 135px;\n\n ${media.mobile`\n top: 80px;\n left: 24px;\n bottom: 80px;\n right: 24px;\n `};\n`;\n\nconst OverlayBackground = styled.div`\n z-index: 1000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(255, 255, 255, 0.8);\n cursor: default;\n backdrop-filter: blur(10px);\n`;\n\nconst CloseButton = styled.button`\n font-weight: 400;\n position: absolute;\n color: #142b6f;\n width: 44px;\n height: 44px;\n right: 90px;\n top: 60px;\n opacity: 1;\n float: right;\n font-weight: 400;\n line-height: 1;\n text-shadow: 0 1px 0 #fff;\n background: transparent;\n border: none;\n outline: none !important;\n z-index: 1001;\n cursor: pointer;\n transition: opacity 200ms ease-in-out;\n\n &:hover {\n opacity: 0.56;\n }\n\n ${media.mobile`\n top: 10px;\n right: 25px;\n `};\n`;\n\nexport default class VideoOverlay extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n session_id: null,\n sendSeekStarted: true,\n sendSeekCompleted: true,\n };\n\n this.video = React.createRef();\n }\n\n componentDidMount() {\n this.setState({\n session_id: v4(),\n });\n }\n\n isPhone() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent,\n );\n }\n\n play() {\n if (!this.video) return;\n\n if (this.isPhone()) {\n this.video.webkitEnterFullscreen();\n }\n this.video.current.play();\n }\n\n stop() {\n if (!this.video) return;\n\n this.video.current.pause();\n }\n\n _trackVideoEvent(eventName, currentTime, duration, volume) {\n const { articleVideo } = this.props;\n\n metrics.track(eventName, {\n session_id: this.state.session_id,\n content_asset_id: articleVideo.id,\n content_asset_title: articleVideo.title,\n content_asset_description: articleVideo.description,\n content_pod_id: articleVideo.id,\n position: Math.floor(currentTime),\n total_length: Math.floor(duration),\n // bitrate: 55,\n // framerate: 29,\n video_player: \"html5\",\n sound: Math.floor(volume * 100),\n // full_screen: false,\n ad_enabled: false,\n quality: \"hd1080\",\n livestream: false,\n });\n }\n\n onPause(e) {\n let { currentTime, duration, volume } = e.target;\n this._trackVideoEvent(\n \"Video Playback Paused\",\n currentTime,\n duration,\n volume,\n );\n }\n\n onPlay(e) {\n let { currentTime, duration, volume } = e.target;\n if (currentTime === 0) {\n this._trackVideoEvent(\n \"Video Playback Started\",\n currentTime,\n duration,\n volume,\n );\n } else {\n this._trackVideoEvent(\n \"Video Playback Resumed\",\n currentTime,\n duration,\n volume,\n );\n }\n }\n\n onEnded(e) {\n const { currentTime, duration, volume } = e.target;\n\n this._trackVideoEvent(\n \"Video Playback Completed\",\n currentTime,\n duration,\n volume,\n );\n }\n\n onSeeking(e) {\n if (this.sendSeekStartedTimeout) {\n clearTimeout(this.sendSeekStartedTimeout);\n }\n\n if (this.state.sendSeekStarted) {\n let { currentTime, duration, volume } = e.target;\n this._trackVideoEvent(\n \"Video Playback Seek Started\",\n currentTime,\n duration,\n volume,\n );\n this.setState({\n sendSeekStarted: false,\n });\n }\n\n this.sendSeekStartedTimeout = setTimeout(() => {\n this.setState({\n sendSeekStarted: true,\n });\n }, 500);\n }\n\n onSeeked(e) {\n if (this.sendSeekCompletedTimeout) {\n clearTimeout(this.sendSeekCompletedTimeout);\n }\n\n const { currentTime, duration, volume } = e.target;\n\n this.sendSeekCompletedTimeout = setTimeout(() => {\n this._trackVideoEvent(\n \"Video Playback Seek Completed\",\n currentTime,\n duration,\n volume,\n );\n }, 500);\n }\n\n render() {\n const { articleVideo, onClick, visible } = this.props;\n\n return (\n <OverlayContainer style={{ display: visible ? \"block\" : \"none\" }}>\n <OverlayContent>\n <MagicVideo\n {...articleVideo}\n onPause={this.onPause.bind(this)}\n onEnded={this.onEnded.bind(this)}\n onPlay={this.onPlay.bind(this)}\n onSeeking={this.onSeeking.bind(this)}\n onSeeked={this.onSeeked.bind(this)}\n ref={this.video}\n crossorigin=\"Anonymous\"\n />\n </OverlayContent>\n <CloseButton type=\"button\" aria-label=\"Close\" onClick={onClick}>\n <Icons.Close />\n </CloseButton>\n <OverlayBackground onClick={onClick} />\n </OverlayContainer>\n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { graphql } from \"gatsby\";\nimport Img from \"gatsby-image\";\n\nimport Container from \"../Container\";\nimport MagicLink from \"../MagicLink\";\n\nimport { rem, Font, media, responsive } from \"../../utils/style\";\nimport metrics from \"../../utils/metrics\";\nimport NameMap from \"../../utils/nameMap\";\n\nconst ProductContainer = styled(Container).attrs({\n id: \"product-cards\",\n})`\n margin: 120px auto;\n margin-top: ${props => props.noTopMargin && 0};\n position: relative;\n z-index: 10;\n\n ${media.tablet`\n margin: 40px auto 80px;\n margin-top: ${props => props.noTopMargin && 0};\n `};\n`;\n\nconst Grid = styled.div.attrs({\n id: \"product-cards_grid\",\n})`\n display: grid;\n grid-template-columns: repeat(${p => p.numberOfProducts}, 1fr);\n grid-gap: 30px;\n width: ${p => (p.numberOfProducts === 1 ? \"50%\" : \"auto\")};\n margin: ${p => (p.numberOfProducts === 1 ? \"0 -15px 0 25%\" : \"0 -15px\")};\n\n ${media.notDesktop`\n grid-gap: 20px;\n `}\n\n ${media.tablet`\n ${p =>\n p.numberOfProducts > 2 &&\n `\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n `};\n `}\n\n ${media.mobile`\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: repeat(${p => p.numberOfProducts}, 1fr);\n grid-gap: 24px;\n padding: 0 20px;\n margin: 0 -15px;\n width: auto;\n `}\n`;\n\nconst ProductLink = styled(MagicLink).attrs(p => ({\n id: `product-cards_grid_card-${p.index}`,\n}))`\n position: relative;\n display: flex;\n align-items: flex-end;\n overflow: hidden;\n height: ${p => (p.numberOfProducts > 2 ? \"370px\" : \"570px\")};\n padding: ${p =>\n p.numberOfProducts > 2 ? \"24px 24px 18px\" : \"40px 40px 24px\"};\n background-color: ${p => (p.backgroundColor ? p.backgroundColor : \"#CCC\")};\n z-index: 1;\n\n img {\n transition: transform 0.2s ease-in-out !important;\n }\n\n &:hover {\n img {\n transform: scale(1.1);\n }\n }\n\n ${media.notDesktop`\n height: ${p => (p.numberOfProducts > 2 ? \"294px\" : \"454px\")};\n padding: 24px;\n `}\n\n ${media.tablet`\n height: ${p => (p.numberOfProducts > 2 ? \"280px\" : \"340px\")};\n width: ${p => (p.numberOfProducts > 2 ? \"45%\" : \"340px\")};\n margin: ${p => (p.numberOfProducts > 2 ? \"8px\" : \"0\")};\n `}\n\n ${media.mobile`\n height: 280px\n width: 100%;\n margin: 0;\n\n &:hover img {\n transform: none;\n }\n `}\n`;\n\nconst ImageWrapper = styled.div.attrs(p => ({\n id: `product-cards_grid_card-${p.index}_image-wrapper`,\n}))`\n background: #f3f3f7;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 0;\n`;\n\nconst ProductContent = styled.div.attrs(p => ({\n id: `product-cards_grid_card-${p.index}_content`,\n}))`\n position: relative;\n z-index: 1;\n`;\n\nconst ProductTitle = styled.h2.attrs(p => ({\n id: `product-cards_grid_card-${p.index}_content_title`,\n}))`\n ${Font.circular}\n font-size: ${rem(22)};\n line-height: ${rem(32)};\n letter-spacing: -0.3px;\n font-weight: 500;\n\n\n ${responsive.lg`\n font-size: ${rem(26)};\n line-height: ${rem(36)};\n margin-bottom: ${p => (p.numberOfProducts > 2 ? \"8px\" : \"16px\")};\n `}\n\n em {\n ${Font.dutch}\n font-weight: 300;\n }\n\n`;\n\nconst ProductDescription = styled.p.attrs(p => ({\n id: `product-cards_grid_card-${p.index}_content_description`,\n}))`\n ${Font.dutch}\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n margin-bottom: 0;\n\n ${responsive.lg`\n font-size: ${rem(18)};\n line-height: ${rem(28)};\n margin-bottom: 8px;\n `}\n`;\n\nfunction trackCTAClick(title, location, url, event) {\n metrics.track(\"CTA Clicked\", {\n title: title,\n nonInteraction: false,\n location: location,\n });\n}\n\nexport default function ProductCards({ products, ...props }) {\n const numberOfProducts = products.length;\n\n return (\n <ProductContainer noTopMargin={props.noTopMargin}>\n <Grid numberOfProducts={numberOfProducts}>\n {products.map((product, index) => (\n <ProductCard\n index={index}\n key={NameMap(product.name).plain}\n product={product}\n numberOfProducts={numberOfProducts}\n {...props}\n />\n ))}\n </Grid>\n </ProductContainer>\n );\n}\n\nfunction ProductCard({ product, numberOfProducts, index }) {\n const productName = NameMap(product.name).plain;\n const name = NameMap(product.name).html;\n\n return (\n <ProductLink\n index={index}\n key={product.slug}\n backgroundColor={product.cardBackgroundColor}\n numberOfProducts={numberOfProducts}\n onClick={event =>\n trackCTAClick(\n productName,\n \"Product Card\",\n `/products/${product.slug}`,\n event,\n )\n }\n to={`/products/${product.slug}`}\n hrefLang=\"x-default\"\n aria-label={`Learn more about ${productName}`}\n >\n <ImageWrapper index={index}>\n <Img\n id={`product-cards_grid_card-${index}_image-wrapper_image`}\n backgroundColor={product.cardBackgroundColor}\n fluid={product.cardImage.fluid}\n fadeIn={false}\n alt={productName}\n style={{\n userSelect: \"none\",\n userDrag: \"none\",\n pointerEvents: \"none\",\n touchCallout: \"none\",\n }}\n />\n </ImageWrapper>\n <ProductContent index={index}>\n <ProductTitle\n index={index}\n numberOfProducts={numberOfProducts}\n dangerouslySetInnerHTML={{ __html: name }}\n />\n <ProductDescription index={index}>\n {product.shortDescription}\n </ProductDescription>\n </ProductContent>\n </ProductLink>\n );\n}\n\nexport const componentFragment = graphql`\n fragment ProductCardFragment on ContentfulProduct {\n __typename\n name {\n name\n childMarkdownRemark {\n html\n }\n }\n slug\n shortDescription\n summary\n cardImage {\n file {\n url\n }\n fluid(maxWidth: 1710, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n description\n }\n cardBackgroundColor\n }\n`;\n","import React, { Component } from \"react\";\nimport Helmet from \"react-helmet\";\nimport config from \"../../utils/siteConfig\";\nimport GeneralTags from \"./GeneralTags\";\n\nclass ArticleSEO extends Component {\n render() {\n const defaultTitle = config.siteTitle;\n const {\n title,\n description,\n image,\n image: { url: imgUrlPartial, width: imgWidth, height: imgHeight },\n pagePath,\n } = this.props;\n\n const pageUrl = `${config.siteUrl}/${pagePath}`;\n const imgUrl = `https:${imgUrlPartial}`;\n\n // Overwrite properties below with new image attributes\n let meta = [\n { name: \"image\", content: imgUrl },\n { property: \"og:type\", content: \"article\" },\n { property: \"og:image\", content: imgUrl },\n { property: \"og:image:width\", content: imgWidth },\n { property: \"og:image:height\", content: imgHeight },\n { name: \"twitter:image\", content: imgUrl },\n ];\n\n let schemaOrgJSONLD = [\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement: [\n {\n \"@type\": \"ListItem\",\n position: 1,\n item: {\n \"@id\": config.siteUrl,\n name: defaultTitle,\n },\n },\n {\n \"@type\": \"ListItem\",\n position: 2,\n item: {\n \"@id\": pageUrl,\n name: title,\n },\n },\n ],\n },\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"BlogPosting\",\n url: pageUrl,\n name: title,\n alternateName: config.siteTitleAlt || \"\",\n headline: title,\n image: {\n \"@type\": \"ImageObject\",\n url: imgUrl,\n width: imgWidth,\n height: imgHeight,\n },\n author: {\n \"@type\": \"Person\",\n name: config.author,\n url: config.authorUrl,\n },\n publisher: {\n \"@type\": \"Organization\",\n name: config.publisher,\n url: config.siteUrl,\n logo: {\n \"@type\": \"ImageObject\",\n width: 512,\n height: 512,\n url: config.siteLogo,\n },\n },\n mainEntityOfPage: pageUrl,\n },\n ];\n\n return (\n <div>\n <GeneralTags\n pagePath={pagePath}\n title={title}\n description={description}\n image={image}\n />\n <Helmet meta={meta}>\n <script id=\"blog-schema\" type=\"application/ld+json\">\n {JSON.stringify(schemaOrgJSONLD)}\n </script>\n </Helmet>\n </div>\n );\n }\n}\n\nexport default ArticleSEO;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Color, responsive } from \"../../utils/style\";\nimport $ from \"jquery\";\n\n// Animations\nimport ScrollMagic from \"scrollmagic\";\nimport gsap from \"gsap\";\n\nconst ProgressBar = styled.div`\n position: fixed;\n bottom: -4px;\n top: 52px;\n left: 0;\n height: 4px;\n background-color: ${Color.ritualYellow};\n display: block;\n z-index: 100;\n\n ${responsive.md`\n top: 64px;\n `}\n`;\n\nexport default class ArticleReadProgress extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n scrolled: false,\n topPosition: 0,\n };\n this.timeout = null;\n }\n\n componentDidMount() {\n this.timeout = setTimeout(() => {\n this.initializeScrollMagic();\n this.updateScrollMagicOnResize();\n }, 1000);\n $(window).on(\"scroll.readHandler\", this.handleScrollPosition.bind(this));\n }\n\n componentWillUnmount() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.destroyScrollMagic();\n $(window).off(\"scroll.readHandler\");\n }\n\n handleScrollPosition() {\n const headerHeight = $(\"header\").outerHeight();\n const height = $(\"#article-hero\").height() - headerHeight;\n const prevState = this.state.scrolled;\n if ($(window).scrollTop() >= height && !prevState) {\n this.setState({\n scrolled: true,\n });\n } else if ($(window).scrollTop() < height && prevState) {\n this.setState({\n scrolled: false,\n });\n }\n }\n\n updateScrollMagicOnResize() {\n $(window).on(\n \"resize.readprogress\",\n this.debouncedUpdateScrollMagic.bind(this),\n );\n }\n\n debouncedUpdateScrollMagic() {\n if (this.scrollMagicTimeout) {\n clearTimeout(this.scrollMagicTimeout);\n }\n this.scrollMagicTimeout = setTimeout(() => {\n this.updateScrollMagic();\n }, 200);\n }\n\n updateScrollMagic() {\n this.destroyScrollMagic();\n this.initializeScrollMagic();\n }\n\n destroyScrollMagic() {\n if (this.controller) {\n this.controller.destroy(true);\n }\n $(window).off(\"resize.readprogress\");\n }\n\n initializeScrollMagic() {\n this.controller = new ScrollMagic.Controller({\n globalSceneOptions: {},\n });\n this.initializeProgressBar();\n }\n\n initializeProgressBar() {\n let articleLength = $(\".article-container\").innerHeight();\n let halfViewport = $(window).innerHeight() / 4;\n\n new ScrollMagic.Scene({\n triggerElement: \".article-container\",\n duration: articleLength + halfViewport + 480,\n })\n .setTween(this.progressTween(articleLength, halfViewport))\n .addTo(this.controller);\n }\n\n progressTween(barLength, stationaryLength) {\n let timeline = gsap.timeline();\n return timeline\n .fromTo(\n \".read-bar\",\n {\n css: {\n right: \"100%\",\n },\n ease: \"none\",\n },\n {\n duration: barLength,\n css: {\n right: \"0%\",\n },\n ease: \"none\",\n },\n )\n .delay(stationaryLength)\n .fromTo(\n \".read-bar\",\n {\n css: {\n height: \"4px\",\n },\n },\n {\n duration: 480,\n css: {\n height: \"0px\",\n },\n },\n );\n }\n\n render() {\n let { scrolled } = this.state;\n\n return <ProgressBar className=\"read-bar\" />;\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\n\n// Services\nimport intl from \"../../services/intl\";\n\n// Utils\nimport { Color, Font, media, rem, responsive } from \"../../utils/style\";\nimport { Icons } from \"../../utils/svg\";\nimport { isBright } from \"../../utils/luma\";\n\n// Components\nimport RitualButton from \"../global/RitualButton\";\nimport Container from \"../Container\";\nimport Row from \"../Row\";\nimport ArticleReadProgress from \"./ArticleReadProgress\";\nimport Text from \"../Text\";\n\n// Styled Elements\nconst HeroRow = styled(Row)`\n height: 100%;\n`;\n\nconst HeroColumn = styled.div.attrs({\n className: \"col-12 col-md-7 offset-md-5 d-flex\",\n})``;\n\nconst HeroContent = styled.div.attrs({\n className: \"align-self-end\",\n})`\n margin-bottom: 60px;\n z-index: 2;\n\n ${media.mobile`\n margin-bottom: 40px;\n `};\n`;\n\nconst Category = styled.span`\n ${Font.circular}\n color: ${p => {\n return p.color ? p.color : Color.ritualBlue;\n }};\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n font-weight: 400;\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 1px;\n margin-bottom: 0;\n`;\n\nconst Title = styled.h1`\n ${Font.circular}\n color: ${p => {\n return p.color ? p.color : Color.ritualBlue;\n }};\n font-size: ${rem(30)};\n line-height: ${rem(36)};\n letter-spacing: -0.4px;\n font-weight: 400;\n text-align: left;\n margin: ${rem(16)} 0;\n\n ${responsive.md`\n font-size: ${rem(34)};\n line-height: ${rem(40)};\n letter-spacing: -1.4px;\n `};\n\n ${responsive.lg`\n font-size: ${rem(48)};\n line-height: ${rem(54)};\n letter-spacing: -1.4px;\n `};\n`;\n\nconst ReadingTime = styled.span`\n ${Font.circular}\n color: ${p => {\n return p.color ? p.color : Color.ritualBlue;\n }};\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n font-weight: 500;\n text-align: left;\n letter-spacing: 0;\n margin: 0;\n\n ${media.tablet`\n font-size: ${rem(14)};\n line-height: ${rem(24)};\n `}\n`;\n\nconst PlayButton = styled(RitualButton)`\n i {\n margin-left: 8px;\n\n svg {\n color: #fff;\n transition: color 0.2s;\n\n g,\n path {\n fill: currentColor !important;\n }\n }\n }\n\n &:hover {\n i {\n svg {\n color: ${Color.ritualBlue};\n }\n }\n }\n`;\n\nexport default class ArticleImageHero extends React.Component {\n render() {\n const {\n title,\n category,\n heroBackgroundColor,\n heroSecondaryColor,\n readTime,\n onClick,\n articleVideo,\n } = this.props;\n\n const darkOrBright = isBright(heroBackgroundColor) ? \"dark\" : \"bright\";\n let lengthInMinutes = undefined;\n\n if (articleVideo) {\n lengthInMinutes = intl.t(\"hub.hero.video-length\", \"{length} min video\", {\n length: articleVideo.videoLength / 60,\n });\n }\n\n return (\n <>\n <HeroRow>\n <HeroColumn>\n <HeroContent>\n <Category color={heroSecondaryColor}>{category.title}</Category>\n <Title color={heroSecondaryColor}>{title}\n \n {articleVideo && (\n \n {\" \"}\n \n \n \n \n \n \n )}\n {lengthInMinutes ? (\n \n {lengthInMinutes}\n \n ) : (\n \n \n \n )}\n \n \n \n \n \n \n );\n }\n}\n","export function isBright(color) {\n let luma = undefined;\n if (color) {\n let c = color.substring(1);\n let rgb = parseInt(c, 16);\n let r = (rgb >> 16) & 0xff;\n let g = (rgb >> 8) & 0xff;\n let b = (rgb >> 0) & 0xff;\n\n luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n }\n return luma > 190;\n}\n","import React from \"react\";\nimport { graphql } from \"gatsby\";\nimport styled from \"styled-components\";\n\n// Utils\nimport { media } from \"../utils/style\";\nimport config from \"../utils/siteConfig\";\nimport { calculateReadingTime } from \"../utils/readingTime\";\n\n// Components\nimport Container from \"../components/Container\";\nimport ArticleQA from \"../components/hub/ArticleQA\";\nimport ArticleMythFact from \"../components/hub/ArticleMythFact\";\nimport ArticleStandaloneAnswer from \"../components/hub/ArticleStandaloneAnswer\";\nimport ArticleStandaloneImage from \"../components/hub/ArticleStandaloneImage\";\nimport ArticleBlockQuote from \"../components/hub/ArticleBlockQuote\";\nimport ArticleContentGeneric from \"../components/hub/ArticleContentGeneric\";\nimport ArticleEssentialTakeaways from \"../components/hub/ArticleEssentialTakeaways\";\nimport ArticleInterviewerBio from \"../components/hub/ArticleInterviewerBio\";\nimport ArticleRelated from \"../components/hub/ArticleRelated\";\nimport ArticleExperts from \"../components/hub/ArticleExperts\";\nimport ArticleShare from \"../components/hub/ArticleShare\";\nimport VideoOverlay from \"../components/hub/VideoOverlay\";\nimport ProductCards from \"../components/home/ProductCards\";\nimport ArticleSEO from \"../components/seo/Article\";\nimport ProductCategoryCards from \"../components/product/ProductCategoryCards\";\nimport ArticleHero from \"../components/hub/ArticleHero\";\nimport PageHero from \"../components/PageHero\";\nimport ArticleReadProgress from \"../components/hub/ArticleReadProgress\";\nimport StickyProductNav from \"../components/global/StickyProductNav\";\nimport Text from \"../components/Text\";\n\n// Styled Elements\nconst ArticleContainer = styled(Container).attrs({\n role: \"section\",\n})``;\n\nconst CardsSection = styled.section``;\n\nconst ProductCardContainer = styled.div`\n margin: 120px auto 0px;\n\n ${media.mobile`\n margin: 80px auto 0px;\n `};\n`;\n\nvar Components = {\n ContentfulContentInterviewQA: ArticleQA,\n ContentfulContentMythFact: ArticleMythFact,\n ContentfulContentInterviewStandaloneAnswer: ArticleStandaloneAnswer,\n ContentfulContentStandaloneImage: ArticleStandaloneImage,\n ContentfulContentBlockquote: ArticleBlockQuote,\n ContentfulContentGeneric: ArticleContentGeneric,\n ContentfulContentInterviewBio: ArticleInterviewerBio,\n};\n\nexport default class Content extends React.Component {\n constructor(props) {\n super(props);\n\n let {\n title,\n pageTitle,\n slug,\n heroImage,\n previewText,\n } = this.props.data.contentfulArticleFreeform;\n\n this.state = {\n showVideoOverlay: false,\n seo: {\n pagePath: `${config.contentHubArticlesUrl}/${slug}`,\n title: pageTitle || `${title} - Ritual`,\n description: previewText,\n image: {\n url: heroImage.share.src,\n width: heroImage.share.width,\n height: heroImage.share.height,\n },\n },\n };\n\n this.videoOverlay = React.createRef();\n }\n\n componentDidMount() {\n this.props.updatePageData({\n label: \"Article\",\n });\n\n this.props.updateLayoutState({\n navColor: \"#ffffff\",\n banner: false,\n });\n }\n\n showOverlay() {\n this.setState({\n showVideoOverlay: true,\n });\n if (this.videoOverlay) {\n this.videoOverlay.current.play();\n }\n }\n\n hideOverlay() {\n this.setState({\n showVideoOverlay: false,\n });\n if (this.videoOverlay) {\n this.videoOverlay.current.stop();\n }\n }\n\n renderComponent(componentNode, i, gutterContent) {\n let component = Components[componentNode.__typename];\n if (component) {\n let reactComponent = React.createElement(component, {\n data: componentNode,\n gutterContent: gutterContent,\n key: `component-` + i,\n });\n return reactComponent;\n } else {\n return null;\n }\n }\n\n render() {\n let { showVideoOverlay } = this.state;\n let { contentfulArticleFreeform } = this.props.data;\n let {\n articleVideo,\n primaryContent,\n essentialTakeaways,\n relatedArticles,\n products,\n experts,\n heroBackgroundColor,\n desktopImage,\n mobileImage,\n } = contentfulArticleFreeform;\n const { location } = this.props;\n\n let readTime = calculateReadingTime(primaryContent);\n\n const productsHasContent = products && products.length > 0;\n const hasProducts =\n productsHasContent && products[0].__typename === \"ContentfulProduct\";\n const hasCategories =\n productsHasContent &&\n products[0].__typename === \"ContentfulProductCategory\";\n\n const productSku = location.state ? location.state.productSku : \"\";\n\n return (\n <>\n \n\n {productSku && (\n \n )}\n\n
\n \n \n \n\n \n\n \n

\n \n

\n {primaryContent &&\n primaryContent.map((c, i) => {\n let gutterContent =\n i === 0 ? (\n \n ) : (\n false\n );\n return this.renderComponent(c, i, gutterContent);\n })}\n \n {experts && }\n
\n
\n\n \n {hasProducts && !hasCategories && (\n \n \n \n )}\n\n {hasCategories && (\n \n )}\n \n\n \n\n {articleVideo && (\n \n )}\n \n );\n }\n}\n\nexport const pageQuery = graphql`\n fragment expandPrimaryContent on ContentfulArticleFreeform {\n primaryContent {\n __typename\n ... on ContentfulContentGeneric {\n ...genericContentBlock\n }\n ... on ContentfulContentBlockquote {\n ...blockQuoteBlock\n }\n ... on ContentfulContentInterviewQA {\n ...articleQABlock\n }\n ... on ContentfulContentMythFact {\n ...articleMythFactBlock\n }\n ... on ContentfulContentInterviewStandaloneAnswer {\n ...articleAnswerBlock\n }\n ... on ContentfulContentStandaloneImage {\n ...standaloneImageBlock\n }\n ... on ContentfulContentInterviewBio {\n ...interviewerBioContentBlock\n }\n }\n }\n\n fragment articleProductLinks on ContentfulArticleFreeform {\n products {\n __typename\n ... on ContentfulProduct {\n name {\n name\n childMarkdownRemark {\n html\n }\n }\n slug\n shortDescription\n summary\n cardImage {\n title\n file {\n url\n }\n fluid(maxWidth: 570, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n cardBackgroundColor\n }\n ... on ContentfulProductCategory {\n categoryName\n cardImage {\n title\n description\n fluid(maxWidth: 580, quality: 80) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n backgroundColor\n shopLandingReference {\n slug\n }\n }\n }\n }\n\n query FreeformArticleQuery($locale: String!, $slug: String!) {\n contentfulArticleFreeform(\n node_locale: { eq: $locale }\n slug: { eq: $slug }\n ) {\n title\n category {\n title\n }\n pageTitle\n slug\n previewText\n heroBackgroundColor\n heroSecondaryColor\n essentialTakeaways {\n childMarkdownRemark {\n html\n }\n }\n desktopImage: heroImage {\n description\n fluid(maxWidth: 1920, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n mobileImage: heroImage {\n description\n fluid(maxHeight: 912, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n heroImage {\n file {\n url\n }\n desktop: fluid(maxWidth: 1920, quality: 90, cropFocus: TOP) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n mobile: fixed(width: 960, height: 560, quality: 90, cropFocus: LEFT) {\n ...GatsbyContentfulFixed_withWebp_noBase64\n }\n share: resize(width: 1200, height: 630, quality: 90, cropFocus: LEFT) {\n src\n width\n height\n }\n }\n heroImageMobile {\n fixed(width: 375, height: 552, quality: 100, cropFocus: TOP) {\n ...GatsbyContentfulFixed_withWebp_noBase64\n }\n }\n articleVideo {\n title\n description {\n description\n }\n videoLength\n sources {\n id\n file {\n url\n contentType\n }\n description\n }\n captions {\n file {\n url\n }\n description\n }\n }\n ...expandPrimaryContent\n ...articleProductLinks\n expertsHeading\n expertsSubheading\n experts {\n name\n title\n currentTitle\n articleTitle\n bio {\n bio\n childMarkdownRemark {\n html\n }\n }\n image {\n title\n description\n fluid(maxWidth: 400, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n }\n relatedArticles {\n __typename\n title\n slug\n previewText\n heroBackgroundColor\n heroSecondaryColor\n ...expandPrimaryContent\n category {\n slug\n title\n }\n heroImage {\n file {\n url\n }\n desktop: fixed(\n width: 960\n height: 560\n quality: 100\n cropFocus: LEFT\n ) {\n ...GatsbyContentfulFixed_withWebp_noBase64\n }\n mobile: fixed(\n width: 960\n height: 560\n quality: 100\n cropFocus: LEFT\n ) {\n ...GatsbyContentfulFixed_withWebp_noBase64\n }\n }\n }\n }\n }\n`;\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","module.exports = require('./_hide');\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n"],"sourceRoot":""}