{"version":3,"sources":["webpack:///./src/utils/readingTime.js","webpack:///./node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///./src/components/seo/Page.js","webpack:///./node_modules/gatsby-image/withIEPolyfill/index.js","webpack:///./src/components/PageHero.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./src/components/hub/CategorySummary.js","webpack:///./src/components/hub/ArticleReadtime.js","webpack:///./src/components/hub/Featured2UpArticle.js","webpack:///./src/components/hub/Featured2UpFact.js","webpack:///./src/components/hub/Featured2Up.js","webpack:///./src/components/MagicArrowCarousel.js","webpack:///./src/components/hub/Featured3Up.js","webpack:///./src/components/hub/FeaturedLargeArticle.js","webpack:///./src/components/hub/FeaturedFullWidth.js","webpack:///./src/components/hub/FeaturedQuote.js","webpack:///./src/templates/routes/articles.js","webpack:///./node_modules/core-js/internals/string-html-forced.js"],"names":["calculateReadingTime","primaryContent","reduce","total","node","contentBody","childMarkdownRemark","timeToRead","OFI","propRegex","testImg","Image","style","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","getAttribute","nativeSetAttribute","setAttribute","autoModeEnabled","setPlaceholder","img","width","height","placeholder","call","onImageReady","callback","naturalWidth","setTimeout","fixOne","el","parsed","getComputedStyle","fontFamily","props","exec","getStyle","ofi","skipTest","srcset","src","naturalHeight","descriptors","get","prop","set","value","Object","defineProperty","ss","keepSrcUsable","err","window","console","warn","picturefill","pf","_","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","replace","backgroundPosition","backgroundRepeat","backgroundOrigin","test","backgroundSize","fix","imgs","opts","startAutoMode","document","getElementsByTagName","querySelectorAll","i","length","body","addEventListener","e","target","tagName","watchMQ","bind","getOfiImageMaybe","name","HTMLImageElement","prototype","this","String","hijackAttributes","module","exports","PageSEO","render","pagePath","title","description","image","Component","_interopRequireWildcard3","require","_interopRequireDefault","__esModule","default","_extends2","_objectWithoutPropertiesLoose2","_interopRequireWildcard2","_inheritsLoose2","_react","_propTypes","_index","ImageWithIEPolyfill","_Component","_this","_len","arguments","args","Array","_key","apply","concat","imageRef","innerRef","createRef","placeholderRef","_proto","componentDidMount","_this2","createElement","objectFit","objectPosition","Promise","resolve","then","_ref","ObjectFitImages","current","_this$props","polyfillStyle","ref","imgStyle","placeholderStyle","propTypes","string","defaultProps","_default","forwardRef","Wrapper","styled","div","p","backgroundColor","responsive","md","media","mobile","sm","lg","Column","ContentArea","PageHero","id","children","className","columnStyling","imageMobile","imageDesktop","imageObjectPosition","defaultStyle","position","left","top","zIndex","userSelect","userDrag","pointerEvents","touchCallout","fluid","loading","alt","React","requireObjectCoercible","quot","tag","attribute","S","p1","$","createHTML","proto","forced","forcedStringHTMLMethod","link","url","SummaryWrapper","Color","white","ritualBlue","CategoryButton","attrs","CategoryButtonText","Font","circular","rem","CategorySummary","state","index","setActive","setState","scrollableContent","scrollToIndex","renderButtons","categorySections","clickHandler","map","category_section","key","onClick","category","fixedNav","ScrollableOverflow","bleedLeft","bleedRight","r","ArticleReadtimeElement","span","color","ArticleReadtime","article","articleVideo","timeLabel","intl","t","videoLength","heroSecondaryColor","Play","Content","notDesktop","Article","ArticleContent","background","ArticleTitle","h2","ArticlePreview","dutch","maxLines","Featured2UpArticle","showPreview","MagicLink","to","ariaLabel","heroBackgroundColor","fixed","heroImage","desktop","previewText","FactContent","Fact","FactTitle","FactPreview","FactLink","Featured2UpRow","Row","tablet","TwoUpBox","Featured2Up","articles","data","Container","NumberWrapper","NumberCounter","PageArrow","button","disabled","ritualSecondaryBlue","DotsWrapper","Dot","active","MagicArrowCarousel","scrollableRef","handleIndexChange","onNeedsSlider","needsSlider","previous","next","getTotalCount","pageNumbers","counterEnabled","totalCount","isFirst","isLast","ArrowRoundedLeft","ArrowRoundedRight","dots","c","arrowsEnabled","dotsEnabled","onActiveIndexChange","onHasOverflow","ArticleCardContainer","ArticleImageWrapper","Featured3Up","renderArticles","ArticleWrapper","ArticleRow","ImageArea","align","css","GatsbyImage","Img","ArticleDescription","StyledIcon","Icons","ArrowRight","FeaturedLargeArticle","alignment","FeaturedFullWidth","fullWidthImage","QuoteContent","QuoteReadingtime","QuoteTitle","Quote","FeaturedQuote","quoteTitle","quote","linkedArticle","readTime","quoteHtml","html","Text","defaultMessage","values","dangerouslySetInnerHTML","__html","HeroSection","section","CategorySection","CategoriesArea","SectionSummary","Components","Large","Lab","controller","categoriesArea","categorySummary","sections","currentSection","scrollActivation","updatePageData","label","updateLayoutState","navColor","banner","initializeScrollMagic","updateScrollMagicOnResize","enableScrollActivation","disableScrollActivation","componentWillUnmount","destroyScrollMagic","on","debouncedUpdateScrollMagic","scrollMagicTimeout","clearTimeout","updateScrollMagic","destroy","off","ScrollMagic","Controller","globalSceneOptions","scrollTo","newPosition","offset","animate","scrollTop","setFixedNavPastCategoriesArea","setCurrentSectionOnScroll","headerOffset","outerHeight","Scene","triggerElement","triggerHook","includes","addTo","forEach","sectionNode","duration","goToSection","contentfulPageFeatured","slug","desktopImage","mobileImage","openGraphImage","seo","pageTitle","pageDescription","file","details","Page","renderCategorySections","summary","renderComponents","featuredArticles","component","type","nextArticle","sameType","sameAsNext","fails","METHOD_NAME","toLowerCase","split"],"mappings":"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","file":"component---src-templates-routes-articles-js-0088fb1f3a99eb07b8d1.js","sourcesContent":["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","/*! 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;","import React, { Component } from \"react\";\n\nimport GeneralTags from \"./GeneralTags\";\n\nclass PageSEO extends Component {\n render() {\n const { pagePath, title, description, image } = this.props;\n\n return (\n
\n \n
\n );\n }\n}\n\nexport default PageSEO;\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","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","import React from \"react\";\nimport ScrollableOverflow from \"../ScrollableOverflow\";\nimport styled from \"styled-components\";\nimport { media, responsive, rem, Color, Font } from \"../../utils/style\";\n\nconst SummaryWrapper = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n z-index: 15;\n transition: background 0.2s;\n\n display: flex;\n justify-content: center;\n\n overflow: hidden;\n padding: 8px 0 0;\n\n ${responsive.md`\n padding: 16px 0 0;\n `}\n\n &:not(.active) {\n bottom: 32px;\n }\n\n &.active {\n position: fixed;\n top: 48px;\n background-color: #e9eef1;\n border-bottom: 1px solid ${Color.white};\n transition: background 0.6s;\n\n ${responsive.md`\n top: 64px;\n `}\n\n .category-text {\n color: ${Color.ritualBlue};\n\n &.active {\n color: ${Color.ritualBlue};\n\n &:after {\n background-color: ${Color.ritualBlue};\n }\n }\n }\n }\n`;\n\nconst CategoryButton = styled.div.attrs({\n className: \"category-button\",\n})`\n display: inline-block;\n padding: 0 20px 8px;\n\n ${responsive.sm`\n padding: 0 50px 8px;\n `}\n\n ${responsive.md`\n padding: 0 50px 14px;\n `}\n\n &:first-child {\n margin-left: 0;\n }\n\n &:last-child {\n margin-right: 0;\n }\n`;\n\nconst CategoryButtonText = styled.p.attrs({\n className: \"category-text\",\n})`\n ${Font.circular}\n display: inline-block;\n color: ${Color.white};\n opacity: 0.56;\n font-size: ${rem(17)};\n font-weight: 400;\n text-align: left;\n line-height: ${rem(24)};\n padding-bottom: 2px;\n margin: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &.active {\n color: ${Color.white};\n opacity: 1;\n\n &:after {\n position: absolute;\n left: 0;\n bottom: -8px;\n width: 100%;\n\n content: \"\";\n height: 4px;\n background-color: ${Color.white};\n\n ${responsive.md`\n bottom: -14px;\n `};\n }\n }\n\n ${media.mobile`\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n `};\n`;\n\nexport default class CategorySummary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n };\n }\n\n setActive(index) {\n this.setState(\n {\n index: index,\n },\n () => {\n if (this.scrollableContent) {\n this.scrollableContent.scrollToIndex(index);\n }\n },\n );\n }\n\n renderButtons() {\n let { categorySections, clickHandler } = this.props;\n let { index } = this.state;\n\n return categorySections.map((category_section, i) => {\n return (\n \n \n {category_section.category.title}\n \n \n );\n });\n }\n\n render() {\n let { fixedNav } = this.props;\n\n return (\n \n {\n this.scrollableContent = r;\n }}\n >\n {this.renderButtons()}\n \n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Icons } from \"../../utils/svg\";\nimport { calculateReadingTime } from \"../../utils/readingTime\";\nimport { Font, media, rem, Color } from \"../../utils/style\";\nimport intl from \"../../services/intl\";\n\nconst ArticleReadtimeElement = styled.span`\n ${Font.circular};\n display: block;\n color: inherit;\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n font-weight: 500;\n text-align: left;\n margin: 0 0 ${rem(6)};\n\n i {\n height: 100%;\n margin-left: 16px;\n\n svg {\n width: 8px;\n height: 10px;\n transform: translateY(-1px);\n\n g {\n fill: ${Color.ritualBlue};\n\n ${media.mobile`\n fill: ${p => (p.color ? p.color : Color.white)};\n `};\n }\n }\n }\n`;\n\nexport default class ArticleReadtime extends React.Component {\n render() {\n const { article, className } = this.props;\n const { articleVideo } = article;\n\n let timeLabel = intl.t(\"hub.article.read-time\", \"{length} min read\", {\n length: calculateReadingTime(article.primaryContent),\n });\n if (articleVideo) {\n timeLabel = intl.t(\"hub.hero.video-length\", \"{length} min video\", {\n length: articleVideo.videoLength / 60,\n });\n }\n\n return (\n \n {timeLabel}\n {article.videoLength && (\n \n \n \n )}\n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport MagicLink from \"../MagicLink\";\nimport Img from \"gatsby-image\";\nimport { Font, media, rem, maxLines, Color } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\nimport ArticleReadtime from \"./ArticleReadtime\";\n\nconst Content = styled.div.attrs({\n className: \"content\",\n})`\n min-height: 427px;\n\n ${media.notDesktop`\n min-height: 340px;\n `};\n`;\n\nconst Article = styled.div`\n align-self: flex-end;\n max-width: 320px;\n z-index: 2;\n\n span,\n p,\n h2 {\n color: ${p => (p.color ? p.color : Color.ritualBlue)};\n\n a {\n color: inherit;\n }\n }\n`;\n\nconst ArticleContent = styled(Content)`\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: left;\n padding: ${rem(50)};\n background-color: ${p => p.background};\n\n ${media.notDesktop`\n min-height: 340px;\n padding: ${rem(24)};\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\nconst ArticleTitle = styled.h2`\n ${Font.circular}\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n font-weight: 400;\n text-align: left;\n letter-spacing: -0.2px;\n margin: 0;\n\n a {\n color: inherit;\n\n &:hover {\n color: inherit;\n }\n }\n\n ${media.notDesktop`\n font-size: ${rem(22)};\n `}\n`;\n\nconst ArticlePreview = styled.p`\n ${Font.dutch}\n font-size: ${rem(18.4)};\n line-height: ${rem(28)};\n font-weight: normal;\n text-align: left;\n margin: ${rem(16)} 0 0;\n ${maxLines(30, 3)}\n\n ${media.notDesktop`\n font-size: ${rem(16)};\n line-height: ${rem(24)};\n ${maxLines(28, 3)}\n margin: ${rem(18)} 0 0;\n `}\n`;\n\nexport default class Featured2UpArticle extends React.Component {\n render() {\n let { article, showPreview = false } = this.props;\n if (!article) {\n return null;\n }\n return (\n \n \n \n \n
\n \n {article.title}\n {showPreview && (\n {article.previewText}\n )}\n
\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport MagicLink from \"../MagicLink\";\nimport { Font, media, rem, maxLines, Color } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\n\nconst Content = styled.div.attrs({\n className: \"content\",\n})`\n min-height: 427px;\n\n ${media.notDesktop`\n min-height: 340px;\n `} &:hover {\n * {\n text-decoration: none !important;\n }\n }\n`;\n\nconst FactContent = styled(Content)`\n border: 4px solid ${Color.ritualBlue};\n padding: 50px;\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 border-width: 2px;\n `};\n`;\n\nconst Fact = styled.div``;\n\nconst FactTitle = styled.h2`\n ${Font.circular};\n color: ${Color.ritualBlue};\n font-size: 18px;\n font-weight: 400;\n text-align: left;\n text-transform: uppercase;\n line-height: 24px;\n position: absolute;\n top: 60px;\n letter-spacing: 1px;\n`;\n\nconst FactPreview = styled.p`\n ${Font.dutch};\n margin: 0 0 32px;\n color: ${Color.ritualBlue};\n font-size: ${rem(20)};\n line-height: ${rem(26)};\n font-weight: normal;\n text-align: left;\n max-width: 320px;\n ${maxLines(26, 3)};\n\n ${media.notDesktop`\n font-size: ${rem(16)};\n line-height: ${rem(24)};\n ${maxLines(24, 3)};\n `};\n`;\n\nconst FactLink = styled(MagicLink).attrs({\n className: \"btn btn--primary fact-link\",\n})`\n margin: 0;\n`;\n\nexport default class Featured2UpFact extends React.Component {\n render() {\n let { title, bodyCopy, link, ctaText } = this.props;\n return (\n \n \n {title}\n {bodyCopy.bodyCopy}\n \n {ctaText}\n \n \n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Row from \"../Row\";\nimport { media } from \"../../utils/style\";\nimport Container from \"../Container\";\nimport Featured2UpArticle from \"./Featured2UpArticle\";\nimport Featured2UpFact from \"./Featured2UpFact\";\nimport { graphql } from \"gatsby\";\n\nconst Featured2UpRow = styled(Row)`\n margin-top: 50px;\n margin-bottom: 50px;\n\n ${media.tablet`\n margin-top: 0;\n margin-bottom: 0;\n `};\n`;\n\nconst TwoUpBox = styled.div.attrs({ className: \"col-12 col-md-6\" })`\n ${media.tablet`\n &:first-child {\n margin: 30px auto 15px;\n }\n\n &:last-child {\n margin: 15px auto 30px;\n }\n `};\n`;\n\nexport default class Featured2Up extends React.Component {\n render() {\n let { articles } = this.props.data;\n if (!articles) return null;\n\n if (articles.length > 2) articles.length = 2;\n return (\n \n \n {articles.map((article, i) => {\n return (\n \n \n \n );\n })}\n \n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport ScrollableOverflow from \"./ScrollableOverflow\";\nimport { rem, Color, Font, media } from \"../utils/style\";\nimport { Icons } from \"../utils/svg\";\n\nconst NumberWrapper = styled.div`\n width: 100%;\n margin: 40px auto 0;\n display: inline-block;\n text-align: center;\n font-size: ${rem(30)};\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n ${media.mobile`\n margin: 20px auto 0;\n `};\n`;\n\nconst NumberCounter = styled.span`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(14)};\n line-height: ${rem(24)};\n font-weight: 500;\n margin: 0;\n text-align: center;\n`;\n\nconst PageArrow = styled.button`\n display: block;\n transform: translateY(-2px);\n padding: 0 15px 5px;\n\n appearance: none;\n background: none;\n border: none;\n\n [data-whatintent=\"mouse\"] &:focus,\n [data-whatintent=\"touch\"] &:focus {\n outline: none;\n }\n\n &:first-of-type {\n margin-right: 8px;\n }\n\n &:last-of-type {\n margin-left: 8px;\n }\n\n svg {\n g {\n stroke: ${p =>\n p.disabled ? Color.ritualSecondaryBlue : Color.ritualBlue};\n }\n }\n`;\n\nconst DotsWrapper = styled.div`\n width: 100%;\n margin: 20px auto;\n display: flex;\n text-align: center;\n align-items: center;\n justify-content: center;\n`;\n\nconst Dot = styled.div`\n background-color: ${Color.ritualBlue};\n width: 8px;\n height: 8px;\n border-radius: 50%;\n display: inline-block;\n background-color: ${props => (props.active ? Color.ritualBlue : \"#9FAFC9\")};\n\n &:not(:last-child) {\n margin-right: 6px;\n }\n`;\n\nexport default class MagicArrowCarousel extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n };\n\n this.scrollableRef = React.createRef();\n }\n\n handleIndexChange(index) {\n this.setState({\n index,\n });\n }\n\n onNeedsSlider(needsSlider) {\n this.setState({\n needsSlider: needsSlider,\n });\n }\n\n previous() {\n if (this.state.index === 0) {\n return;\n }\n const index = this.state.index - 1;\n this.setState(\n {\n index,\n },\n () => {\n this.scrollableRef.current.scrollToIndex(index);\n },\n );\n }\n\n next() {\n if (this.state.index === this.getTotalCount() - 1) {\n return;\n }\n\n const index = this.state.index + 1;\n this.setState(\n {\n index,\n },\n () => {\n this.scrollableRef.current.scrollToIndex(index);\n },\n );\n }\n\n getTotalCount() {\n return this.props.children.length;\n }\n\n pageNumbers() {\n const { counterEnabled } = this.props;\n const { index } = this.state;\n const totalCount = this.getTotalCount();\n\n const isFirst = index === 0;\n const isLast = index === totalCount - 1;\n\n return (\n \n \n \n \n {counterEnabled && (\n \n {index + 1} / {totalCount}\n \n )}\n \n \n \n \n );\n }\n\n dots() {\n const { index } = this.state;\n return (\n \n {this.props.children.map(function(c, i) {\n return ;\n })}\n \n );\n }\n\n render() {\n const { children, arrowsEnabled, dotsEnabled } = this.props;\n let { needsSlider } = this.state;\n\n return (\n <>\n \n {children}\n \n {needsSlider && arrowsEnabled && this.pageNumbers()}\n {needsSlider && dotsEnabled && this.dots()}\n \n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport Img from \"gatsby-image\";\nimport MagicLink from \"../MagicLink\";\nimport MagicArrowCarousel from \"../MagicArrowCarousel\";\nimport { Font, media, Color, rem, maxLines } from \"../../utils/style\";\nimport ArticleReadtime from \"./ArticleReadtime\";\nimport Container from \"../Container\";\nimport Row from \"../Row\";\n\nconst ArticleCardContainer = styled.div`\n display: inline-block;\n vertical-align: top;\n white-space: normal;\n`;\n\nconst Article = styled.div.attrs({ className: \"\" })`\n width: 340px;\n margin: 20px;\n\n &:hover {\n cursor: pointer;\n }\n\n ${media.notDesktop`\n width: 231px;\n `} span,\n p,\n h2 {\n ${media.mobile`\n color: ${p => (p.color ? p.color : Color.ritualBlue)};\n `};\n\n a {\n color: inherit;\n }\n }\n`;\n\nconst ArticleImageWrapper = styled.div`\n height: 278px;\n width: 100%;\n overflow: hidden;\n position: relative;\n background-color: ${p => p.background};\n\n ${media.notDesktop`\n height: 174px;\n `} img {\n object-position: center center !important;\n transition: all 0.2s ease-in-out !important;\n }\n\n &:hover {\n img {\n transform: scale(1.1);\n }\n }\n\n ${media.mobile`\n &:hover img {\n transform: none;\n }\n `};\n`;\n\nconst ArticleTitle = styled.h2`\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n font-weight: 400;\n text-align: left;\n margin: 0 0 ${rem(16)};\n\n ${media.mobile`\n font-size: ${rem(24)};\n line-height: ${rem(32)};\n `}\n\n a {\n font: inherit;\n color: inherit;\n text-decoration: none;\n }\n`;\n\nconst ArticleReadtimeElement = styled(ArticleReadtime)`\n margin-top: 27px;\n`;\n\nconst ArticlePreview = styled.p`\n ${Font.dutch}\n font-size: ${rem(16)};\n line-height: ${rem(24)};\n margin: 0;\n ${maxLines(24, 2)}\n`;\n\nexport default class Featured3Up extends React.Component {\n renderArticles() {\n let { articles } = this.props.data;\n if (!articles.length) {\n return null;\n }\n return articles.map((article, i) => {\n if (!article) {\n return null;\n }\n return (\n \n \n
\n \n \n \n \n \n {article.title}\n {article.previewText}\n
\n
\n
\n );\n });\n }\n\n render() {\n let articles = this.renderArticles();\n return (\n \n \n \n {articles}\n \n \n \n );\n }\n}\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport MagicLink from \"../MagicLink\";\nimport Img from \"gatsby-image\";\nimport Row from \"../Row\";\nimport Container from \"../Container\";\nimport { rem, Font, media, Color, maxLines } from \"../../utils/style\";\nimport { Icons } from \"../../utils/svg\";\nimport { graphql } from \"gatsby\";\nimport ArticleReadtime from \"./ArticleReadtime\";\n\nconst ArticleWrapper = styled.div`\n position: relative;\n margin-top: 50px;\n margin-bottom: 50px;\n\n ${media.notDesktop`\n margin-top: 30px;\n margin-bottom: 30px;\n `};\n\n &:hover {\n cursor: pointer;\n\n * {\n text-decoration: none !important;\n }\n\n img:not(.arrow) {\n transform: scale(1.1);\n }\n }\n\n ${media.mobile`\n &:hover img:not(.arrow) {\n transform: none;\n }\n `};\n`;\n\nconst ArticleRow = styled(Row)`\n position: relative;\n`;\n\nconst ArticleContent = styled.div`\n height: 528px;\n display: flex;\n align-items: center;\n justify-content: left;\n\n ${media.notDesktop`\n height: auto;\n display: block;\n `};\n`;\n\nconst Article = styled.div`\n padding: 0;\n\n &.left {\n padding-right: 100px;\n\n ${media.notDesktop`\n padding: 86px 5px 40px;\n `};\n\n ${media.mobile`\n padding: 146px 5px 40px;\n `};\n }\n\n &.right {\n padding-left: 100px;\n\n ${media.notDesktop`\n padding: 86px 5px 40px;\n `};\n\n ${media.mobile`\n padding: 236px 0px 40px;\n `};\n }\n\n span,\n p,\n h2 {\n color: ${Color.ritualBlue};\n\n ${media.mobile`\n color: ${p => (p.color ? p.color : Color.ritualBlue)};\n `};\n\n a {\n color: inherit;\n }\n }\n`;\n\nconst ImageArea = styled.div`\n position: absolute;\n width: calc(50% - 15px);\n ${p => {\n return p.align === \"left\"\n ? css`\n right: 0;\n `\n : css`\n left: 0;\n `;\n }};\n background-color: ${p => p.background};\n top: 0;\n bottom: 0;\n overflow: hidden;\n\n img {\n object-position: center !important;\n }\n\n ${media.mobile`\n left: 0;\n width: 100%;\n background-color: transparent;\n\n img {\n object-position: center !important;\n }\n `};\n`;\n\nconst GatsbyImage = styled(Img)`\n img {\n transition: all 200ms !important;\n }\n`;\n\nconst ArticleReadtimeElement = styled(ArticleReadtime)`\n margin: 0 0 ${rem(16)};\n\n ${media.mobile`\n margin: 0 0 ${rem(8)};\n `};\n`;\n\nconst ArticleTitle = styled.h2`\n ${Font.circular};\n color: inherit;\n font-size: ${rem(34)};\n line-height: ${rem(40)};\n font-weight: 400;\n text-align: left;\n letter-spacing: -0.5px;\n margin: 0;\n\n ${media.notDesktop`\n font-size: ${rem(30)};\n line-height: ${rem(38)};\n letter-spacing: -0.2px;\n `};\n`;\n\nconst ArticleDescription = styled.p`\n ${Font.dutch};\n color: inherit;\n font-size: ${rem(17)};\n line-height: ${rem(28)};\n font-weight: normal;\n text-align: left;\n letter-spacing: 0;\n margin: ${rem(30)} 0 0;\n ${maxLines(30, 5)};\n\n ${media.notDesktop`\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n ${maxLines(28, 5)};\n `};\n\n ${media.mobile`\n display: none;\n `};\n`;\n\nconst StyledIcon = styled(Icons.ArrowRight)`\n width: 18px;\n height: 8px;\n transform: translateY(-1px);\n margin-left: 8px;\n color: inherit;\n\n g {\n fill: ${Color.ritualBlue};\n\n ${media.mobile`\n fill: ${p => p.color};\n `};\n }\n`;\n\nexport default class FeaturedLargeArticle extends React.Component {\n render() {\n let { articles, alignment = \"left\" } = this.props.data;\n if (!articles || !articles[0]) return null;\n\n const article = articles[0];\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {article.title}\n \n \n {article.previewText}\n \n \n \n \n \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 { Font, media, Color, rem, maxLines } from \"../../utils/style\";\nimport { graphql } from \"gatsby\";\nimport ArticleReadtime from \"./ArticleReadtime\";\n\nconst ArticleWrapper = styled.div`\n position: relative;\n overflow: hidden;\n margin-top: 50px;\n margin-bottom: 56px;\n background-color: ${p => p.background};\n\n ${media.mobile`\n margin: 15px 20px;\n `} img {\n transition: all 0.2s ease-in-out !important;\n }\n\n &:hover {\n cursor: pointer;\n * {\n text-decoration: none !important;\n transition: all 0.2s ease-in-out;\n }\n\n img {\n transform: scale(1.1);\n }\n }\n\n ${media.mobile`\n &:hover img {\n transform: none;\n }\n `};\n`;\n\nconst ArticleContent = styled.div.attrs({\n className: \"content\",\n})`\n display: flex;\n align-items: center;\n justify-content: left;\n min-height: 480px;\n\n ${media.mobile`\n min-height: 340px;\n `};\n`;\n\nconst Article = styled.div.attrs({\n className: \"col\",\n})`\n align-self: flex-end;\n max-width: 370px !important;\n padding: 0 0 ${rem(80)};\n\n ${media.mobile`\n padding: ${rem(24)};\n `} span,\n p,\n h2 {\n color: ${p => (p.color ? p.color : Color.ritualBlue)};\n\n a {\n color: inherit;\n }\n }\n`;\n\nconst ArticleTitle = styled.h2`\n ${Font.circular}\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n font-weight: 400;\n text-align: left;\n letter-spacing: -0.2px;\n margin: 0 0 16px;\n\n a {\n color: inherit;\n\n &:hover {\n color: inherit;\n }\n }\n\n ${media.mobile`\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n letter-spacing: 0;\n `}\n`;\n\nconst ArticlePreview = styled.p`\n ${Font.dutch}\n font-size: ${rem(17)};\n line-height: ${rem(28)};\n font-weight: normal;\n text-align: left;\n margin: 0;\n ${maxLines(30, 4)}\n\n ${media.mobile`\n font-size: ${rem(16)};\n line-height: ${rem(24)};\n ${maxLines(28, 4)}\n `}\n`;\n\nexport default class FeaturedFullWidth extends React.Component {\n render() {\n let { article, fullWidthImage } = this.props.data;\n if (!article) {\n return null;\n }\n return (\n \n \n \n \n \n \n \n
\n \n {article.title}\n {article.previewText}\n
\n
\n
\n
\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport MagicLink from \"../MagicLink\";\nimport Row from \"../Row\";\nimport { Font, media, rem, Color } from \"../../utils/style\";\nimport { Icons } from \"../../utils/svg\";\nimport Container from \"../Container\";\nimport { calculateReadingTime } from \"../../utils/readingTime\";\nimport Text from \"../Text\";\n\nconst QuoteContent = styled.div.attrs({\n className: \"content\",\n})`\n padding: 60px 100px;\n border: 4px solid ${Color.ritualBlue};\n margin-top: 50px;\n margin-bottom: 50px;\n cursor: pointer;\n transition: all 0.3s;\n\n ${media.mobile`\n margin-top: 15px;\n margin-bottom: 15px;\n padding: 40px 24px;\n border-width: 2px;\n `};\n\n &:hover {\n background-color: ${Color.ritualBlue};\n color: ${Color.white};\n\n * {\n text-decoration: none !important;\n color: ${Color.white};\n }\n\n svg {\n g {\n fill: ${Color.white};\n }\n }\n\n .fact-link {\n background: ${Color.white};\n\n span {\n color: ${Color.ritualBlue} !important;\n }\n }\n }\n`;\n\nconst QuoteReadingtime = styled.div.attrs({\n className: \"col-4\",\n})`\n ${Font.circular};\n color: ${Color.ritualBlue};\n font-size: ${rem(17)};\n line-height: ${rem(28)};\n font-weight: 400;\n text-align: right;\n margin: 0 0 8px;\n\n ${media.mobile`\n color: ${Color.ritualBlue};\n font-size: ${rem(16)};\n line-height: ${rem(24)};\n\n span {\n display: none;\n }\n `};\n`;\n\nconst QuoteTitle = styled.h2.attrs({\n className: \"col-8\",\n})`\n ${Font.circular};\n color: ${Color.ritualBlue};\n font-size: ${rem(17)};\n line-height: ${rem(28)};\n font-weight: 400;\n margin: 0 0 32px;\n\n ${media.mobile`\n color: ${Color.ritualBlue};\n font-size: ${rem(16)};\n line-height: ${rem(24)};\n font-weight: 400;\n letter-spacing: 0;\n `};\n`;\n\nconst Quote = styled.div.attrs({\n className: \"col-12\",\n})`\n p {\n ${Font.circular};\n color: ${Color.ritualBlue};\n font-size: ${rem(34)};\n line-height: ${rem(40)};\n font-weight: 400;\n text-align: left;\n letter-spacing: -0.5px;\n margin: 0;\n display: inline;\n\n &:before {\n content: \"“\";\n }\n\n &:after {\n content: \"”\";\n }\n\n i,\n em {\n ${Font.dutch};\n font-style: italic;\n font-weight: 300;\n }\n\n ${media.mobile`\n font-size: ${rem(22)};\n line-height: ${rem(30)};\n letter-spacing: -0.2px;\n `};\n }\n\n svg {\n width: 28px;\n height: auto;\n transform: translateY(-7px);\n margin-left: 8px;\n\n ${media.mobile`\n width: 18px;\n height: 8px;\n transform: translateY(-3px);\n `};\n }\n`;\n\nexport default class FeaturedQuote extends React.Component {\n render() {\n const { quoteTitle, quote, articles } = this.props.data;\n\n if (!articles || !articles[0]) return null;\n\n const linkedArticle = articles[0];\n\n const readTime = calculateReadingTime(linkedArticle.primaryContent);\n\n const quoteHtml = quote.childMarkdownRemark.html;\n\n return (\n \n \n \n
\n \n \n {quoteTitle}\n \n \n \n \n \n \n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { graphql } from \"gatsby\";\nimport $ from \"jquery\";\nimport ScrollMagic from \"scrollmagic\";\n\n// Utils\nimport { rem, media, Font, Color } from \"../../utils/style\";\n\n// Components\nimport Container from \"../../components/Container\";\nimport Row from \"../../components/Row\";\nimport PageSEO from \"../../components/seo/Page\";\nimport CategorySummary from \"../../components/hub/CategorySummary\";\nimport Featured2Up from \"../../components/hub/Featured2Up\";\nimport Featured3Up from \"../../components/hub/Featured3Up\";\nimport FeaturedLargeArticle from \"../../components/hub/FeaturedLargeArticle\";\nimport FeaturedFullWidth from \"../../components/hub/FeaturedFullWidth\";\nimport FeaturedQuote from \"../../components/hub/FeaturedQuote\";\nimport PageHero from \"../../components/PageHero\";\n\n// Styled Elements\nconst HeroSection = styled.section`\n position: relative;\n background-color: ${p => p.background};\n`;\n\nconst CategorySection = styled.section`\n padding-top: 100px;\n padding-bottom: 50px;\n border-bottom: 3px dotted #142b6f;\n\n &:last-of-type {\n border: none;\n }\n\n ${media.mobile`\n padding-top: 60px;\n padding-bottom: 30px;\n `};\n`;\n\nconst CategoriesArea = styled.div``;\n\nconst SectionSummary = styled.div.attrs({\n className: \"col-12 col-sm-6\",\n})`\n position: relative;\n margin-bottom: 50px;\n padding: 0 !important;\n\n ${media.mobile`\n padding: 0 20px !important;\n `}\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n bottom: 0;\n width: 80px;\n height: 4px;\n background-color: #E1E9F0;\n\n ${media.mobile`\n left: 20px;\n `}\n }\n\n p {\n ${Font.circular}\n color: ${Color.ritualBlue};\n font-size: ${rem(22)};\n line-height: ${rem(32)};\n letter-spacing: -0.2px;\n font-weight: 500;\n margin: 0;\n max-width: 470px;\n\n ${media.mobile`\n font-size: ${rem(16)};\n line-height: ${rem(26)};\n letter-spacing: 0;\n `}\n\n & > * {\n color: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n }\n\n & > p {\n margin-bottom: ${rem(28)};\n }\n`;\n\nvar Components = {\n \"2-Up\": Featured2Up,\n \"3-Up\": Featured3Up,\n Large: FeaturedLargeArticle,\n Quote: FeaturedQuote,\n \"Full-Width\": FeaturedFullWidth,\n};\n\nexport default class Lab extends React.Component {\n constructor(props) {\n super(props);\n this.controller = null;\n this.categoriesArea = null;\n this.categorySummary = null;\n this.sections = [];\n this.state = {\n currentSection: 0,\n fixedNav: false,\n scrollActivation: true,\n };\n }\n\n componentDidMount() {\n this.props.updatePageData({\n label: \"Blog\",\n });\n\n this.props.updateLayoutState({\n navColor: \"#FFFFFF\",\n banner: false,\n });\n this.initializeScrollMagic();\n this.updateScrollMagicOnResize();\n }\n\n enableScrollActivation() {\n this.setState({\n scrollActivation: true,\n });\n }\n\n disableScrollActivation() {\n this.setState({\n scrollActivation: false,\n });\n }\n\n componentWillUnmount() {\n this.destroyScrollMagic();\n }\n\n updateScrollMagicOnResize() {\n $(window).on(\"resize.journal\", this.debouncedUpdateScrollMagic.bind(this));\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.journal\");\n }\n\n initializeScrollMagic() {\n this.controller = new ScrollMagic.Controller({\n globalSceneOptions: {},\n }).scrollTo((newPosition, offset) => {\n $(\"HTML, BODY\").animate(\n {\n scrollTop: newPosition - offset,\n },\n 1500,\n () => {\n this.enableScrollActivation();\n },\n );\n });\n this.setFixedNavPastCategoriesArea();\n this.setCurrentSectionOnScroll();\n }\n\n setFixedNavPastCategoriesArea() {\n let headerOffset =\n ($(\"header\").outerHeight() + $(\".categorySelector\").outerHeight()) * -1;\n new ScrollMagic.Scene({\n triggerElement: this.categoriesArea,\n offset: headerOffset - 16,\n triggerHook: 0,\n })\n .on(\"enter leave\", e => {\n this.setState({\n fixedNav: [\"DURING\", \"AFTER\", \"INSIDE\"].includes(e.state),\n });\n })\n .addTo(this.controller);\n }\n\n setCurrentSectionOnScroll() {\n let _this = this;\n let headerOffset =\n ($(\"header\").outerHeight() + $(\".categorySelector\").outerHeight()) * -1;\n this.sections.forEach((section, i) => {\n let sectionNode = $(`#section-${i}`);\n let scene = new ScrollMagic.Scene({\n triggerElement: sectionNode[0],\n triggerHook: 0,\n offset: headerOffset,\n duration: sectionNode.height(),\n }).on(\"enter\", e => {\n if (_this.categorySummary && this.state.scrollActivation) {\n this.setState({\n currentSection: i,\n });\n _this.categorySummary.setActive(i);\n }\n });\n scene.addTo(this.controller);\n });\n }\n\n goToSection(index) {\n if (this.controller && this.categorySummary) {\n this.disableScrollActivation();\n this.categorySummary.setActive(index);\n this.controller.scrollTo($(`#section-${index}`)[0], 64);\n }\n }\n\n render() {\n let { contentfulPageFeatured } = this.props.data;\n let { currentSection, fixedNav } = this.state;\n let {\n slug,\n categorySections,\n desktopImage,\n mobileImage,\n heroBackgroundColor,\n openGraphImage,\n pageTitle,\n pageDescription,\n } = contentfulPageFeatured;\n\n let seo = {\n pagePath: slug,\n title: pageTitle,\n description: pageDescription,\n image: {\n src: openGraphImage.file.url,\n width: openGraphImage.file.details.image.width,\n height: openGraphImage.file.details.image.height,\n },\n };\n\n return (\n <>\n \n \n \n \n {\n this.categorySummary = r;\n }}\n categorySections={categorySections}\n fixedNav={fixedNav}\n currentSection={currentSection}\n clickHandler={this.goToSection.bind(this)}\n />\n \n \n {\n this.categoriesArea = r;\n }}\n >\n {this.renderCategorySections(categorySections)}\n \n \n );\n }\n\n renderCategorySections(categorySections) {\n return (\n categorySections &&\n categorySections.map((section, i) => {\n return (\n {\n this.sections[i] = r;\n }}\n key={\"category-section\" + i}\n id={`section-${i}`}\n >\n \n \n \n \n \n {this.renderComponents(section.featuredArticles)}\n \n );\n })\n );\n }\n\n renderComponents(featuredArticles) {\n return featuredArticles.map(function(article, i) {\n let component = Components[article.type];\n let nextArticle = featuredArticles[i + 1];\n let sameType = nextArticle ? nextArticle.type === article.type : false;\n let reactComponent = React.createElement(component, {\n data: article,\n sameAsNext: sameType,\n key: `featured-article_` + i,\n });\n return reactComponent;\n });\n }\n}\n\nexport const pageQuery = graphql`\n query ContentPageQuery($locale: String!) {\n contentfulPageFeatured(node_locale: { eq: $locale }) {\n slug\n pageTitle\n pageDescription\n openGraphImage {\n file {\n url\n details {\n image {\n width\n height\n }\n }\n }\n }\n heroBackgroundColor\n desktopImage {\n file {\n url\n }\n fluid(maxWidth: 1920, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n mobileImage {\n file {\n url\n }\n fluid(maxWidth: 912, quality: 90) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n categorySections {\n category {\n title\n slug\n }\n summary {\n childMarkdownRemark {\n html\n }\n }\n featuredArticles {\n __typename\n type\n alignment\n quoteTitle\n quote {\n childMarkdownRemark {\n html\n }\n }\n fullWidthImage {\n file {\n url\n }\n desktop: fluid(maxWidth: 1920, quality: 100) {\n ...GatsbyContentfulFluid_withWebp_noBase64\n }\n }\n articles {\n __typename\n slug\n title\n previewText\n heroBackgroundColor\n heroSecondaryColor\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 ...expandPrimaryContent\n }\n }\n }\n }\n }\n`;\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n"],"sourceRoot":""}