{"version":3,"file":"f96dfcbccc3766b30a3233869eed27e51c38735e-17b8ccd27dbf1c981d22.js","mappings":"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","sources":["webpack://v4/./node_modules/react-fast-compare/index.js","webpack://v4/./node_modules/react-helmet/es/Helmet.js","webpack://v4/./node_modules/react-side-effect/lib/index.js","webpack://v4/./node_modules/dom-helpers/esm/removeClass.js","webpack://v4/./node_modules/react-transition-group/esm/config.js","webpack://v4/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://v4/./node_modules/react-transition-group/esm/Transition.js","webpack://v4/./node_modules/react-transition-group/esm/CSSTransition.js","webpack://v4/./node_modules/dom-helpers/esm/addClass.js","webpack://v4/./node_modules/dom-helpers/esm/hasClass.js","webpack://v4/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://v4/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://v4/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://v4/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://v4/./src/components/icons/appstore.js","webpack://v4/./src/components/icons/bookmark.js","webpack://v4/./src/components/icons/codepen.js","webpack://v4/./src/components/icons/external.js","webpack://v4/./src/components/icons/folder.js","webpack://v4/./src/components/icons/fork.js","webpack://v4/./src/components/icons/icon.js","webpack://v4/./src/components/icons/github.js","webpack://v4/./src/components/icons/instagram.js","webpack://v4/./src/components/icons/linkedin.js","webpack://v4/./src/components/icons/loader.js","webpack://v4/./src/components/icons/logo.js","webpack://v4/./src/components/icons/playstore.js","webpack://v4/./src/components/icons/star.js","webpack://v4/./src/components/icons/twitter.js","webpack://v4/./src/components/head.js","webpack://v4/./src/styles/mixins.js","webpack://v4/./src/styles/theme.js","webpack://v4/./src/styles/fonts.js","webpack://v4/./src/fonts/Calibre/Calibre-Regular.woff","webpack://v4/./src/fonts/Calibre/Calibre-Regular.woff2","webpack://v4/./src/fonts/Calibre/Calibre-Medium.woff","webpack://v4/./src/fonts/Calibre/Calibre-Medium.woff2","webpack://v4/./src/fonts/Calibre/Calibre-Semibold.woff","webpack://v4/./src/fonts/Calibre/Calibre-Semibold.woff2","webpack://v4/./src/fonts/Calibre/Calibre-RegularItalic.woff","webpack://v4/./src/fonts/Calibre/Calibre-RegularItalic.woff2","webpack://v4/./src/fonts/Calibre/Calibre-MediumItalic.woff","webpack://v4/./src/fonts/Calibre/Calibre-MediumItalic.woff2","webpack://v4/./src/fonts/Calibre/Calibre-SemiboldItalic.woff","webpack://v4/./src/fonts/Calibre/Calibre-SemiboldItalic.woff2","webpack://v4/./src/fonts/SFMono/SFMono-Regular.woff","webpack://v4/./src/fonts/SFMono/SFMono-Regular.woff2","webpack://v4/./src/fonts/SFMono/SFMono-Semibold.woff","webpack://v4/./src/fonts/SFMono/SFMono-Semibold.woff2","webpack://v4/./src/fonts/SFMono/SFMono-RegularItalic.woff","webpack://v4/./src/fonts/SFMono/SFMono-RegularItalic.woff2","webpack://v4/./src/fonts/SFMono/SFMono-SemiboldItalic.woff","webpack://v4/./src/fonts/SFMono/SFMono-SemiboldItalic.woff2","webpack://v4/./src/styles/variables.js","webpack://v4/./src/styles/TransitionStyles.js","webpack://v4/./src/styles/PrismStyles.js","webpack://v4/./src/styles/GlobalStyle.js","webpack://v4/./src/components/layout.js","webpack://v4/./src/components/nav.js","webpack://v4/./src/utils/index.js","webpack://v4/./src/components/menu.js","webpack://v4/./src/components/side.js","webpack://v4/./src/components/social.js","webpack://v4/./src/components/email.js","webpack://v4/./src/components/footer.js","webpack://v4/./src/components/sections/hero.js","webpack://v4/./src/components/sections/about.js","webpack://v4/./src/components/sections/jobs.js","webpack://v4/./src/components/sections/featured.js","webpack://v4/./src/components/sections/projects.js","webpack://v4/./src/components/sections/contact.js","webpack://v4/./src/components/sections/publications.js","webpack://v4/./src/components/sections/talks.js","webpack://v4/./src/config.js","webpack://v4/./src/hooks/useOnClickOutside.js","webpack://v4/./src/hooks/usePrefersReducedMotion.js","webpack://v4/./src/hooks/useScrollDirection.js","webpack://v4/./node_modules/is-dom-node/dist/is-dom-node.es.js","webpack://v4/./node_modules/is-dom-node-list/dist/is-dom-node-list.es.js","webpack://v4/./node_modules/tealight/dist/tealight.es.js","webpack://v4/./node_modules/rematrix/dist/rematrix.es.js","webpack://v4/./node_modules/miniraf/dist/miniraf.es.js","webpack://v4/./node_modules/scrollreveal/dist/scrollreveal.es.js","webpack://v4/./src/utils/sr.js","webpack://v4/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://v4/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView; // Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n } // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n\n\n var it;\n\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n\n while (!(i = it.next()).done) {\n if (!b.has(i.value[0])) return false;\n }\n\n return true;\n } // END: Modifications\n\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n } // END: fast-deep-equal\n // START: react-fast-compare\n // custom handling for DOM elements\n\n\n if (hasElementType && a instanceof Element) return false; // custom handling for React/Preact\n\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n continue;\n } // all other properties should be traversed as usual\n\n\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n } // END: react-fast-compare\n // START: fast-deep-equal\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n};","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = 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 Object.defineProperty(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}();\n\nvar _extends = Object.assign || 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};\n\nvar inherits = function inherits(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);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(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};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(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 === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase(); // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n } // Special case for innerHTML which doesn't work lowercased\n\n\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n }); // Update seen tags with tags from this instance\n\n var keys = Object.keys(instanceSeenTags);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\"); // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps; // assigning into an array to define toString function on it\n\n\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\n\n// Name the function so it is clearer in the documentation\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import React from 'react';\nexport default React.createContext(null);","import React from 'react';\n\nconst IconAppStore = () => (\n \n Apple App Store\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default IconAppStore;\n","import React from 'react';\n\nconst IconBookmark = () => (\n \n Bookmark\n \n \n);\n\nexport default IconBookmark;\n","import React from 'react';\n\nconst IconCodepen = () => (\n \n CodePen\n \n \n \n \n \n \n);\n\nexport default IconCodepen;\n","import React from 'react';\n\nconst IconExternal = () => (\n \n External Link\n \n \n \n \n);\n\nexport default IconExternal;\n","import React from 'react';\n\nconst IconFolder = () => (\n \n Folder\n \n \n);\n\nexport default IconFolder;\n","import React from 'react';\n\nconst IconFork = () => (\n \n Git Fork\n \n \n \n \n \n);\n\nexport default IconFork;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n IconAppStore,\n IconBookmark,\n IconCodepen,\n IconExternal,\n IconFolder,\n IconFork,\n IconGitHub,\n IconInstagram,\n IconLinkedin,\n IconLoader,\n IconLogo,\n IconPlayStore,\n IconStar,\n IconTwitter,\n} from '@components/icons';\n\nconst Icon = ({ name }) => {\n switch (name) {\n case 'AppStore':\n return ;\n case 'Bookmark':\n return ;\n case 'Codepen':\n return ;\n case 'External':\n return ;\n case 'Folder':\n return ;\n case 'Fork':\n return ;\n case 'GitHub':\n return ;\n case 'Instagram':\n return ;\n case 'Linkedin':\n return ;\n case 'Loader':\n return ;\n case 'Logo':\n return ;\n case 'PlayStore':\n return ;\n case 'Star':\n return ;\n case 'Twitter':\n return ;\n default:\n return ;\n }\n};\n\nIcon.propTypes = {\n name: PropTypes.string.isRequired,\n};\n\nexport default Icon;\n","import React from 'react';\n\nconst IconGitHub = () => (\n \n GitHub\n \n \n);\n\nexport default IconGitHub;\n","import React from 'react';\n\nconst IconInstagram = () => (\n \n Instagram\n \n \n \n \n);\n\nexport default IconInstagram;\n","import React from 'react';\n\nconst IconLinkedin = () => (\n \n LinkedIn\n \n \n \n \n);\n\nexport default IconLinkedin;\n","import React from 'react';\n\nconst IconLoader = () => (\n \n Loader Logo\n \n \n \n \n \n \n \n);\n\nexport default IconLoader;\n","import React from 'react';\n\nconst IconLogo = () => (\n \n Logo\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default IconLogo;\n","import React from 'react';\n\nconst IconPlayStore = () => (\n \n Google Play Store\n \n \n);\n\nexport default IconPlayStore;\n","import React from 'react';\n\nconst IconStar = () => (\n \n Star\n \n \n);\n\nexport default IconStar;\n","import React from 'react';\n\nconst IconTwitter = () => (\n \n Twitter\n \n \n);\n\nexport default IconTwitter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet';\nimport { useLocation } from '@reach/router';\nimport { useStaticQuery, graphql } from 'gatsby';\n\n// https://www.gatsbyjs.com/docs/add-seo-component/\n\nconst Head = ({ meta = {} }) => {\n const { pathname } = useLocation();\n\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n defaultTitle: title\n defaultDescription: description\n siteUrl\n defaultImage: socialImage\n twitterUsername\n }\n }\n }\n `,\n );\n\n const { defaultTitle, defaultDescription, siteUrl, defaultImage, twitterUsername } =\n site.siteMetadata;\n\n const seo = {\n title: meta.title ? `${meta.title} | ${defaultTitle}` : defaultTitle,\n description: meta.description || defaultDescription,\n image: `${siteUrl}${meta.image || defaultImage}`,\n url: `${siteUrl}${pathname}`,\n };\n\n return (\n \n \n\n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n );\n};\n\nexport default Head;\n\nHead.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n image: PropTypes.string,\n meta: PropTypes.object,\n};\n\nHead.defaultProps = {\n title: null,\n description: null,\n image: null,\n meta: null,\n};\n","import { css } from 'styled-components';\n\nconst button = css`\n color: var(--green);\n background-color: transparent;\n border: 1px solid var(--green);\n border-radius: var(--border-radius);\n font-size: var(--fz-xs);\n font-family: var(--font-mono);\n line-height: 1;\n text-decoration: none;\n cursor: pointer;\n transition: var(--transition);\n padding: 1.25rem 1.75rem;\n\n &:hover,\n &:focus,\n &:active {\n background-color: var(--green-tint);\n outline: none;\n }\n &:after {\n display: none !important;\n }\n`;\n\nconst mixins = {\n flexCenter: css`\n display: flex;\n justify-content: center;\n align-items: center;\n `,\n\n flexBetween: css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n `,\n\n link: css`\n display: inline-block;\n text-decoration: none;\n text-decoration-skip-ink: auto;\n color: inherit;\n position: relative;\n transition: var(--transition);\n &:hover,\n &:active,\n &:focus {\n color: var(--green);\n outline: 0;\n }\n `,\n\n inlineLink: css`\n display: inline-block;\n text-decoration: none;\n text-decoration-skip-ink: auto;\n position: relative;\n transition: var(--transition);\n color: var(--green);\n &:hover,\n &:focus,\n &:active {\n color: var(--green);\n outline: 0;\n &:after {\n width: 100%;\n }\n & > * {\n color: var(--green) !important;\n transition: var(--transition);\n }\n }\n &:after {\n content: '';\n display: block;\n width: 0;\n height: 1px;\n position: relative;\n bottom: 0.37em;\n background-color: var(--green);\n transition: var(--transition);\n opacity: 0.5;\n }\n `,\n\n button,\n\n smallButton: css`\n color: var(--green);\n background-color: transparent;\n border: 1px solid var(--green);\n border-radius: var(--border-radius);\n padding: 0.75rem 1rem;\n font-size: var(--fz-xs);\n font-family: var(--font-mono);\n line-height: 1;\n text-decoration: none;\n cursor: pointer;\n transition: var(--transition);\n &:hover,\n &:focus,\n &:active {\n background-color: var(--green-tint);\n outline: none;\n }\n &:after {\n display: none !important;\n }\n `,\n\n bigButton: css`\n color: var(--green);\n background-color: transparent;\n border: 1px solid var(--green);\n border-radius: var(--border-radius);\n padding: 1.25rem 1.75rem;\n font-size: var(--fz-sm);\n font-family: var(--font-mono);\n line-height: 1;\n text-decoration: none;\n cursor: pointer;\n transition: var(--transition);\n &:hover,\n &:focus,\n &:active {\n background-color: var(--green-tint);\n outline: none;\n }\n &:after {\n display: none !important;\n }\n `,\n\n boxShadow: css`\n box-shadow: 0 10px 30px -15px var(--navy-shadow);\n transition: var(--transition);\n\n &:hover,\n &:focus {\n box-shadow: 0 20px 30px -15px var(--navy-shadow);\n }\n `,\n\n fancyList: css`\n padding: 0;\n margin: 0;\n list-style: none;\n font-size: var(--fz-lg);\n li {\n position: relative;\n padding-left: 30px;\n margin-bottom: 10px;\n &:before {\n content: '▹';\n position: absolute;\n left: 0;\n color: var(--green);\n }\n }\n `,\n\n resetList: css`\n list-style: none;\n padding: 0;\n margin: 0;\n `,\n};\n\nexport default mixins;\n","import mixins from './mixins';\n\nconst theme = {\n bp: {\n mobileS: `max-width: 330px`,\n mobileM: `max-width: 400px`,\n mobileL: `max-width: 480px`,\n tabletS: `max-width: 600px`,\n tabletL: `max-width: 768px`,\n desktopXS: `max-width: 900px`,\n desktopS: `max-width: 1080px`,\n desktopM: `max-width: 1200px`,\n desktopL: `max-width: 1400px`,\n },\n\n mixins,\n};\n\nexport default theme;\n","import { css } from 'styled-components';\n\nimport CalibreRegularWoff from '@fonts/Calibre/Calibre-Regular.woff';\nimport CalibreRegularWoff2 from '@fonts/Calibre/Calibre-Regular.woff2';\nimport CalibreMediumWoff from '@fonts/Calibre/Calibre-Medium.woff';\nimport CalibreMediumWoff2 from '@fonts/Calibre/Calibre-Medium.woff2';\nimport CalibreSemiboldWoff from '@fonts/Calibre/Calibre-Semibold.woff';\nimport CalibreSemiboldWoff2 from '@fonts/Calibre/Calibre-Semibold.woff2';\n\nimport CalibreRegularItalicWoff from '@fonts/Calibre/Calibre-RegularItalic.woff';\nimport CalibreRegularItalicWoff2 from '@fonts/Calibre/Calibre-RegularItalic.woff2';\nimport CalibreMediumItalicWoff from '@fonts/Calibre/Calibre-MediumItalic.woff';\nimport CalibreMediumItalicWoff2 from '@fonts/Calibre/Calibre-MediumItalic.woff2';\nimport CalibreSemiboldItalicWoff from '@fonts/Calibre/Calibre-SemiboldItalic.woff';\nimport CalibreSemiboldItalicWoff2 from '@fonts/Calibre/Calibre-SemiboldItalic.woff2';\n\nimport SFMonoRegularWoff from '@fonts/SFMono/SFMono-Regular.woff';\nimport SFMonoRegularWoff2 from '@fonts/SFMono/SFMono-Regular.woff2';\nimport SFMonoSemiboldWoff from '@fonts/SFMono/SFMono-Semibold.woff';\nimport SFMonoSemiboldWoff2 from '@fonts/SFMono/SFMono-Semibold.woff2';\n\nimport SFMonoRegularItalicWoff from '@fonts/SFMono/SFMono-RegularItalic.woff';\nimport SFMonoRegularItalicWoff2 from '@fonts/SFMono/SFMono-RegularItalic.woff2';\nimport SFMonoSemiboldItalicWoff from '@fonts/SFMono/SFMono-SemiboldItalic.woff';\nimport SFMonoSemiboldItalicWoff2 from '@fonts/SFMono/SFMono-SemiboldItalic.woff2';\n\nconst calibreNormalWeights = {\n 400: [CalibreRegularWoff, CalibreRegularWoff2],\n 500: [CalibreMediumWoff, CalibreMediumWoff2],\n 600: [CalibreSemiboldWoff, CalibreSemiboldWoff2],\n};\n\nconst calibreItalicWeights = {\n 400: [CalibreRegularItalicWoff, CalibreRegularItalicWoff2],\n 500: [CalibreMediumItalicWoff, CalibreMediumItalicWoff2],\n 600: [CalibreSemiboldItalicWoff, CalibreSemiboldItalicWoff2],\n};\n\nconst sfMonoNormalWeights = {\n 400: [SFMonoRegularWoff, SFMonoRegularWoff2],\n 600: [SFMonoSemiboldWoff, SFMonoSemiboldWoff2],\n};\n\nconst sfMonoItalicWeights = {\n 400: [SFMonoRegularItalicWoff, SFMonoRegularItalicWoff2],\n 600: [SFMonoSemiboldItalicWoff, SFMonoSemiboldItalicWoff2],\n};\n\nconst calibre = {\n name: 'Calibre',\n normal: calibreNormalWeights,\n italic: calibreItalicWeights,\n};\n\nconst sfMono = {\n name: 'SF Mono',\n normal: sfMonoNormalWeights,\n italic: sfMonoItalicWeights,\n};\n\nconst createFontFaces = (family, style = 'normal') => {\n let styles = '';\n\n for (const [weight, formats] of Object.entries(family[style])) {\n const woff = formats[0];\n const woff2 = formats[1];\n\n styles += `\n @font-face {\n font-family: '${family.name}';\n src: url(${woff2}) format('woff2'),\n url(${woff}) format('woff');\n font-weight: ${weight};\n font-style: ${style};\n font-display: auto;\n }\n `;\n }\n\n return styles;\n};\n\nconst calibreNormal = createFontFaces(calibre);\nconst calibreItalic = createFontFaces(calibre, 'italic');\n\nconst sfMonoNormal = createFontFaces(sfMono);\nconst sfMonoItalic = createFontFaces(sfMono, 'italic');\n\nconst Fonts = css`\n ${calibreNormal + calibreItalic + sfMonoNormal + sfMonoItalic}\n`;\n\nexport default Fonts;\n","export default __webpack_public_path__ + \"static/Calibre-Regular-98526589fa32315c552129869e08427e.woff\";","export default __webpack_public_path__ + \"static/Calibre-Regular-b0d4cbb1201155ddccc21d1b8059a670.woff2\";","export default __webpack_public_path__ + \"static/Calibre-Medium-46693d9b57a6b8a657b5393258f6e899.woff\";","export default __webpack_public_path__ + \"static/Calibre-Medium-568dce56f869a519a015d3b69443b067.woff2\";","export default __webpack_public_path__ + \"static/Calibre-Semibold-6972688a249bd53a6c7e69a89e50cdd6.woff\";","export default __webpack_public_path__ + \"static/Calibre-Semibold-94fc73852539d6733dc0d80252c5e3fb.woff2\";","export default __webpack_public_path__ + \"static/Calibre-RegularItalic-57371b9e514dbbe9da31dad1a298de2d.woff\";","export default __webpack_public_path__ + \"static/Calibre-RegularItalic-5f875bd7b669f1e11b622d4d6d71b5b0.woff2\";","export default __webpack_public_path__ + \"static/Calibre-MediumItalic-aa285f95879aa2c2d26b228d5e422da6.woff\";","export default __webpack_public_path__ + \"static/Calibre-MediumItalic-7aa140573fd9ed30ae01e117c418b12b.woff2\";","export default __webpack_public_path__ + \"static/Calibre-SemiboldItalic-ad4bd95abee7bca1bdd6a93398f84a04.woff\";","export default __webpack_public_path__ + \"static/Calibre-SemiboldItalic-5f04bffe7ce988169806d66e417a966a.woff2\";","export default __webpack_public_path__ + \"static/SFMono-Regular-e36fa5257c93fc7711eae342068f9eda.woff\";","export default __webpack_public_path__ + \"static/SFMono-Regular-8799e6387338d58f2f137df821c86eb4.woff2\";","export default __webpack_public_path__ + \"static/SFMono-Semibold-ee054046915420413d0068fb1e7105c3.woff\";","export default __webpack_public_path__ + \"static/SFMono-Semibold-6e6f6c93f4bdf9cbd090c60e97a017e2.woff2\";","export default __webpack_public_path__ + \"static/SFMono-RegularItalic-3a20a00dfdeb4ba538473fa7bf625cbd.woff\";","export default __webpack_public_path__ + \"static/SFMono-RegularItalic-a596917f86217b40000ff1b894cd0e52.woff2\";","export default __webpack_public_path__ + \"static/SFMono-SemiboldItalic-10eb596e904940cd1aebb2cc6286015c.woff\";","export default __webpack_public_path__ + \"static/SFMono-SemiboldItalic-9a0ae6382e12c5e28a7342ffb41cf4da.woff2\";","import { css } from 'styled-components';\n\nconst variables = css`\n :root {\n --dark-navy: #020c1b;\n --navy: #212121;\n --transNavy: #212121da;\n --light-navy: #172a45;\n --lightest-navy: #233554;\n --navy-shadow: rgba(2, 12, 27, 0.7);\n --dark-slate: #495670;\n --slate: #8892b0;\n --light-slate: #a8b2d1;\n --lightest-slate: #ccd6f6;\n --white: #e6f1ff;\n --green: #52b7ff;\n --green-tint: rgba(113, 175, 255, 0.07);\n\n --font-sans: 'Calibre', 'Inter', 'San Francisco', 'SF Pro Text', -apple-system, system-ui,\n sans-serif;\n --font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;\n\n --fz-xxs: 12px;\n --fz-xs: 13px;\n --fz-sm: 14px;\n --fz-md: 16px;\n --fz-lg: 18px;\n --fz-xl: 20px;\n --fz-xxl: 22px;\n --fz-heading: 32px;\n\n --border-radius: 4px;\n --nav-height: 100px;\n --nav-scroll-height: 70px;\n\n --tab-height: 42px;\n --tab-width: 120px;\n\n --easing: cubic-bezier(0.645, 0.045, 0.355, 1);\n --transition: all 0.25s cubic-bezier(0.645, 0.045, 0.355, 1);\n\n --hamburger-width: 30px;\n\n --ham-before: top 0.1s ease-in 0.25s, opacity 0.1s ease-in;\n --ham-before-active: top 0.1s ease-out, opacity 0.1s ease-out 0.12s;\n --ham-after: bottom 0.1s ease-in 0.25s, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);\n --ham-after-active: bottom 0.1s ease-out,\n transform 0.22s cubic-bezier(0.215, 0.61, 0.355, 1) 0.12s;\n }\n`;\n\nexport default variables;\n","import { css } from 'styled-components';\n\n// https://reactcommunity.org/react-transition-group/css-transition\n\nconst TransitionStyles = css`\n /* Fade up */\n .fadeup-enter {\n opacity: 0.01;\n transform: translateY(20px);\n transition: opacity 300ms var(--easing), transform 300ms var(--easing);\n }\n\n .fadeup-enter-active {\n opacity: 1;\n transform: translateY(0px);\n transition: opacity 300ms var(--easing), transform 300ms var(--easing);\n }\n\n /* Fade down */\n .fadedown-enter {\n opacity: 0.01;\n transform: translateY(-20px);\n transition: opacity 300ms var(--easing), transform 300ms var(--easing);\n }\n\n .fadedown-enter-active {\n opacity: 1;\n transform: translateY(0px);\n transition: opacity 300ms var(--easing), transform 300ms var(--easing);\n }\n\n /* Fade */\n .fade-enter {\n opacity: 0;\n }\n .fade-enter-active {\n opacity: 1;\n transition: opacity 300ms var(--easing);\n }\n .fade-exit {\n opacity: 1;\n }\n .fade-exit-active {\n opacity: 0;\n transition: opacity 300ms var(--easing);\n }\n`;\n\nexport default TransitionStyles;\n","import { css } from 'styled-components';\n\nconst prismColors = {\n bg: `#112340`,\n lineHighlight: `#1d2d50`,\n blue: `#5ccfe6`,\n purple: `#c3a6ff`,\n green: `#bae67e`,\n yellow: `#ffd580`,\n orange: `#ffae57`,\n red: `#ef6b73`,\n grey: `#a2aabc`,\n comment: `#8695b799`,\n};\n\n// https://www.gatsbyjs.org/packages/gatsby-remark-prismjs\n\nconst PrismStyles = css`\n /**\n * Add back the container background-color, border-radius, padding, margin\n * and overflow that we removed from
.\n  */\n  .gatsby-highlight {\n    background-color: ${prismColors.bg};\n    color: ${prismColors.grey};\n    border-radius: var(--border-radius);\n    margin: 2em 0;\n    padding: 1.25em;\n    overflow: auto;\n    position: relative;\n    font-family: var(--font-mono);\n    font-size: var(--fz-md);\n  }\n\n  @media only screen and (max-width: 600px) {\n    .gatsby-highlight {\n      font-size: var(--fz-xxs);\n    }\n  }\n\n  .gatsby-highlight code[class*='language-'],\n  .gatsby-highlight pre[class*='language-'] {\n    height: auto !important;\n    font-size: var(--fz-sm);\n    line-height: 1.5;\n    white-space: pre;\n    word-spacing: normal;\n    word-break: normal;\n    word-wrap: normal;\n    tab-size: 2;\n    hyphens: none;\n  }\n\n  /**\n  * Remove the default PrismJS theme background-color, border-radius, margin,\n  * padding and overflow.\n  * 1. Make the element just wide enough to fit its content.\n  * 2. Always fill the visible space in .gatsby-highlight.\n  * 3. Adjust the position of the line numbers\n  */\n  .gatsby-highlight pre[class*='language-'] {\n    background-color: transparent;\n    margin: 0;\n    padding: 0;\n    overflow: initial;\n    float: left; /* 1 */\n    min-width: 100%; /* 2 */\n    padding-top: 2em;\n  }\n\n  /* File names */\n  .gatsby-code-title {\n    padding: 1em 1.5em;\n    font-family: var(--font-mono);\n    font-size: var(--fz-xs);\n    background-color: ${prismColors.bg};\n    color: ${prismColors.grey};\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: var(--border-radius);\n    border-bottom: 1px solid ${prismColors.lineHighlight};\n\n    & + .gatsby-highlight {\n      margin-top: 0;\n      border-top-left-radius: 0;\n      border-top-right-radius: 0;\n    }\n  }\n\n  /* Line highlighting */\n  .gatsby-highlight-code-line {\n    display: block;\n    background-color: ${prismColors.lineHighlight};\n    border-left: 2px solid var(--green);\n    padding-left: calc(1em + 2px);\n    padding-right: 1em;\n    margin-right: -1.35em;\n    margin-left: -1.35em;\n  }\n\n  /* Language badges */\n  .gatsby-highlight pre[class*='language-']::before {\n    background: var(--lightest-navy);\n    color: var(--white);\n    font-size: var(--fz-xxs);\n    font-family: var(--font-mono);\n    line-height: 1.5;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    border-radius: 0 0 3px 3px;\n    position: absolute;\n    top: 0;\n    left: 1.25rem;\n    padding: 0.25rem 0.5rem;\n  }\n  .gatsby-highlight pre[class='language-javascript']::before {\n    content: 'js';\n  }\n  .gatsby-highlight pre[class='language-js']::before {\n    content: 'js';\n  }\n  .gatsby-highlight pre[class='language-jsx']::before {\n    content: 'jsx';\n  }\n  .gatsby-highlight pre[class='language-graphql']::before {\n    content: 'GraphQL';\n  }\n  .gatsby-highlight pre[class='language-html']::before {\n    content: 'html';\n  }\n  .gatsby-highlight pre[class='language-css']::before {\n    content: 'css';\n  }\n  .gatsby-highlight pre[class='language-mdx']::before {\n    content: 'mdx';\n  }\n  .gatsby-highlight pre[class='language-shell']::before {\n    content: 'shell';\n  }\n  .gatsby-highlight pre[class='language-sh']::before {\n    content: 'sh';\n  }\n  .gatsby-highlight pre[class='language-bash']::before {\n    content: 'bash';\n  }\n  .gatsby-highlight pre[class='language-yaml']::before {\n    content: 'yaml';\n  }\n  .gatsby-highlight pre[class='language-markdown']::before {\n    content: 'md';\n  }\n  .gatsby-highlight pre[class='language-json']::before,\n  .gatsby-highlight pre[class='language-json5']::before {\n    content: 'json';\n  }\n  .gatsby-highlight pre[class='language-diff']::before {\n    content: 'diff';\n  }\n  .gatsby-highlight pre[class='language-text']::before {\n    content: 'text';\n  }\n  .gatsby-highlight pre[class='language-flow']::before {\n    content: 'flow';\n  }\n\n  /* Prism Styles */\n  .token {\n    display: inline;\n  }\n  .token.comment,\n  .token.block-comment,\n  .token.prolog,\n  .token.doctype,\n  .token.cdata {\n    color: ${prismColors.comment};\n  }\n  .token.punctuation {\n    color: ${prismColors.grey};\n  }\n  .token.namespace,\n  .token.deleted {\n    color: ${prismColors.red};\n  }\n  .token.function-name,\n  .token.function,\n  .token.class-name,\n  .token.constant,\n  .token.symbol {\n    color: ${prismColors.yellow};\n  }\n  .token.attr-name,\n  .token.operator,\n  .token.rule {\n    color: ${prismColors.orange};\n  }\n  .token.keyword,\n  .token.boolean,\n  .token.number,\n  .token.property {\n    color: ${prismColors.purple};\n  }\n  .token.tag,\n  .token.selector,\n  .token.important,\n  .token.atrule,\n  .token.builtin,\n  .token.entity,\n  .token.url {\n    color: ${prismColors.blue};\n  }\n  .token.string,\n  .token.char,\n  .token.attr-value,\n  .token.regex,\n  .token.variable,\n  .token.inserted {\n    color: ${prismColors.green};\n  }\n  .token.important,\n  .token.bold {\n    font-weight: 600;\n  }\n  .token.italic {\n    font-style: italic;\n  }\n  .token.entity {\n    cursor: help;\n  }\n  .namespace {\n    opacity: 0.7;\n  }\n`;\n\nexport default PrismStyles;\n","import { createGlobalStyle } from 'styled-components';\nimport fonts from './fonts';\nimport variables from './variables';\nimport TransitionStyles from './TransitionStyles';\nimport PrismStyles from './PrismStyles';\n\nconst GlobalStyle = createGlobalStyle`\n  ${fonts};\n  ${variables};\n\n  html {\n    box-sizing: border-box;\n    width: 100%;\n    scroll-behavior: smooth;\n  }\n\n  *,\n  *:before,\n  *:after {\n    box-sizing: inherit;\n  }\n\n  ::selection {\n    background-color: var(--lightest-navy);\n    color: var(--lightest-slate);\n  }\n\n  /* Provide basic, default focus styles.*/\n  :focus {\n    outline: 2px dashed var(--green);\n    outline-offset: 3px;\n  }\n\n  /*\n    Remove default focus styles for mouse users ONLY if\n    :focus-visible is supported on this platform.\n  */\n  :focus:not(:focus-visible) {\n    outline: none;\n    outline-offset: 0px;\n  }\n\n  /*\n    Optionally: If :focus-visible is supported on this\n    platform, provide enhanced focus styles for keyboard\n    focus.\n  */\n  :focus-visible {\n    outline: 2px dashed var(--green);\n    outline-offset: 3px;\n  }\n\n  /* Scrollbar Styles */\n  html {\n    scrollbar-color: var(--dark-slate) var(--navy);\n  }\n  ::-webkit-scrollbar {\n    width: 12px;\n  }\n  ::-webkit-scrollbar-track {\n    background: var(--navy);\n  }\n  ::-webkit-scrollbar-thumb {\n    background-color: var(--dark-slate);\n    border: 3px solid var(--navy);\n    border-radius: 10px;\n  }\n\n  body {\n    margin: 0;\n    width: 100%;\n    min-height: 100%;\n    overflow-x: hidden;\n    -moz-osx-font-smoothing: grayscale;\n    -webkit-font-smoothing: antialiased;\n    background-color: var(--navy);\n    color: var(--slate);\n    font-family: var(--font-sans);\n    font-size: var(--fz-xl);\n    line-height: 1.3;\n\n    @media (max-width: 480px) {\n      font-size: var(--fz-lg);\n    }\n\n    &.hidden {\n      overflow: hidden;\n    }\n\n    &.blur {\n      overflow: hidden;\n\n      header {\n        background-color: transparent;\n      }\n\n      #content > * {\n        filter: blur(5px) brightness(0.7);\n        transition: var(--transition);\n        pointer-events: none;\n        user-select: none;\n      }\n    }\n  }\n\n  #root {\n    min-height: 100vh;\n    display: grid;\n    grid-template-rows: 1fr auto;\n    grid-template-columns: 100%;\n  }\n\n  main {\n    margin: 0 auto;\n    width: 100%;\n    max-width: 1600px;\n    min-height: 100vh;\n    padding: 200px 150px;\n\n    @media (max-width: 1080px) {\n      padding: 200px 100px;\n    }\n    @media (max-width: 768px) {\n      padding: 150px 50px;\n    }\n    @media (max-width: 480px) {\n      padding: 125px 25px;\n    }\n\n    &.fillHeight {\n      padding: 0 150px;\n\n      @media (max-width: 1080px) {\n        padding: 0 100px;\n      }\n      @media (max-width: 768px) {\n        padding: 0 50px;\n      }\n      @media (max-width: 480px) {\n        padding: 0 25px;\n      }\n    }\n  }\n\n  section {\n    margin: 0 auto;\n    padding: 100px 0;\n    max-width: 1000px;\n\n    @media (max-width: 768px) {\n      padding: 80px 0;\n    }\n\n    @media (max-width: 480px) {\n      padding: 60px 0;\n    }\n  }\n\n  h1,\n  h2,\n  h3,\n  h4,\n  h5,\n  h6 {\n    margin: 0 0 10px 0;\n    font-weight: 600;\n    color: var(--lightest-slate);\n    line-height: 1.1;\n  }\n\n  .big-heading {\n    margin: 0;\n    font-size: clamp(40px, 8vw, 80px);\n  }\n\n  .medium-heading {\n    margin: 0;\n    font-size: clamp(40px, 8vw, 60px);\n  }\n\n  .numbered-heading {\n    display: flex;\n    align-items: center;\n    position: relative;\n    margin: 10px 0 40px;\n    width: 100%;\n    font-size: clamp(26px, 5vw, var(--fz-heading));\n    white-space: nowrap;\n\n    &:before {\n      position: relative;\n      bottom: 4px;\n      counter-increment: section;\n      content: '0' counter(section) '.';\n      margin-right: 10px;\n      color: var(--green);\n      font-family: var(--font-mono);\n      font-size: clamp(var(--fz-md), 3vw, var(--fz-xl));\n      font-weight: 400;\n\n      @media (max-width: 480px) {\n        margin-bottom: -3px;\n        margin-right: 5px;\n      }\n    }\n\n    &:after {\n      content: '';\n      display: block;\n      position: relative;\n      top: -5px;\n      width: 300px;\n      height: 1px;\n      margin-left: 20px;\n      background-color: var(--lightest-navy);\n\n      @media (max-width: 1080px) {\n        width: 200px;\n      }\n      @media (max-width: 768px) {\n        width: 100%;\n      }\n      @media (max-width: 600px) {\n        margin-left: 10px;\n      }\n    }\n  }\n\n  img,\n  svg,\n  .gatsby-image-wrapper {\n    width: 100%;\n    max-width: 100%;\n    vertical-align: middle;\n  }\n\n  img[alt=\"\"],\n  img:not([alt]) {\n    filter: blur(5px);\n  }\n\n  svg {\n    width: 100%;\n    height: 100%;\n    fill: currentColor;\n    vertical-align: middle;\n\n    &.feather {\n      fill: none;\n    }\n  }\n\n  a {\n    display: inline-block;\n    text-decoration: none;\n    text-decoration-skip-ink: auto;\n    color: inherit;\n    position: relative;\n    transition: var(--transition);\n\n    &:hover,\n    &:focus {\n      color: var(--green);\n    }\n\n    &.inline-link {\n      ${({ theme }) => theme.mixins.inlineLink};\n    }\n  }\n\n  button {\n    cursor: pointer;\n    border: 0;\n    border-radius: 0;\n  }\n\n  input, textarea {\n    border-radius: 0;\n    outline: 0;\n\n    &:focus {\n      outline: 0;\n    }\n    &:focus,\n    &:active {\n      &::placeholder {\n        opacity: 0.5;\n      }\n    }\n  }\n\n  p {\n    margin: 0 0 15px 0;\n\n    &:last-child,\n    &:last-of-type {\n      margin: 0;\n    }\n\n    & > a {\n      ${({ theme }) => theme.mixins.inlineLink};\n    }\n\n    & > code {\n      background-color: var(--light-navy);\n      color: var(--white);\n      font-size: var(--fz-sm);\n      border-radius: var(--border-radius);\n      padding: 0.3em 0.5em;\n    }\n  }\n\n  ul {\n    &.fancy-list {\n      padding: 0;\n      margin: 0;\n      list-style: none;\n      font-size: var(--fz-lg);\n      li {\n        position: relative;\n        padding-left: 30px;\n        margin-bottom: 10px;\n        &:before {\n          content: '▹';\n          position: absolute;\n          left: 0;\n          color: var(--green);\n        }\n      }\n    }\n  }\n\n  blockquote {\n    border-left-color: var(--green);\n    border-left-style: solid;\n    border-left-width: 1px;\n    margin-left: 0px;\n    margin-right: 0px;\n    padding-left: 1.5rem;\n\n    p {\n      font-style: italic;\n      font-size: 24px;\n    }\n  }\n\n  hr {\n    background-color: var(--lightest-navy);\n    height: 1px;\n    border-width: 0px;\n    border-style: initial;\n    border-color: initial;\n    border-image: initial;\n    margin: 1rem;\n  }\n\n  code {\n    font-family: var(--font-mono);\n    font-size: var(--fz-md);\n  }\n\n  .skip-to-content {\n    ${({ theme }) => theme.mixins.button};\n    position: absolute;\n    top: auto;\n    left: -999px;\n    width: 1px;\n    height: 1px;\n    overflow: hidden;\n    z-index: -99;\n\n    &:focus,\n    &:active {\n      background-color: var(--green);\n      color: var(--navy);\n      top: 0;\n      left: 0;\n      width: auto;\n      height: auto;\n      overflow: auto;\n      z-index: 99;\n    }\n  }\n\n  #logo {\n    color: var(--green);\n  }\n\n  .overline {\n    color: var(--green);\n    font-family: var(--font-mono);\n    font-size: var(--fz-md);\n    font-weight: 400;\n  }\n\n  .subtitle {\n    color: var(--green);\n    margin: 0 0 20px 0;\n    font-size: var(--fz-md);\n    font-family: var(--font-mono);\n    font-weight: 400;\n    line-height: 1.5;\n    @media (max-width: 1080px) {\n      font-size: var(--fz-sm);\n    }\n    @media (max-width: 768px) {\n      font-size: var(--fz-xs);\n    }\n\n    a {\n      ${({ theme }) => theme.mixins.inlineLink};\n      line-height: 1.5;\n    }\n  }\n\n  .breadcrumb {\n    display: flex;\n    align-items: center;\n    margin-bottom: 50px;\n    color: var(--green);\n\n    .arrow {\n      display: block;\n      margin-right: 10px;\n      padding-top: 4px;\n    }\n\n    a {\n      ${({ theme }) => theme.mixins.inlineLink};\n      font-family: var(--font-mono);\n      font-size: var(--fz-sm);\n      font-weight: 600;\n      line-height: 1.5;\n      text-transform: uppercase;\n      letter-spacing: 0.1em;\n    }\n  }\n\n  .gatsby-image-outer-wrapper {\n    height: 100%;\n  }\n\n  ${TransitionStyles};\n\n  ${PrismStyles};\n`;\n\nexport default GlobalStyle;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { ThemeProvider } from 'styled-components';\nimport { Head, Nav, Social, Email, Footer } from '@components';\nimport { GlobalStyle, theme } from '@styles';\n\nconst StyledContent = styled.div`\n  display: flex;\n  flex-direction: column;\n  min-height: 100vh;\n`;\n\nconst Layout = ({ children, location, meta = {} }) => {\n  const isHome = location.pathname === '/';\n\n  useEffect(() => {\n    if (location.hash) {\n      const id = location.hash.substring(1); // location.hash without the '#'\n      setTimeout(() => {\n        const el = document.getElementById(id);\n        if (el) {\n          el.scrollIntoView();\n          el.focus();\n        }\n      }, 0);\n    }\n\n    // Sets target=\"_blank\" rel=\"noopener noreferrer\" on external links\n    const allLinks = Array.from(document.querySelectorAll('a'));\n    if (allLinks.length > 0) {\n      allLinks.forEach(link => {\n        if (link.host !== window.location.host) {\n          link.setAttribute('rel', 'noopener noreferrer');\n          link.setAttribute('target', '_blank');\n        }\n      });\n    }\n  });\n\n  return (\n    <>\n      \n\n      
\n \n \n\n \n Skip to Content\n \n\n \n
\n \n );\n};\n\nLayout.propTypes = {\n children: PropTypes.node.isRequired,\n location: PropTypes.object.isRequired,\n meta: PropTypes.object,\n};\n\nexport default Layout;\n","import React, { useState, useEffect } from 'react';\nimport { Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\nimport { navLinks } from '@config';\nimport { useScrollDirection, usePrefersReducedMotion } from '@hooks';\nimport { Menu } from '@components';\nimport { IconLogo } from '@components/icons';\n\nconst StyledHeader = styled.header`\n ${({ theme }) => theme.mixins.flexBetween};\n position: fixed;\n top: 0;\n z-index: 11;\n padding: 0px 50px;\n width: 100%;\n height: var(--nav-height);\n background-color: var(--transNavy);\n filter: none !important;\n pointer-events: auto !important;\n user-select: auto !important;\n backdrop-filter: blur(10px);\n transition: var(--transition);\n\n @media (max-width: 1080px) {\n padding: 0 40px;\n }\n @media (max-width: 768px) {\n padding: 0 25px;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n ${props =>\n props.scrollDirection === 'up' &&\n !props.scrolledToTop &&\n css`\n height: var(--nav-scroll-height);\n transform: translateY(0px);\n background-color: var(--transNavy);\n box-shadow: 0 10px 30px -10px var(--navy-shadow);\n `};\n\n ${props =>\n props.scrollDirection === 'down' &&\n !props.scrolledToTop &&\n css`\n height: var(--nav-scroll-height);\n transform: translateY(calc(var(--nav-scroll-height) * -1));\n box-shadow: 0 10px 30px -10px var(--navy-shadow);\n `};\n }\n`;\n\nconst StyledNav = styled.nav`\n ${({ theme }) => theme.mixins.flexBetween};\n position: relative;\n width: 100%;\n color: var(--lightest-slate);\n font-family: var(--font-mono);\n counter-reset: item 0;\n z-index: 12;\n\n .logo {\n ${({ theme }) => theme.mixins.flexCenter};\n\n a {\n color: var(--green);\n width: 42px;\n height: 42px;\n\n &:hover,\n &:focus {\n svg {\n fill: var(--green-tint);\n }\n }\n\n svg {\n fill: none;\n transition: var(--transition);\n user-select: none;\n }\n }\n }\n`;\n\nconst StyledLinks = styled.div`\n display: flex;\n align-items: center;\n\n @media (max-width: 768px) {\n display: none;\n }\n\n ol {\n ${({ theme }) => theme.mixins.flexBetween};\n padding: 0;\n margin: 0;\n list-style: none;\n\n li {\n margin: 0 5px;\n position: relative;\n counter-increment: item 1;\n font-size: var(--fz-xs);\n\n a {\n padding: 10px;\n\n &:before {\n content: '0' counter(item) '.';\n margin-right: 5px;\n color: var(--green);\n font-size: var(--fz-xxs);\n text-align: right;\n }\n }\n }\n }\n\n .blog-button {\n ${({ theme }) => theme.mixins.smallButton};\n margin-left: 15px;\n font-size: var(--fz-xs);\n }\n`;\n\nconst Nav = ({ isHome }) => {\n const scrollDirection = useScrollDirection('down');\n const [scrolledToTop, setScrolledToTop] = useState(true);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const handleScroll = () => {\n setScrolledToTop(window.pageYOffset < 50);\n };\n\n useEffect(() => {\n if (prefersReducedMotion) {\n return;\n }\n\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n const Logo = (\n
\n {isHome ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n );\n\n return (\n \n \n {Logo}\n \n
    \n {navLinks &&\n navLinks.map(({ url, name }, i) => (\n
  1. \n {name}\n
  2. \n ))}\n
\n {/*
\n \n Blog\n \n
*/}\n
\n \n \n \n );\n};\n\nNav.propTypes = {\n isHome: PropTypes.bool,\n};\n\nexport default Nav;\n","export const hex2rgba = (hex, alpha = 1) => {\n const [r, g, b] = hex.match(/\\w\\w/g).map(x => parseInt(x, 16));\n return `rgba(${r},${g},${b},${alpha})`;\n};\n\nexport const KEY_CODES = {\n ARROW_LEFT: 'ArrowLeft',\n ARROW_LEFT_IE11: 'Left',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_RIGHT_IE11: 'Right',\n ARROW_UP: 'ArrowUp',\n ARROW_UP_IE11: 'Up',\n ARROW_DOWN: 'ArrowDown',\n ARROW_DOWN_IE11: 'Down',\n ESCAPE: 'Escape',\n ESCAPE_IE11: 'Esc',\n TAB: 'Tab',\n SPACE: ' ',\n SPACE_IE11: 'Spacebar',\n ENTER: 'Enter',\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { Helmet } from 'react-helmet';\nimport { Link } from 'gatsby';\nimport styled from 'styled-components';\nimport { navLinks } from '@config';\nimport { KEY_CODES } from '@utils';\nimport { useOnClickOutside } from '@hooks';\n\nconst StyledMenu = styled.div`\n display: none;\n\n @media (max-width: 768px) {\n display: block;\n }\n`;\n\nconst StyledHamburgerButton = styled.button`\n display: none;\n\n @media (max-width: 768px) {\n ${({ theme }) => theme.mixins.flexCenter};\n position: relative;\n z-index: 10;\n margin-right: -15px;\n padding: 15px;\n border: 0;\n background-color: transparent;\n color: inherit;\n text-transform: none;\n transition-timing-function: linear;\n transition-duration: 0.15s;\n transition-property: opacity, filter;\n }\n\n .ham-box {\n display: inline-block;\n position: relative;\n width: var(--hamburger-width);\n height: 24px;\n }\n\n .ham-box-inner {\n position: absolute;\n top: 50%;\n right: 0;\n width: var(--hamburger-width);\n height: 2px;\n border-radius: var(--border-radius);\n background-color: var(--green);\n transition-duration: 0.22s;\n transition-property: transform;\n transition-delay: ${props => (props.menuOpen ? `0.12s` : `0s`)};\n transform: rotate(${props => (props.menuOpen ? `225deg` : `0deg`)});\n transition-timing-function: cubic-bezier(\n ${props => (props.menuOpen ? `0.215, 0.61, 0.355, 1` : `0.55, 0.055, 0.675, 0.19`)}\n );\n &:before,\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: auto;\n right: 0;\n width: var(--hamburger-width);\n height: 2px;\n border-radius: 4px;\n background-color: var(--green);\n transition-timing-function: ease;\n transition-duration: 0.15s;\n transition-property: transform;\n }\n &:before {\n width: ${props => (props.menuOpen ? `100%` : `120%`)};\n top: ${props => (props.menuOpen ? `0` : `-10px`)};\n opacity: ${props => (props.menuOpen ? 0 : 1)};\n transition: ${({ menuOpen }) =>\n menuOpen ? 'var(--ham-before-active)' : 'var(--ham-before)'};\n }\n &:after {\n width: ${props => (props.menuOpen ? `100%` : `80%`)};\n bottom: ${props => (props.menuOpen ? `0` : `-10px`)};\n transform: rotate(${props => (props.menuOpen ? `-90deg` : `0`)});\n transition: ${({ menuOpen }) => (menuOpen ? 'var(--ham-after-active)' : 'var(--ham-after)')};\n }\n }\n`;\n\nconst StyledSidebar = styled.aside`\n display: none;\n\n @media (max-width: 768px) {\n ${({ theme }) => theme.mixins.flexCenter};\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n padding: 50px 10px;\n width: min(75vw, 400px);\n height: 100vh;\n outline: 0;\n background-color: var(--light-navy);\n box-shadow: -10px 0px 30px -15px var(--navy-shadow);\n z-index: 9;\n transform: translateX(${props => (props.menuOpen ? 0 : 100)}vw);\n visibility: ${props => (props.menuOpen ? 'visible' : 'hidden')};\n transition: var(--transition);\n }\n\n nav {\n ${({ theme }) => theme.mixins.flexBetween};\n width: 100%;\n flex-direction: column;\n color: var(--lightest-slate);\n font-family: var(--font-mono);\n text-align: center;\n }\n\n ol {\n padding: 0;\n margin: 0;\n list-style: none;\n width: 100%;\n\n li {\n position: relative;\n margin: 0 auto 20px;\n counter-increment: item 1;\n font-size: clamp(var(--fz-sm), 4vw, var(--fz-lg));\n\n @media (max-width: 600px) {\n margin: 0 auto 10px;\n }\n\n &:before {\n content: '0' counter(item) '.';\n display: block;\n margin-bottom: 5px;\n color: var(--green);\n font-size: var(--fz-sm);\n }\n }\n\n a {\n ${({ theme }) => theme.mixins.link};\n width: 100%;\n padding: 3px 20px 20px;\n }\n }\n\n .blog-link {\n ${({ theme }) => theme.mixins.bigButton};\n padding: 18px 50px;\n margin: 10% auto 0;\n width: max-content;\n }\n`;\n\nconst Menu = () => {\n const [menuOpen, setMenuOpen] = useState(false);\n\n const toggleMenu = () => setMenuOpen(!menuOpen);\n\n const buttonRef = useRef(null);\n const navRef = useRef(null);\n\n let menuFocusables;\n let firstFocusableEl;\n let lastFocusableEl;\n\n const setFocusables = () => {\n menuFocusables = [buttonRef.current, ...Array.from(navRef.current.querySelectorAll('a'))];\n firstFocusableEl = menuFocusables[0];\n lastFocusableEl = menuFocusables[menuFocusables.length - 1];\n };\n\n const handleBackwardTab = e => {\n if (document.activeElement === firstFocusableEl) {\n e.preventDefault();\n lastFocusableEl.focus();\n }\n };\n\n const handleForwardTab = e => {\n if (document.activeElement === lastFocusableEl) {\n e.preventDefault();\n firstFocusableEl.focus();\n }\n };\n\n const onKeyDown = e => {\n switch (e.key) {\n case KEY_CODES.ESCAPE:\n case KEY_CODES.ESCAPE_IE11: {\n setMenuOpen(false);\n break;\n }\n\n case KEY_CODES.TAB: {\n if (menuFocusables && menuFocusables.length === 1) {\n e.preventDefault();\n break;\n }\n if (e.shiftKey) {\n handleBackwardTab(e);\n } else {\n handleForwardTab(e);\n }\n break;\n }\n\n default: {\n break;\n }\n }\n };\n\n const onResize = e => {\n if (e.currentTarget.innerWidth > 768) {\n setMenuOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', onKeyDown);\n window.addEventListener('resize', onResize);\n\n setFocusables();\n\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n const wrapperRef = useRef();\n useOnClickOutside(wrapperRef, () => setMenuOpen(false));\n\n return (\n \n \n \n \n\n
\n \n \n \n \n \n\n \n \n \n
\n
\n );\n};\n\nexport default Menu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport styled from 'styled-components';\nimport { usePrefersReducedMotion } from '@hooks';\n\nconst StyledSideElement = styled.div`\n width: 40px;\n position: fixed;\n bottom: 0;\n left: ${props => (props.orientation === 'left' ? '40px' : 'auto')};\n right: ${props => (props.orientation === 'left' ? 'auto' : '40px')};\n z-index: 10;\n color: var(--light-slate);\n\n @media (max-width: 1080px) {\n left: ${props => (props.orientation === 'left' ? '20px' : 'auto')};\n right: ${props => (props.orientation === 'left' ? 'auto' : '20px')};\n }\n\n @media (max-width: 768px) {\n display: none;\n }\n`;\n\nconst Side = ({ children, isHome, orientation }) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n return (\n \n {prefersReducedMotion ? (\n <>{children}\n ) : (\n \n \n {children}\n \n \n )}\n \n );\n};\n\nSide.propTypes = {\n children: PropTypes.node.isRequired,\n isHome: PropTypes.bool,\n orientation: PropTypes.string,\n};\n\nexport default Side;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { socialMedia } from '@config';\nimport { Side } from '@components';\nimport { Icon } from '@components/icons';\n\nconst StyledSocialList = styled.ul`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0;\n padding: 0;\n list-style: none;\n\n &:after {\n content: '';\n display: block;\n width: 1px;\n height: 90px;\n margin: 0 auto;\n background-color: var(--light-slate);\n }\n\n li {\n &:last-of-type {\n margin-bottom: 20px;\n }\n\n a {\n padding: 10px;\n\n &:hover,\n &:focus {\n transform: translateY(-3px);\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n }\n }\n`;\n\nconst Social = ({ isHome }) => (\n \n \n {socialMedia &&\n socialMedia.map(({ url, name }, i) => (\n
  • \n \n \n \n
  • \n ))}\n
    \n
    \n);\n\nSocial.propTypes = {\n isHome: PropTypes.bool,\n};\n\nexport default Social;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { email } from '@config';\nimport { Side } from '@components';\n\nconst StyledLinkWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative;\n\n &:after {\n content: '';\n display: block;\n width: 1px;\n height: 90px;\n margin: 0 auto;\n background-color: var(--light-slate);\n }\n\n a {\n margin: 20px auto;\n padding: 10px;\n font-family: var(--font-mono);\n font-size: var(--fz-xxs);\n line-height: var(--fz-lg);\n letter-spacing: 0.1em;\n writing-mode: vertical-rl;\n\n &:hover,\n &:focus {\n transform: translateY(-3px);\n }\n }\n`;\n\nconst Email = ({ isHome }) => (\n \n \n {email}\n \n \n);\n\nEmail.propTypes = {\n isHome: PropTypes.bool,\n};\n\nexport default Email;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { Icon } from '@components/icons';\nimport { socialMedia } from '@config';\n\nconst StyledFooter = styled.footer`\n ${({ theme }) => theme.mixins.flexCenter};\n flex-direction: column;\n height: auto;\n min-height: 70px;\n padding: 15px;\n text-align: center;\n`;\n\nconst StyledSocialLinks = styled.div`\n display: none;\n\n @media (max-width: 768px) {\n display: block;\n width: 100%;\n max-width: 270px;\n margin: 0 auto 10px;\n color: var(--light-slate);\n }\n\n ul {\n ${({ theme }) => theme.mixins.flexBetween};\n padding: 0;\n margin: 0;\n list-style: none;\n\n a {\n padding: 10px;\n svg {\n width: 20px;\n height: 20px;\n }\n }\n }\n`;\n\nconst StyledCredit = styled.div`\n color: var(--light-slate);\n font-family: var(--font-mono);\n font-size: var(--fz-xxs);\n line-height: 1;\n\n a {\n padding: 10px;\n }\n\n .github-stats {\n margin-top: 10px;\n\n & > span {\n display: inline-flex;\n align-items: center;\n margin: 0 7px;\n }\n svg {\n display: inline-block;\n margin-right: 5px;\n width: 14px;\n height: 14px;\n }\n }\n`;\n\nconst Footer = () => {\n const [githubInfo, setGitHubInfo] = useState({\n stars: null,\n forks: null,\n });\n\n useEffect(() => {\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n fetch('https://api.github.com/repos/bchiang7/v4')\n .then(response => response.json())\n .then(json => {\n const { stargazers_count, forks_count } = json;\n setGitHubInfo({\n stars: stargazers_count,\n forks: forks_count,\n });\n })\n .catch(e => console.error(e));\n }, []);\n\n return (\n \n \n
      \n {socialMedia &&\n socialMedia.map(({ name, url }, i) => (\n
    • \n \n \n \n
    • \n ))}\n
    \n
    \n\n \n \n
    Designed & Built by Brittany Chiang
    \n\n {githubInfo.stars && githubInfo.forks && (\n
    \n \n \n {githubInfo.stars.toLocaleString()}\n \n \n \n {githubInfo.forks.toLocaleString()}\n \n
    \n )}\n
    \n
    \n
    \n );\n};\n\nFooter.propTypes = {\n githubInfo: PropTypes.object,\n};\n\nexport default Footer;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst StyledHeroSection = styled.section`\n ${({ theme }) => theme.mixins.flexCenter};\n flex-direction: column;\n align-items: flex-start;\n min-height: 100vh;\n padding: 0;\n\n @media (max-width: 480px) and (min-height: 700px) {\n padding-bottom: 10vh;\n }\n\n h1 {\n margin: 0 0 30px 4px;\n color: var(--green);\n font-family: var(--font-mono);\n font-size: clamp(var(--fz-sm), 5vw, var(--fz-md));\n font-weight: 400;\n\n @media (max-width: 480px) {\n margin: 0 0 20px 2px;\n }\n }\n\n h3 {\n margin-top: 10px;\n color: var(--slate);\n line-height: 0.9;\n }\n\n p {\n margin: 20px 0 0;\n max-width: 540px;\n }\n\n .email-link {\n ${({ theme }) => theme.mixins.bigButton};\n margin-top: 50px;\n }\n`;\n\nconst Hero = () => {\n const one =

    Hi, my name is

    ;\n const two =

    Dennis Trautwein.

    ;\n const three =

    Nice to meet you!

    ;\n const four = (\n

    \n I'm a physicist working as a software engineer based in Switzerland currently specializing in\n peer to peer systems as part of a PhD endeavour.\n

    \n );\n const five = (\n \n Get In Touch!\n \n );\n\n const items = [one, two, three, four, five];\n\n return (\n \n {items.map((item, i) => (\n
    {item}
    \n ))}\n
    \n );\n};\n\nexport default Hero;\n","import React, { useEffect, useRef } from 'react';\nimport { StaticImage } from 'gatsby-plugin-image';\nimport styled from 'styled-components';\nimport { srConfig } from '@config';\nimport sr from '@utils/sr';\nimport { usePrefersReducedMotion } from '@hooks';\n\nconst StyledAboutSection = styled.section`\n max-width: 900px;\n\n .inner {\n display: grid;\n grid-template-columns: 3fr 2fr;\n grid-gap: 50px;\n\n @media (max-width: 768px) {\n display: block;\n }\n }\n`;\nconst StyledText = styled.div`\n ul.skills-list {\n display: grid;\n grid-template-columns: repeat(2, minmax(140px, 200px));\n grid-gap: 0 10px;\n padding: 0;\n margin: 20px 0 0 0;\n overflow: hidden;\n list-style: none;\n\n li {\n position: relative;\n margin-bottom: 10px;\n padding-left: 20px;\n font-family: var(--font-mono);\n font-size: var(--fz-xs);\n\n &:before {\n content: '▹';\n position: absolute;\n left: 0;\n color: var(--green);\n font-size: var(--fz-sm);\n line-height: 12px;\n }\n }\n }\n`;\nconst StyledPic = styled.div`\n position: relative;\n max-width: 300px;\n\n @media (max-width: 768px) {\n margin: 50px auto 0;\n width: 70%;\n }\n\n .wrapper {\n ${({ theme }) => theme.mixins.boxShadow};\n display: block;\n position: relative;\n width: 100%;\n border-radius: var(--border-radius);\n background-color: var(--green);\n\n &:hover,\n &:focus {\n outline: 0;\n\n &:after {\n top: 15px;\n left: 15px;\n }\n\n .img {\n filter: none;\n mix-blend-mode: normal;\n }\n }\n\n .img {\n position: relative;\n border-radius: var(--border-radius);\n mix-blend-mode: multiply;\n filter: grayscale(100%) contrast(1);\n transition: var(--transition);\n }\n\n &:before,\n &:after {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: var(--border-radius);\n transition: var(--transition);\n }\n\n &:before {\n top: 0;\n left: 0;\n background-color: var(--navy);\n mix-blend-mode: screen;\n }\n\n &:after {\n border: 2px solid var(--green);\n top: 20px;\n left: 20px;\n z-index: -1;\n }\n }\n`;\n\nconst About = () => {\n const revealContainer = useRef(null);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n useEffect(() => {\n if (prefersReducedMotion) {\n return;\n }\n\n sr.reveal(revealContainer.current, srConfig());\n }, []);\n\n const skills = ['AWS', 'Kubernetes', 'ArgoCD', 'Golang', 'Terraform', 'Protobuf/GRPC', 'libp2p'];\n\n return (\n \n

    About Me

    \n\n
    \n \n
    \n

    \n Hi! I'm Dennis, a software engineer based in Switzerland who enjoys building things\n that live on the internet and also power the internet.\n

    \n\n

    \n Shortly after graduating from{' '}\n \n Christian-Albrechts-University\n \n , I joined the engineering team at{' '}\n \n freiheit.com\n {' '}\n where I developed and successfully launched the{' '}\n \n Mercedes Benz Mobile SDK\n \n . Then I became an industrial PhD candidate and joined{' '}\n \n OriginStamp\n {' '}\n in Switzerland to explore peer to peer systems in trustless environments.\n

    \n

    \n Currently, I'm also funded by Protocol Labs with a\n two year PhD Fellowship for studying node heterogeneity in Peer-To-Peer networks,\n particularly{' '}\n \n IPFS\n {' '}\n and{' '}\n \n Filecoin\n \n .\n

    \n\n

    Here are a few technologies I’ve been working with recently:

    \n
    \n\n
      \n {skills && skills.map((skill, i) =>
    • {skill}
    • )}\n
    \n
    \n\n \n
    \n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default About;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport { CSSTransition } from 'react-transition-group';\nimport styled from 'styled-components';\nimport { srConfig } from '@config';\nimport { KEY_CODES } from '@utils';\nimport sr from '@utils/sr';\nimport { usePrefersReducedMotion } from '@hooks';\n\nconst StyledJobsSection = styled.section`\n max-width: 700px;\n\n .inner {\n display: flex;\n\n @media (max-width: 600px) {\n display: block;\n }\n\n // Prevent container from jumping\n @media (min-width: 700px) {\n min-height: 340px;\n }\n }\n`;\n\nconst StyledTabList = styled.div`\n position: relative;\n z-index: 3;\n width: max-content;\n padding: 0;\n margin: 0;\n list-style: none;\n\n @media (max-width: 600px) {\n display: flex;\n overflow-x: auto;\n width: calc(100% + 100px);\n padding-left: 50px;\n margin-left: -50px;\n margin-bottom: 30px;\n }\n @media (max-width: 480px) {\n width: calc(100% + 50px);\n padding-left: 25px;\n margin-left: -25px;\n }\n\n li {\n &:first-of-type {\n @media (max-width: 600px) {\n margin-left: 50px;\n }\n @media (max-width: 480px) {\n margin-left: 25px;\n }\n }\n &:last-of-type {\n @media (max-width: 600px) {\n padding-right: 50px;\n }\n @media (max-width: 480px) {\n padding-right: 25px;\n }\n }\n }\n`;\n\nconst StyledTabButton = styled.button`\n ${({ theme }) => theme.mixins.link};\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--tab-height);\n padding: 0 20px 2px;\n border-left: 2px solid var(--lightest-navy);\n background-color: transparent;\n color: ${({ isActive }) => (isActive ? 'var(--green)' : 'var(--slate)')};\n font-family: var(--font-mono);\n font-size: var(--fz-xs);\n text-align: left;\n white-space: nowrap;\n\n @media (max-width: 768px) {\n padding: 0 15px 2px;\n }\n @media (max-width: 600px) {\n ${({ theme }) => theme.mixins.flexCenter};\n min-width: 120px;\n padding: 0 15px;\n border-left: 0;\n border-bottom: 2px solid var(--lightest-navy);\n text-align: center;\n }\n\n &:hover,\n &:focus {\n background-color: var(--light-navy);\n }\n`;\n\nconst StyledHighlight = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n z-index: 10;\n width: 2px;\n height: var(--tab-height);\n border-radius: var(--border-radius);\n background: var(--green);\n transform: translateY(calc(${({ activeTabId }) => activeTabId} * var(--tab-height)));\n transition: transform 0.25s cubic-bezier(0.645, 0.045, 0.355, 1);\n transition-delay: 0.1s;\n\n @media (max-width: 600px) {\n top: auto;\n bottom: 0;\n width: 100%;\n max-width: var(--tab-width);\n height: 2px;\n margin-left: 50px;\n transform: translateX(calc(${({ activeTabId }) => activeTabId} * var(--tab-width)));\n }\n @media (max-width: 480px) {\n margin-left: 25px;\n }\n`;\n\nconst StyledTabPanels = styled.div`\n position: relative;\n width: 100%;\n margin-left: 20px;\n\n @media (max-width: 600px) {\n margin-left: 0;\n }\n`;\n\nconst StyledTabPanel = styled.div`\n width: 100%;\n height: auto;\n padding: 10px 5px;\n\n ul {\n ${({ theme }) => theme.mixins.fancyList};\n }\n\n h3 {\n margin-bottom: 2px;\n font-size: var(--fz-xxl);\n font-weight: 500;\n line-height: 1.3;\n\n .company {\n color: var(--green);\n }\n }\n\n .range {\n margin-bottom: 25px;\n color: var(--light-slate);\n font-family: var(--font-mono);\n font-size: var(--fz-xs);\n }\n`;\n\nconst Jobs = () => {\n const data = useStaticQuery(graphql`\n query {\n jobs: allMarkdownRemark(\n filter: { fileAbsolutePath: { regex: \"/content/jobs/\" } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n edges {\n node {\n frontmatter {\n title\n company\n location\n range\n url\n }\n html\n }\n }\n }\n }\n `);\n\n const jobsData = data.jobs.edges;\n\n const [activeTabId, setActiveTabId] = useState(0);\n const [tabFocus, setTabFocus] = useState(null);\n const tabs = useRef([]);\n const revealContainer = useRef(null);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n useEffect(() => {\n if (prefersReducedMotion) {\n return;\n }\n\n sr.reveal(revealContainer.current, srConfig());\n }, []);\n\n const focusTab = () => {\n if (tabs.current[tabFocus]) {\n tabs.current[tabFocus].focus();\n return;\n }\n // If we're at the end, go to the start\n if (tabFocus >= tabs.current.length) {\n setTabFocus(0);\n }\n // If we're at the start, move to the end\n if (tabFocus < 0) {\n setTabFocus(tabs.current.length - 1);\n }\n };\n\n // Only re-run the effect if tabFocus changes\n useEffect(() => focusTab(), [tabFocus]);\n\n // Focus on tabs when using up & down arrow keys\n const onKeyDown = e => {\n switch (e.key) {\n case KEY_CODES.ARROW_UP: {\n e.preventDefault();\n setTabFocus(tabFocus - 1);\n break;\n }\n\n case KEY_CODES.ARROW_DOWN: {\n e.preventDefault();\n setTabFocus(tabFocus + 1);\n break;\n }\n\n default: {\n break;\n }\n }\n };\n\n return (\n \n

    Where I’ve Worked

    \n\n
    \n onKeyDown(e)}>\n {jobsData &&\n jobsData.map(({ node }, i) => {\n const { company } = node.frontmatter;\n return (\n setActiveTabId(i)}\n ref={el => (tabs.current[i] = el)}\n id={`tab-${i}`}\n role=\"tab\"\n tabIndex={activeTabId === i ? '0' : '-1'}\n aria-selected={activeTabId === i ? true : false}\n aria-controls={`panel-${i}`}>\n {company}\n \n );\n })}\n \n \n\n \n {jobsData &&\n jobsData.map(({ node }, i) => {\n const { frontmatter, html } = node;\n const { title, url, company, range } = frontmatter;\n\n return (\n \n