{"version":3,"file":"js/66513-01ebbbb0001d5c1ec54b.js","mappings":"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","sources":["webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/NavigationProfileHighlightedMedium.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/BadgesMulticolorSuperuserSmall.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/BadgesMulticolorSummitSmall.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/BadgesMulticolorProSmall.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/BadgesMulticolorVerifiedSmall.js","webpack://strava-active/./node_modules/@strava/ui/Avatar/styles.scss?af32","webpack://strava-active/./node_modules/@strava/ui/Avatar/index.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/isObject.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_freeGlobal.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_root.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/now.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_trimmedEndIndex.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_baseTrim.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_Symbol.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_getRawTag.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_objectToString.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/_baseGetTag.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/isObjectLike.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/isSymbol.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/toNumber.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/debounce.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/lodash-es/throttle.js","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/area.scss?f28a","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/Area.js","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/axis.scss?e63f","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/Axis.js","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/Tooltip/styles.scss?c373","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/Tooltip/index.js","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/styles.scss?5736","webpack://strava-active/./node_modules/@strava/ui/ElevationChart/index.js","webpack://strava-active/./node_modules/@strava/ui/Stat/styles.scss?c158","webpack://strava-active/./node_modules/@strava/ui/Stat/index.js","webpack://strava-active/./node_modules/@strava/ui/Stats/styles.scss?803f","webpack://strava-active/./node_modules/@strava/ui/Stats/index.js","webpack://strava-active/./node_modules/escape-html/index.js","webpack://strava-active/./node_modules/interweave/esm/index.js"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationProfileHighlightedMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationProfileHighlightedMedium.defaultProps = {\n color: 'currentColor',\n size: 32,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationProfileHighlightedMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationProfileHighlightedMedium;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorSuperuserSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSuperuserSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorSuperuserSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorSuperuserSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorSummitSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSummitSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorSummitSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorSummitSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorProSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorProSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorProSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorProSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorVerifiedSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgBadgesMulticolorVerifiedSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorVerifiedSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorVerifiedSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"Avatar--avatar--0cH8u\",\"img-wrapper\":\"Avatar--img-wrapper--uEKlj\",\"imgWrapper\":\"Avatar--img-wrapper--uEKlj\",\"badge\":\"Avatar--badge--dPtDC\",\"athlete\":\"Avatar--athlete--sA9o6\",\"xsmall\":\"Avatar--xsmall--pBfF6\",\"small\":\"Avatar--small--UyvKr\",\"large\":\"Avatar--large--+f+X2\",\"xlarge\":\"Avatar--xlarge--CUpYU\",\"club\":\"Avatar--club--wlZQJ\"};","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport AvatarFallback from '@strava/icons/NavigationProfileHighlightedMedium';\n\nimport EmployeeBadge from '@strava/icons/BadgesMulticolorSuperuserSmall';\nimport SubscriberBadge from '@strava/icons/BadgesMulticolorSummitSmall';\nimport ProBadge from '@strava/icons/BadgesMulticolorProSmall';\nimport VerifiedBadge from '@strava/icons/BadgesMulticolorVerifiedSmall';\n\nimport styles from './styles.scss';\n\nconst Img = ({ src, alt, title, fallback }) => {\n const [children, setChildren] = useState(null);\n\n useEffect(() => {\n let image = new Image();\n image.onload = () => {\n setChildren({alt});\n };\n image.onerror = () => {\n setChildren(fallback);\n };\n image.src = src;\n return () => {\n image = null;\n };\n }, [src]);\n\n return children;\n};\n\nImg.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n fallback: PropTypes.node\n};\n\nImg.defaultProps = {\n fallback: null\n};\n\nfunction getBadge(badge) {\n switch (badge) {\n case 'ambassador':\n return ;\n case 'employee':\n return ;\n case 'subscriber':\n case 'premium':\n return ;\n case 'pro':\n return ;\n case 'verified':\n return ;\n default:\n return null;\n }\n}\n/**\n * Prop Deprecation Warning: We are slowly deprecating the `name` prop in favor of the `title` prop\n * so that the React props match up to the element's attribute.\n * */\nconst Avatar = ({\n name,\n alt,\n title,\n type,\n src,\n size,\n badge,\n href,\n className: classNameProp,\n ...otherProps\n}) => {\n const classNames = [styles.avatar, styles[type]];\n if (styles[size]) {\n classNames.push(styles[size]);\n }\n if (classNameProp) {\n classNames.push(classNameProp);\n }\n\n // TODO: uncomment when existing Avatar usage is refactored. Otherwise, there will be a lot of warning in the console.\n // if (name || process.env.NODE_ENV !== 'production') {\n // console.warn(\n // '[Prop Deprecation Warning] Deprecating the `name` prop in favor of the `title`.'\n // );\n // }\n\n const children = (\n <>\n {badge &&
{getBadge(badge)}
}\n
\n : null}\n />\n
\n \n );\n\n if (href) {\n return (\n \n {children}\n \n );\n }\n\n return (\n
\n {children}\n
\n );\n};\n\nAvatar.propTypes = {\n name: PropTypes.string,\n alt: PropTypes.string,\n title: PropTypes.string,\n href: PropTypes.string,\n src: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['athlete', 'club']).isRequired,\n size: PropTypes.oneOf(['xsmall', 'small', 'large', 'xlarge']),\n badge: PropTypes.oneOf([\n '', // in some cases active has member_type as empty string for default users\n 'ambassador',\n 'employee',\n 'subscriber',\n 'premium', // legacy name referring to 'subscriber', used in active\n 'pro',\n 'verified'\n ]),\n className: PropTypes.string\n};\n\nAvatar.defaultProps = {\n name: null,\n href: null,\n alt: '',\n title: null,\n size: null,\n badge: null,\n className: null\n};\n\nexport default Avatar;\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 */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\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 */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\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 */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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 */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\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 */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\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 */\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 wait = toNumber(wait) || 0;\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\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;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // 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 return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\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\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 */\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 if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","// extracted by mini-css-extract-plugin\nexport default {\"area\":\"ElevationChart--area--MdwbJ\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { area } from 'd3-shape';\nimport styles from './area.scss';\n\nconst Area = ({ stream, xScale, yScale, height, clipPath, fill }) => {\n const formatData = stream.convertedElevation.map((elev, index) => ({\n elev,\n dist: stream.convertedDistance[index]\n }));\n\n const drawArea = area()\n .x((d) => xScale(d.dist))\n .y1((d) => yScale(d.elev))\n .y0(height);\n\n return (\n \n \n \n );\n};\n\nArea.propTypes = {\n xScale: PropTypes.func.isRequired,\n yScale: PropTypes.func.isRequired,\n height: PropTypes.number.isRequired,\n stream: PropTypes.shape().isRequired,\n clipPath: PropTypes.string,\n fill: PropTypes.string\n};\n\nArea.defaultProps = {\n clipPath: null,\n fill: 'rgba(100, 100, 100, 0.66)'\n};\n\nexport default Area;\n","// extracted by mini-css-extract-plugin\nexport default {\"axis\":\"ElevationChart--axis--MSfnX\",\"y-axis\":\"ElevationChart--y-axis--3OIyj\",\"yAxis\":\"ElevationChart--y-axis--3OIyj\",\"x-axis\":\"ElevationChart--x-axis--hwPNg\",\"xAxis\":\"ElevationChart--x-axis--hwPNg\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { axisBottom, axisLeft } from 'd3-axis';\nimport { select } from 'd3-selection';\nimport styles from './axis.scss';\n\nclass Axis extends React.Component {\n xAxisNode = React.createRef();\n\n yAxisNode = React.createRef();\n\n componentDidMount() {\n this.drawAxes();\n }\n\n componentDidUpdate(prevProps) {\n const { scopeTo, width, xScale, yScale } = this.props;\n\n const hasScopeChanged =\n scopeTo &&\n (prevProps.scopeTo[0] !== scopeTo[0] ||\n prevProps.scopeTo[1] !== scopeTo[1]);\n\n const hasScaleChanged =\n !this.scalesAreEqual(xScale, prevProps.xScale) ||\n !this.scalesAreEqual(yScale, prevProps.yScale);\n\n const hasWidthChanged = prevProps.width !== width;\n\n if (hasScopeChanged || hasWidthChanged || hasScaleChanged) {\n this.drawAxes();\n }\n }\n\n scalesAreEqual = (scaleA, scaleB) => {\n return scaleA\n .domain()\n .every((domainElement) => scaleB.domain().includes(domainElement));\n };\n\n drawAxes() {\n const { xScale, yScale, width, formatters } = this.props;\n const { elevationFormatter, distanceFormatter } = formatters;\n const xAxis = axisBottom(xScale);\n const yAxis = axisLeft(yScale);\n const xTickCount = width > 480 ? 8 : 4;\n\n yAxis\n .ticks(4)\n .tickSize(-width)\n .tickFormat((e) =>\n // As e here is converted/formatted value we need to unconver it\n // so that the value does not get converted twice.\n elevationFormatter.formatShort(e / elevationFormatter.convert(1.0))\n );\n\n xAxis.ticks(xTickCount).tickFormat((d) =>\n // As d here is converted/formatted value we need to unconver it\n // so that the value does not get converted twice.\n distanceFormatter.formatShort(d / distanceFormatter.convert(1.0))\n );\n\n yAxis(select(this.yAxisNode.current));\n xAxis(select(this.xAxisNode.current));\n }\n\n render() {\n const { height } = this.props;\n\n return (\n <>\n \n \n \n );\n }\n}\n\nexport default Axis;\n\nAxis.propTypes = {\n xScale: PropTypes.func.isRequired,\n yScale: PropTypes.func.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n formatters: PropTypes.shape().isRequired,\n scopeTo: PropTypes.arrayOf(PropTypes.number)\n};\n\nAxis.defaultProps = {\n scopeTo: null\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"group\":\"Tooltip--group--RhVw1\",\"info-box\":\"Tooltip--info-box---0mNo\",\"infoBox\":\"Tooltip--info-box---0mNo\",\"value\":\"Tooltip--value--S2pLE\"};","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './styles.scss';\n\nconst Tooltip = ({ content, position, clipPath, chartWidth, chartMargin }) => {\n const textRef = useRef([]);\n const [boxWidth, setBoxWidth] = useState(120);\n const padding = 6;\n const lineHeight = 16;\n\n const rightBound = position + boxWidth + padding * 2;\n const currBoxAlign =\n rightBound >= chartWidth ? chartWidth - rightBound + padding : padding;\n\n useLayoutEffect(() => {\n if (textRef.current && Object.keys(content).length !== 0) {\n const widths = textRef.current.map(\n (el) => el.getBoundingClientRect().width\n );\n const maxWidth = Math.max(...widths);\n const newSize = Math.round(maxWidth + padding * 2);\n if (boxWidth !== newSize) {\n setBoxWidth(newSize);\n }\n }\n }, [content]);\n\n const InfoBox = () => {\n const keys = Object.keys(content);\n const contentLength = keys.length;\n const boxHeight = contentLength * lineHeight + padding + 2;\n\n return (\n \n \n {keys.map((stat, index) => {\n const contentItem = content[stat];\n\n function setRef(el) {\n textRef.current[index] = el;\n }\n\n return (\n \n {contentItem.label}\n \n {contentItem.value}\n \n \n );\n })}\n \n );\n };\n\n return (\n \n \n \n \n );\n};\n\nexport default Tooltip;\n\nTooltip.propTypes = {\n content: PropTypes.shape().isRequired,\n position: PropTypes.number.isRequired,\n clipPath: PropTypes.string.isRequired,\n chartWidth: PropTypes.number.isRequired,\n chartMargin: PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n }).isRequired\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"hitbox\":\"ElevationChart--hitbox--ViqA5\",\"marker\":\"ElevationChart--marker--mSOJw\"};","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { scaleLinear } from 'd3-scale';\nimport { max, min, bisectLeft } from 'd3-array';\nimport { throttle } from 'lodash-es';\nimport Area from './Area';\nimport Axis from './Axis';\nimport Tooltip from './Tooltip';\nimport styles from './styles.scss';\n\nclass ElevationChart extends Component {\n state = {\n stream: null,\n xScale: null,\n yScale: null,\n height: 0,\n width: 0,\n markerPosition: this.props.margin.left,\n tooltipContent: {}\n };\n\n container = React.createRef();\n\n node = React.createRef();\n\n hitbox = React.createRef();\n\n handleResize = throttle(() => {\n this.buildScales();\n }, 250);\n\n componentDidMount() {\n window.addEventListener('resize', this.handleResize);\n this.buildScales();\n }\n\n componentDidUpdate({\n elevation: prevElevation,\n distance: prevDistance,\n units: prevUnits\n }) {\n const { distance, elevation, units } = this.props;\n const elevationChanged = prevElevation.length !== elevation.length;\n const distanceChanged = prevDistance.length !== distance.length;\n const unitsChanged = prevUnits !== units;\n\n if (elevationChanged || distanceChanged || unitsChanged) {\n this.buildScales();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n }\n\n // TODO: hover got really slow on long streams\n updateMarker = (e) => {\n const { onUpdateMarker } = this.props;\n const { xScale, stream } = this.state;\n const { elevationFormatter, distanceFormatter } = this.formatters();\n const bounds = this.hitbox.current.getBoundingClientRect();\n const cursorPosition = e.clientX - bounds.left;\n const markerPosition = cursorPosition;\n const distCursor = xScale.invert(cursorPosition);\n const streamIndex = bisectLeft(stream.convertedDistance, distCursor);\n\n const tooltipContent = {\n distance: {\n label: 'Distance', // TODO: Translations!\n value: distanceFormatter.formatShort(stream.distance[streamIndex])\n },\n elevation: {\n label: 'Elevation', // TODO: Translations!\n value: elevationFormatter.formatShort(stream.elevation[streamIndex])\n },\n grade: {\n label: 'Grade', // TODO: Translations!\n value: this.gradeAtIndex(streamIndex)\n }\n };\n\n onUpdateMarker(streamIndex);\n\n this.setState({\n markerPosition,\n tooltipContent\n });\n };\n\n handleMouseLeave = (e) => {\n const { onUpdateMarker, onMouseLeave } = this.props;\n onUpdateMarker(null);\n onMouseLeave(e);\n };\n\n formatters() {\n const { units, formatters } = this.props;\n\n return {\n elevationFormatter: new formatters.ElevationFormatter(units),\n distanceFormatter: new formatters.DistanceFormatter(units),\n gradePercentFormatter: new formatters.PercentFormatter()\n };\n }\n\n buildScales() {\n const { margin, height: heightProp, elevation, distance } = this.props;\n const { elevationFormatter, distanceFormatter } = this.formatters();\n\n const convertedElevation = elevation.map((elev) =>\n elevationFormatter.convert(elev)\n );\n const convertedDistance = distance.map((dist) =>\n distanceFormatter.convert(dist)\n );\n\n const width =\n this.container.current.offsetWidth - margin.left - margin.right;\n const height = heightProp - margin.top - margin.bottom;\n const yMax = max(convertedElevation);\n const yMin = min(convertedElevation);\n const xScale = scaleLinear().range([0, width]);\n const yScale = scaleLinear().range([height, 0]);\n\n xScale.domain([0, max(convertedDistance)]);\n yScale.domain([yMin, yMax + yMax * 0.02]);\n\n this.setState({\n height,\n width,\n xScale,\n yScale,\n stream: { elevation, convertedElevation, distance, convertedDistance }\n });\n }\n\n gradeAtIndex(index) {\n // Taken from charts.js: 1689 but extending the window to 5 data points\n const { stream } = this.state;\n const { gradePercentFormatter } = this.formatters();\n const { elevation, distance } = stream;\n const maxIndex = distance.length - 1;\n const threshold = 2;\n\n let streamIndex = index;\n\n if (streamIndex < threshold) {\n streamIndex = threshold;\n }\n if (maxIndex - streamIndex < threshold) {\n streamIndex = maxIndex - threshold;\n }\n\n const distanceDiff =\n distance[streamIndex + threshold] - distance[streamIndex - threshold];\n const elevationDiff =\n elevation[streamIndex + threshold] - elevation[streamIndex - threshold];\n const grade = (elevationDiff * 100) / distanceDiff;\n\n return gradePercentFormatter.formatShort(grade);\n }\n\n scopeTo() {\n const { scopeTo } = this.props;\n const { stream, xScale, yScale } = this.state;\n\n if (!stream || !scopeTo) {\n return;\n }\n\n const start = scopeTo[0];\n const end = scopeTo[1];\n\n // Taken from directory/ElevationChart.js.coffee: 263\n const range = end - start;\n // the padding on each side of the selected area should ideally be\n // 1/3 of the area itself, but this can't be the case if the start\n // or the end are too close to the edges\n const padding = parseInt(range / 3, 10);\n const enoughSpaceAtStart = start - padding <= 0;\n const enoughSpaceAtEnd = end + padding > stream.distance.length - 1;\n\n const paddedStart = enoughSpaceAtStart\n ? parseInt(start / 3, 10)\n : start - padding;\n\n const paddedEnd = enoughSpaceAtEnd\n ? parseInt(end + (stream.distance.length - 1 - end) / 3, 10)\n : end + padding;\n\n xScale.domain([\n stream.convertedDistance[paddedStart],\n stream.convertedDistance[paddedEnd]\n ]);\n\n const croppedElevationStream = stream.convertedElevation.slice(\n paddedStart,\n paddedEnd + 1\n );\n const yMax = max(croppedElevationStream);\n const yMin = min(croppedElevationStream);\n\n yScale.domain([yMin, yMax + yMax * 0.02]);\n }\n\n render() {\n const { margin, scopeTo, scopeColor } = this.props;\n const {\n stream,\n xScale,\n yScale,\n width,\n height,\n markerPosition,\n tooltipContent\n } = this.state;\n\n if (scopeTo) this.scopeTo();\n\n return (\n
\n {height && width && (\n \n \n \n\n \n\n {scopeTo && (\n \n )}\n\n \n \n \n\n \n \n \n \n \n \n )}\n
\n );\n }\n}\n\nElevationChart.propTypes = {\n height: PropTypes.number.isRequired,\n elevation: PropTypes.arrayOf(PropTypes.number).isRequired,\n distance: PropTypes.arrayOf(PropTypes.number).isRequired,\n units: PropTypes.string.isRequired,\n margin: PropTypes.shape({\n top: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired,\n bottom: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired\n }),\n scopeTo: PropTypes.arrayOf(PropTypes.number),\n scopeColor: PropTypes.string,\n onUpdateMarker: PropTypes.func,\n onMouseLeave: PropTypes.func,\n formatters: PropTypes.shape().isRequired\n};\n\nElevationChart.defaultProps = {\n margin: {\n top: 10,\n right: 24,\n bottom: 20,\n left: 45\n },\n scopeTo: null,\n scopeColor: 'rgb(23, 90, 189)',\n onUpdateMarker: () => null,\n onMouseLeave: () => null\n};\n\nexport default ElevationChart;\n","// extracted by mini-css-extract-plugin\nexport default {\"stat\":\"Stat--stat--AaawC\",\"stat-label\":\"Stat--stat-label--RZ+S4\",\"statLabel\":\"Stat--stat-label--RZ+S4\",\"stat-value\":\"Stat--stat-value--g-Ge3\",\"statValue\":\"Stat--stat-value--g-Ge3\",\"stat-xs\":\"Stat--stat-xs--beEWu\",\"statXs\":\"Stat--stat-xs--beEWu\",\"stat-sm\":\"Stat--stat-sm--q1LWG\",\"statSm\":\"Stat--stat-sm--q1LWG\",\"stat-lg\":\"Stat--stat-lg--aqKNh\",\"statLg\":\"Stat--stat-lg--aqKNh\",\"stat-xl\":\"Stat--stat-xl--Dpop4\",\"statXl\":\"Stat--stat-xl--Dpop4\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Stat = (props) => {\n const {\n value,\n label,\n type,\n wrapperClassName,\n labelClassName,\n valueClassName,\n labelAfterValue\n } = props;\n\n const labelElement = (\n \n {label}\n \n );\n\n const wrapperClasses = `${styles.stat} ${styles[type] || ''} ${\n wrapperClassName || ''\n }`;\n\n return (\n
\n {!labelAfterValue && labelElement}\n
\n {value}\n
\n {labelAfterValue && labelElement}\n
\n );\n};\n\nStat.TYPES = ['stat-xs', 'stat-sm', 'stat-lg', 'stat-xl'];\n\nStat.propTypes = {\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.element\n ]).isRequired,\n label: PropTypes.string.isRequired,\n type: PropTypes.oneOf(Stat.TYPES),\n wrapperClassName: PropTypes.string,\n labelClassName: PropTypes.string,\n valueClassName: PropTypes.string,\n labelAfterValue: PropTypes.bool\n};\n\nStat.defaultProps = {\n type: null,\n wrapperClassName: null,\n labelClassName: null,\n valueClassName: null,\n labelAfterValue: false\n};\n\nexport default Stat;\n","// extracted by mini-css-extract-plugin\nexport default {\"list-stats\":\"Stats--list-stats--N0R19\",\"listStats\":\"Stats--list-stats--N0R19\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst Stats = (props) => {\n const { children, listClassName } = props;\n\n return (\n
    \n {React.Children.map(\n children,\n (child) => (child &&
  • {child}
  • ) || ''\n )}\n
