{"version":3,"sources":["webpack:///./src/components/StickyResponsiveSidebar/StickyResponsiveSidebar.js","webpack:///./src/utils/isItemActive.js","webpack:///./src/templates/tutorial.js","webpack:///./src/components/MarkdownHeader/MarkdownHeader.js","webpack:///./src/components/StickyResponsiveSidebar/index.js","webpack:///./src/utils/toCommaSeparatedList.js","webpack:///./src/templates/components/Sidebar/index.js","webpack:///./src/templates/components/NavigationFooter/NavigationFooter.js","webpack:///./src/templates/components/Sidebar/ScrollSyncSection.js","webpack:///./node_modules/slugify/slugify.js","webpack:///./src/utils/createLink.js","webpack:///./src/templates/components/ChevronSvg/index.js","webpack:///./src/components/MarkdownPage/MarkdownPage.js","webpack:///./src/utils/findSectionForPath.js","webpack:///./node_modules/tocbot/src/js/default-options.js","webpack:///./src/components/MarkdownHeader/index.js","webpack:///./src/utils/createOgUrl.js","webpack:///./node_modules/tocbot/src/js/index.js","webpack:///./src/components/TOC.js","webpack:///./src/templates/components/Sidebar/Section.js","webpack:///./node_modules/tocbot/src/js/build-html.js","webpack:///./src/components/MarkdownPage/index.js","webpack:///./src/utils/slugify.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./src/templates/components/Sidebar/Sidebar.js","webpack:///./node_modules/tocbot/src/js/parse-content.js","webpack:///./src/templates/components/NavigationFooter/index.js","webpack:///./node_modules/tocbot/src/js/scroll-smooth/index.js","webpack:///./src/components/MarkdownPage/DownloadPDF.js"],"names":["defaultScrollTop","StickyResponsiveSidebar","props","_openNavMenu","setState","open","state","_closeNavMenu","componentDidMount","latoutNode","document","getElementById","currentClass","location","pathname","split","activeNode","getElementsByClassName","length","parentElement","ariaExpanded","addEventListener","e","scrollTop","target","componentWillUnmount","removeEventListener","render","this","smallScreenSidebarStyles","top","left","bottom","right","position","backgroundColor","colors","white","zIndex","height","overflowY","WebkitOverflowScrolling","pointerEvents","iconOffset","menuOpacity","menuOffset","style","id","opacity","transition","css","media","lessThan","greaterThan","marginLeft","paddingLeft","between","size","transform","marginTop","closeParentMenu","darker","color","brand","display","cursor","borderRadius","border","boxShadow","onClick","role","tabIndex","flexDirection","alignItems","overflow","width","alignSelf","cssProps","Component","isItemActive","item","directory","href","startIndex","indexOf","endIndex","lastIndexOf","substring","includes","pathArray","slice","slugify","pageQuery","Tutorial","data","sectionListTutorialTmp","sectionListTutorial_en","markdownRemark","fields","langKey","sectionListTutorial_zh","console","log","createLink","createLinkTutorial","sectionList","MarkdownHeader","title","type","halign","valign","dark","marginBottom","fonts","header","addString","list","string","push","key","toCommaSeparatedList","array","renderCallback","map","forEach","index","Sidebar","NavigationFooter","next","prev","background","paddingTop","paddingBottom","paddingRight","basis","SecondaryLabel","PrimaryLink","to","textAlign","propTypes","PropTypes","shape","isRequired","children","updatedUrl","replace","borderColor","subtle","fontSize","borderBottomWidth","borderBottomStyle","small","ScrollSyncSection","context","activeItemId","itemTopOffsets","calculateItemTopOffsets","bind","handleResize","handleScroll","window","section","itemIds","_getItemIds","items","_getElementTopOffsetsById","find","itemTopOffset","i","nextItemTopOffset","scrollY","offsetTop","isScrollSync","subItemIds","subitems","subitem","reduce","current","concat","ids","element","filter","factory","charMap","JSON","parse","locales","options","Error","locale","replacement","slug","result","ch","remove","trim","RegExp","lower","toLowerCase","strict","extend","customMap","module","exports","createLinkBlog","isActive","linkCss","activeLinkCss","activeLinkBefore","createLinkCommunity","rel","verticalAlign","createLinkDocs","onLinkClick","createLinkMicroservices","createLinkTerms","fontWeight","linkblue","borderLeft","text","borderBottom","fontweight","ChevronSvg","viewBox","version","x","y","d","fill","MarkdownPage","authors","date","enableScrollSync","ogDescription","titlePostfix","hasCurTOC","hasAuthors","titlePrefix","frontmatter","direction","grow","shrink","flex","ogUrl","createOgUrl","sharedStyles","articleLayout","container","sidebar","defaultActiveSection","findSectionForPath","article","author","link","url","name","content","markdown","dangerouslySetInnerHTML","__html","html","path","editLink","curPageTOC","sections","activeSection","slugId","currentPath","hasMatch","some","tocSelector","contentSelector","headingSelector","ignoreSelector","hasInnerContainers","linkClass","extraLinkClasses","activeLinkClass","listClass","extraListClasses","isCollapsedClass","collapsibleClass","listItemClass","activeListItemClass","collapseDepth","scrollSmooth","scrollSmoothDuration","scrollSmoothOffset","scrollEndCallback","headingsOffset","throttleTimeout","positionFixedSelector","positionFixedClass","fixedSidebarOffset","includeHtml","orderedList","scrollContainer","skipRendering","headingLabelCallback","ignoreHiddenElements","headingObjectCallback","urlRoot","root","global","buildHtml","parseContent","headingsArray","defaultOptions","tocbot","BuildHtml","ParseContent","supports","querySelector","hasOwnProperty","Object","prototype","destroy","innerHTML","warn","_scrollListener","_clickListener","init","customOptions","arguments","source","call","duration","offset","initSmoothScrolling","_buildHtml","_parseContent","selectHeadings","nestedHeadings","nestHeadingsArray","nest","throttle","updateToc","isTop","scrollingElement","eventPhase","currentTarget","timeout","event","disableTocAnimation","clearTimeout","setTimeout","enableTocAnimation","refresh","fn","threshhold","scope","last","deferTimer","now","Date","args","apply","TOC","parseInt","data-cy","showHeading","txt","onDark","className","React","defaultProps","listClasses","bool","Section","uid","Math","random","navHidden","onNavClick","localName","stopPropagation","preventDefault","renderSectionItems","onSectionTitleClick","fontFeatureSettings","userSelect","aria-expanded","isOrdered","aria-controls","outline","body","currentlyHighlighting","createEl","appendChild","createElement","a","setAttribute","onclick","childNodes","node","cloneNode","textContent","nodeName","createList","isCollapsed","child","listElement","classes","srcElement","selector","parent","firstChild","removeChild","documentElement","posFixedEl","join","updateFixedSidebarClass","topHeader","headings","heading","getHeadingTopPos","obj","offsetParent","tocLinks","querySelectorAll","tocLink","tocLis","tocLi","activeTocLink","li","parentNode","tocLists","nextSibling","removeCollapsedFromParents","filename","filenameWithSuffix","$export","toIObject","toInteger","toLength","$native","NEGATIVE_ZERO","P","F","searchElement","O","min","SectionComponent","maxHeight","_toggleSection","getLastItem","getHeadingLevel","getHeadingObject","HTMLElement","offsetHeight","headingLevel","String","curr","currentHeading","level","lastItem","counter","undefined","addNode","selectors","pageUrl","hash","stripHash","n","tagName","charAt","timeStart","timeElapsed","start","pageYOffset","opt","callback","easing","t","b","c","tgt","decodeURI","distance","getBoundingClientRect","loop","time","scrollTo","requestAnimationFrame","jump","test","focus"],"mappings":"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","file":"component---src-templates-tutorial-js-323d0804afba16df85c1.js","sourcesContent":["/**\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\nlet defaultScrollTop = 0;\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, // TODO: Add better flow type once we have the Section component\n};\n\nclass StickyResponsiveSidebar extends Component {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n open: false,\n };\n }\n _openNavMenu = () => {\n this.setState({ open: !this.state.open });\n };\n\n _closeNavMenu = () => {\n this.setState({ open: false });\n };\n\n componentDidMount() {\n // 组件挂载时将defaultScrollTop赋值滚动条的scrollTop,并记录当前页面\n let latoutNode = document.getElementById(\"navbarclass\");\n let currentClass = location.pathname.split(\"/\")[5];\n let activeNode = document.getElementsByClassName(currentClass);\n if (activeNode.length > 0) {\n activeNode[0].parentElement.parentElement.parentElement.ariaExpanded = true;\n activeNode[0].parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.ariaExpanded = true;\n }\n if (latoutNode) {\n latoutNode.addEventListener(\"scroll\", e => {\n latoutNode.scrollTop = e.target.scrollTop;\n });\n latoutNode.scrollTop = defaultScrollTop;\n }\n\n }\n\n componentWillUnmount() {\n // 组件卸载时移除监听事件,同时拿到defaultScrollTop \n let latoutNode = document.getElementById(\"navbarclass\");\n if (latoutNode) {\n latoutNode.removeEventListener(\"scroll\", e => {\n latoutNode.scrollTop = e.target.scrollTop;\n });\n defaultScrollTop = latoutNode.scrollTop;\n }\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
\n
\n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default StickyResponsiveSidebar;\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, directory): boolean => {\n if (item.href) {\n let pathname = location.pathname;\n let startIndex = pathname.indexOf('/zh/');\n let endIndex = pathname.lastIndexOf('/');\n if (startIndex == -1) {\n startIndex = pathname.indexOf('/en/');\n if (startIndex == -1) {\n startIndex = 0;\n }\n }\n if (endIndex != pathname.length - 1) {\n endIndex = pathname.length;\n }\n const currentPath = pathname.substring(startIndex, endIndex);\n if (currentPath === (directory + '/' + item.href)) {\n return true;\n }\n } else if (item.id.includes('html')) {\n return location.pathname.includes(item.id);\n }\n const pathArray = location.pathname.split('/');\n const slugId = pathArray.slice(pathArray.length - 2)[0];\n return slugId === slugify(item.id);\n};\n\nexport default isItemActive;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport MarkdownPage from 'components/MarkdownPage';\nimport React from 'react';\nimport {graphql} from 'gatsby';\nimport Layout from 'components/Layout';\nimport {createLinkTutorial} from 'utils/createLink';\nimport {sectionListTutorial_en, sectionListTutorial_zh} from 'utils/sectionList';\n\nconst Tutorial = ({data, location}) => {\n let sectionListTutorialTmp = sectionListTutorial_en;\n if (data.markdownRemark.fields.langKey === 'zh') {\n sectionListTutorialTmp = sectionListTutorial_zh;\n }\n console.log('tutorial directory');\n console.log(sectionListTutorialTmp);\n return (\n \n \n \n );\n};\n\nexport const pageQuery = graphql`\n query TemplateTutorialMarkdown($slug: String!) {\n markdownRemark(fields: {slug: {eq: $slug}}) {\n html\n frontmatter {\n title\n next\n prev\n }\n fields {\n path\n slug\n langKey\n }\n }\n }\n`;\n\nexport default Tutorial;\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 \n \n {title}\n \n \n);\n\nexport default MarkdownHeader;\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 React from 'react';\n\nimport type {Node} from 'react';\n\nconst addString = (list: Array, string: string) =>\n list.push({string});\n\nconst toCommaSeparatedList = (\n array: Array,\n renderCallback: Function,\n): Array => {\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 */\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 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 \n \n \n \n {prev && (\n
\n Previous article\n \n \n {prev.title}\n \n
\n \n )}\n
\n {next && (\n \n
\n Next article\n \n \n {next.title}\n \n
\n \n \n )}\n \n
\n \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 \n {children}\n \n );\n};\n\nconst SecondaryLabel = ({children}) => (\n \n {children}\n \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
;\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","require(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\n;\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 } else {\n root[name] = factory();\n }\n})('slugify', this, function () {\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\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"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\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"฿\":\"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\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"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\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\"}');\n var locales = JSON.parse('{\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"}}');\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 var locale = locales[options.locale] || {};\n var replacement = options.replacement || '-';\n var slug = string.split('') // replace characters based on charMap\n .reduce(function (result, ch) {\n return result + (locale[ch] || charMap[ch] || ch);\n }, '') // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '') // trim leading/trailing spaces\n .trim() // convert spaces to replacement character\n // also remove duplicates of the replacement character\n .replace(new RegExp('[\\\\s' + replacement + ']+', 'g'), replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase();\n }\n\n if (options.strict) {\n // remove anything besides letters, numbers, and the replacement char\n slug = slug.replace(new RegExp('[^a-zA-Z0-9' + replacement + ']', 'g'), '');\n }\n\n return 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 * 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 if (item.href) {\n return (\n \n {item.title}\n \n );\n }\n return (\n \n {isActive && }\n {item.title}\n \n );\n};\n\nconst createLinkCommunity = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n if (item.href) {\n return (\n \n {item.title}\n \n \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 let href = item.href ? section.directory + '/' + item.href : slugify(item.id, section.directory);\n return (\n \n {isActive && }\n {item.title}\n \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 let href = item.href ? section.directory + '/' + item.href : slugify(item.id, section.directory);\n return (\n \n {isActive && }\n {item.title}\n \n );\n};\n\nconst createLinkMicroservices = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n let href = item.href ? section.directory + '/' + item.href : slugify(item.id, section.directory);\n return (\n \n {isActive && }\n {item.title}\n \n );\n};\n\nconst createLinkTerms = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n if (item.href) {\n return (\n \n {item.title}\n \n );\n }\n return createLinkDocs({\n isActive,\n item,\n section,\n });\n};\n\nconst createLinkapi = ({\n isActive,\n item,\n section,\n}: CreateLinkBaseProps): Node => {\n let href = item.href ? section.directory + '/' + item.href : slugify(item.id, section.directory);\n return (\n \n {isActive && }\n {item.title}\n \n );\n};\n\nconst activeLinkCss = {\n fontWeight: 700,\n color: colors.linkblue,\n};\n\nconst activeLinkBefore = {\n width: 4,\n height: 25,\n borderLeft: `4px solid ${colors.linkblue}`,\n paddingLeft: 16,\n position: 'absolute',\n left: -15,\n};\n\nconst linkCss = {\n color: colors.text,\n display: 'inline-block',\n borderBottom: '1px solid transparent',\n transition: 'border 0.2s ease',\n fontSize: '16px', //定义侧目录二级标题的字体\n fontweight: 700,\n\n '&:hover': {\n color: colors.linkblue,\n },\n};\n\nexport {\n createLinkBlog,\n createLinkCommunity,\n createLinkDocs,\n createLinkTutorial,\n createLinkMicroservices,\n createLinkTerms,\n createLinkapi,\n};\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 \n \n \n \n \n);\n\nexport default ChevronSvg;\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';\nimport TOC from 'components/TOC.js';\n\nimport DownloadPDF from './DownloadPDF';\nimport type {Node} from 'types';\n\ntype Props = {\n authors: Array,\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, // TODO: Add better flow type once we have the Section component\n titlePostfix: string,\n hasCurTOC: Boolean,\n};\n\n// const getPageById = (sectionList: Array, 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 = '-SuperMap',\n hasCurTOC = true,\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 // console.log(markdownRemark.html);\n\n return (\n \n \n
\n \n
\n
\n \n
\n \n \n\n {(date || hasAuthors) && (\n
\n {date}{' '}\n {hasAuthors && (\n \n by{' '}\n {toCommaSeparatedList(authors, author => (\n \n {author.frontmatter.name}\n \n ))}\n \n )}\n
\n )}\n\n
\n {/* */}\n
\n\n {markdownRemark.fields.path && (\n
\n \n {/* Edit this page // 注释掉编辑此页的内容 */}\n \n
\n )}\n
\n \n {hasCurTOC?
\n \n
:null}\n \n
\n \n
\n\n {/* {(next || prev) && (\n \n )} */}\n \n );\n};\n\nexport default MarkdownPage;\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,\n};\n\ntype Section = {\n items: Array,\n};\n\nconst findSectionForPath = (\n pathname: string,\n sections: Array
,\n): Section | void => {\n let activeSection;\n const pathArray = pathname.split('/');\n const index = pathArray.length - 2;\n const slugId = pathArray.slice(index)[0];\n\n let startIndex = pathname.indexOf('/zh/');\n let endIndex = pathname.lastIndexOf('/');\n if (startIndex == -1) {\n startIndex = pathname.indexOf('/en/');\n if (startIndex == -1) {\n startIndex = 0;\n }\n }\n if (endIndex != pathname.length - 1) {\n endIndex = pathname.length;\n }\n const currentPath = pathname.substring(startIndex, endIndex);\n\n function hasMatch(items, directory) {\n return items.some(\n item => (item.href && currentPath === (directory + '/' + item.href)) || slugId === slugify(item.id) ||\n (item.subitems && hasMatch(item.subitems, directory))\n );\n };\n\n sections.forEach(section => {\n const match = hasMatch(section.items, section.directory);\n if (match) {\n activeSection = section;\n }\n });\n\n return activeSection;\n};\n\nexport default findSectionForPath;\n","module.exports = {\n // Where to render the table of contents.\n tocSelector: '.js-toc',\n // Where to grab the headings to build the table of contents.\n contentSelector: '.js-toc-content',\n // Which headings to grab inside of the contentSelector element.\n headingSelector: 'h1, h2, h3',\n // Headings that match the ignoreSelector will be skipped.\n ignoreSelector: '.js-toc-ignore',\n // For headings inside relative or absolute positioned containers within content\n hasInnerContainers: false,\n // Main class to add to links.\n linkClass: 'toc-link',\n // Extra classes to add to links.\n extraLinkClasses: '',\n // Class to add to active links,\n // the link corresponding to the top most heading on the page.\n activeLinkClass: 'is-active-link',\n // Main class to add to lists.\n listClass: 'toc-list',\n // Extra classes to add to lists.\n extraListClasses: '',\n // Class that gets added when a list should be collapsed.\n isCollapsedClass: 'is-collapsed',\n // Class that gets added when a list should be able\n // to be collapsed but isn't necessarily collapsed.\n collapsibleClass: 'is-collapsible',\n // Class to add to list items.\n listItemClass: 'toc-list-item',\n // Class to add to active list items.\n activeListItemClass: 'is-active-li',\n // How many heading levels should not be collapsed.\n // For example, number 6 will show everything since\n // there are only 6 heading levels and number 0 will collapse them all.\n // The sections that are hidden will open\n // and close as you scroll to headings within them.\n collapseDepth: 0,\n // Smooth scrolling enabled.\n scrollSmooth: true,\n // Smooth scroll duration.\n scrollSmoothDuration: 420,\n // Smooth scroll offset.\n scrollSmoothOffset: 0,\n // Callback for scroll end.\n scrollEndCallback: function scrollEndCallback(e) {},\n // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n headingsOffset: 1,\n // Timeout between events firing to make sure it's\n // not too rapid (for performance reasons).\n throttleTimeout: 50,\n // Element to add the positionFixedClass to.\n positionFixedSelector: null,\n // Fixed position class to add to make sidebar fixed after scrolling\n // down past the fixedSidebarOffset.\n positionFixedClass: 'is-position-fixed',\n // fixedSidebarOffset can be any number but by default is set\n // to auto which sets the fixedSidebarOffset to the sidebar\n // element's offsetTop from the top of the document on init.\n fixedSidebarOffset: 'auto',\n // includeHtml can be set to true to include the HTML markup from the\n // heading node instead of just including the textContent.\n includeHtml: false,\n // onclick function to apply to all links in toc. will be called with\n // the event as the first parameter, and this can be used to stop,\n // propagation, prevent default or perform action\n onClick: false,\n // orderedList can be set to false to generate unordered lists (ul)\n // instead of ordered lists (ol)\n orderedList: true,\n // If there is a fixed article scroll container, set to calculate titles' offset\n scrollContainer: null,\n // prevent ToC DOM rendering if it's already rendered by an external system\n skipRendering: false,\n // Optional callback to change heading labels.\n // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n // function (string) => string\n headingLabelCallback: false,\n // ignore headings that are hidden in DOM\n ignoreHiddenElements: false,\n // Optional callback to modify properties of parsed headings.\n // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n // Function has to return the same or modified obj.\n // The heading will be excluded from TOC if nothing is returned.\n // function (object, HTMLElement) => object | void\n headingObjectCallback: null\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 {urlRoot} from 'site-constants';\n\nexport default (slug: string): string | null =>\n slug == null ? null : `${urlRoot}/${slug.replace(/^\\//, '')}`;\n","/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root));\n } else if (typeof exports === 'object') {\n module.exports = factory(root);\n } else {\n root.tocbot = factory(root);\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n 'use strict'; // Default options.\n\n var defaultOptions = require('./default-options.js'); // Object to store current options.\n\n\n var options = {}; // Object for public APIs.\n\n var tocbot = {};\n\n var BuildHtml = require('./build-html.js');\n\n var ParseContent = require('./parse-content.js'); // Keep these variables at top scope once options are passed in.\n\n\n var buildHtml;\n var parseContent; // Just return if its not a browser.\n\n var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener; // Feature test\n\n if (typeof window === 'undefined' && !supports) {\n return;\n }\n\n var headingsArray; // From: https://github.com/Raynos/xtend\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n function extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n } // From: https://remysharp.com/2010/07/21/throttling-function-calls\n\n\n function throttle(fn, threshhold, scope) {\n threshhold || (threshhold = 250);\n var last;\n var deferTimer;\n return function () {\n var context = scope || this;\n var now = +new Date();\n var args = arguments;\n\n if (last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(function () {\n last = now;\n fn.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n }\n /**\n * Destroy tocbot.\n */\n\n\n tocbot.destroy = function () {\n if (!options.skipRendering) {\n // Clear HTML.\n try {\n document.querySelector(options.tocSelector).innerHTML = '';\n } catch (e) {\n console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n }\n } // Remove event listeners.\n\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false);\n document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false);\n\n if (buildHtml) {\n document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false);\n }\n } else {\n document.removeEventListener('scroll', this._scrollListener, false);\n document.removeEventListener('resize', this._scrollListener, false);\n\n if (buildHtml) {\n document.removeEventListener('click', this._clickListener, false);\n }\n }\n };\n /**\n * Initialize tocbot.\n * @param {object} customOptions\n */\n\n\n tocbot.init = function (customOptions) {\n // feature test\n if (!supports) {\n return;\n } // Merge defaults with user options.\n // Set to options variable at the top.\n\n\n options = extend(defaultOptions, customOptions || {});\n this.options = options;\n this.state = {}; // Init smooth scroll if enabled (default).\n\n if (options.scrollSmooth) {\n options.duration = options.scrollSmoothDuration;\n options.offset = options.scrollSmoothOffset;\n tocbot.scrollSmooth = require('./scroll-smooth').initSmoothScrolling(options);\n } // Pass options to these modules.\n\n\n buildHtml = BuildHtml(options);\n parseContent = ParseContent(options); // For testing purposes.\n\n this._buildHtml = buildHtml;\n this._parseContent = parseContent; // Destroy it if it exists first.\n\n tocbot.destroy(); // Get headings array.\n\n headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector); // Return if no headings are found.\n\n if (headingsArray === null) {\n return;\n } // Build nested headings array.\n\n\n var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray);\n var nestedHeadings = nestedHeadingsObj.nest; // Render.\n\n if (!options.skipRendering) {\n buildHtml.render(options.tocSelector, nestedHeadings);\n } // Update Sidebar and bind listeners.\n\n\n this._scrollListener = throttle(function (e) {\n buildHtml.updateToc(headingsArray);\n var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0;\n\n if (e && (e.eventPhase === 0 || e.currentTarget === null) || isTop) {\n buildHtml.updateToc(headingsArray);\n\n if (options.scrollEndCallback) {\n options.scrollEndCallback(e);\n }\n }\n }, options.throttleTimeout);\n\n this._scrollListener();\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false);\n document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false);\n } else {\n document.addEventListener('scroll', this._scrollListener, false);\n document.addEventListener('resize', this._scrollListener, false);\n } // Bind click listeners to disable animation.\n\n\n var timeout = null;\n this._clickListener = throttle(function (event) {\n if (options.scrollSmooth) {\n buildHtml.disableTocAnimation(event);\n }\n\n buildHtml.updateToc(headingsArray); // Timeout to re-enable the animation.\n\n timeout && clearTimeout(timeout);\n timeout = setTimeout(function () {\n buildHtml.enableTocAnimation();\n }, options.scrollSmoothDuration);\n }, options.throttleTimeout);\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false);\n } else {\n document.addEventListener('click', this._clickListener, false);\n }\n\n return this;\n };\n /**\n * Refresh tocbot.\n */\n\n\n tocbot.refresh = function (customOptions) {\n tocbot.destroy();\n tocbot.init(customOptions || this.options);\n }; // Make tocbot available globally.\n\n\n root.tocbot = tocbot;\n return tocbot;\n});","import React from 'react';\nimport PropTypes from 'prop-types';\nimport tocbot from 'tocbot';\nimport {FormattedMessage} from 'react-intl';\n\nclass TOC extends React.Component {\n componentDidMount() {\n tocbot.init({\n // Where to render the table of contents.\n tocSelector: `#artile_TocListContainer`,\n // Where to grab the headings to build the table of contents.\n contentSelector: `#article_Content`,\n // Which headings to grab inside of the contentSelector element.\n headingSelector: `h2, h3`,\n headingsOffset: parseInt(this.props.headingsOffset),\n \n })\n }\n\n render() {\n return (\n \n )\n }\n}\n\nTOC.defaultProps = {\n headingsOffset: `5`,\n showHeading: true,\n}\n\nTOC.propTypes = {\n headingsOffset: PropTypes.string,\n className: PropTypes.string,\n listClasses: PropTypes.string,\n showHeading: PropTypes.bool,\n}\n\nexport default TOC\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 = {\n uid: ('' + Math.random()).replace(/\\D/g, ''),\n navHidden: true\n };\n onNavClick = (e) => {\n if (e.target.parentElement.localName == \"li\") {\n this.setState({ navHidden: !this.state.navHidden });\n if (e.target.parentElement.ariaExpanded !== \"false\") {\n e.target.parentElement.ariaExpanded = false;\n } else {\n e.target.parentElement.ariaExpanded = true;\n }\n }\n if (e.target.parentElement.localName == \"div\") {\n this.setState({ navHidden: !this.state.navHidden });\n if (e.target.parentElement.parentElement.ariaExpanded !== \"false\") {\n e.target.parentElement.parentElement.ariaExpanded = false;\n } else {\n e.target.parentElement.parentElement.ariaExpanded = true;\n }\n }\n if (e.target.parentElement.localName == \"g\") {\n this.setState({ navHidden: !this.state.navHidden });\n if (e.target.parentElement.parentElement.parentElement.parentElement.ariaExpanded !== \"false\") {\n e.target.parentElement.parentElement.parentElement.parentElement.ariaExpanded = false;\n } else {\n e.target.parentElement.parentElement.parentElement.parentElement.ariaExpanded = true;\n }\n }\n e.stopPropagation();\n e.preventDefault();\n }\n\n renderSectionItems(items) {\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 \n {items.map((item, index) => (\n \n {item.id == \"none\" &&
{item.title}\n \n
}\n
\n {item.id !== \"none\" && (createLink({\n isActive: isScrollSync\n ? activeItemId === item.id\n : isItemActive(location, item, section.directory),\n item: section.isOrdered\n ? { ...item, title: `${index + 1}. ${item.title}` }\n : item,\n location,\n onLinkClick,\n section,\n }))}\n {item.subitems && (\n this.renderSectionItems(item.subitems)\n )}\n
\n \n ))}\n \n )\n }\n\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
\n \n \n {section.title}\n \n \n \n {\n this.renderSectionItems(section.items)\n }\n
\n );\n }\n}\nexport default Section;\n","require(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\n/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\nmodule.exports = function (options) {\n var forEach = [].forEach;\n var some = [].some;\n var body = document.body;\n var currentlyHighlighting = true;\n var SPACE_CHAR = ' ';\n /**\n * Create link and list elements.\n * @param {Object} d\n * @param {HTMLElement} container\n * @return {HTMLElement}\n */\n\n function createEl(d, container) {\n var link = container.appendChild(createLink(d));\n\n if (d.children.length) {\n var list = createList(d.isCollapsed);\n d.children.forEach(function (child) {\n createEl(child, list);\n });\n link.appendChild(list);\n }\n }\n /**\n * Render nested heading array data into a given selector.\n * @param {String} selector\n * @param {Array} data\n * @return {HTMLElement}\n */\n\n\n function render(selector, data) {\n var collapsed = false;\n var container = createList(collapsed);\n data.forEach(function (d) {\n createEl(d, container);\n });\n var parent = document.querySelector(selector); // Return if no parent is found.\n\n if (parent === null) {\n return;\n } // Remove existing child if it exists.\n\n\n if (parent.firstChild) {\n parent.removeChild(parent.firstChild);\n } // Just return the parent and don't append the list if no links are found.\n\n\n if (data.length === 0) {\n return parent;\n } // Append the Elements that have been created\n\n\n return parent.appendChild(container);\n }\n /**\n * Create link element.\n * @param {Object} data\n * @return {HTMLElement}\n */\n\n\n function createLink(data) {\n var item = document.createElement('li');\n var a = document.createElement('a');\n\n if (options.listItemClass) {\n item.setAttribute('class', options.listItemClass);\n }\n\n if (options.onClick) {\n a.onclick = options.onClick;\n }\n\n if (options.includeHtml && data.childNodes.length) {\n forEach.call(data.childNodes, function (node) {\n a.appendChild(node.cloneNode(true));\n });\n } else {\n // Default behavior.\n a.textContent = data.textContent;\n }\n\n a.setAttribute('href', '#' + data.id);\n a.setAttribute('class', options.linkClass + SPACE_CHAR + 'node-name--' + data.nodeName + SPACE_CHAR + options.extraLinkClasses);\n item.appendChild(a);\n return item;\n }\n /**\n * Create list element.\n * @param {Boolean} isCollapsed\n * @return {HTMLElement}\n */\n\n\n function createList(isCollapsed) {\n var listElement = options.orderedList ? 'ol' : 'ul';\n var list = document.createElement(listElement);\n var classes = options.listClass + SPACE_CHAR + options.extraListClasses;\n\n if (isCollapsed) {\n classes += SPACE_CHAR + options.collapsibleClass;\n classes += SPACE_CHAR + options.isCollapsedClass;\n }\n\n list.setAttribute('class', classes);\n return list;\n }\n /**\n * Update fixed sidebar class.\n * @return {HTMLElement}\n */\n\n\n function updateFixedSidebarClass() {\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top;\n top = document.querySelector(options.scrollContainer).scrollTop;\n } else {\n top = document.documentElement.scrollTop || body.scrollTop;\n }\n\n var posFixedEl = document.querySelector(options.positionFixedSelector);\n\n if (options.fixedSidebarOffset === 'auto') {\n options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop;\n }\n\n if (top > options.fixedSidebarOffset) {\n if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n posFixedEl.className += SPACE_CHAR + options.positionFixedClass;\n }\n } else {\n posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('');\n }\n }\n /**\n * Get top position of heading\n * @param {HTMLElement}\n * @return {integer} position\n */\n\n\n function getHeadingTopPos(obj) {\n var position = 0;\n\n if (obj !== document.querySelector(options.contentSelector && obj != null)) {\n position = obj.offsetTop;\n\n if (options.hasInnerContainers) {\n position += getHeadingTopPos(obj.offsetParent);\n }\n }\n\n return position;\n }\n /**\n * Update TOC highlighting and collpased groupings.\n */\n\n\n function updateToc(headingsArray) {\n // If a fixed content container was set\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top;\n top = document.querySelector(options.scrollContainer).scrollTop;\n } else {\n top = document.documentElement.scrollTop || body.scrollTop;\n } // Add fixed class at offset\n\n\n if (options.positionFixedSelector) {\n updateFixedSidebarClass();\n } // Get the top most heading currently visible on the page so we know what to highlight.\n\n\n var headings = headingsArray;\n var topHeader; // Using some instead of each so that we can escape early.\n\n if (currentlyHighlighting && document.querySelector(options.tocSelector) !== null && headings.length > 0) {\n some.call(headings, function (heading, i) {\n if (getHeadingTopPos(heading) > top + options.headingsOffset + 10) {\n // Don't allow negative index value.\n var index = i === 0 ? i : i - 1;\n topHeader = headings[index];\n return true;\n } else if (i === headings.length - 1) {\n // This allows scrolling for the last heading on the page.\n topHeader = headings[headings.length - 1];\n return true;\n }\n }); // Remove the active class from the other tocLinks.\n\n var tocLinks = document.querySelector(options.tocSelector).querySelectorAll('.' + options.linkClass);\n forEach.call(tocLinks, function (tocLink) {\n tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('');\n });\n var tocLis = document.querySelector(options.tocSelector).querySelectorAll('.' + options.listItemClass);\n forEach.call(tocLis, function (tocLi) {\n tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('');\n }); // Add the active class to the active tocLink.\n\n var activeTocLink = document.querySelector(options.tocSelector).querySelector('.' + options.linkClass + '.node-name--' + topHeader.nodeName + '[href=\"#' + topHeader.id.replace(/([ #;&,.+*~':\"!^$[\\]()=>|/@])/g, '\\\\$1') + '\"]');\n\n if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n activeTocLink.className += SPACE_CHAR + options.activeLinkClass;\n }\n\n var li = activeTocLink.parentNode;\n\n if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n li.className += SPACE_CHAR + options.activeListItemClass;\n }\n\n var tocLists = document.querySelector(options.tocSelector).querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass); // Collapse the other collapsible lists.\n\n forEach.call(tocLists, function (list) {\n if (list.className.indexOf(options.isCollapsedClass) === -1) {\n list.className += SPACE_CHAR + options.isCollapsedClass;\n }\n }); // Expand the active link's collapsible list and its sibling if applicable.\n\n if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('');\n }\n\n removeCollapsedFromParents(activeTocLink.parentNode.parentNode);\n }\n }\n /**\n * Remove collpased class from parent elements.\n * @param {HTMLElement} element\n * @return {HTMLElement}\n */\n\n\n function removeCollapsedFromParents(element) {\n if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('');\n return removeCollapsedFromParents(element.parentNode.parentNode);\n }\n\n return element;\n }\n /**\n * Disable TOC Animation when a link is clicked.\n * @param {Event} event\n */\n\n\n function disableTocAnimation(event) {\n var target = event.target || event.srcElement;\n\n if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n return;\n } // Bind to tocLink clicks to temporarily disable highlighting\n // while smoothScroll is animating.\n\n\n currentlyHighlighting = false;\n }\n /**\n * Enable TOC Animation.\n */\n\n\n function enableTocAnimation() {\n currentlyHighlighting = true;\n }\n\n return {\n enableTocAnimation: enableTocAnimation,\n disableTocAnimation: disableTocAnimation,\n render: render,\n updateToc: updateToc\n };\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 slugify from 'slugify';\n\nexport default (string: string, directory?: string): string => {\n const filename = slugify(string);\n const filenameWithSuffix = slugify(string);\n\n return directory ? `/${directory}/${filename}/` : filenameWithSuffix;\n};\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\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 \n {sectionList.map((section, index) => (\n this._toggleSection(section)}\n section={section}\n />\n ))}\n \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","require(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\n/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\nmodule.exports = function parseContent(options) {\n var reduce = [].reduce;\n /**\n * Get the last item in an array and return a reference to it.\n * @param {Array} array\n * @return {Object}\n */\n\n function getLastItem(array) {\n return array[array.length - 1];\n }\n /**\n * Get heading level for a heading dom node.\n * @param {HTMLElement} heading\n * @return {Number}\n */\n\n\n function getHeadingLevel(heading) {\n return +heading.nodeName.split('H').join('');\n }\n /**\n * Get important properties from a heading element and store in a plain object.\n * @param {HTMLElement} heading\n * @return {Object}\n */\n\n\n function getHeadingObject(heading) {\n // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n // first time heading is real DOM node element, second time it is obj\n // that is causing problem so I am processing only original DOM node\n if (!(heading instanceof window.HTMLElement)) return heading;\n\n if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n return null;\n }\n\n var obj = {\n id: heading.id,\n children: [],\n nodeName: heading.nodeName,\n headingLevel: getHeadingLevel(heading),\n textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n };\n\n if (options.includeHtml) {\n obj.childNodes = heading.childNodes;\n }\n\n if (options.headingObjectCallback) {\n return options.headingObjectCallback(obj, heading);\n }\n\n return obj;\n }\n /**\n * Add a node to the nested array.\n * @param {Object} node\n * @param {Array} nest\n * @return {Array}\n */\n\n\n function addNode(node, nest) {\n var obj = getHeadingObject(node);\n var level = obj.headingLevel;\n var array = nest;\n var lastItem = getLastItem(array);\n var lastItemLevel = lastItem ? lastItem.headingLevel : 0;\n var counter = level - lastItemLevel;\n\n while (counter > 0) {\n lastItem = getLastItem(array);\n\n if (lastItem && lastItem.children !== undefined) {\n array = lastItem.children;\n }\n\n counter--;\n }\n\n if (level >= options.collapseDepth) {\n obj.isCollapsed = true;\n }\n\n array.push(obj);\n return array;\n }\n /**\n * Select headings in content area, exclude any selector in options.ignoreSelector\n * @param {String} contentSelector\n * @param {Array} headingSelector\n * @return {Array}\n */\n\n\n function selectHeadings(contentSelector, headingSelector) {\n var selectors = headingSelector;\n\n if (options.ignoreSelector) {\n selectors = headingSelector.split(',').map(function mapSelectors(selector) {\n return selector.trim() + ':not(' + options.ignoreSelector + ')';\n });\n }\n\n try {\n return document.querySelector(contentSelector).querySelectorAll(selectors);\n } catch (e) {\n console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n\n return null;\n }\n }\n /**\n * Nest headings array into nested arrays with 'children' property.\n * @param {Array} headingsArray\n * @return {Object}\n */\n\n\n function nestHeadingsArray(headingsArray) {\n return reduce.call(headingsArray, function reducer(prev, curr) {\n var currentHeading = getHeadingObject(curr);\n\n if (currentHeading) {\n addNode(currentHeading, prev.nest);\n }\n\n return prev;\n }, {\n nest: []\n });\n }\n\n return {\n nestHeadingsArray: nestHeadingsArray,\n selectHeadings: selectHeadings\n };\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * @emails react-core\n */\n\nimport NavigationFooter from './NavigationFooter';\n\nexport default NavigationFooter;\n","require(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.last-index-of\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\n/* globals location, requestAnimationFrame */\nexports.initSmoothScrolling = initSmoothScrolling;\n\nfunction initSmoothScrolling(options) {\n if (isCssSmoothSCrollSupported()) {}\n\n var duration = options.duration;\n var offset = options.offset;\n var pageUrl = location.hash ? stripHash(location.href) : location.href;\n delegatedLinkHijacking();\n\n function delegatedLinkHijacking() {\n document.body.addEventListener('click', onClick, false);\n\n function onClick(e) {\n if (!isInPageLink(e.target) || e.target.className.indexOf('no-smooth-scroll') > -1 || e.target.href.charAt(e.target.href.length - 2) === '#' && e.target.href.charAt(e.target.href.length - 1) === '!' || e.target.className.indexOf(options.linkClass) === -1) {\n return;\n } // Don't prevent default or hash doesn't change.\n // e.preventDefault()\n\n\n jump(e.target.hash, {\n duration: duration,\n offset: offset,\n callback: function callback() {\n setFocus(e.target.hash);\n }\n });\n }\n }\n\n function isInPageLink(n) {\n return n.tagName.toLowerCase() === 'a' && (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') && (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl);\n }\n\n function stripHash(url) {\n return url.slice(0, url.lastIndexOf('#'));\n }\n\n function isCssSmoothSCrollSupported() {\n return 'scrollBehavior' in document.documentElement.style;\n } // Adapted from:\n // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n\n\n function setFocus(hash) {\n var element = document.getElementById(hash.substring(1));\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1;\n }\n\n element.focus();\n }\n }\n}\n\nfunction jump(target, options) {\n var start = window.pageYOffset;\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n }; // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]');\n var distance = typeof target === 'string' ? opt.offset + (target ? tgt && tgt.getBoundingClientRect().top || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop)) : target;\n var duration = typeof opt.duration === 'function' ? opt.duration(distance) : opt.duration;\n var timeStart;\n var timeElapsed;\n requestAnimationFrame(function (time) {\n timeStart = time;\n loop(time);\n });\n\n function loop(time) {\n timeElapsed = time - timeStart;\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) {\n requestAnimationFrame(loop);\n } else {\n end();\n }\n }\n\n function end() {\n window.scrollTo(0, start + distance);\n\n if (typeof opt.callback === 'function') {\n opt.callback();\n }\n } // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n\n\n function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n }\n}","import React from 'react';\nimport {colors, media} from 'theme';\n// import html2canvas from 'html2canvas';\n// import jsPdf from 'jspdf';\n\nclass DownloadPDF extends React.Component {\n\n constructor(props){\n super(props);\n this.downloadPDF = this.downloadPDF.bind(this);\n }\n\n downloadPDF(event) {\n // console.log(\"downloadPDF\");\n // const domElement = document.getElementById('article_Content');\n \n\n // html2canvas(domElement).then((canvas)=>{\n\n // const img = canvas.toDataURL('image/jpeg');\n // console.log(canvas.width+\",\" +canvas.height);\n\n // var HTML_Width = canvas.width;\n // var HTML_Height = canvas.height;\n // var top_left_margin = 15;\n // var PDF_Width = HTML_Width+(top_left_margin*2);\n // var PDF_Height = (PDF_Width*1.5)+(top_left_margin*2);\n // console.log(\"PDF_Width: \"+PDF_Width);\n // console.log(\"PDF_Height: \"+PDF_Height);\n // var canvas_image_width = HTML_Width;\n // var canvas_image_height = HTML_Height;\n \n // var totalPDFPages = Math.ceil(HTML_Height/PDF_Height)-1;\n // console.log(\"totalPDFPages: \"+totalPDFPages);\n\n // var pdf = new jsPdf('p', 'pt', [PDF_Width, PDF_Height]);\n\n // pdf.addImage(img, 'JPG', top_left_margin, top_left_margin,canvas_image_width,canvas_image_height);\n // for (var i = 1; i <= totalPDFPages; i++) { \n // pdf.addPage(PDF_Width, PDF_Height);\n // pdf.addImage(img, 'JPG', top_left_margin, -(PDF_Height*i)+(top_left_margin*4),canvas_image_width,canvas_image_height);\n // }\n // pdf.save(this.props.markdownTitle+'.pdf'); \n // })\n }\n\n render() {\n return (\n
\n {this.props.title}\n
\n )\n }\n \n}\n\nconst style = {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n color: colors.dark,\n transition: 'color 0.2s ease-out',\n paddingLeft: 15,\n paddingRight: 15,\n fontWeight: 300,\n\n ':focus': {\n outline: 0,\n backgroundColor: colors.dark,\n color: colors.white,\n },\n\n [media.size('xsmall')]: {\n paddingLeft: 8,\n paddingRight: 8,\n },\n\n [media.between('small', 'medium')]: {\n paddingLeft: 10,\n paddingRight: 10,\n },\n\n [media.greaterThan('xlarge')]: {\n paddingLeft: 20,\n paddingRight: 20,\n fontSize: 18,\n\n ':hover:not(:focus)': {\n color: colors.brand,\n },\n },\n};\n\n\nexport default DownloadPDF;\n"],"sourceRoot":""}