-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcomponent---src-templates-docs-js-4f1b62d3e1f69d60d823.js.map
1 lines (1 loc) · 58.6 KB
/
component---src-templates-docs-js-4f1b62d3e1f69d60d823.js.map
1
{"version":3,"sources":["webpack:///./src/templates/docs.js","webpack:///./src/utils/slugify.js","webpack:///./src/utils/createOgUrl.js","webpack:///./src/templates/components/Sidebar/Section.js","webpack:///./src/templates/components/ChevronSvg/index.js","webpack:///./src/components/MarkdownPage/index.js","webpack:///./src/components/MarkdownPage/MarkdownPage.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./src/components/MarkdownHeader/index.js","webpack:///./src/components/MarkdownHeader/MarkdownHeader.js","webpack:///./src/templates/components/NavigationFooter/index.js","webpack:///./src/templates/components/NavigationFooter/NavigationFooter.js","webpack:///./src/components/StickyResponsiveSidebar/index.js","webpack:///./src/components/StickyResponsiveSidebar/StickyResponsiveSidebar.js","webpack:///./src/templates/components/Sidebar/index.js","webpack:///./src/templates/components/Sidebar/Sidebar.js","webpack:///./src/utils/isItemActive.js","webpack:///./node_modules/slugify/index.js","webpack:///./src/templates/components/Sidebar/ScrollSyncSection.js","webpack:///./src/utils/findSectionForPath.js","webpack:///./src/utils/toCommaSeparatedList.js","webpack:///./src/utils/createLink.js"],"names":["__webpack_require__","r","__webpack_exports__","Glamor","d","pageQuery","components_MarkdownPage__WEBPACK_IMPORTED_MODULE_0__","prop_types__WEBPACK_IMPORTED_MODULE_1__","prop_types__WEBPACK_IMPORTED_MODULE_1___default","n","components_Layout__WEBPACK_IMPORTED_MODULE_3__","utils_createLink__WEBPACK_IMPORTED_MODULE_4__","utils_sectionList__WEBPACK_IMPORTED_MODULE_5__","Docs","_ref","data","location","createElement","createLink","createLinkDocs","markdownRemark","sectionList","sectionListDocs","titlePostfix","propTypes","PropTypes","object","isRequired","slugify__WEBPACK_IMPORTED_MODULE_0__","slugify__WEBPACK_IMPORTED_MODULE_0___default","string","directory","filename","slugify","slug","urlRoot","replace","Section","state","uid","Math","random","render","_ref2","_ref3","_this$props","this","props","activeItemId","isActive","isScrollSync","onLinkClick","onSectionTitleClick","section","aria-expanded","aria-controls","css","cursor","backgroundColor","border","marginTop","onClick","_MetaTitle__WEBPACK_IMPORTED_MODULE_6__","cssProps","media","greaterThan","color","colors","text","subtle",":hover","title","_ChevronSvg__WEBPACK_IMPORTED_MODULE_7__","marginLeft","transform","transition","lessThan","display","id","fontFeatureSettings","marginBottom","items","map","item","index","key","isItemActive","isOrdered","Object","assign","subitems","subitem","React","Component","ChevronSvg","_ref$size","size","_ref$cssProps","viewBox","version","x","y","width","height","fill","_MarkdownPage__WEBPACK_IMPORTED_MODULE_0__","MarkdownPage","getPageById","templateFile","sectionItems","flattenedSectionItems","concat","apply","linkId","find","_ref$authors","authors","date","enableScrollSync","ogDescription","_ref$titlePostfix","hasAuthors","length","titlePrefix","frontmatter","prev","next","components_Flex__WEBPACK_IMPORTED_MODULE_5__","direction","grow","shrink","halign","flex","position","zIndex","components_TitleAndMetaTags__WEBPACK_IMPORTED_MODULE_10__","ogUrl","createOgUrl","fields","components_Container__WEBPACK_IMPORTED_MODULE_4__","sharedStyles","articleLayout","container","type","components_MarkdownHeader__WEBPACK_IMPORTED_MODULE_6__","toCommaSeparatedList","author","link","href","url","name","content","markdown","dangerouslySetInnerHTML","__html","html","path","editLink","sidebar","components_StickyResponsiveSidebar__WEBPACK_IMPORTED_MODULE_9__","defaultActiveSection","findSectionForPath","pathname","templates_components_NavigationFooter__WEBPACK_IMPORTED_MODULE_7__","dP","f","FProto","Function","prototype","nameRE","configurable","get","match","e","createHTML","_MarkdownHeader__WEBPACK_IMPORTED_MODULE_0__","MarkdownHeader","_Object$assign","components_Flex__WEBPACK_IMPORTED_MODULE_1__","valign","dark","fonts","header","_NavigationFooter__WEBPACK_IMPORTED_MODULE_0__","NavigationFooter","background","white","paddingTop","paddingBottom","components_Container__WEBPACK_IMPORTED_MODULE_3__","components_Flex__WEBPACK_IMPORTED_MODULE_4__","between","paddingRight","basis","SecondaryLabel","PrimaryLink","to","textAlign","shape","_ref4","children","updatedUrl","gatsby__WEBPACK_IMPORTED_MODULE_5__","borderColor","fontSize","borderBottomWidth","borderBottomStyle","_ref5","brand","small","_StickyResponsiveSidebar__WEBPACK_IMPORTED_MODULE_0__","StickyResponsiveSidebar","_this","_Component","call","_openNavMenu","setState","open","_closeNavMenu","smallScreenSidebarStyles","top","left","bottom","right","overflowY","WebkitOverflowScrolling","pointerEvents","iconOffset","menuOpacity","menuOffset","style","opacity","marginRight","borderLeft","templates_components_Sidebar__WEBPACK_IMPORTED_MODULE_4__","closeParentMenu","darker","borderRadius","boxShadow","role","tabIndex","components_Container__WEBPACK_IMPORTED_MODULE_2__","flexDirection","alignItems","overflow","alignSelf","templates_components_ChevronSvg__WEBPACK_IMPORTED_MODULE_6__","_Sidebar__WEBPACK_IMPORTED_MODULE_0__","Sidebar","context","activeSection","_this2","SectionComponent","ScrollSyncSection","components_Flex__WEBPACK_IMPORTED_MODULE_2__","paddingLeft","_toggleSection","hash","indexOf","substr","toAnchor","includes","split","slice","factory","charMap","JSON","parse","options","Error","replacement","reduce","result","ch","remove","trim","lower","toLowerCase","extend","customMap","module","exports","itemTopOffsets","calculateItemTopOffsets","bind","_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default","handleResize","handleScroll","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","itemIds","_getItemIds","_getElementTopOffsetsById","itemTopOffset","i","nextItemTopOffset","scrollY","offsetTop","_Section__WEBPACK_IMPORTED_MODULE_5__","subItemIds","current","ids","element","document","getElementById","filter","sections","slugId","forEach","some","addString","list","push","array","renderCallback","gatsby__WEBPACK_IMPORTED_MODULE_0__","linkCss","activeLinkCss","activeLinkBefore","fontWeight","_activeLinkBefore","borderBottom","&:hover"],"mappings":"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","file":"component---src-templates-docs-js-4f1b62d3e1f69d60d823.js","sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport MarkdownPage from 'components/MarkdownPage';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {graphql} from 'gatsby';\nimport Layout from 'components/Layout';\nimport {createLinkDocs} from 'utils/createLink';\nimport {sectionListDocs} from 'utils/sectionList';\n\nconst Docs = ({data, location}) => (\n <Layout location={location}>\n <MarkdownPage\n createLink={createLinkDocs}\n location={location}\n markdownRemark={data.markdownRemark}\n sectionList={sectionListDocs}\n titlePostfix=\" – Packem\"\n />\n </Layout>\n);\n\nDocs.propTypes = {\n data: PropTypes.object.isRequired,\n};\n\nexport const pageQuery = graphql`\n query TemplateDocsMarkdown($slug: String!) {\n markdownRemark(fields: {slug: {eq: $slug}}) {\n html\n frontmatter {\n title\n next\n }\n fields {\n path\n slug\n }\n }\n }\n`;\n\nexport default Docs;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport slugify from 'slugify';\n\nexport default (string: string, directory?: string): string => {\n const filename = slugify(string) + '.html';\n\n return directory ? `/${directory}/${filename}` : filename;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport {urlRoot} from 'site-constants';\n\nexport default (slug: string): string | null =>\n slug == null ? null : `${urlRoot}/${slug.replace(/^\\//, '')}`;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport React from 'react';\nimport {colors, media} from 'theme';\nimport isItemActive from 'utils/isItemActive';\nimport MetaTitle from '../MetaTitle';\nimport ChevronSvg from '../ChevronSvg';\n\nclass Section extends React.Component {\n state = {uid: ('' + Math.random()).replace(/\\D/g, '')};\n render() {\n const {\n activeItemId,\n createLink,\n isActive,\n isScrollSync,\n location,\n onLinkClick,\n onSectionTitleClick,\n section,\n } = this.props;\n const uid = 'section_' + this.state.uid;\n return (\n <div>\n <button\n aria-expanded={isActive}\n aria-controls={uid}\n css={{\n cursor: 'pointer',\n backgroundColor: 'transparent',\n border: 0,\n marginTop: 10,\n }}\n onClick={onSectionTitleClick}>\n <MetaTitle\n cssProps={{\n [media.greaterThan('small')]: {\n color: isActive ? colors.text : colors.subtle,\n\n ':hover': {\n color: colors.text,\n },\n },\n }}>\n {section.title}\n <ChevronSvg\n cssProps={{\n marginLeft: 7,\n transform: isActive ? 'rotateX(180deg)' : 'rotateX(0deg)',\n transition: 'transform 0.2s ease',\n\n [media.lessThan('small')]: {\n display: 'none',\n },\n }}\n />\n </MetaTitle>\n </button>\n <ul\n id={uid}\n css={{\n fontFeatureSettings: \"'tnum'\",\n marginBottom: 10,\n\n [media.greaterThan('small')]: {\n display: isActive ? 'block' : 'none',\n },\n }}>\n {section.items.map((item, index) => (\n <li\n key={item.id}\n css={{\n marginTop: 5,\n }}>\n {createLink({\n isActive: isScrollSync\n ? activeItemId === item.id\n : isItemActive(location, item),\n item: section.isOrdered\n ? {...item, title: `${index + 1}. ${item.title}`}\n : item,\n location,\n onLinkClick,\n section,\n })}\n\n {item.subitems && (\n <ul css={{marginLeft: 20}}>\n {item.subitems.map(subitem => (\n <li key={subitem.id}>\n {createLink({\n isActive: isScrollSync\n ? activeItemId === subitem.id\n : isItemActive(location, subitem),\n item: subitem,\n location,\n onLinkClick,\n section,\n })}\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n }\n}\n\nexport default Section;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport React from 'react';\n\ntype Props = {\n size: number,\n cssProps: Object,\n};\n\nconst ChevronSvg = ({size = 10, cssProps = {}}: Props) => (\n <svg\n css={cssProps}\n viewBox=\"0 0 926.23699 573.74994\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n width={size}\n height={size}>\n <g transform=\"translate(904.92214,-879.1482)\">\n <path\n d={`\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n `}\n fill=\"currentColor\"\n />\n </g>\n </svg>\n);\n\nexport default ChevronSvg;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport MarkdownPage from './MarkdownPage';\n\nexport default MarkdownPage;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport Container from 'components/Container';\nimport Flex from 'components/Flex';\nimport MarkdownHeader from 'components/MarkdownHeader';\nimport NavigationFooter from 'templates/components/NavigationFooter';\nimport React from 'react';\nimport StickyResponsiveSidebar from 'components/StickyResponsiveSidebar';\nimport TitleAndMetaTags from 'components/TitleAndMetaTags';\nimport findSectionForPath from 'utils/findSectionForPath';\nimport toCommaSeparatedList from 'utils/toCommaSeparatedList';\nimport {sharedStyles} from 'theme';\nimport createOgUrl from 'utils/createOgUrl';\n\nimport type {Node} from 'types';\n\ntype Props = {\n authors: Array<string>,\n createLink: Function, // TODO: Add better flow type once we Flow-type createLink\n date?: string,\n enableScrollSync?: boolean,\n ogDescription: string,\n location: Location,\n markdownRemark: Node,\n sectionList: Array<Object>, // TODO: Add better flow type once we have the Section component\n titlePostfix: string,\n};\n\nconst getPageById = (sectionList: Array<Object>, templateFile: ?string) => {\n if (!templateFile) {\n return null;\n }\n\n const sectionItems = sectionList.map(section => section.items);\n const flattenedSectionItems = [].concat.apply([], sectionItems);\n const linkId = templateFile.replace('.html', '');\n\n return flattenedSectionItems.find(item => item.id === linkId);\n};\n\nconst MarkdownPage = ({\n authors = [],\n createLink,\n date,\n enableScrollSync,\n ogDescription,\n location,\n markdownRemark,\n sectionList,\n titlePostfix = '',\n}: Props) => {\n const hasAuthors = authors.length > 0;\n const titlePrefix = markdownRemark.frontmatter.title || '';\n\n const prev = getPageById(sectionList, markdownRemark.frontmatter.prev);\n const next = getPageById(sectionList, markdownRemark.frontmatter.next);\n\n return (\n <Flex\n direction=\"column\"\n grow=\"1\"\n shrink=\"0\"\n halign=\"stretch\"\n css={{\n width: '100%',\n flex: '1 0 auto',\n position: 'relative',\n zIndex: 0,\n }}>\n <TitleAndMetaTags\n ogDescription={ogDescription}\n ogUrl={createOgUrl(markdownRemark.fields.slug)}\n title={`${titlePrefix}${titlePostfix}`}\n />\n <div css={{flex: '1 0 auto'}}>\n <Container>\n <div css={sharedStyles.articleLayout.container}>\n <Flex type=\"article\" direction=\"column\" grow=\"1\" halign=\"stretch\">\n <MarkdownHeader title={titlePrefix} />\n\n {(date || hasAuthors) && (\n <div css={{marginTop: 15}}>\n {date}{' '}\n {hasAuthors && (\n <span>\n by{' '}\n {toCommaSeparatedList(authors, author => (\n <a\n css={sharedStyles.link}\n href={author.frontmatter.url}\n key={author.frontmatter.name}>\n {author.frontmatter.name}\n </a>\n ))}\n </span>\n )}\n </div>\n )}\n\n <div css={sharedStyles.articleLayout.content}>\n <div\n css={[sharedStyles.markdown]}\n dangerouslySetInnerHTML={{__html: markdownRemark.html}}\n />\n\n {markdownRemark.fields.path && (\n <div css={{marginTop: 80}}>\n <a\n css={sharedStyles.articleLayout.editLink}\n href={`https://github.com/packem/packem.github.io/tree/dev/${\n markdownRemark.fields.path\n }`}>\n Edit this page\n </a>\n </div>\n )}\n </div>\n </Flex>\n\n <div css={sharedStyles.articleLayout.sidebar}>\n <StickyResponsiveSidebar\n enableScrollSync={enableScrollSync}\n createLink={createLink}\n defaultActiveSection={findSectionForPath(\n location.pathname,\n sectionList,\n )}\n location={location}\n sectionList={sectionList}\n />\n </div>\n </div>\n </Container>\n </div>\n\n {(next || prev) && (\n <NavigationFooter location={location} next={next} prev={prev} />\n )}\n </Flex>\n );\n};\n\nexport default MarkdownPage;\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport MarkdownHeader from './MarkdownHeader';\n\nexport default MarkdownHeader;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport Flex from 'components/Flex';\nimport React from 'react';\nimport {colors, fonts, media} from 'theme';\n\nconst MarkdownHeader = ({title}: {title: string}) => (\n <Flex type=\"header\" halign=\"space-between\" valign=\"baseline\">\n <h1\n css={{\n color: colors.dark,\n marginBottom: 0,\n marginTop: 40,\n ...fonts.header,\n\n [media.size('medium')]: {\n marginTop: 60,\n },\n\n [media.greaterThan('large')]: {\n marginTop: 80,\n },\n }}>\n {title}\n </h1>\n </Flex>\n);\n\nexport default MarkdownHeader;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport NavigationFooter from './NavigationFooter';\n\nexport default NavigationFooter;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport Container from 'components/Container';\nimport Flex from 'components/Flex';\nimport {Link} from 'gatsby';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {colors, fonts, media} from 'theme';\n\nconst NavigationFooter = ({next, prev, location}) => {\n return (\n <div\n css={{\n background: colors.dark,\n color: colors.white,\n paddingTop: 50,\n paddingBottom: 50,\n }}>\n <Container>\n <Flex\n type=\"ul\"\n halign=\"space-between\"\n css={{\n [media.between('small', 'medium')]: {\n paddingRight: 240,\n },\n\n [media.between('large', 'largerSidebar')]: {\n paddingRight: 280,\n },\n\n [media.between('largerSidebar', 'sidebarFixed', true)]: {\n paddingRight: 380,\n },\n }}>\n <Flex basis=\"50%\" type=\"li\">\n {prev && (\n <div>\n <SecondaryLabel>Previous article</SecondaryLabel>\n <div\n css={{\n paddingTop: 10,\n }}>\n <PrimaryLink location={location} to={`${prev.id}.html`}>\n {prev.title}\n </PrimaryLink>\n </div>\n </div>\n )}\n </Flex>\n {next && (\n <Flex\n halign=\"flex-end\"\n basis=\"50%\"\n type=\"li\"\n css={{\n textAlign: 'right',\n }}>\n <div>\n <SecondaryLabel>Next article</SecondaryLabel>\n <div\n css={{\n paddingTop: 10,\n }}>\n <PrimaryLink location={location} to={`${next.id}.html`}>\n {next.title}\n </PrimaryLink>\n </div>\n </div>\n </Flex>\n )}\n </Flex>\n </Container>\n </div>\n );\n};\n\nNavigationFooter.propTypes = {\n next: PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n }),\n prev: PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n }),\n};\n\nexport default NavigationFooter;\n\nconst PrimaryLink = ({children, to, location}) => {\n // quick fix\n // TODO: replace this with better method of getting correct full url\n const updatedUrl =\n (location && location.pathname.replace(/\\/[^/]+\\.html/, '/' + to)) || to;\n return (\n <Link\n css={{\n display: 'inline',\n borderColor: colors.subtle,\n transition: 'border-color 0.2s ease',\n fontSize: 30,\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n\n [media.lessThan('large')]: {\n fontSize: 24,\n },\n [media.size('xsmall')]: {\n fontSize: 16,\n },\n ':hover': {\n borderColor: colors.white,\n },\n }}\n to={updatedUrl}>\n {children}\n </Link>\n );\n};\n\nconst SecondaryLabel = ({children}) => (\n <div\n css={{\n color: colors.brand,\n ...fonts.small,\n }}>\n {children}\n </div>\n);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport StickyResponsiveSidebar from './StickyResponsiveSidebar';\n\nexport default StickyResponsiveSidebar;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport Container from 'components/Container';\nimport React, {Component} from 'react';\nimport Sidebar from 'templates/components/Sidebar';\nimport {colors, media} from 'theme';\nimport ChevronSvg from 'templates/components/ChevronSvg';\n\ntype State = {\n open: boolean,\n};\n\ntype Props = {\n enableScrollSync?: boolean,\n createLink: Function, // TODO: Add better flow type once we Flow-type createLink\n defaultActiveSection: string,\n location: Location,\n sectionList: Array<Object>, // TODO: Add better flow type once we have the Section component\n};\n\nclass StickyResponsiveSidebar extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n open: false,\n };\n }\n\n _openNavMenu = () => {\n this.setState({open: !this.state.open});\n };\n\n _closeNavMenu = () => {\n this.setState({open: false});\n };\n\n render() {\n const {open} = this.state;\n const smallScreenSidebarStyles = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'fixed',\n backgroundColor: colors.white,\n zIndex: 2,\n height: '100vh',\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch',\n pointerEvents: open ? 'auto' : 'none',\n };\n\n const smallScreenBottomBarStyles = {\n display: 'inline-block',\n };\n\n const iconOffset = open ? 8 : -4;\n const menuOpacity = open ? 1 : 0;\n const menuOffset = open ? 0 : 40;\n\n // TODO: role and aria props for 'close' button?\n return (\n <div>\n <div\n style={{\n opacity: menuOpacity,\n transition: 'opacity 0.5s ease',\n }}\n css={{\n [media.lessThan('small')]: smallScreenSidebarStyles,\n\n [media.greaterThan('medium')]: {\n marginRight: -999,\n paddingRight: 999,\n backgroundColor: '#f7f7f7',\n },\n\n [media.between('medium', 'sidebarFixed', true)]: {\n position: 'fixed',\n zIndex: 2,\n height: '100%',\n },\n\n [media.greaterThan('small')]: {\n position: 'fixed',\n zIndex: 2,\n height: 'calc(100vh - 60px)',\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch',\n marginRight: -999,\n paddingRight: 999,\n backgroundColor: '#f7f7f7',\n opacity: '1 !important',\n },\n\n [media.size('small')]: {\n height: 'calc(100vh - 40px)',\n },\n\n [media.between('medium', 'large')]: {\n height: 'calc(100vh - 50px)',\n },\n\n [media.greaterThan('sidebarFixed')]: {\n borderLeft: '1px solid #ececec',\n },\n }}>\n <div\n style={{\n transform: `translate(0px, ${menuOffset}px)`,\n transition: 'transform 0.5s ease',\n }}\n css={{\n marginTop: 60,\n\n [media.size('xsmall')]: {\n marginTop: 40,\n },\n\n [media.between('small', 'medium')]: {\n marginTop: 0,\n },\n\n [media.between('medium', 'large')]: {\n marginTop: 50,\n },\n\n [media.greaterThan('small')]: {\n transform: 'none !important',\n },\n }}>\n <Sidebar closeParentMenu={this._closeNavMenu} {...this.props} />\n </div>\n </div>\n <div\n css={{\n backgroundColor: colors.darker,\n bottom: 44, // iOS Safari's inert \"bottom 44px\"\n color: colors.brand,\n display: 'none', // gets overriden at small screen sizes\n cursor: 'pointer',\n position: 'fixed',\n right: 20,\n zIndex: 3,\n borderRadius: '50%',\n border: '1px solid rgba(255, 255, 255, 0.1)',\n boxShadow: '0 0 20px rgba(0, 0, 0, 0.3)',\n [media.lessThan('small')]: smallScreenBottomBarStyles,\n }}\n onClick={this._openNavMenu}\n role=\"button\"\n tabIndex={0}>\n <Container>\n <div\n css={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n height: 60,\n [media.between('medium', 'large')]: {\n height: 50,\n },\n [media.lessThan('small')]: {\n height: 60,\n overflow: 'hidden',\n alignItems: 'flex-start',\n },\n }}>\n <div\n css={{\n width: 20,\n height: 20,\n alignSelf: 'center',\n display: 'flex',\n flexDirection: 'column',\n color: colors.brand,\n }}>\n <ChevronSvg\n size={15}\n cssProps={{\n transform: `translate(2px, ${iconOffset}px) rotate(180deg)`,\n transition: 'transform 0.2s ease',\n }}\n />\n <ChevronSvg\n size={15}\n cssProps={{\n transform: `translate(2px, ${0 - iconOffset}px)`,\n transition: 'transform 0.2s ease',\n }}\n />\n </div>\n </div>\n </Container>\n </div>\n </div>\n );\n }\n}\n\nexport default StickyResponsiveSidebar;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport Sidebar from './Sidebar';\n\nexport default Sidebar;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport React, {Component} from 'react';\nimport Flex from 'components/Flex';\nimport Section from './Section';\nimport ScrollSyncSection from './ScrollSyncSection';\nimport {media} from 'theme';\n\nclass Sidebar extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n activeSection: props.defaultActiveSection,\n };\n }\n\n render() {\n const {\n closeParentMenu,\n createLink,\n enableScrollSync,\n location,\n sectionList,\n } = this.props;\n const {activeSection} = this.state;\n\n const SectionComponent = enableScrollSync ? ScrollSyncSection : Section;\n\n return (\n <Flex\n type=\"nav\"\n direction=\"column\"\n halign=\"stretch\"\n css={{\n width: '100%',\n paddingLeft: 20,\n position: 'relative',\n\n [media.greaterThan('largerSidebar')]: {\n paddingLeft: 40,\n },\n\n [media.lessThan('small')]: {\n paddingBottom: 100,\n },\n }}>\n {sectionList.map((section, index) => (\n <SectionComponent\n createLink={createLink}\n isActive={activeSection === section || sectionList.length === 1}\n key={index}\n location={location}\n onLinkClick={closeParentMenu}\n onSectionTitleClick={() => this._toggleSection(section)}\n section={section}\n />\n ))}\n </Flex>\n );\n }\n\n _toggleSection(section) {\n this.setState(state => ({\n activeSection: state.activeSection === section ? null : section,\n }));\n }\n}\n\nexport default Sidebar;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport slugify from 'utils/slugify';\n\nconst toAnchor = (href: string = ''): string => {\n const index = href.indexOf('#');\n return index >= 0 ? href.substr(index) : '';\n};\n\n// TODO Account for redirect_from URLs somehow; they currently won't match.\n// This comment should not be true anymore since we're using 300 redirects\n\ntype Item = {\n id: string,\n href: string,\n};\n\nconst isItemActive = (location: Location, item: Item): boolean => {\n if (location.hash) {\n if (item.href) {\n return location.hash === toAnchor(item.href);\n }\n } else if (item.id.includes('html')) {\n return location.pathname.includes(item.id);\n }\n const slugId = location.pathname.split('/').slice(-1)[0];\n return slugId === slugify(item.id);\n};\n\nexport default isItemActive;\n","\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n /* eslint-disable */\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₹\":\"indian rupee\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\"}')\n /* eslint-enable */\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var slug = string.split('')\n .reduce(function (result, ch) {\n return result + (charMap[ch] || ch)\n // allowed\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]/g, '')\n }, '')\n // trim leading/trailing spaces\n .trim()\n // convert spaces\n .replace(/[-\\s]+/g, options.replacement || '-')\n\n return options.lower ? slug.toLowerCase() : slug\n }\n\n replace.extend = function (customMap) {\n for (var key in customMap) {\n charMap[key] = customMap[key]\n }\n }\n\n return replace\n}))\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the CC-BY-4.0 license found\n * in the LICENSE file in the root directory of this source tree.\n *\n * @emails react-core\n */\n\nimport React, {Component} from 'react';\nimport Section from './Section';\n\nclass ScrollSyncSection extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n activeItemId: '',\n itemTopOffsets: [],\n };\n\n this.calculateItemTopOffsets = this.calculateItemTopOffsets.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n }\n\n componentDidMount() {\n this.calculateItemTopOffsets();\n\n window.addEventListener('resize', this.handleResize);\n window.addEventListener('scroll', this.handleScroll);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n window.removeEventListener('scroll', this.handleScroll);\n }\n\n calculateItemTopOffsets() {\n const {section} = this.props;\n\n const itemIds = _getItemIds(section.items);\n this.setState({\n itemTopOffsets: _getElementTopOffsetsById(itemIds),\n });\n }\n\n handleResize() {\n this.calculateItemTopOffsets();\n this.handleScroll();\n }\n\n handleScroll() {\n const {itemTopOffsets} = this.state;\n const item = itemTopOffsets.find((itemTopOffset, i) => {\n const nextItemTopOffset = itemTopOffsets[i + 1];\n if (nextItemTopOffset) {\n return (\n window.scrollY >= itemTopOffset.offsetTop &&\n window.scrollY < nextItemTopOffset.offsetTop\n );\n }\n return window.scrollY >= itemTopOffset.offsetTop;\n });\n this.setState({\n activeItemId: item ? item.id : '',\n });\n }\n\n render() {\n const {activeItemId} = this.state;\n return <Section isScrollSync activeItemId={activeItemId} {...this.props} />;\n }\n}\n\nconst _getItemIds = items =>\n items\n .map(item => {\n let subItemIds = [];\n if (item.subitems) {\n subItemIds = item.subitems.map(subitem => subitem.id);\n }\n return [item.id, ...subItemIds];\n })\n .reduce((prev, current) => prev.concat(current));\n\nconst _getElementTopOffsetsById = ids =>\n ids\n .map(id => {\n const element = document.getElementById(id);\n if (!element) {\n return null;\n }\n return {\n id,\n offsetTop: element.offsetTop,\n };\n })\n .filter(item => item);\n\nexport default ScrollSyncSection;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport slugify from './slugify';\n\n/**\n * Helper method to locate the section containing the current URL/path.\n * This method specifically works with the nav_*.yml format.\n */\n\ntype Item = {\n id: string,\n subitems: Array<Item>,\n};\n\ntype Section = {\n items: Array<Item>,\n};\n\nconst findSectionForPath = (\n pathname: string,\n sections: Array<Section>,\n): Section | void => {\n let activeSection;\n const slugId = pathname.split('/').slice(-1)[0];\n\n sections.forEach(section => {\n const match = section.items.some(\n item =>\n slugId === slugify(item.id) ||\n (item.subitems &&\n item.subitems.some(subitem => slugId === slugify(subitem.id))),\n );\n if (match) {\n activeSection = section;\n }\n });\n\n return activeSection;\n};\n\nexport default findSectionForPath;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport React from 'react';\n\nimport type {Node} from 'react';\n\nconst addString = (list: Array<Node>, string: string) =>\n list.push(<span key={`${list.length}-${string}`}>{string}</span>);\n\nconst toCommaSeparatedList = (\n array: Array<any>,\n renderCallback: Function,\n): Array<any> => {\n if (array.length <= 1) {\n return array.map(renderCallback);\n }\n\n const list = [];\n\n array.forEach((item, index) => {\n if (index === array.length - 1) {\n addString(list, array.length === 2 ? ' and ' : ', and ');\n list.push(renderCallback(item, index));\n } else if (index > 0) {\n addString(list, ', ');\n list.push(renderCallback(item, index));\n } else {\n list.push(renderCallback(item, index));\n }\n });\n\n return list;\n};\n\nexport default toCommaSeparatedList;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n * @flow\n */\n\nimport {Link} from 'gatsby';\nimport React from 'react';\nimport ExternalLinkSvg from 'templates/components/ExternalLinkSvg';\nimport slugify from 'utils/slugify';\nimport {colors, media} from 'theme';\n\nimport type {Node} from 'react';\n\ntype CreateLinkBaseProps = {\n isActive: boolean,\n item: Object,\n section: Object,\n};\n\nconst createLinkBlog = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n return (\n <Link css={[linkCss, isActive && activeLinkCss]} to={item.id}>\n {isActive && <span css={activeLinkBefore} />}\n {item.title}\n </Link>\n );\n};\n\nconst createLinkCommunity = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n if (item.href) {\n return (\n <a css={[linkCss]} href={item.href} target=\"_blank\" rel=\"noopener\">\n {item.title}\n <ExternalLinkSvg\n cssProps={{\n verticalAlign: -2,\n display: 'inline-block',\n marginLeft: 5,\n color: colors.subtle,\n }}\n />\n </a>\n );\n }\n return createLinkDocs({\n isActive,\n item,\n section,\n });\n};\n\nconst createLinkDocs = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n return (\n <Link\n css={[linkCss, isActive && activeLinkCss]}\n to={slugify(item.id, section.directory)}>\n {isActive && <span css={activeLinkBefore} />}\n {item.title}\n </Link>\n );\n};\n\ntype CreateLinkTutorialProps = {\n onLinkClick: Function,\n} & CreateLinkBaseProps;\n\nconst createLinkTutorial = ({\n isActive,\n item,\n onLinkClick,\n section,\n}: CreateLinkTutorialProps): Node => {\n return (\n <Link\n css={[linkCss, isActive && activeLinkCss]}\n onClick={onLinkClick}\n to={item.href}>\n {isActive && <span css={activeLinkBefore} />}\n {item.title}\n </Link>\n );\n};\n\nconst activeLinkCss = {\n fontWeight: 700,\n};\n\nconst activeLinkBefore = {\n width: 4,\n height: 25,\n borderLeft: `4px solid ${colors.brand}`,\n paddingLeft: 16,\n position: 'absolute',\n left: 0,\n marginTop: -3,\n\n [media.greaterThan('largerSidebar')]: {\n left: 15,\n },\n};\n\nconst linkCss = {\n color: colors.text,\n display: 'inline-block',\n borderBottom: '1px solid transparent',\n transition: 'border 0.2s ease',\n marginTop: 5,\n\n '&:hover': {\n color: colors.subtle,\n },\n};\n\nexport {\n createLinkBlog,\n createLinkCommunity,\n createLinkDocs,\n createLinkTutorial,\n};\n"],"sourceRoot":""}