\n );\n};\n\nStats.propTypes = {\n children: PropTypes.node.isRequired,\n listClassName: PropTypes.string\n};\n\nStats.defaultProps = {\n listClassName: null\n};\n\nexport default Stats;\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _extends2() { _extends2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends2.apply(this, arguments); }\n\n// Generated with Packemon: https://packemon.dev\n// Platform: browser, Support: stable, Format: esm\nimport React from 'react';\nimport escapeHtml from 'escape-html';\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction Element(_ref) {\n var _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n className = _ref.className,\n _ref$children = _ref.children,\n children = _ref$children === void 0 ? null : _ref$children,\n _ref$selfClose = _ref.selfClose,\n selfClose = _ref$selfClose === void 0 ? false : _ref$selfClose,\n tagName = _ref.tagName;\n var Tag = tagName;\n return selfClose ? /*#__PURE__*/React.createElement(Tag, _extends({\n className: className\n }, attributes)) : /*#__PURE__*/React.createElement(Tag, _extends({\n className: className\n }, attributes), children);\n}\n\nvar Filter = /*#__PURE__*/function () {\n function Filter() {}\n\n var _proto = Filter.prototype;\n\n /**\n * Filter and clean an HTML attribute value.\n */\n _proto.attribute = function attribute(name, value) {\n return value;\n }\n /**\n * Filter and clean an HTML node.\n */\n ;\n\n _proto.node = function node(name, _node) {\n return _node;\n };\n\n return Filter;\n}();\n/* eslint-disable no-bitwise, no-magic-numbers, sort-keys */\n// https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories\n\n\nvar TYPE_FLOW = 1;\nvar TYPE_SECTION = 1 << 1;\nvar TYPE_HEADING = 1 << 2;\nvar TYPE_PHRASING = 1 << 3;\nvar TYPE_EMBEDDED = 1 << 4;\nvar TYPE_INTERACTIVE = 1 << 5;\nvar TYPE_PALPABLE = 1 << 6; // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n\nvar tagConfigs = {\n a: {\n content: TYPE_FLOW | TYPE_PHRASING,\n self: false,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n address: {\n invalid: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'address', 'article', 'aside', 'section', 'div', 'header', 'footer'],\n self: false\n },\n audio: {\n children: ['track', 'source']\n },\n br: {\n type: TYPE_FLOW | TYPE_PHRASING,\n void: true\n },\n body: {\n content: TYPE_FLOW | TYPE_SECTION | TYPE_HEADING | TYPE_PHRASING | TYPE_EMBEDDED | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n button: {\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n caption: {\n content: TYPE_FLOW,\n parent: ['table']\n },\n col: {\n parent: ['colgroup'],\n void: true\n },\n colgroup: {\n children: ['col'],\n parent: ['table']\n },\n details: {\n children: ['summary'],\n type: TYPE_FLOW | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n dd: {\n content: TYPE_FLOW,\n parent: ['dl']\n },\n dl: {\n children: ['dt', 'dd'],\n type: TYPE_FLOW\n },\n dt: {\n content: TYPE_FLOW,\n invalid: ['footer', 'header'],\n parent: ['dl']\n },\n figcaption: {\n content: TYPE_FLOW,\n parent: ['figure']\n },\n footer: {\n invalid: ['footer', 'header']\n },\n header: {\n invalid: ['footer', 'header']\n },\n hr: {\n type: TYPE_FLOW,\n void: true\n },\n img: {\n void: true\n },\n li: {\n content: TYPE_FLOW,\n parent: ['ul', 'ol', 'menu']\n },\n main: {\n self: false\n },\n ol: {\n children: ['li'],\n type: TYPE_FLOW\n },\n picture: {\n children: ['source', 'img'],\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_EMBEDDED\n },\n rb: {\n parent: ['ruby', 'rtc']\n },\n rp: {\n parent: ['ruby', 'rtc']\n },\n rt: {\n content: TYPE_PHRASING,\n parent: ['ruby', 'rtc']\n },\n rtc: {\n content: TYPE_PHRASING,\n parent: ['ruby']\n },\n ruby: {\n children: ['rb', 'rp', 'rt', 'rtc']\n },\n source: {\n parent: ['audio', 'video', 'picture'],\n void: true\n },\n summary: {\n content: TYPE_PHRASING,\n parent: ['details']\n },\n table: {\n children: ['caption', 'colgroup', 'thead', 'tbody', 'tfoot', 'tr'],\n type: TYPE_FLOW\n },\n tbody: {\n parent: ['table'],\n children: ['tr']\n },\n td: {\n content: TYPE_FLOW,\n parent: ['tr']\n },\n tfoot: {\n parent: ['table'],\n children: ['tr']\n },\n th: {\n content: TYPE_FLOW,\n parent: ['tr']\n },\n thead: {\n parent: ['table'],\n children: ['tr']\n },\n tr: {\n parent: ['table', 'tbody', 'thead', 'tfoot'],\n children: ['th', 'td']\n },\n track: {\n parent: ['audio', 'video'],\n void: true\n },\n ul: {\n children: ['li'],\n type: TYPE_FLOW\n },\n video: {\n children: ['track', 'source']\n },\n wbr: {\n type: TYPE_FLOW | TYPE_PHRASING,\n void: true\n }\n};\n\nfunction createConfigBuilder(config) {\n return function (tagName) {\n tagConfigs[tagName] = _extends2({}, config, tagConfigs[tagName]);\n };\n}\n\n['address', 'main', 'div', 'figure', 'p', 'pre'].forEach(createConfigBuilder({\n content: TYPE_FLOW,\n type: TYPE_FLOW | TYPE_PALPABLE\n}));\n['abbr', 'b', 'bdi', 'bdo', 'cite', 'code', 'data', 'dfn', 'em', 'i', 'kbd', 'mark', 'q', 'ruby', 'samp', 'strong', 'sub', 'sup', 'time', 'u', 'var'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_PALPABLE\n}));\n['p', 'pre'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PALPABLE\n}));\n['s', 'small', 'span', 'del', 'ins'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING\n}));\n['article', 'aside', 'footer', 'header', 'nav', 'section', 'blockquote'].forEach(createConfigBuilder({\n content: TYPE_FLOW,\n type: TYPE_FLOW | TYPE_SECTION | TYPE_PALPABLE\n}));\n['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_HEADING | TYPE_PALPABLE\n}));\n['audio', 'canvas', 'iframe', 'img', 'video'].forEach(createConfigBuilder({\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_EMBEDDED | TYPE_PALPABLE\n})); // Disable this map from being modified\n\nvar TAGS = Object.freeze(tagConfigs); // Tags that should never be allowed, even if the allow list is disabled\n\nvar BANNED_TAG_LIST = ['applet', 'base', 'body', 'command', 'embed', 'frame', 'frameset', 'head', 'html', 'link', 'meta', 'noscript', 'object', 'script', 'style', 'title'];\nvar ALLOWED_TAG_LIST = Object.keys(TAGS).filter(function (tag) {\n return tag !== 'canvas' && tag !== 'iframe';\n}); // Filters apply to HTML attributes\n\nvar FILTER_ALLOW = 1;\nvar FILTER_DENY = 2;\nvar FILTER_CAST_NUMBER = 3;\nvar FILTER_CAST_BOOL = 4;\nvar FILTER_NO_CAST = 5; // Attributes not listed here will be denied\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n\nvar ATTRIBUTES = Object.freeze({\n alt: FILTER_ALLOW,\n cite: FILTER_ALLOW,\n class: FILTER_ALLOW,\n colspan: FILTER_CAST_NUMBER,\n controls: FILTER_CAST_BOOL,\n datetime: FILTER_ALLOW,\n default: FILTER_CAST_BOOL,\n disabled: FILTER_CAST_BOOL,\n dir: FILTER_ALLOW,\n height: FILTER_ALLOW,\n href: FILTER_ALLOW,\n id: FILTER_ALLOW,\n kind: FILTER_ALLOW,\n label: FILTER_ALLOW,\n lang: FILTER_ALLOW,\n loading: FILTER_ALLOW,\n loop: FILTER_CAST_BOOL,\n media: FILTER_ALLOW,\n muted: FILTER_CAST_BOOL,\n poster: FILTER_ALLOW,\n role: FILTER_ALLOW,\n rowspan: FILTER_CAST_NUMBER,\n scope: FILTER_ALLOW,\n sizes: FILTER_ALLOW,\n span: FILTER_CAST_NUMBER,\n start: FILTER_CAST_NUMBER,\n style: FILTER_NO_CAST,\n src: FILTER_ALLOW,\n srclang: FILTER_ALLOW,\n srcset: FILTER_ALLOW,\n target: FILTER_ALLOW,\n title: FILTER_ALLOW,\n type: FILTER_ALLOW,\n width: FILTER_ALLOW\n}); // Attributes to camel case for React props\n\nvar ATTRIBUTES_TO_PROPS = Object.freeze({\n class: 'className',\n colspan: 'colSpan',\n datetime: 'dateTime',\n rowspan: 'rowSpan',\n srclang: 'srcLang',\n srcset: 'srcSet'\n});\nvar INVALID_STYLES = /(url|image|image-set)\\(/i;\n\nvar StyleFilter = /*#__PURE__*/function (_Filter) {\n _inheritsLoose(StyleFilter, _Filter);\n\n function StyleFilter() {\n return _Filter.apply(this, arguments) || this;\n }\n\n var _proto2 = StyleFilter.prototype;\n\n _proto2.attribute = function attribute(name, value) {\n if (name === 'style') {\n Object.keys(value).forEach(function (key) {\n if (String(value[key]).match(INVALID_STYLES)) {\n // eslint-disable-next-line no-param-reassign\n delete value[key];\n }\n });\n }\n\n return value;\n };\n\n return StyleFilter;\n}(Filter);\n/* eslint-disable no-bitwise, no-cond-assign, complexity */\n\n\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar INVALID_ROOTS = /^<(!doctype|(html|head|body)(\\s|>))/i;\nvar ALLOWED_ATTRS = /^(aria\\x2D|data\\x2D|[0-9A-Z_a-z\\u017F\\u212A]+:)/i;\nvar OPEN_TOKEN = /{{{(\\w+)\\/?}}}/;\n\nfunction createDocument() {\n // Maybe SSR? Just do nothing instead of crashing!\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return undefined;\n }\n\n return document.implementation.createHTMLDocument('Interweave');\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(markup, props, matchers, filters) {\n if (props === void 0) {\n props = {};\n }\n\n if (matchers === void 0) {\n matchers = [];\n }\n\n if (filters === void 0) {\n filters = [];\n }\n\n this.allowed = void 0;\n this.banned = void 0;\n this.blocked = void 0;\n this.container = void 0;\n this.content = [];\n this.props = void 0;\n this.matchers = void 0;\n this.filters = void 0;\n this.keyIndex = void 0;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (markup && typeof markup !== 'string') {\n throw new TypeError('Interweave parser requires a valid string.');\n }\n }\n\n this.props = props;\n this.matchers = matchers;\n this.filters = [].concat(filters, [new StyleFilter()]);\n this.keyIndex = -1;\n this.container = this.createContainer(markup || '');\n this.allowed = new Set(props.allowList || ALLOWED_TAG_LIST);\n this.banned = new Set(BANNED_TAG_LIST);\n this.blocked = new Set(props.blockList);\n }\n /**\n * Loop through and apply all registered attribute filters.\n */\n\n\n var _proto3 = Parser.prototype;\n\n _proto3.applyAttributeFilters = function applyAttributeFilters(name, value) {\n return this.filters.reduce(function (nextValue, filter) {\n return nextValue !== null && typeof filter.attribute === 'function' ? filter.attribute(name, nextValue) : nextValue;\n }, value);\n }\n /**\n * Loop through and apply all registered node filters.\n */\n ;\n\n _proto3.applyNodeFilters = function applyNodeFilters(name, node) {\n // Allow null to be returned\n return this.filters.reduce(function (nextNode, filter) {\n return nextNode !== null && typeof filter.node === 'function' ? filter.node(name, nextNode) : nextNode;\n }, node);\n }\n /**\n * Loop through and apply all registered matchers to the string.\n * If a match is found, create a React element, and build a new array.\n * This array allows React to interpolate and render accordingly.\n */\n ;\n\n _proto3.applyMatchers = function applyMatchers(string, parentConfig) {\n var _this = this;\n\n var elements = {};\n var props = this.props;\n var matchedString = string;\n var elementIndex = 0;\n var parts = null;\n this.matchers.forEach(function (matcher) {\n var tagName = matcher.asTag().toLowerCase();\n\n var config = _this.getTagConfig(tagName); // Skip matchers that have been disabled from props or are not supported\n\n\n if (props[matcher.inverseName] || !_this.isTagAllowed(tagName)) {\n return;\n } // Skip matchers in which the child cannot be rendered\n\n\n if (!_this.canRenderChild(parentConfig, config)) {\n return;\n } // Continuously trigger the matcher until no matches are found\n\n\n var tokenizedString = '';\n\n while (matchedString && (parts = matcher.match(matchedString))) {\n var _parts = parts,\n index = _parts.index,\n length = _parts.length,\n _match = _parts.match,\n valid = _parts.valid,\n isVoid = _parts.void,\n partProps = _objectWithoutPropertiesLoose(_parts, [\"index\", \"length\", \"match\", \"valid\", \"void\"]);\n\n var tokenName = matcher.propName + elementIndex; // Piece together a new string with interpolated tokens\n\n if (index > 0) {\n tokenizedString += matchedString.slice(0, index);\n }\n\n if (valid) {\n tokenizedString += isVoid ? \"{{{\" + tokenName + \"/}}}\" : \"{{{\" + tokenName + \"}}}\" + _match + \"{{{/\" + tokenName + \"}}}\";\n _this.keyIndex += 1;\n elementIndex += 1;\n elements[tokenName] = {\n children: _match,\n matcher: matcher,\n props: _extends2({}, props, partProps, {\n key: _this.keyIndex\n })\n };\n } else {\n tokenizedString += _match;\n } // Reduce the string being matched against,\n // otherwise we end up in an infinite loop!\n\n\n if (matcher.greedy) {\n matchedString = tokenizedString + matchedString.slice(index + length);\n tokenizedString = '';\n } else {\n // eslint-disable-next-line unicorn/explicit-length-check\n matchedString = matchedString.slice(index + (length || _match.length));\n }\n } // Update the matched string with the tokenized string,\n // so that the next matcher can apply to it.\n\n\n if (!matcher.greedy) {\n matchedString = tokenizedString + matchedString;\n }\n });\n\n if (elementIndex === 0) {\n return string;\n }\n\n return this.replaceTokens(matchedString, elements);\n }\n /**\n * Determine whether the child can be rendered within the parent.\n */\n ;\n\n _proto3.canRenderChild = function canRenderChild(parentConfig, childConfig) {\n if (!parentConfig.tagName || !childConfig.tagName) {\n return false;\n } // No children\n\n\n if (parentConfig.void) {\n return false;\n } // Valid children\n\n\n if (parentConfig.children.length > 0) {\n return parentConfig.children.includes(childConfig.tagName);\n }\n\n if (parentConfig.invalid.length > 0 && parentConfig.invalid.includes(childConfig.tagName)) {\n return false;\n } // Valid parent\n\n\n if (childConfig.parent.length > 0) {\n return childConfig.parent.includes(parentConfig.tagName);\n } // Self nesting\n\n\n if (!parentConfig.self && parentConfig.tagName === childConfig.tagName) {\n return false;\n } // Content category type\n\n\n return Boolean(parentConfig && parentConfig.content & childConfig.type);\n }\n /**\n * Convert line breaks in a string to HTML `
` tags.\n * If the string contains HTML, we should not convert anything,\n * as line breaks should be handled by `
`s in the markup itself.\n */\n ;\n\n _proto3.convertLineBreaks = function convertLineBreaks(markup) {\n var _this$props = this.props,\n noHtml = _this$props.noHtml,\n disableLineBreaks = _this$props.disableLineBreaks;\n\n if (noHtml || disableLineBreaks || markup.match(/<((?:\\/[ a-z]+)|(?:[ a-z]+\\/))>/gi)) {\n return markup;\n } // Replace carriage returns\n\n\n var nextMarkup = markup.replace(/\\r\\n/g, '\\n'); // Replace long line feeds\n\n nextMarkup = nextMarkup.replace(/\\n{3,}/g, '\\n\\n\\n'); // Replace line feeds with `
`s\n\n nextMarkup = nextMarkup.replace(/\\n/g, '
');\n return nextMarkup;\n }\n /**\n * Create a detached HTML document that allows for easy HTML\n * parsing while not triggering scripts or loading external\n * resources.\n */\n ;\n\n _proto3.createContainer = function createContainer(markup) {\n var factory = typeof global !== 'undefined' && global.INTERWEAVE_SSR_POLYFILL || createDocument;\n var doc = factory();\n\n if (!doc) {\n return undefined;\n }\n\n var tag = this.props.containerTagName || 'body';\n var el = tag === 'body' || tag === 'fragment' ? doc.body : doc.createElement(tag);\n\n if (markup.match(INVALID_ROOTS)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('HTML documents as Interweave content are not supported.');\n }\n } else {\n el.innerHTML = this.convertLineBreaks(this.props.escapeHtml ? escapeHtml(markup) : markup);\n }\n\n return el;\n }\n /**\n * Convert an elements attribute map to an object map.\n * Returns null if no attributes are defined.\n */\n ;\n\n _proto3.extractAttributes = function extractAttributes(node) {\n var _this2 = this;\n\n var allowAttributes = this.props.allowAttributes;\n var attributes = {};\n var count = 0;\n\n if (node.nodeType !== ELEMENT_NODE || !node.attributes) {\n return null;\n }\n\n Array.from(node.attributes).forEach(function (attr) {\n var name = attr.name,\n value = attr.value;\n var newName = name.toLowerCase();\n var filter = ATTRIBUTES[newName] || ATTRIBUTES[name]; // Verify the node is safe from attacks\n\n if (!_this2.isSafe(node)) {\n return;\n } // Do not allow denied attributes, excluding ARIA attributes\n // Do not allow events or XSS injections\n\n\n if (!newName.match(ALLOWED_ATTRS)) {\n if (!allowAttributes && (!filter || filter === FILTER_DENY) || newName.startsWith('on') || value.replace(/(\\s|\\0|�([9AD]);)/, '').match(/(javascript|vbscript|livescript|xss):/i)) {\n return;\n }\n } // Apply attribute filters\n\n\n var newValue = newName === 'style' ? _this2.extractStyleAttribute(node) : value; // Cast to boolean\n\n if (filter === FILTER_CAST_BOOL) {\n newValue = true; // Cast to number\n } else if (filter === FILTER_CAST_NUMBER) {\n newValue = Number.parseFloat(String(newValue)); // Cast to string\n } else if (filter !== FILTER_NO_CAST) {\n newValue = String(newValue);\n }\n\n attributes[ATTRIBUTES_TO_PROPS[newName] || newName] = _this2.applyAttributeFilters(newName, newValue);\n count += 1;\n });\n\n if (count === 0) {\n return null;\n }\n\n return attributes;\n }\n /**\n * Extract the style attribute as an object and remove values that allow for attack vectors.\n */\n ;\n\n _proto3.extractStyleAttribute = function extractStyleAttribute(node) {\n var styles = {};\n Array.from(node.style).forEach(function (key) {\n var value = node.style[key];\n\n if (typeof value === 'string' || typeof value === 'number') {\n styles[key.replace(/-([a-z])/g, function (match, letter) {\n return letter.toUpperCase();\n })] = value;\n }\n });\n return styles;\n }\n /**\n * Return configuration for a specific tag.\n */\n ;\n\n _proto3.getTagConfig = function getTagConfig(tagName) {\n var common = {\n children: [],\n content: 0,\n invalid: [],\n parent: [],\n self: true,\n tagName: '',\n type: 0,\n void: false\n }; // Only spread when a tag config exists,\n // otherwise we use the empty `tagName`\n // for parent config inheritance.\n\n if (TAGS[tagName]) {\n return _extends2({}, common, TAGS[tagName], {\n tagName: tagName\n });\n }\n\n return common;\n }\n /**\n * Verify that a node is safe from XSS and injection attacks.\n */\n ;\n\n _proto3.isSafe = function isSafe(node) {\n // URLs should only support HTTP, email and phone numbers\n if (typeof HTMLAnchorElement !== 'undefined' && node instanceof HTMLAnchorElement) {\n var href = node.getAttribute('href'); // Fragment protocols start with about:\n // So let's just allow them\n\n if (href && href.charAt(0) === '#') {\n return true;\n }\n\n var protocol = node.protocol.toLowerCase();\n return protocol === ':' || protocol === 'http:' || protocol === 'https:' || protocol === 'mailto:' || protocol === 'tel:';\n }\n\n return true;\n }\n /**\n * Verify that an HTML tag is allowed to render.\n */\n ;\n\n _proto3.isTagAllowed = function isTagAllowed(tagName) {\n if (this.banned.has(tagName) || this.blocked.has(tagName)) {\n return false;\n }\n\n return this.props.allowElements || this.allowed.has(tagName);\n }\n /**\n * Parse the markup by injecting it into a detached document,\n * while looping over all child nodes and generating an\n * array to interpolate into JSX.\n */\n ;\n\n _proto3.parse = function parse() {\n if (!this.container) {\n return [];\n }\n\n return this.parseNode(this.container, this.getTagConfig(this.container.nodeName.toLowerCase()));\n }\n /**\n * Loop over the nodes children and generate a\n * list of text nodes and React elements.\n */\n ;\n\n _proto3.parseNode = function parseNode(parentNode, parentConfig) {\n var _this3 = this;\n\n var _this$props2 = this.props,\n noHtml = _this$props2.noHtml,\n noHtmlExceptMatchers = _this$props2.noHtmlExceptMatchers,\n allowElements = _this$props2.allowElements,\n transform = _this$props2.transform,\n transformOnlyAllowList = _this$props2.transformOnlyAllowList;\n var content = [];\n var mergedText = '';\n Array.from(parentNode.childNodes).forEach(function (node) {\n // Create React elements from HTML elements\n if (node.nodeType === ELEMENT_NODE) {\n var tagName = node.nodeName.toLowerCase();\n\n var config = _this3.getTagConfig(tagName); // Persist any previous text\n\n\n if (mergedText) {\n content.push(mergedText);\n mergedText = '';\n } // Apply node filters first\n\n\n var nextNode = _this3.applyNodeFilters(tagName, node);\n\n if (!nextNode) {\n return;\n } // Apply transformation second\n\n\n var children;\n\n if (transform && !(transformOnlyAllowList && !_this3.isTagAllowed(tagName))) {\n _this3.keyIndex += 1;\n var key = _this3.keyIndex; // Must occur after key is set\n\n children = _this3.parseNode(nextNode, config);\n var transformed = transform(nextNode, children, config);\n\n if (transformed === null) {\n return;\n } else if (typeof transformed !== 'undefined') {\n content.push( /*#__PURE__*/React.cloneElement(transformed, {\n key: key\n }));\n return;\n } // Reset as we're not using the transformation\n\n\n _this3.keyIndex = key - 1;\n } // Never allow these tags (except via a transformer)\n\n\n if (_this3.banned.has(tagName)) {\n return;\n } // Only render when the following criteria is met:\n // - HTML has not been disabled\n // - Tag is allowed\n // - Child is valid within the parent\n\n\n if (!(noHtml || noHtmlExceptMatchers && tagName !== 'br') && _this3.isTagAllowed(tagName) && (allowElements || _this3.canRenderChild(parentConfig, config))) {\n _this3.keyIndex += 1; // Build the props as it makes it easier to test\n\n var attributes = _this3.extractAttributes(nextNode);\n\n var elementProps = {\n tagName: tagName\n };\n\n if (attributes) {\n elementProps.attributes = attributes;\n }\n\n if (config.void) {\n elementProps.selfClose = config.void;\n }\n\n content.push( /*#__PURE__*/React.createElement(Element, _extends2({}, elementProps, {\n key: _this3.keyIndex\n }), children || _this3.parseNode(nextNode, config))); // Render the children of the current element only.\n // Important: If the current element is not allowed,\n // use the parent element for the next scope.\n } else {\n content = content.concat(_this3.parseNode(nextNode, config.tagName ? config : parentConfig));\n } // Apply matchers if a text node\n\n } else if (node.nodeType === TEXT_NODE) {\n var text = noHtml && !noHtmlExceptMatchers ? node.textContent : _this3.applyMatchers(node.textContent || '', parentConfig);\n\n if (Array.isArray(text)) {\n content = content.concat(text);\n } else {\n mergedText += text;\n }\n }\n });\n\n if (mergedText) {\n content.push(mergedText);\n }\n\n return content;\n }\n /**\n * Deconstruct the string into an array, by replacing custom tokens with React elements,\n * so that React can render it correctly.\n */\n ;\n\n _proto3.replaceTokens = function replaceTokens(tokenizedString, elements) {\n if (!tokenizedString.includes('{{{')) {\n return tokenizedString;\n }\n\n var nodes = [];\n var text = tokenizedString;\n var open = null; // Find an open token tag\n\n while (open = text.match(OPEN_TOKEN)) {\n var _open = open,\n _match2 = _open[0],\n tokenName = _open[1];\n var startIndex = open.index;\n\n var isVoid = _match2.includes('/');\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!elements[tokenName]) {\n throw new Error(\"Token \\\"\" + tokenName + \"\\\" found but no matching element to replace with.\");\n }\n } // Extract the previous non-token text\n\n\n if (startIndex > 0) {\n nodes.push(text.slice(0, startIndex)); // Reduce text so that the closing tag will be found after the opening\n\n text = text.slice(startIndex);\n }\n\n var _elements$tokenName = elements[tokenName],\n children = _elements$tokenName.children,\n matcher = _elements$tokenName.matcher,\n elementProps = _elements$tokenName.props;\n var endIndex = void 0; // Use tag as-is if void\n\n if (isVoid) {\n endIndex = _match2.length;\n nodes.push(matcher.createElement(children, elementProps)); // Find the closing tag if not void\n } else {\n var close = text.match(new RegExp(\"{{{/\" + tokenName + \"}}}\"));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!close) {\n throw new Error(\"Closing token missing for interpolated element \\\"\" + tokenName + \"\\\".\");\n }\n }\n\n endIndex = close.index + close[0].length;\n nodes.push(matcher.createElement(this.replaceTokens(text.slice(_match2.length, close.index), elements), elementProps));\n } // Reduce text for the next interation\n\n\n text = text.slice(endIndex);\n } // Extra the remaining text\n\n\n if (text.length > 0) {\n nodes.push(text);\n } // Reduce to a string if possible\n\n\n if (nodes.length === 0) {\n return '';\n } else if (nodes.length === 1 && typeof nodes[0] === 'string') {\n return nodes[0];\n }\n\n return nodes;\n };\n\n return Parser;\n}();\n/* eslint-disable react/jsx-fragments */\n\n\nfunction Markup(props) {\n var attributes = props.attributes,\n className = props.className,\n containerTagName = props.containerTagName,\n content = props.content,\n emptyContent = props.emptyContent,\n parsedContent = props.parsedContent,\n tagName = props.tagName;\n var tag = containerTagName || tagName || 'span';\n var noWrap = tag === 'fragment' ? true : props.noWrap;\n var mainContent;\n\n if (parsedContent) {\n mainContent = parsedContent;\n } else {\n var markup = new Parser(content || '', props).parse();\n\n if (markup.length > 0) {\n mainContent = markup;\n }\n }\n\n if (!mainContent) {\n mainContent = emptyContent;\n }\n\n if (noWrap) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, mainContent);\n }\n\n return /*#__PURE__*/React.createElement(Element, {\n attributes: attributes,\n className: className,\n tagName: tag\n }, mainContent);\n}\n\nfunction Interweave(props) {\n var attributes = props.attributes,\n className = props.className,\n _props$content = props.content,\n content = _props$content === void 0 ? '' : _props$content,\n _props$disableFilters = props.disableFilters,\n disableFilters = _props$disableFilters === void 0 ? false : _props$disableFilters,\n _props$disableMatcher = props.disableMatchers,\n disableMatchers = _props$disableMatcher === void 0 ? false : _props$disableMatcher,\n _props$emptyContent = props.emptyContent,\n emptyContent = _props$emptyContent === void 0 ? null : _props$emptyContent,\n _props$filters = props.filters,\n filters = _props$filters === void 0 ? [] : _props$filters,\n _props$matchers = props.matchers,\n matchers = _props$matchers === void 0 ? [] : _props$matchers,\n _props$onAfterParse = props.onAfterParse,\n onAfterParse = _props$onAfterParse === void 0 ? null : _props$onAfterParse,\n _props$onBeforeParse = props.onBeforeParse,\n onBeforeParse = _props$onBeforeParse === void 0 ? null : _props$onBeforeParse,\n _props$tagName = props.tagName,\n tagName = _props$tagName === void 0 ? 'span' : _props$tagName,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n parserProps = _objectWithoutPropertiesLoose(props, [\"attributes\", \"className\", \"content\", \"disableFilters\", \"disableMatchers\", \"emptyContent\", \"filters\", \"matchers\", \"onAfterParse\", \"onBeforeParse\", \"tagName\", \"noWrap\"]);\n\n var allMatchers = disableMatchers ? [] : matchers;\n var allFilters = disableFilters ? [] : filters;\n var beforeCallbacks = onBeforeParse ? [onBeforeParse] : [];\n var afterCallbacks = onAfterParse ? [onAfterParse] : []; // Inherit callbacks from matchers\n\n allMatchers.forEach(function (matcher) {\n if (matcher.onBeforeParse) {\n beforeCallbacks.push(matcher.onBeforeParse.bind(matcher));\n }\n\n if (matcher.onAfterParse) {\n afterCallbacks.push(matcher.onAfterParse.bind(matcher));\n }\n }); // Trigger before callbacks\n\n var markup = beforeCallbacks.reduce(function (string, callback) {\n var nextString = callback(string, props);\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof nextString !== 'string') {\n throw new TypeError('Interweave `onBeforeParse` must return a valid HTML string.');\n }\n }\n\n return nextString;\n }, content || ''); // Parse the markup\n\n var parser = new Parser(markup, parserProps, allMatchers, allFilters); // Trigger after callbacks\n\n var nodes = afterCallbacks.reduce(function (parserNodes, callback) {\n var nextNodes = callback(parserNodes, props);\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(nextNodes)) {\n throw new TypeError('Interweave `onAfterParse` must return an array of strings and React elements.');\n }\n }\n\n return nextNodes;\n }, parser.parse());\n return /*#__PURE__*/React.createElement(Markup, {\n attributes: attributes,\n className: className,\n containerTagName: props.containerTagName,\n emptyContent: emptyContent,\n tagName: tagName,\n noWrap: noWrap,\n parsedContent: nodes.length === 0 ? undefined : nodes\n });\n}\n/**\n * Trigger the actual pattern match and package the matched\n * response through a callback.\n */\n\n\nfunction match(string, pattern, callback, isVoid) {\n if (isVoid === void 0) {\n isVoid = false;\n }\n\n var matches = string.match(pattern instanceof RegExp ? pattern : new RegExp(pattern, 'i'));\n\n if (!matches) {\n return null;\n }\n\n return _extends2({\n match: matches[0],\n void: isVoid\n }, callback(matches), {\n index: matches.index,\n length: matches[0].length,\n valid: true\n });\n}\n\nvar Matcher = /*#__PURE__*/function () {\n function Matcher(name, options, factory) {\n this.greedy = false;\n this.options = void 0;\n this.propName = void 0;\n this.inverseName = void 0;\n this.factory = void 0;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!name || name.toLowerCase() === 'html') {\n throw new Error(\"The matcher name \\\"\" + name + \"\\\" is not allowed.\");\n }\n } // @ts-expect-error\n\n\n this.options = _extends2({}, options);\n this.propName = name;\n this.inverseName = \"no\" + (name.charAt(0).toUpperCase() + name.slice(1));\n this.factory = factory || null;\n }\n /**\n * Attempts to create a React element using a custom user provided factory,\n * or the default matcher factory.\n */\n\n\n var _proto4 = Matcher.prototype;\n\n _proto4.createElement = function createElement(children, props) {\n var element = this.factory ? /*#__PURE__*/React.createElement(this.factory, props, children) : this.replaceWith(children, props);\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof element !== 'string' && ! /*#__PURE__*/React.isValidElement(element)) {\n throw new Error(\"Invalid React element created from \" + this.constructor.name + \".\");\n }\n }\n\n return element;\n }\n /**\n * Trigger the actual pattern match and package the matched\n * response through a callback.\n */\n ;\n\n _proto4.doMatch = function doMatch(string, pattern, callback, isVoid) {\n if (isVoid === void 0) {\n isVoid = false;\n }\n\n return match(string, pattern, callback, isVoid);\n }\n /**\n * Callback triggered before parsing.\n */\n ;\n\n _proto4.onBeforeParse = function onBeforeParse(content, props) {\n return content;\n }\n /**\n * Callback triggered after parsing.\n */\n ;\n\n _proto4.onAfterParse = function onAfterParse(content, props) {\n return content;\n }\n /**\n * Replace the match with a React element based on the matched token and optional props.\n */\n ;\n\n return Matcher;\n}();\n/**\n * @copyright 2016-2019, Miles Johnson\n * @license https://opensource.org/licenses/MIT\n */\n\n\nexport default Interweave;\nexport { ALLOWED_TAG_LIST, ATTRIBUTES, ATTRIBUTES_TO_PROPS, BANNED_TAG_LIST, Element, FILTER_ALLOW, FILTER_CAST_BOOL, FILTER_CAST_NUMBER, FILTER_DENY, FILTER_NO_CAST, Filter, Markup, Matcher, Parser, TAGS, TYPE_EMBEDDED, TYPE_FLOW, TYPE_HEADING, TYPE_INTERACTIVE, TYPE_PALPABLE, TYPE_PHRASING, TYPE_SECTION, match };\n//# sourceMappingURL=index.js.map\n"],"names":["SvgNavigationProfileHighlightedMedium","React","ref","color","size","title","titleId","props","fill","xmlns","viewBox","width","height","id","d","defaultProps","undefined","propTypes","PropTypes","SvgBadgesMulticolorSuperuserSmall","fillRule","SvgBadgesMulticolorSummitSmall","SvgBadgesMulticolorProSmall","SvgBadgesMulticolorVerifiedSmall","Img","src","alt","fallback","useState","children","setChildren","useEffect","image","Image","onload","onerror","Avatar","name","type","badge","href","classNameProp","className","otherProps","classNames","styles","avatar","push","getBadge","imgWrapper","join","isRequired","value","global","Object","freeSelf","self","freeGlobal","Function","root","reWhitespace","string","index","length","test","charAt","reTrimStart","slice","trimmedEndIndex","replace","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","Symbol","isOwn","call","tag","unmasked","e","result","getRawTag","objectToString","isObjectLike","baseGetTag","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isSymbol","isObject","other","valueOf","baseTrim","isBinary","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","now","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","clearTimeout","toNumber","cancel","flush","debounce","Area","stream","xScale","yScale","clipPath","formatData","convertedElevation","map","elev","dist","convertedDistance","drawArea","area","x","y1","y0","Axis","xAxisNode","yAxisNode","scalesAreEqual","scaleA","scaleB","domain","every","domainElement","includes","componentDidMount","drawAxes","componentDidUpdate","prevProps","scopeTo","hasScopeChanged","hasScaleChanged","hasWidthChanged","formatters","elevationFormatter","distanceFormatter","xAxis","axisBottom","yAxis","axisLeft","xTickCount","ticks","tickSize","tickFormat","formatShort","convert","select","current","render","transform","Tooltip","content","position","chartWidth","chartMargin","textRef","useRef","boxWidth","setBoxWidth","rightBound","padding","currBoxAlign","useLayoutEffect","keys","widths","el","getBoundingClientRect","maxWidth","newSize","round","InfoBox","boxHeight","infoBox","y","stat","contentItem","key","dy","label","dx","group","marker","top","y2","x1","x2","right","bottom","left","ElevationChart","state","markerPosition","margin","tooltipContent","container","node","hitbox","handleResize","throttle","buildScales","updateMarker","onUpdateMarker","bounds","cursorPosition","clientX","distCursor","invert","streamIndex","bisectLeft","distance","elevation","grade","gradeAtIndex","setState","handleMouseLeave","onMouseLeave","window","addEventListener","prevElevation","prevDistance","prevUnits","units","elevationChanged","distanceChanged","componentWillUnmount","removeEventListener","ElevationFormatter","DistanceFormatter","gradePercentFormatter","PercentFormatter","heightProp","offsetWidth","yMax","yMin","scaleLinear","range","maxIndex","distanceDiff","start","end","enoughSpaceAtStart","enoughSpaceAtEnd","paddedStart","paddedEnd","croppedElevationStream","scopeColor","onMouseMove","Component","Stat","wrapperClassName","labelClassName","valueClassName","labelAfterValue","labelElement","statLabel","wrapperClasses","statValue","TYPES","Stats","listClassName","child","matchHtmlRegExp","module","exports","escape","str","match","exec","html","lastIndex","charCodeAt","substring","_objectWithoutPropertiesLoose","source","excluded","i","target","sourceKeys","indexOf","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_extends2","assign","_extends","Element","_ref","_ref$attributes","attributes","_ref$children","_ref$selfClose","selfClose","Tag","tagName","Filter","_proto","attribute","_node","tagConfigs","a","TYPE_FLOW","address","invalid","audio","br","void","body","button","caption","parent","col","colgroup","details","dd","dl","dt","figcaption","footer","header","hr","img","li","main","ol","picture","rb","rp","rt","rtc","ruby","summary","table","tbody","td","tfoot","th","thead","tr","track","ul","video","wbr","createConfigBuilder","config","forEach","TAGS","freeze","BANNED_TAG_LIST","ALLOWED_TAG_LIST","filter","ATTRIBUTES","cite","class","colspan","controls","datetime","default","disabled","dir","kind","lang","loading","loop","media","muted","poster","role","rowspan","scope","sizes","span","style","srclang","srcset","ATTRIBUTES_TO_PROPS","INVALID_STYLES","StyleFilter","_Filter","subClass","superClass","create","constructor","String","INVALID_ROOTS","ALLOWED_ATTRS","OPEN_TOKEN","createDocument","document","implementation","createHTMLDocument","Parser","markup","matchers","filters","allowed","banned","blocked","keyIndex","concat","createContainer","Set","allowList","blockList","_proto3","applyAttributeFilters","reduce","nextValue","applyNodeFilters","nextNode","applyMatchers","parentConfig","_this","elements","matchedString","elementIndex","parts","matcher","asTag","toLowerCase","getTagConfig","inverseName","isTagAllowed","canRenderChild","tokenizedString","_parts","_match","valid","isVoid","partProps","tokenName","propName","greedy","replaceTokens","childConfig","Boolean","convertLineBreaks","_this$props","noHtml","disableLineBreaks","nextMarkup","doc","g","INTERWEAVE_SSR_POLYFILL","containerTagName","createElement","innerHTML","escapeHtml","extractAttributes","_this2","allowAttributes","count","nodeType","Array","from","attr","newName","isSafe","startsWith","newValue","extractStyleAttribute","Number","parseFloat","letter","toUpperCase","common","HTMLAnchorElement","getAttribute","protocol","has","allowElements","parse","parseNode","nodeName","parentNode","_this3","_this$props2","noHtmlExceptMatchers","transformOnlyAllowList","mergedText","childNodes","transformed","elementProps","text","textContent","isArray","nodes","open","_open","_match2","startIndex","_elements$tokenName","endIndex","close","RegExp","Markup","mainContent","emptyContent","parsedContent","noWrap"],"sourceRoot":""}