{"version":3,"sources":["webpack://portfolio/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://portfolio/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://portfolio/./node_modules/classnames/index.js","webpack://portfolio/./node_modules/lodash.throttle/index.js","webpack://portfolio/./node_modules/react-fast-compare/index.js","webpack://portfolio/./node_modules/react-scroll/modules/components/Button.js","webpack://portfolio/./node_modules/react-scroll/modules/components/Element.js","webpack://portfolio/./node_modules/react-scroll/modules/components/Link.js","webpack://portfolio/./node_modules/react-scroll/modules/index.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/Helpers.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/animate-scroll.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/cancel-events.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/passive-event-listeners.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/scroll-element.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/scroll-events.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/scroll-hash.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/scroll-link.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/scroll-spy.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/scroller.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/smooth.js","webpack://portfolio/./node_modules/react-scroll/modules/mixins/utils.js","webpack://portfolio/./node_modules/react-side-effect/lib/index.js","webpack://portfolio/./src/components/Button.tsx","webpack://portfolio/./src/components/Container.tsx","webpack://portfolio/./src/components/ExternalLink.tsx","webpack://portfolio/./src/components/Footer.tsx","webpack://portfolio/./src/components/Header.tsx","webpack://portfolio/./src/components/Layout.tsx","webpack://portfolio/./node_modules/react-helmet/es/Helmet.js","webpack://portfolio/./src/components/Metadata.tsx","webpack://portfolio/./src/hooks/useSiteMetadataQuery.ts","webpack://portfolio/./src/context/SiteMetadataContext.tsx","webpack://portfolio/./node_modules/gatsby-plugin-google-analytics/index.js"],"names":["_objectWithoutPropertiesLoose","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","value","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","forEach","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","call","_toConsumableArray","arr","Array","isArray","arr2","_arrayWithoutHoles","iter","toString","from","_iterableToArray","TypeError","_nonIterableSpread","camelize","string","replace","match","chr","toUpperCase","substr","toLowerCase","styleToObject","style","split","map","s","trim","reduce","acc","pair","val","prop","slice","startsWith","charAt","PRODUCTION","e","normalizeIconArgs","icon","parse","prefix","iconName","objectWithKey","FontAwesomeIcon","_ref","forwardedRef","props","iconArgs","maskArgs","mask","symbol","className","title","titleId","iconLookup","classes","concat","_classes","spin","pulse","fixedWidth","inverse","border","listItem","flip","size","rotation","pull","swapOpacity","classList","transform","renderedIcon","_console","console","error","log","abstract","extraProps","ref","defaultProps","hasOwnProperty","convertCurry","displayName","propTypes","convert","createElement","element","undefined","children","child","mixins","attributes","attrs","_extraProps$style","existingStyle","remaining","tag","bind","hasOwn","classNames","arg","argType","inner","join","module","exports","default","FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","freeSelf","self","root","Function","objectToString","nativeMax","Math","max","nativeMin","min","now","Date","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","this","toNumber","isObject","cancel","clearTimeout","flush","type","isObjectLike","isSymbol","other","valueOf","isBinary","test","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","a","b","it","entries","next","done","has","get","RegExp","flags","$$typeof","message","warn","_createClass","descriptor","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_scrollLink2","__esModule","_classCallCheck","instance","_possibleConstructorReturn","ReferenceError","ButtonElement","_React$Component","__proto__","getPrototypeOf","subClass","superClass","create","setPrototypeOf","_inherits","Component","_extends","assign","_scrollElement2","_propTypes2","ElementWrapper","_this2","newProps","parentBindings","el","domNode","name","id","LinkElement","_temp","_this","_len","_key","render","_Link2","_Button2","_Element2","_scroller2","_scrollEvents2","_scrollSpy2","_animateScroll2","_Helpers2","React","scrollSpy","defaultScroller","PropTypes","scrollHash","protoTypes","to","isRequired","containerId","container","activeClass","spy","bool","smooth","oneOfType","offset","number","delay","isDynamic","onClick","duration","absolute","onSetActive","onSetInactive","ignoreCancelEvents","hashSpy","spyThrottle","Helpers","Scroll","customScroller","scroller","_initialiseProps","state","active","document","getElementById","nodeType","scrollSpyContainer","getScrollSpyContainer","isMounted","mount","mapContainer","addStateHandler","stateHandler","addSpyHandler","spyHandler","setState","unmount","handleClick","scrollTo","event","stopPropagation","preventDefault","getActiveLink","y","isInitialized","elemTopBound","elemBottomBound","containerTop","getBoundingClientRect","top","cords","height","offsetY","isInside","floor","isOutside","activeLink","setActiveLink","getHash","changeHash","updateStates","_React$Component2","_this3","childBindings","window","registerElems","prevProps","unregister","register","_smooth2","_cancelEvents2","getAnimationType","defaultEasing","requestAnimationFrameHelper","requestAnimationFrame","webkitRequestAnimationFrame","currentWindowProperties","callback","getTime","currentPositionX","containerElement","data","body","scrollLeft","supportPageOffset","pageXOffset","isCSS1Compat","compatMode","documentElement","currentPositionY","scrollTop","pageYOffset","animateScroll","easing","timestamp","delta","round","targetPosition","startPosition","start","progress","percent","currentPosition","ceil","horizontal","easedAnimate","registered","setContainer","animateTopScroll","scrollOffset","delayTimeout","subscribe","isNaN","parseFloat","proceedOptions","scrollToTop","scrollToBottom","scrollWidth","offsetWidth","html","clientWidth","scrollContainerWidth","scrollHeight","offsetHeight","clientHeight","scrollContainerHeight","toPosition","scrollMore","_passiveEventListeners","events","cancelEvent","addPassiveEventListener","eventName","listener","supportsPassiveOption","opts","addEventListener","passive","removePassiveEventListener","removeEventListener","Events","scrollEvent","evtName","remove","_utils","_utils2","mountFlag","initialized","containers","handleHashChange","initStateFromHash","hash","isInit","saveHashHistory","updateHash","_scrollHash2","Link","_React$PureComponent","PureComponent","x","elemLeftBound","elemRightBound","containerLeft","left","width","offsetX","_cords","_props$saveHashHistor","_props$saveHashHistor2","_saveHashHistory","_lodash","_lodash2","spyCallbacks","spySetState","scrollSpyContainers","throttle","eventHandler","throttleAmount","eventThrottler","scrollHandler","c","handler","splice","update","__mapped","__activeLink","getElementsByName","getElementsByClassName","link","pow","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getElementOffsetInfoUntil","predicate","offsetTop","currentOffsetParent","offsetParent","historyUpdate","hashVal","substring","hashToUpdate","curLoc","location","urlToPush","pathname","search","history","pushState","replaceState","filterElementInContainer","contains","compareDocumentPosition","t","scrollX","getComputedStyle","position","offsetLeft","scrollY","_getElementOffsetInfo","Error","isDocument","ex","React__default","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","peek","rewind","recordedState","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","index","getDisplayName","colors","primary","white","black","sizes","normal","sm","color","rest","rel","Container","ExternalLink","href","Button","faGithub","faLinkedinIn","faEnvelope","headerAbsolute","isHome","useLocation","Metadata","clock","_class","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","classCallCheck","createClass","objectWithoutProperties","possibleConstructorReturn","encodeSpecialCharacters","str","encode","String","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","property","rafPolyfill","currentTime","cafPolyfill","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","_i","removeAttribute","tags","headElement","head","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","innerHTML","styleSheet","cssText","appendChild","createTextNode","some","existingTag","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","_ref$title","base","meta","noscript","script","HelmetSideEffects","defer","HelmetExport","HelmetWrapper","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","_props","set","defaultTitle","titleTemplate","mappedState","renderStatic","defaultMetadata","description","author","siteUrl","useSiteMetadata","siteMetadata","metadata","metadataTitle","imageUrl","lang","useStaticQuery","site","SiteMetadataContext","createContext","SiteMetadataProviderComponent","useSiteMetadataQuery","Provider","useContext","require","OutboundLink","_extends2","_react","_propTypes","eventCategory","eventAction","eventLabel","eventValue","redirect","button","altKey","ctrlKey","metaKey","shiftKey","defaultPrevented","ga","transport","hitCallback"],"mappings":"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","file":"commons-3267687011409eda8383.js","sourcesContent":["export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\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 ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n} // Get CSS class list from a props object\n\n\nfunction classList(props) {\n var _classes;\n\n var spin = props.spin,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-spin': spin,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n} // Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\n\n\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, [\"style\"]);\n\n mixins.attrs['style'] = _objectSpread2({}, mixins.attrs['style'], {}, existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2({}, mixins.attrs, {}, remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log() {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (_typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n} // creates an object with a key of key\n// and a value of value\n// if certain conditions are met\n\n\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, [\"forwardedRef\"]);\n\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2({}, classes, {}, transform, {}, mask, {\n symbol: symbol,\n title: title,\n titleId: titleId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\n\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n border: PropTypes.bool,\n className: PropTypes.string,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf(['horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n size: PropTypes.oneOf(['lg', 'xs', 'sm', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n fixedWidth: false,\n inverse: false,\n flip: null,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n symbol: false,\n title: '',\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\nexport { FontAwesomeIcon };","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used as references for various `Number` constants. */\n\nvar NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\nvar now = function now() {\n return root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n\n\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = throttle;","/* 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};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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 ButtonElement = function (_React$Component) {\n _inherits(ButtonElement, _React$Component);\n\n function ButtonElement() {\n _classCallCheck(this, ButtonElement);\n\n return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n }\n\n _createClass(ButtonElement, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement('input', this.props, this.props.children);\n }\n }]);\n\n return ButtonElement;\n}(_react2.default.Component);\n\n;\nexports.default = (0, _scrollLink2.default)(ButtonElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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 ElementWrapper = function (_React$Component) {\n _inherits(ElementWrapper, _React$Component);\n\n function ElementWrapper() {\n _classCallCheck(this, ElementWrapper);\n\n return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n }\n\n _createClass(ElementWrapper, [{\n key: 'render',\n value: function render() {\n var _this2 = this; // Remove `parentBindings` from props\n\n\n var newProps = _extends({}, this.props);\n\n if (newProps.parentBindings) {\n delete newProps.parentBindings;\n }\n\n return _react2.default.createElement('div', _extends({}, newProps, {\n ref: function ref(el) {\n _this2.props.parentBindings.domNode = el;\n }\n }), this.props.children);\n }\n }]);\n\n return ElementWrapper;\n}(_react2.default.Component);\n\n;\nElementWrapper.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n};\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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 LinkElement = function (_React$Component) {\n _inherits(LinkElement, _React$Component);\n\n function LinkElement() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkElement);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n return _react2.default.createElement('a', _this.props, _this.props.children);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return LinkElement;\n}(_react2.default.Component);\n\n;\nexports.default = (0, _scrollLink2.default)(LinkElement);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = {\n Link: _Link2.default,\n Button: _Button2.default,\n Element: _Element2.default,\n scroller: _scroller2.default,\n Events: _scrollEvents2.default,\n scrollSpy: _scrollSpy2.default,\n animateScroll: _animateScroll2.default,\n ScrollLink: _scrollLink2.default,\n ScrollElement: _scrollElement2.default,\n Helpers: _Helpers2.default\n};","\"use strict\";\n/* DEPRECATED */\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 _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\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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 React = require('react');\n\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\n\nvar scrollSpy = require('./scroll-spy');\n\nvar defaultScroller = require('./scroller');\n\nvar PropTypes = require('prop-types');\n\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n to: PropTypes.string.isRequired,\n containerId: PropTypes.string,\n container: PropTypes.object,\n activeClass: PropTypes.string,\n spy: PropTypes.bool,\n smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n offset: PropTypes.number,\n delay: PropTypes.number,\n isDynamic: PropTypes.bool,\n onClick: PropTypes.func,\n duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n absolute: PropTypes.bool,\n onSetActive: PropTypes.func,\n onSetInactive: PropTypes.func,\n ignoreCancelEvents: PropTypes.bool,\n hashSpy: PropTypes.bool,\n spyThrottle: PropTypes.number\n};\nvar Helpers = {\n Scroll: function Scroll(Component, customScroller) {\n console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n var scroller = customScroller || defaultScroller;\n\n var Scroll = function (_React$Component) {\n _inherits(Scroll, _React$Component);\n\n function Scroll(props) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!scrollSpy.isMounted(scrollSpyContainer)) {\n scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!scrollHash.isMounted()) {\n scrollHash.mount(scroller);\n }\n\n scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n if (this.props.spy) {\n scrollSpy.addStateHandler(this.stateHandler);\n }\n\n scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n scrollSpy.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n return React.createElement(Component, props);\n }\n }]);\n\n return Scroll;\n }(React.Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n /*\r\n * give the posibility to override onClick\r\n */\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n /*\r\n * dont bubble the navigation\r\n */\n\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n /*\r\n * do the magic!\r\n */\n\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.stateHandler = function () {\n if (scroller.getActiveLink() !== _this2.props.to) {\n if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n _this2.props.onSetInactive();\n }\n\n _this2.setState({\n active: false\n });\n }\n };\n\n this.spyHandler = function (y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({\n active: false\n });\n\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({\n active: true\n });\n\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n Scroll.propTypes = protoTypes;\n Scroll.defaultProps = {\n offset: 0\n };\n return Scroll;\n },\n Element: function Element(Component) {\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, {\n parentBindings: this.childBindings\n }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n return Element;\n }\n};\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\n\n\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\n\n\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\n\n\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\n\n\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data; // Cancel on specific events\n\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n\n return;\n }\n\n ;\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n window.clearTimeout(options.data.delayTimeout);\n\n _cancelEvents2.default.subscribe(function () {\n options.data.cancel = true;\n });\n\n setContainer(options);\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\n\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n\n return supportsPassiveOption;\n }();\n\n target.addEventListener(eventName, listener, supportsPassiveOption ? {\n passive: true\n } : false);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, {\n parentBindings: this.childBindings\n }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Events = {\n registered: {},\n scrollEvent: {\n register: function register(evtName, callback) {\n Events.registered[evtName] = callback;\n },\n remove: function remove(evtName) {\n Events.registered[evtName] = null;\n }\n }\n};\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n mount: function mount(scroller) {\n this.scroller = scroller;\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, {\n container: container\n });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _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 protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n /*\r\n * give the posibility to override onClick\r\n */\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n /*\r\n * dont bubble the navigation\r\n */\n\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n /*\r\n * do the magic!\r\n */\n\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({\n active: false\n });\n\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({\n active: true\n });\n\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n Link.propTypes = protoTypes;\n Link.defaultProps = {\n offset: 0\n };\n return Link;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n} // The eventHandler will execute at a rate of 15fps by default\n\n\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\nexports.default = scrollSpy;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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 _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar __mapped = {};\n\nvar __activeLink = void 0;\n\nexports.default = {\n unmount: function unmount() {\n __mapped = {};\n },\n register: function register(name, element) {\n __mapped[name] = element;\n },\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n scrollTo: function scrollTo(to, props) {\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, {\n absolute: false\n });\n var containerId = props.containerId;\n var container = props.container;\n var containerElement = void 0;\n\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n /*\r\n * Animate scrolling\r\n */\n\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(null, \"\", urlToPush) : history.replaceState(null, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return {\n offsetTop: offsetTop,\n offsetParent: currentOffsetParent\n };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n } // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","'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 /*#__PURE__*/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;","import classNames from \"classnames\";\nimport React, { FC } from \"react\";\n\nconst colors = {\n primary: \"border-primary text-primary hover:text-black hover:bg-primary-400\",\n white: \"border-white text-white hover:text-black hover:bg-white\",\n black: \"border-black text-black hover:text-white hover:bg-black\",\n};\n\nconst sizes = {\n normal: \"px-4 py-3\",\n sm: \"px-3 py-2\",\n};\n\nexport interface ButtonProps {\n color?: \"primary\" | \"white\" | \"black\";\n size?: \"normal\" | \"sm\";\n icon?: React.ReactNode;\n className?: string;\n}\n\nconst Button: FC = ({\n color = \"primary\",\n size = \"normal\",\n children,\n icon,\n className = \"\",\n}) => {\n return (\n \n {icon && {icon}}\n {children}\n \n );\n};\n\nexport default Button;\n","import classNames from \"classnames\";\nimport React, { FC, HTMLProps } from \"react\";\n\nexport interface ContainerProps extends HTMLProps {}\n\nconst Container: FC = ({ className, ...rest }) => {\n return (\n
\n );\n};\n\nexport default Container;\n","import classNames from \"classnames\";\nimport React, { FC, HTMLProps } from \"react\";\nimport { OutboundLink } from \"gatsby-plugin-google-analytics\";\n\nexport interface LinkProps extends HTMLProps {\n color?: \"primary\" | \"white\";\n}\n\nconst colors = {\n primary: \"text-primary-600 hover:text-primary-800\",\n white: \"text-gray-200 hover:text-gray-400\",\n};\n\nconst ExternalLink: FC = ({\n color = \"white\",\n className,\n ...rest\n}) => {\n return (\n \n );\n};\n\nexport default ExternalLink;\n","import { faGithub, faLinkedinIn } from \"@fortawesome/free-brands-svg-icons\";\nimport { faEnvelope } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FC } from \"react\";\nimport Button from \"./Button\";\nimport Container from \"./Container\";\nimport ExternalLink from \"./ExternalLink\";\n\nconst Footer: FC = () => {\n return (\n \n
\n
\n \n }\n className=\"mb-4\"\n >\n GitHub\n \n \n \n }\n className=\"mb-4\"\n >\n LinkedIn\n \n \n \n }\n className=\"mb-4\"\n >\n Email\n \n \n
\n
© Samuel Prak 2021
\n
\n
\n );\n};\n\nexport default Footer;\n","import { useLocation } from \"@reach/router\";\nimport classNames from \"classnames\";\nimport { Link } from \"gatsby\";\nimport React, { FC } from \"react\";\nimport { Link as ScrollLink } from \"react-scroll\";\n\nexport interface HeaderProps {\n headerAbsolute: boolean;\n}\n\nconst Header: FC = ({ headerAbsolute }) => {\n const location = useLocation();\n const isHome = location.pathname === \"/\";\n\n return (\n
\n \n
\n );\n};\n\nexport default Header;\n","import React, { FC } from \"react\";\nimport { SiteMetadataProviderComponent } from \"../context/SiteMetadataContext\";\nimport Footer from \"./Footer\";\nimport Header from \"./Header\";\nimport Metadata from \"./Metadata\";\n\nexport interface LayoutProps {\n headerAbsolute?: boolean;\n}\n\nconst Layout: FC = ({ children, headerAbsolute = false }) => {\n return (\n \n
\n \n
\n {children}\n
\n
\n
\n );\n};\n\nexport default Layout;\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 };","import React, { FC } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { useSiteMetadata } from \"../context/SiteMetadataContext\";\n\nexport interface AppMetadata {\n title: string;\n description: string;\n author: string;\n}\n\nexport interface MetadataProps {\n metadata?: Partial;\n}\n\nconst defaultMetadata: AppMetadata = {\n title: \"Samuel Prak - Développeur web\",\n description:\n \"Développeur web et passionné par les nouvelles technologies et la musique.\",\n author: \"Samuel Prak\",\n};\n\nconst Metadata: FC = (props) => {\n const {\n siteMetadata: { siteUrl },\n } = useSiteMetadata();\n\n const metadata = {\n ...defaultMetadata,\n ...(props.metadata ?? {}),\n };\n\n const { title: metadataTitle, description, author } = metadata;\n const title =\n metadataTitle !== defaultMetadata.title\n ? `${metadataTitle} - Samuel Prak`\n : metadataTitle;\n const image = \"/assets/img/photo.jpg\";\n\n const imageUrl = `${siteUrl}${image}`;\n\n return (\n \n {title}\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n );\n};\n\nexport default Metadata;\n","import { graphql, useStaticQuery } from \"gatsby\";\n\nexport interface SiteMetadata {\n siteUrl: string;\n title: string;\n}\n\nconst useSiteMetadataQuery = () => {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n siteUrl\n title\n }\n }\n }\n `\n );\n return site.siteMetadata as SiteMetadata;\n};\n\nexport default useSiteMetadataQuery;\n","import React, { createContext, FC, useContext } from \"react\";\nimport useSiteMetadataQuery, {\n SiteMetadata,\n} from \"../hooks/useSiteMetadataQuery\";\n\ntype SiteMetadataContextValue = {\n siteMetadata: SiteMetadata;\n};\n\nexport const SiteMetadataContext = createContext(\n {} as SiteMetadataContextValue\n);\n\nexport const SiteMetadataProviderComponent: FC = ({ children }) => {\n const siteMetadata = useSiteMetadataQuery();\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSiteMetadata = () => useContext(SiteMetadataContext);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.OutboundLink = OutboundLink;\nexports.trackCustomEvent = trackCustomEvent;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nconst createFunctionWithTimeout = (callback, opt_timeout = 1000) => {\n let called = false;\n\n const raceCallback = () => {\n if (!called) {\n called = true;\n callback();\n }\n };\n\n setTimeout(raceCallback, opt_timeout);\n return raceCallback;\n};\n\nfunction OutboundLink(props) {\n const {\n eventCategory,\n eventAction,\n eventLabel,\n eventValue,\n ...rest\n } = props;\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({}, rest, {\n onClick: e => {\n if (typeof props.onClick === `function`) {\n props.onClick(e);\n }\n\n let redirect = true;\n\n if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || e.defaultPrevented) {\n redirect = false;\n }\n\n if (props.target && props.target.toLowerCase() !== `_self`) {\n redirect = false;\n }\n\n if (window.ga) {\n window.ga(`send`, `event`, {\n eventCategory: eventCategory || `Outbound Link`,\n eventAction: eventAction || `click`,\n eventLabel: eventLabel || props.href,\n eventValue,\n transport: redirect ? `beacon` : ``,\n hitCallback: function () {\n if (redirect) {\n document.location = props.href;\n }\n }\n });\n } else {\n if (redirect) {\n document.location = props.href;\n }\n }\n\n return false;\n }\n }));\n}\n\nOutboundLink.propTypes = {\n href: _propTypes.default.string,\n target: _propTypes.default.string,\n eventCategory: _propTypes.default.string,\n eventAction: _propTypes.default.string,\n eventLabel: _propTypes.default.string,\n eventValue: _propTypes.default.number,\n onClick: _propTypes.default.func\n};\n/**\n * This allows the user to create custom events within their Gatsby projects.\n *\n * @param {import('gatsby-plugin-google-analytics').CustomEventArgs} args\n * @see https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#events\n */\n\nfunction trackCustomEvent({\n category,\n action,\n label,\n value,\n nonInteraction = false,\n transport,\n hitCallback,\n callbackTimeout = 1000\n}) {\n if (typeof window !== `undefined` && window.ga) {\n const trackingEventOptions = {\n eventCategory: category,\n eventAction: action,\n eventLabel: label,\n eventValue: value,\n nonInteraction: nonInteraction,\n transport\n };\n\n if (hitCallback && typeof hitCallback === `function`) {\n trackingEventOptions.hitCallback = createFunctionWithTimeout(hitCallback, callbackTimeout);\n }\n\n window.ga(`send`, `event`, trackingEventOptions);\n }\n}"],"sourceRoot":""}