-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent---src-templates-markdown-post-js-ce110d1a91e50a260f67.js.map
1 lines (1 loc) · 36.5 KB
/
component---src-templates-markdown-post-js-ce110d1a91e50a260f67.js.map
1
{"version":3,"file":"component---src-templates-markdown-post-js-ce110d1a91e50a260f67.js","mappings":"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","sources":["webpack://docs/./src/components/common/prev-next/PrevNext.js","webpack://docs/./src/components/common/prev-next/PrevNextSection.js","webpack://docs/./src/components/common/sidebar/SidebarLink.js","webpack://docs/./src/components/common/sidebar/SidebarList.js","webpack://docs/./src/components/common/sidebar/getSidebarFile.js","webpack://docs/./src/components/common/sidebar/SidebarNav.js","webpack://docs/./src/templates/markdown/post.js","webpack://docs/../home/testuser/node_modules/lodash/_arrayEach.js","webpack://docs/../home/testuser/node_modules/lodash/_baseTrim.js","webpack://docs/../home/testuser/node_modules/lodash/_castFunction.js","webpack://docs/../home/testuser/node_modules/lodash/_trimmedEndIndex.js","webpack://docs/../home/testuser/node_modules/lodash/findIndex.js","webpack://docs/../home/testuser/node_modules/lodash/forEach.js","webpack://docs/../home/testuser/node_modules/lodash/toFinite.js","webpack://docs/../home/testuser/node_modules/lodash/toInteger.js","webpack://docs/../home/testuser/node_modules/lodash/toNumber.js","webpack://docs//website/content/biodynamo/doc/sidebars|sync|/^\\.\\/.*\\.yaml$/","webpack://docs//website/content/team|sync|/^\\.\\/.*\\.yaml$/","webpack://docs//website/content/tutorial|sync|/^\\.\\/.*\\.yaml$/"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'gatsby'\n\nimport { Spirit } from '../../../styles/spirit-styles'\nimport Icon from '../Icon'\n\nconst PrevNext = ({ prev, next }) => (\n <div className=\"grid-12\">\n {prev ?\n <Link to={prev.link} className={`col-6 flex pa10 pl0 tdn justify-start items-center blue nudge-left--1 prevnext-hover ba b--transparent`}>\n <Icon name=\"arrow-left\" className=\"w5 h5 fill-blue\" />\n <div className=\"ml4\">\n {prev.group ? <h6 className=\"ma0 pa0 f8 fw4 midgrey lh-1-5\">{prev.group}</h6> : null}\n <p className={`${Spirit.excerpt} nt1 di fw5`}>{prev.title}</p>\n </div>\n </Link>\n : <div className=\"col-6\"></div>\n }\n {next ?\n <Link to={next.link } className={`col-6 flex pr0 pa10 tdn justify-end items-center blue prevnext-hover ba b--transparent`}>\n <div className=\"tr mr4\">\n {next.group ? <h6 className=\"ma0 pa0 f8 fw4 midgrey lh-1-5\">{next.group}</h6> : null}\n <p className={`${Spirit.excerpt} nt1 di fw5`}>{next.title}</p>\n </div>\n <Icon name=\"arrow-right\" className=\"w5 h5 fill-blue\" />\n </Link>\n : <div className=\"col-6\"></div>\n }\n </div>\n)\n\nPrevNext.propTypes = {\n prev: PropTypes.shape({\n title: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n group: PropTypes.string,\n }),\n next: PropTypes.shape({\n title: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n group: PropTypes.string,\n description: PropTypes.string,\n }),\n}\n\nexport default PrevNext\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport _ from 'lodash'\n\nimport { getSidebarFile } from '../sidebar'\nimport PrevNext from './PrevNext'\n\nconst PrevNextSection = ({ sidebar, location, next }) => {\n // TODO: find a more generic way for the `/concepts/` case\n // Cover two cases:\n // 1. `/concepts/` page that walks through the associated sidebar file\n // 2. other pages, where we set a `next` property in frontmatter\n // The following code serializes the data and pass it to a generic component.\n\n if (sidebar) {\n const sidebarfile = getSidebarFile(sidebar)\n\n if (!sidebarfile) {\n return null\n }\n\n const { groups } = sidebarfile\n const flatSidebar = []\n\n // Get all nested items and link and make a flat array\n _.forEach(groups, (section) => {\n _.forEach(section.items, (items) => {\n // Remember the group our items belong to\n items.group = section.group\n flatSidebar.push(items)\n })\n })\n\n const currentIndex = _.findIndex(flatSidebar, item => item.link === location.pathname)\n const prev = flatSidebar[currentIndex - 1]\n let next = flatSidebar[currentIndex + 1]\n\n // Set the last page in \"Concepts\" to lead to the setup guide\n if (!next && sidebar === `concepts`) {\n next = { group: `Setup`, link: `/setup/`, title: `Install Ghost` }\n }\n\n return (\n <PrevNext prev={prev} next={next} />\n )\n } else if (next && next.title && next.url) {\n // We *must* have at least URL and title\n const next = {\n title: next.title,\n link: next.url,\n description: next.description || ``,\n }\n\n return (\n <PrevNext next={next} />\n )\n } else {\n return null\n }\n}\n\nPrevNextSection.propTypes = {\n sidebar: PropTypes.string,\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n next: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n}\n\nexport default PrevNextSection\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'gatsby'\n\nconst SidebarLink = ({ link, title, linkClasses }) => {\n if (link) {\n if (link.match(/^\\s?http(s?)/gi)) {\n // use anchor links for external links\n return <a href={link} className={`link db pv6px pr2 lh-1-5 pl0 ${linkClasses}`} target=\"_blank\" rel=\"noopener noreferrer\">{title}</a>\n } else {\n return <Link to={link} className={`link db pv6px pr2 lh-1-5 pl0 ${linkClasses}`}>{title}</Link>\n }\n } else {\n return (\n <>{this.props.title}</>\n )\n }\n}\n\nSidebarLink.propTypes = {\n link: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n linkClasses: PropTypes.string.isRequired,\n}\n\nexport default SidebarLink\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport SidebarLink from './SidebarLink'\n\nconst SidebarList = ({ items, location }) => {\n const linkClasses = `midgrey fw4 hover-blue-l2`\n const activeLinkClasses = `sidebarlink-active blue fw6`\n\n return (\n <ul className=\"relative sidebar-list ma0 pa0 list mb5 pl6 mt1\">\n {items.map((item, j) => (\n <li key={j}>\n <SidebarLink\n link={item.link}\n title={item.title}\n linkClasses={(item.link === location.pathname ? activeLinkClasses : linkClasses)}\n />\n </li>\n ))}\n </ul>\n )\n}\n\nSidebarList.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n }).isRequired,\n ).isRequired,\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default SidebarList\n","import PropTypes from 'prop-types'\n\nconst getSidebarFile = (sidebar) => {\n try {\n \tif (sidebar == \"userguide\" || sidebar == \"devguide\")\n \t\tvar [sidebarfile] = require(`../../../../content/biodynamo/doc/sidebars/${sidebar}.yaml`)\n // declare as var here, so it's accessible outside of the try scope\n else if (sidebar == \"team\")\n var [sidebarfile] = require(`../../../../content/team/${sidebar}.yaml`)\n else if (sidebar == \"tutorial\")\n var [sidebarfile] = require(`../../../../content/tutorial/${sidebar}.yaml`) \n } catch (e) {\n // TODO: make clear error handling here\n throw e\n }\n\n return sidebarfile\n}\n\ngetSidebarFile.propTypes = {\n sidebar: PropTypes.string.isRequired,\n}\n\nexport default getSidebarFile\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport SidebarLink from './SidebarLink'\nimport SidebarList from './SidebarList'\nimport getSidebarFile from './getSidebarFile'\n\nconst SidebarNav = ({ sidebar, location }) => {\n const sidebarfile = getSidebarFile(sidebar)\n\n if (!sidebar || !sidebarfile || !sidebarfile.groups) {\n return null\n }\n\n return (\n <nav className=\"mt5 mb5 mt10-ns mb0-ns relative\" data-cy=\"sidebar\">\n {sidebarfile.groups.map((group, i) => (\n <div key={i} className=\"mt1\">\n {group.items.some(item => (item.link === location.pathname)) ?\n // Render a sidebar list with children, if any of the nested elements\n // matches our current location, so the group needs to\n <>\n <h4 className=\"f5 fw5 link pa0 ma0\">\n {group.items[0].link ?\n <SidebarLink link={group.items[0].link} title={group.group} linkClasses=\"midgrey link\" />\n : group.group\n }\n </h4>\n <SidebarList\n key={i}\n items={group.items}\n location={location}\n />\n </>\n : <h4 className=\"f5 fw5 link pa0 ma0\">{(group.items[0].link ? <SidebarLink link={group.items[0].link} title={group.group} linkClasses=\"midgrey hover-blue-l2 link\" /> : group.group)}</h4>}\n </div>\n ))}\n </nav>\n )\n}\n\nSidebarNav.defaultProps = {\n location: { pathname: `/` },\n}\n\nSidebarNav.propTypes = {\n sidebar: PropTypes.string.isRequired,\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default SidebarNav\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { graphql } from 'gatsby'\nimport url from 'url'\n\nimport { Layout } from '../../components/common/layout'\nimport { Spirit } from '../../styles/spirit-styles'\nimport { SidebarNav } from '../../components/common/sidebar'\nimport { PrevNextSection } from '../../components/common/prev-next'\nimport { PostHeader, Icon, TOC } from '../../components/common'\nimport { MetaData, getMetaImageUrls } from '../../components/common/meta'\n\nconst getGitHubLink = (absoluteFilePath) => {\n let contentFilePath = ``\n\n const gitHubRepos = [\n\n {\n regex: /^(?:\\S*\\/content\\/biodynamo\\/doc\\/user_guide\\/docs\\/)(\\S*)/i,\n url: `https://github.com/BioDynaMo/biodynamo/edit/master/doc/user_guide/docs/`,\n },\n {\n regex: /^(?:\\S*\\/content\\/biodynamo\\/doc\\/dev_guide\\/docs\\/)(\\S*)/i,\n url: `https://github.com/BioDynaMo/biodynamo/edit/master/doc/dev_guide/docs/`,\n },\n ]\n\n // Using for...of here as we need to stop iterating as soon as we have a match\n for (let repo of gitHubRepos) {\n if (repo.regex.test(absoluteFilePath)) {\n contentFilePath = url.resolve(repo.url, repo.regex.exec(absoluteFilePath)[1])\n break\n }\n }\n\n return contentFilePath\n}\n\nclass Post extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isToggleOn: false,\n }\n\n this.toggleMobileMenu = this.toggleMobileMenu.bind(this)\n }\n\n toggleMobileMenu() {\n this.setState((state) => {\n return { isToggleOn: !state.isToggleOn }\n })\n }\n\n render() {\n const { location } = this.props\n const post = this.props.data.markdownRemark\n\n const githubLink = getGitHubLink(post.fileAbsolutePath)\n\n const imageUrl = getMetaImageUrls()\n const sideBarLayout = {}\n\n const { sidebar } = post.frontmatter || ``\n const toc = post.frontmatter.toc === false ? false : true\n\n if (sidebar && toc) {\n // Layout #1: navigation left and right: sidebar and TOC\n\n sideBarLayout.leftSidebar = <SidebarNav location={location} sidebar={sidebar} />\n sideBarLayout.rightSidebar = <div className=\"nr3 sticky top-25\"><TOC className=\"pr4\" listClasses=\"mt2\" /></div>\n sideBarLayout.justification = `justify-between`\n } else if (sidebar || toc) {\n // Layout #2: navigation left only, either TOC or sidebar\n\n sideBarLayout.leftSidebar = sidebar ?\n <SidebarNav location={location} sidebar={sidebar} /> :\n <div className=\"nr3 sticky top-25\"><TOC listClasses=\"lefty\" className=\"mt5 mb5 mt10-ns mb0-ns\" showHeading={false} /></div>\n sideBarLayout.justification = `justify-start`\n } else {\n // Layout #3: no sidebar navigation\n sideBarLayout.justification = `justify-center`\n }\n\n return (\n <>\n <MetaData\n data={this.props.data}\n location={location}\n type=\"article\"\n image={imageUrl}\n />\n <Layout>\n <PostHeader location={location} />\n\n <div className={`${Spirit.page.xl} flex flex-column flex-row-ns ${sideBarLayout.justification} relative`}>\n <button\n onClick={() => this.toggleMobileMenu()}\n className=\"bg-transparent bn appearance-none absolute right-7 db dn-ns\"\n style={{ top: `-40px` }}\n >\n <Icon name=\"hamburger\" className=\"w6 h-auto stroke-white db dn-ns\" />\n </button>\n\n {sideBarLayout.leftSidebar ?\n <div className={`${(this.state.isToggleOn ? `mobile-nav-open` : ``)} w-100 w-sidebar-ns pr10 pl5 pl0-ns flex-shrink-0-l relative left-sidebar`}>\n {sideBarLayout.leftSidebar}\n </div>\n : null\n }\n <div>\n <div className={`w-100 mw-content bg-white shadow-2 br4 ${(this.state.isToggleOn ? `` : ` br--bottom`)}`}>\n <article className=\"flex-auto pa5 pa8-m pa15-l pt10-ns pb10-ns pt10-l pb10-l relative\">\n <div className=\"flex content-between items-baseline justify-between no-wrap\">\n <h1 className={`${Spirit.h1} darkgrey`}>{post.frontmatter.title}</h1>\n {githubLink &&\n <a href={githubLink}\n className=\"link no-underline midgrey flex-l dn items-start f8 absolute top-10 right-8 o-80 glow\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <Icon name=\"pencil\" className=\"w3 h3 fill-midgrey db pr2 o-80\" />\n Edit on GitHub\n </a>\n }\n </div>\n <section\n className=\"post-content external-scripts\"\n dangerouslySetInnerHTML={{ __html: post.html } }\n />\n </article>\n <div className=\"mw-content pl5 pr5 pl15-ns pr15-ns bt b--whitegrey mt5\">\n <PrevNextSection\n location={location}\n sidebar={sidebar}\n next={post.frontmatter.next}\n />\n </div>\n </div>\n {/* <FeedbackForm location={location} /> */}\n </div>\n {sideBarLayout.rightSidebar ?\n <div className=\"order-3 w-sidebar flex-shrink-0 dn db-l pt10 pl7\">\n {sideBarLayout.rightSidebar}\n </div>\n : null\n }\n </div>\n </Layout>\n </>\n )\n }\n}\n\nPost.propTypes = {\n data: PropTypes.shape({\n site: PropTypes.shape({\n siteMetadata: PropTypes.shape({\n siteUrl: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n markdownRemark: PropTypes.shape({\n frontmatter: PropTypes.shape({\n toc: PropTypes.bool,\n sidebar: PropTypes.string,\n title: PropTypes.string.isRequired,\n }).isRequired,\n }).isRequired,\n }).isRequired,\n location: PropTypes.object.isRequired,\n}\n\nexport default Post\n\nexport const articleQuery = graphql`\n query($slug: String!) {\n site {\n ...SiteMetaFields\n }\n markdownRemark(fields: { slug: {eq: $slug}}) {\n ...MarkdownFields\n }\n }\n`\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\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\nmodule.exports = baseTrim;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\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\nmodule.exports = trimmedEndIndex;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\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\nmodule.exports = toNumber;\n","var map = {\n\t\"./devguide.yaml\": 95545,\n\t\"./userguide.yaml\": 27871\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 75331;","var map = {\n\t\"./team.yaml\": 80753\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 23293;","var map = {\n\t\"./tutorial.yaml\": 38891\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 66631;"],"names":["prev","next","className","Link","to","link","Icon","name","group","Spirit","title","sidebar","location","sidebarfile","getSidebarFile","groups","flatSidebar","section","items","push","currentIndex","item","pathname","url","description","linkClasses","match","href","target","rel","props","map","j","key","require","e","propTypes","PropTypes","SidebarNav","i","some","defaultProps","Post","state","isToggleOn","toggleMobileMenu","bind","this","setState","render","post","data","markdownRemark","githubLink","absoluteFilePath","contentFilePath","regex","repo","test","exec","getGitHubLink","fileAbsolutePath","imageUrl","getMetaImageUrls","sideBarLayout","frontmatter","toc","leftSidebar","rightSidebar","listClasses","justification","showHeading","type","image","onClick","style","top","dangerouslySetInnerHTML","__html","html","React","module","exports","array","iteratee","index","length","trimmedEndIndex","reTrimStart","string","slice","replace","identity","value","reWhitespace","charAt","baseFindIndex","baseIteratee","toInteger","nativeMax","Math","max","predicate","fromIndex","arrayEach","baseEach","castFunction","isArray","collection","toNumber","INFINITY","toFinite","result","remainder","baseTrim","isObject","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object","resolve"],"sourceRoot":""}