UNPKG

react-readme-printer

Version:

Provides a function to load a readme file from github repositories and a React component to automatically load and convert markdown to jsx

742 lines (643 loc) 74.6 kB
import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { GoPrimitiveDot } from 'react-icons/go'; import { IconContext } from 'react-icons/lib'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import rehypeHighlight from 'rehype-highlight'; import 'rehype-raw'; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function styleInject(css, ref) { if ( ref === void 0 ) ref = {}; var insertAt = ref.insertAt; if (!css || typeof document === 'undefined') { return; } var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if (insertAt === 'top') { if (head.firstChild) { head.insertBefore(style, head.firstChild); } else { head.appendChild(style); } } else { head.appendChild(style); } if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } } var css_248z = ".readme-file {\r\n font-size: 75%;\r\n}\r\n\r\n.readme-file .repo {\r\n background-color: rgb(202, 202, 202);\r\n padding: 5px 10px;\r\n border-radius: 10px;\r\n}\r\n\r\n.readme-file.dark-mode .repo {\r\n background-color: rgba(241, 241, 241, 0.121);\r\n}\r\n\r\n.readme-file.dark-mode {\r\n color: rgb(226, 226, 226);\r\n}\r\n\r\n.markdown-body .octicon {\r\n display: inline-block;\r\n fill: currentColor;\r\n vertical-align: text-bottom;\r\n }\r\n \r\n .markdown-body .anchor {\r\n float: left;\r\n line-height: 1;\r\n margin-left: -20px;\r\n padding-right: 4px;\r\n }\r\n \r\n .markdown-body .anchor:focus {\r\n outline: none;\r\n }\r\n \r\n .markdown-body h1 .octicon-link,\r\n .markdown-body h2 .octicon-link,\r\n .markdown-body h3 .octicon-link,\r\n .markdown-body h4 .octicon-link,\r\n .markdown-body h5 .octicon-link,\r\n .markdown-body h6 .octicon-link {\r\n color: #1b1f23;\r\n vertical-align: middle;\r\n visibility: hidden;\r\n }\r\n \r\n .markdown-body h1:hover .anchor,\r\n .markdown-body h2:hover .anchor,\r\n .markdown-body h3:hover .anchor,\r\n .markdown-body h4:hover .anchor,\r\n .markdown-body h5:hover .anchor,\r\n .markdown-body h6:hover .anchor {\r\n text-decoration: none;\r\n }\r\n \r\n .markdown-body h1:hover .anchor .octicon-link,\r\n .markdown-body h2:hover .anchor .octicon-link,\r\n .markdown-body h3:hover .anchor .octicon-link,\r\n .markdown-body h4:hover .anchor .octicon-link,\r\n .markdown-body h5:hover .anchor .octicon-link,\r\n .markdown-body h6:hover .anchor .octicon-link {\r\n visibility: visible;\r\n }\r\n \r\n .markdown-body h1:hover .anchor .octicon-link:before,\r\n .markdown-body h2:hover .anchor .octicon-link:before,\r\n .markdown-body h3:hover .anchor .octicon-link:before,\r\n .markdown-body h4:hover .anchor .octicon-link:before,\r\n .markdown-body h5:hover .anchor .octicon-link:before,\r\n .markdown-body h6:hover .anchor .octicon-link:before {\r\n width: 16px;\r\n height: 16px;\r\n content: ' ';\r\n display: inline-block;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' width='16' height='16' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' d='M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z'%3E%3C/path%3E%3C/svg%3E\");\r\n }\r\n .markdown-body {\r\n -ms-text-size-adjust: 100%;\r\n -webkit-text-size-adjust: 100%;\r\n line-height: 1.5;\r\n color: #24292e;\r\n font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;\r\n font-size: 16px;\r\n line-height: 1.5;\r\n word-wrap: break-word;\r\n }\r\n\r\n .markdown-body.dark-mode {\r\n color: rgb(226, 226, 226);\r\n }\r\n \r\n .markdown-body details {\r\n display: block;\r\n }\r\n \r\n .markdown-body summary {\r\n display: list-item;\r\n }\r\n \r\n .markdown-body a {\r\n background-color: initial;\r\n }\r\n \r\n .markdown-body a:active,\r\n .markdown-body a:hover {\r\n outline-width: 0;\r\n }\r\n \r\n .markdown-body strong {\r\n font-weight: inherit;\r\n font-weight: bolder;\r\n }\r\n \r\n .markdown-body h1 {\r\n font-size: 2em;\r\n margin: .67em 0;\r\n }\r\n \r\n .markdown-body img {\r\n border-style: none;\r\n }\r\n \r\n .markdown-body code,\r\n .markdown-body kbd,\r\n .markdown-body pre {\r\n font-family: monospace,monospace;\r\n font-size: 1em;\r\n }\r\n \r\n .markdown-body hr {\r\n box-sizing: initial;\r\n height: 0;\r\n overflow: visible;\r\n }\r\n \r\n .markdown-body input {\r\n font: inherit;\r\n margin: 0;\r\n }\r\n \r\n .markdown-body input {\r\n overflow: visible;\r\n }\r\n \r\n .markdown-body [type=checkbox] {\r\n box-sizing: border-box;\r\n padding: 0;\r\n }\r\n \r\n .markdown-body * {\r\n box-sizing: border-box;\r\n }\r\n \r\n .markdown-body input {\r\n font-family: inherit;\r\n font-size: inherit;\r\n line-height: inherit;\r\n }\r\n \r\n .markdown-body a {\r\n color: #0366d6;\r\n text-decoration: none;\r\n }\r\n \r\n .markdown-body a:hover {\r\n text-decoration: underline;\r\n }\r\n \r\n .markdown-body strong {\r\n font-weight: 600;\r\n }\r\n \r\n .markdown-body hr {\r\n height: 0;\r\n margin: 15px 0;\r\n overflow: hidden;\r\n background: transparent;\r\n border: 0;\r\n border-bottom: 1px solid #dfe2e5;\r\n }\r\n \r\n .markdown-body hr:after,\r\n .markdown-body hr:before {\r\n display: table;\r\n content: \"\";\r\n }\r\n \r\n .markdown-body hr:after {\r\n clear: both;\r\n }\r\n \r\n .markdown-body table {\r\n border-spacing: 0;\r\n border-collapse: collapse;\r\n }\r\n\r\n \r\n \r\n .markdown-body td,\r\n .markdown-body th {\r\n padding: 0;\r\n }\r\n \r\n .markdown-body details summary {\r\n cursor: pointer;\r\n }\r\n \r\n .markdown-body kbd {\r\n display: inline-block;\r\n padding: 3px 5px;\r\n font: 11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;\r\n line-height: 10px;\r\n color: #444d56;\r\n vertical-align: middle;\r\n background-color: #fafbfc;\r\n border: 1px solid #d1d5da;\r\n border-radius: 3px;\r\n box-shadow: inset 0 -1px 0 #d1d5da;\r\n }\r\n \r\n .markdown-body h1,\r\n .markdown-body h2,\r\n .markdown-body h3,\r\n .markdown-body h4,\r\n .markdown-body h5,\r\n .markdown-body h6 {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n \r\n .markdown-body h1 {\r\n font-size: 32px;\r\n }\r\n \r\n .markdown-body h1,\r\n .markdown-body h2 {\r\n font-weight: 600;\r\n }\r\n \r\n .markdown-body h2 {\r\n font-size: 24px;\r\n }\r\n \r\n .markdown-body h3 {\r\n font-size: 20px;\r\n }\r\n \r\n .markdown-body h3,\r\n .markdown-body h4 {\r\n font-weight: 600;\r\n }\r\n \r\n .markdown-body h4 {\r\n font-size: 16px;\r\n }\r\n \r\n .markdown-body h5 {\r\n font-size: 14px;\r\n }\r\n \r\n .markdown-body h5,\r\n .markdown-body h6 {\r\n font-weight: 600;\r\n }\r\n \r\n .markdown-body h6 {\r\n font-size: 12px;\r\n }\r\n \r\n .markdown-body p {\r\n margin-top: 0;\r\n margin-bottom: 10px;\r\n }\r\n \r\n .markdown-body blockquote {\r\n margin: 0;\r\n }\r\n \r\n .markdown-body ol,\r\n .markdown-body ul {\r\n padding-left: 0;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n \r\n .markdown-body ol ol,\r\n .markdown-body ul ol {\r\n list-style-type: lower-roman;\r\n }\r\n \r\n .markdown-body ol ol ol,\r\n .markdown-body ol ul ol,\r\n .markdown-body ul ol ol,\r\n .markdown-body ul ul ol {\r\n list-style-type: lower-alpha;\r\n }\r\n \r\n .markdown-body dd {\r\n margin-left: 0;\r\n }\r\n \r\n .markdown-body code,\r\n .markdown-body pre {\r\n font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;\r\n font-size: 12px;\r\n }\r\n \r\n .markdown-body pre {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n \r\n .markdown-body input::-webkit-inner-spin-button,\r\n .markdown-body input::-webkit-outer-spin-button {\r\n margin: 0;\r\n -webkit-appearance: none;\r\n appearance: none;\r\n }\r\n \r\n .markdown-body :checked+.radio-label {\r\n position: relative;\r\n z-index: 1;\r\n border-color: #0366d6;\r\n }\r\n \r\n .markdown-body .border {\r\n border: 1px solid #e1e4e8!important;\r\n }\r\n \r\n .markdown-body .border-0 {\r\n border: 0!important;\r\n }\r\n \r\n .markdown-body .border-bottom {\r\n border-bottom: 1px solid #e1e4e8!important;\r\n }\r\n \r\n .markdown-body .rounded-1 {\r\n border-radius: 3px!important;\r\n }\r\n \r\n .markdown-body .bg-white {\r\n background-color: #fff!important;\r\n }\r\n \r\n .markdown-body .bg-gray-light {\r\n background-color: #fafbfc!important;\r\n }\r\n \r\n .markdown-body .text-gray-light {\r\n color: #6a737d!important;\r\n }\r\n \r\n .markdown-body .mb-0 {\r\n margin-bottom: 0!important;\r\n }\r\n \r\n .markdown-body .my-2 {\r\n margin-top: 8px!important;\r\n margin-bottom: 8px!important;\r\n }\r\n \r\n .markdown-body .pl-0 {\r\n padding-left: 0!important;\r\n }\r\n \r\n .markdown-body .py-0 {\r\n padding-top: 0!important;\r\n padding-bottom: 0!important;\r\n }\r\n \r\n .markdown-body .pl-1 {\r\n padding-left: 4px!important;\r\n }\r\n \r\n .markdown-body .pl-2 {\r\n padding-left: 8px!important;\r\n }\r\n \r\n .markdown-body .py-2 {\r\n padding-top: 8px!important;\r\n padding-bottom: 8px!important;\r\n }\r\n \r\n .markdown-body .pl-3,\r\n .markdown-body .px-3 {\r\n padding-left: 16px!important;\r\n }\r\n \r\n .markdown-body .px-3 {\r\n padding-right: 16px!important;\r\n }\r\n \r\n .markdown-body .pl-4 {\r\n padding-left: 24px!important;\r\n }\r\n \r\n .markdown-body .pl-5 {\r\n padding-left: 32px!important;\r\n }\r\n \r\n .markdown-body .pl-6 {\r\n padding-left: 40px!important;\r\n }\r\n \r\n .markdown-body .f6 {\r\n font-size: 12px!important;\r\n }\r\n \r\n .markdown-body .lh-condensed {\r\n line-height: 1.25!important;\r\n }\r\n \r\n .markdown-body .text-bold {\r\n font-weight: 600!important;\r\n }\r\n \r\n .markdown-body .pl-c {\r\n color: #6a737d;\r\n }\r\n \r\n .markdown-body .pl-c1,\r\n .markdown-body .pl-s .pl-v {\r\n color: #005cc5;\r\n }\r\n \r\n .markdown-body .pl-e,\r\n .markdown-body .pl-en {\r\n color: #6f42c1;\r\n }\r\n \r\n .markdown-body .pl-s .pl-s1,\r\n .markdown-body .pl-smi {\r\n color: #24292e;\r\n }\r\n \r\n .markdown-body .pl-ent {\r\n color: #22863a;\r\n }\r\n \r\n .markdown-body .pl-k {\r\n color: #d73a49;\r\n }\r\n \r\n .markdown-body .pl-pds,\r\n .markdown-body .pl-s,\r\n .markdown-body .pl-s .pl-pse .pl-s1,\r\n .markdown-body .pl-sr,\r\n .markdown-body .pl-sr .pl-cce,\r\n .markdown-body .pl-sr .pl-sra,\r\n .markdown-body .pl-sr .pl-sre {\r\n color: #032f62;\r\n }\r\n \r\n .markdown-body .pl-smw,\r\n .markdown-body .pl-v {\r\n color: #e36209;\r\n }\r\n \r\n .markdown-body .pl-bu {\r\n color: #b31d28;\r\n }\r\n \r\n .markdown-body .pl-ii {\r\n color: #fafbfc;\r\n background-color: #b31d28;\r\n }\r\n \r\n .markdown-body .pl-c2 {\r\n color: #fafbfc;\r\n background-color: #d73a49;\r\n }\r\n \r\n .markdown-body .pl-c2:before {\r\n content: \"^M\";\r\n }\r\n \r\n .markdown-body .pl-sr .pl-cce {\r\n font-weight: 700;\r\n color: #22863a;\r\n }\r\n \r\n .markdown-body .pl-ml {\r\n color: #735c0f;\r\n }\r\n \r\n .markdown-body .pl-mh,\r\n .markdown-body .pl-mh .pl-en,\r\n .markdown-body .pl-ms {\r\n font-weight: 700;\r\n color: #005cc5;\r\n }\r\n \r\n .markdown-body .pl-mi {\r\n font-style: italic;\r\n color: #24292e;\r\n }\r\n \r\n .markdown-body .pl-mb {\r\n font-weight: 700;\r\n color: #24292e;\r\n }\r\n \r\n .markdown-body .pl-md {\r\n color: #b31d28;\r\n background-color: #ffeef0;\r\n }\r\n \r\n .markdown-body .pl-mi1 {\r\n color: #22863a;\r\n background-color: #f0fff4;\r\n }\r\n \r\n .markdown-body .pl-mc {\r\n color: #e36209;\r\n background-color: #ffebda;\r\n }\r\n \r\n .markdown-body .pl-mi2 {\r\n color: #f6f8fa;\r\n background-color: #005cc5;\r\n }\r\n \r\n .markdown-body .pl-mdr {\r\n font-weight: 700;\r\n color: #6f42c1;\r\n }\r\n \r\n .markdown-body .pl-ba {\r\n color: #586069;\r\n }\r\n \r\n .markdown-body .pl-sg {\r\n color: #959da5;\r\n }\r\n \r\n .markdown-body .pl-corl {\r\n text-decoration: underline;\r\n color: #032f62;\r\n }\r\n \r\n .markdown-body .mb-0 {\r\n margin-bottom: 0!important;\r\n }\r\n \r\n .markdown-body .my-2 {\r\n margin-bottom: 8px!important;\r\n }\r\n \r\n .markdown-body .my-2 {\r\n margin-top: 8px!important;\r\n }\r\n \r\n .markdown-body .pl-0 {\r\n padding-left: 0!important;\r\n }\r\n \r\n .markdown-body .py-0 {\r\n padding-top: 0!important;\r\n padding-bottom: 0!important;\r\n }\r\n \r\n .markdown-body .pl-1 {\r\n padding-left: 4px!important;\r\n }\r\n \r\n .markdown-body .pl-2 {\r\n padding-left: 8px!important;\r\n }\r\n \r\n .markdown-body .py-2 {\r\n padding-top: 8px!important;\r\n padding-bottom: 8px!important;\r\n }\r\n \r\n .markdown-body .pl-3 {\r\n padding-left: 16px!important;\r\n }\r\n \r\n .markdown-body .pl-4 {\r\n padding-left: 24px!important;\r\n }\r\n \r\n .markdown-body .pl-5 {\r\n padding-left: 32px!important;\r\n }\r\n \r\n .markdown-body .pl-6 {\r\n padding-left: 40px!important;\r\n }\r\n \r\n .markdown-body .pl-7 {\r\n padding-left: 48px!important;\r\n }\r\n \r\n .markdown-body .pl-8 {\r\n padding-left: 64px!important;\r\n }\r\n \r\n .markdown-body .pl-9 {\r\n padding-left: 80px!important;\r\n }\r\n \r\n .markdown-body .pl-10 {\r\n padding-left: 96px!important;\r\n }\r\n \r\n .markdown-body .pl-11 {\r\n padding-left: 112px!important;\r\n }\r\n \r\n .markdown-body .pl-12 {\r\n padding-left: 128px!important;\r\n }\r\n \r\n .markdown-body hr {\r\n border-bottom-color: #eee;\r\n }\r\n \r\n .markdown-body kbd {\r\n display: inline-block;\r\n padding: 3px 5px;\r\n font: 11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;\r\n line-height: 10px;\r\n color: #444d56;\r\n vertical-align: middle;\r\n background-color: #fafbfc;\r\n border: 1px solid #d1d5da;\r\n border-radius: 3px;\r\n box-shadow: inset 0 -1px 0 #d1d5da;\r\n }\r\n \r\n .markdown-body:after,\r\n .markdown-body:before {\r\n display: table;\r\n content: \"\";\r\n }\r\n \r\n .markdown-body:after {\r\n clear: both;\r\n }\r\n \r\n .markdown-body>:first-child {\r\n margin-top: 0!important;\r\n }\r\n \r\n .markdown-body>:last-child {\r\n margin-bottom: 0!important;\r\n }\r\n \r\n .markdown-body a:not([href]) {\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n \r\n .markdown-body blockquote,\r\n .markdown-body details,\r\n .markdown-body dl,\r\n .markdown-body ol,\r\n .markdown-body p,\r\n .markdown-body pre,\r\n .markdown-body table,\r\n .markdown-body ul {\r\n margin-top: 0;\r\n margin-bottom: 16px;\r\n }\r\n \r\n .markdown-body hr {\r\n height: .25em;\r\n padding: 0;\r\n margin: 24px 0;\r\n background-color: #e1e4e8;\r\n border: 0;\r\n }\r\n \r\n .markdown-body blockquote {\r\n padding: 0 1em;\r\n color: #6a737d;\r\n border-left: .25em solid #dfe2e5;\r\n }\r\n \r\n .markdown-body blockquote>:first-child {\r\n margin-top: 0;\r\n }\r\n \r\n .markdown-body blockquote>:last-child {\r\n margin-bottom: 0;\r\n }\r\n \r\n .markdown-body h1,\r\n .markdown-body h2,\r\n .markdown-body h3,\r\n .markdown-body h4,\r\n .markdown-body h5,\r\n .markdown-body h6 {\r\n margin-top: 24px;\r\n margin-bottom: 16px;\r\n font-weight: 600;\r\n line-height: 1.25;\r\n }\r\n \r\n .markdown-body h1 {\r\n font-size: 2em;\r\n }\r\n \r\n .markdown-body h1,\r\n .markdown-body h2 {\r\n padding-bottom: .3em;\r\n border-bottom: 1px solid #eaecef;\r\n }\r\n \r\n .markdown-body h2 {\r\n font-size: 1.5em;\r\n }\r\n \r\n .markdown-body h3 {\r\n font-size: 1.25em;\r\n }\r\n \r\n .markdown-body h4 {\r\n font-size: 1em;\r\n }\r\n \r\n .markdown-body h5 {\r\n font-size: .875em;\r\n }\r\n \r\n .markdown-body h6 {\r\n font-size: .85em;\r\n color: #6a737d;\r\n }\r\n \r\n .markdown-body ol,\r\n .markdown-body ul {\r\n padding-left: 2em;\r\n }\r\n \r\n .markdown-body ol ol,\r\n .markdown-body ol ul,\r\n .markdown-body ul ol,\r\n .markdown-body ul ul {\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n }\r\n \r\n .markdown-body li {\r\n word-wrap: break-all;\r\n }\r\n \r\n .markdown-body li>p {\r\n margin-top: 16px;\r\n }\r\n \r\n .markdown-body li+li {\r\n margin-top: .25em;\r\n }\r\n \r\n .markdown-body dl {\r\n padding: 0;\r\n }\r\n \r\n .markdown-body dl dt {\r\n padding: 0;\r\n margin-top: 16px;\r\n font-size: 1em;\r\n font-style: italic;\r\n font-weight: 600;\r\n }\r\n \r\n .markdown-body dl dd {\r\n padding: 0 16px;\r\n margin-bottom: 16px;\r\n }\r\n \r\n .markdown-body table {\r\n display: block;\r\n width: 100%;\r\n overflow: auto;\r\n }\r\n \r\n .markdown-body table th {\r\n font-weight: 600;\r\n }\r\n \r\n .markdown-body table td,\r\n .markdown-body table th {\r\n padding: 6px 13px;\r\n border: 1px solid #dfe2e5;\r\n }\r\n \r\n .markdown-body table tr {\r\n background-color: #fff;\r\n border-top: 1px solid #c6cbd1;\r\n }\r\n \r\n .markdown-body table tr:nth-child(2n) {\r\n background-color: #f6f8fa;\r\n }\r\n\r\n .markdown-body.dark-mode table tr {\r\n background-color: #1b1f23;\r\n }\r\n\r\n .markdown-body.dark-mode table tr:nth-child(2n) {\r\n background-color: #262a2f;\r\n }\r\n \r\n .markdown-body img {\r\n max-width: 100%;\r\n box-sizing: initial;\r\n background-color: #fff;\r\n }\r\n \r\n .markdown-body img[align=right] {\r\n padding-left: 20px;\r\n }\r\n \r\n .markdown-body img[align=left] {\r\n padding-right: 20px;\r\n }\r\n \r\n .markdown-body code {\r\n padding: .2em .4em;\r\n margin: 0;\r\n font-size: 85%;\r\n background-color: rgba(27,31,35,.05);\r\n border-radius: 3px;\r\n }\r\n \r\n .markdown-body pre {\r\n word-wrap: normal;\r\n }\r\n \r\n .markdown-body pre>code {\r\n padding: 0;\r\n margin: 0;\r\n font-size: 100%;\r\n word-break: normal;\r\n white-space: pre;\r\n background: transparent;\r\n border: 0;\r\n }\r\n \r\n .markdown-body .highlight {\r\n margin-bottom: 16px;\r\n }\r\n \r\n .markdown-body .highlight pre {\r\n margin-bottom: 0;\r\n word-break: normal;\r\n }\r\n \r\n .markdown-body .highlight pre,\r\n .markdown-body pre {\r\n padding: 16px;\r\n overflow: auto;\r\n font-size: 85%;\r\n line-height: 1.45;\r\n background-color: #f6f8fa;\r\n border-radius: 3px;\r\n }\r\n .markdown-body.dark-mode pre {\r\n background-color: #1f1f1fc9;\r\n }\r\n \r\n .markdown-body pre code {\r\n display: inline;\r\n max-width: auto;\r\n padding: 0;\r\n margin: 0;\r\n overflow: visible;\r\n line-height: inherit;\r\n word-wrap: normal;\r\n background-color: initial;\r\n border: 0;\r\n }\r\n \r\n .markdown-body .commit-tease-sha {\r\n display: inline-block;\r\n font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;\r\n font-size: 90%;\r\n color: #444d56;\r\n }\r\n \r\n .markdown-body .full-commit .btn-outline:not(:disabled):hover {\r\n color: #005cc5;\r\n border-color: #005cc5;\r\n }\r\n \r\n .markdown-body .blob-wrapper {\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n }\r\n \r\n .markdown-body .blob-wrapper-embedded {\r\n max-height: 240px;\r\n overflow-y: auto;\r\n }\r\n \r\n .markdown-body .blob-num {\r\n width: 1%;\r\n min-width: 50px;\r\n padding-right: 10px;\r\n padding-left: 10px;\r\n font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: rgba(27,31,35,.3);\r\n text-align: right;\r\n white-space: nowrap;\r\n vertical-align: top;\r\n cursor: pointer;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n }\r\n \r\n .markdown-body .blob-num:hover {\r\n color: rgba(27,31,35,.6);\r\n }\r\n \r\n .markdown-body .blob-num:before {\r\n content: attr(data-line-number);\r\n }\r\n \r\n .markdown-body .blob-code {\r\n position: relative;\r\n padding-right: 10px;\r\n padding-left: 10px;\r\n line-height: 20px;\r\n vertical-align: top;\r\n }\r\n \r\n .markdown-body .blob-code-inner {\r\n overflow: visible;\r\n font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;\r\n font-size: 12px;\r\n color: #24292e;\r\n word-wrap: normal;\r\n white-space: pre;\r\n }\r\n \r\n .markdown-body .pl-token.active,\r\n .markdown-body .pl-token:hover {\r\n cursor: pointer;\r\n background: #ffea7f;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"1\"] {\r\n -moz-tab-size: 1;\r\n tab-size: 1;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"2\"] {\r\n -moz-tab-size: 2;\r\n tab-size: 2;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"3\"] {\r\n -moz-tab-size: 3;\r\n tab-size: 3;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"4\"] {\r\n -moz-tab-size: 4;\r\n tab-size: 4;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"5\"] {\r\n -moz-tab-size: 5;\r\n tab-size: 5;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"6\"] {\r\n -moz-tab-size: 6;\r\n tab-size: 6;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"7\"] {\r\n -moz-tab-size: 7;\r\n tab-size: 7;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"8\"] {\r\n -moz-tab-size: 8;\r\n tab-size: 8;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"9\"] {\r\n -moz-tab-size: 9;\r\n tab-size: 9;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"10\"] {\r\n -moz-tab-size: 10;\r\n tab-size: 10;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"11\"] {\r\n -moz-tab-size: 11;\r\n tab-size: 11;\r\n }\r\n \r\n .markdown-body .tab-size[data-tab-size=\"12\"] {\r\n -moz-tab-size: 12;\r\n tab-size: 12;\r\n }\r\n \r\n .markdown-body .task-list-item {\r\n list-style-type: none;\r\n }\r\n \r\n .markdown-body .task-list-item+.task-list-item {\r\n margin-top: 3px;\r\n }\r\n \r\n .markdown-body .task-list-item input {\r\n margin: 0 .2em .25em -1.6em;\r\n vertical-align: middle;\r\n }\r\n \r\n\r\n .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}\r\n .dark-mode .hljs {color: rgb(226, 226, 226);}\r\n .hljs-comment,.hljs-quote{color:#998;font-style:italic}\r\n .hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700;}\r\n .dark-mode .hljs-keyword {color: rgb(226, 226, 226);}\r\n .hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}\r\n .hljs-doctag,.hljs-string{color:#d14}\r\n .hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700;}\r\n .hljs-subst{font-weight:400}\r\n .hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}\r\n .hljs-attribute,.hljs-name,.hljs-tag{color:rgb(0, 71, 238);font-weight:400}\r\n .hljs-link,.hljs-regexp{color:#009926}\r\n .hljs-bullet,.hljs-symbol{color:#990073}\r\n .hljs-built_in,.hljs-builtin-name{color:#0086b3}\r\n .hljs-meta{color:#999;font-weight:700}\r\n .hljs-deletion{background:#fdd}\r\n .hljs-addition{background:#dfd}\r\n .hljs-emphasis{font-style:italic}\r\n .hljs-strong{font-weight:700}"; styleInject(css_248z); var propTypes = {exports: {}}; var reactIs = {exports: {}}; var reactIs_production_min = {}; /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}reactIs_production_min.AsyncMode=l;reactIs_production_min.ConcurrentMode=m;reactIs_production_min.ContextConsumer=k;reactIs_production_min.ContextProvider=h;reactIs_production_min.Element=c;reactIs_production_min.ForwardRef=n;reactIs_production_min.Fragment=e;reactIs_production_min.Lazy=t;reactIs_production_min.Memo=r;reactIs_production_min.Portal=d; reactIs_production_min.Profiler=g;reactIs_production_min.StrictMode=f;reactIs_production_min.Suspense=p;reactIs_production_min.isAsyncMode=function(a){return A(a)||z(a)===l};reactIs_production_min.isConcurrentMode=A;reactIs_production_min.isContextConsumer=function(a){return z(a)===k};reactIs_production_min.isContextProvider=function(a){return z(a)===h};reactIs_production_min.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};reactIs_production_min.isForwardRef=function(a){return z(a)===n};reactIs_production_min.isFragment=function(a){return z(a)===e};reactIs_production_min.isLazy=function(a){return z(a)===t}; reactIs_production_min.isMemo=function(a){return z(a)===r};reactIs_production_min.isPortal=function(a){return z(a)===d};reactIs_production_min.isProfiler=function(a){return z(a)===g};reactIs_production_min.isStrictMode=function(a){return z(a)===f};reactIs_production_min.isSuspense=function(a){return z(a)===p}; reactIs_production_min.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};reactIs_production_min.typeOf=z; var reactIs_development = {}; /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (process.env.NODE_ENV !== "production") { (function() { // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } reactIs_development.AsyncMode = AsyncMode; reactIs_development.ConcurrentMode = ConcurrentMode; reactIs_development.ContextConsumer = ContextConsumer; reactIs_development.ContextProvider = ContextProvider; reactIs_development.Element = Element; reactIs_development.ForwardRef = ForwardRef; reactIs_development.Fragment = Fragment; reactIs_development.Lazy = Lazy; reactIs_development.Memo = Memo; reactIs_development.Portal = Portal; reactIs_development.Profiler = Profiler; reactIs_development.StrictMode = StrictMode; reactIs_development.Suspense = Suspense; reactIs_development.isAsyncMode = isAsyncMode; reactIs_development.isConcurrentMode = isConcurrentMode; reactIs_development.isContextConsumer = isContextConsumer; reactIs_development.isContextProvider = isContextProvider; reactIs_development.isElement = isElement; reactIs_development.isForwardRef = isForwardRef; reactIs_development.isFragment = isFragment; reactIs_development.isLazy = isLazy; reactIs_development.isMemo = isMemo; reactIs_development.isPortal = isPortal; reactIs_development.isProfiler = isProfiler; reactIs_development.isStrictMode = isStrictMode; reactIs_development.isSuspense = isSuspense; reactIs_development.isValidElementType = isValidElementType; reactIs_development.typeOf = typeOf; })(); } if (process.env.NODE_ENV === 'production') { reactIs.exports = reactIs_production_min; } else { reactIs.exports = reactIs_development; } /* object-assign (c) Sindre Sorhus @license MIT */ /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === undefined) { throw new TypeError('Object.assign cannot be called with null or undefined'); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } // Detect buggy property enumeration order in older V8 versions. // https://bugs.chromium.org/p/v8/issues/detail?id=4118 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers test1[5] = 'de'; if (Object.getOwnPropertyNames(test1)[0] === '5') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test2 = {}; for (var i = 0; i < 10; i++) { test2['_' + String.fromCharCode(i)] = i; } var order2 = Object.getOwnPropertyNames(test2).map(function (n) { return test2[n]; }); if (order2.join('') !== '0123456789') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test3 = {}; 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { return false; } return true; } catch (err) { // We don't expect any of the above to throw, but better to be safe. return false; } } var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; } } } } return to; }; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactPropTypesSecret$3 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; var ReactPropTypesSecret_1 = ReactPropTypesSecret$3; var has$2 = Function.call.bind(Object.prototype.hasOwnProperty); /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var printWarning$1 = function() {}; if (process.env.NODE_ENV !== 'production') { var ReactPropTypesSecret$2 = ReactPropTypesSecret_1; var loggedTypeFailures = {}; var has$1 = has$2; printWarning$1 = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) { /**/ } }; } /** * Assert that the values match with the type specs. * Error messages are memorized and will only be shown once. * * @param {object} typeSpecs Map of name to a ReactPropType * @param {object} values Runtime values that need to be type-checked * @param {string} location e.g. "prop", "context", "child context" * @param {string} componentName Name of the component for error messages. * @param {?Function} getStack Returns the component stack. * @private */ function checkPropTypes$1(typeSpecs, values, location, componentName, getStack) { if (process.env.NODE_ENV !== 'production') { for (var typeSpecName in typeSpecs) { if (has$1(typeSpecs, typeSpecName)) { var error; // Prop type validation may throw. In case they do, we don't want to // fail the render phase where it didn't fail before. So we log it. // After these have been cleaned up, we'll let them throw. try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. if (typeof typeSpecs[typeSpecName] !== 'function') { var err = Error( (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' ); err.name = 'Invariant Violation'; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$2); } catch (ex) { error = ex; } if (error && !(error instanceof Error)) { printWarning$1( (componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).' ); } if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ''; printWarning$1( 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') ); } } } } } /** * Resets warning cache when testing. * * @private */ checkPropTypes$1.resetWarningCache = function() { if (process.env.NODE_ENV !== 'production') { loggedTypeFailures = {}; } }; var checkPropTypes_1 = checkPropTypes$1; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactIs$1 = reactIs.exports; var assign = objectAssign; var ReactPropTypesSecret$1 = ReactPropTypesSecret_1; var has = has$2; var checkPropTypes = checkPropTypes_1; var printWarning = function() {}; if (process.env.NODE_ENV !== 'production') { printWarning = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) {} }; } function emptyFunctionThatReturnsNull() { return null; } var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) { /* global Symbol */ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. /** * Returns the iterator method function contained on the iterable object. * * Be sure to invoke the function with the iterable as context: * * var iteratorFn = getIteratorFn(myIterable); * if (iteratorFn) { * var iterator = iteratorFn.call(myIterable); * ... * } * * @param {?object} maybeIterable * @return {?function} */ function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === 'function') { return iteratorFn; } } /** * Collection of methods that allow declaration and validation of props that are * supplied to React components. Example usage: * * var Props = require('ReactPropTypes'); * var MyArticle = React.createClass({ * propTypes: { * // An optional string prop named "description". * description: Props.string, * * // A required enum prop named "category". * category: Props.oneOf(['News','Photos']).isRequired, * * // A prop named "dialog" that requires an instance of Dialog. * dialog: Props.instanceOf(Dialog).isRequired * }, * render: function() { ... } * }); * * A more formal specification of how these methods are used: * * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) * decl := ReactPropTypes.{type}(.isRequired)? * * Each and every declaration produces a function with the same signature. This * allows the creation of custom validation functions. For example: * * var MyLink = React.createClass({ * propTypes: { * // An optional string or URI prop named "href". * href: function(props, propName, componentName) { * var propValue = props[propName]; * if (propValue != null && typeof propValue !== 'string' && * !(propValue instanceof URI)) { * return new Error( * 'Expected a string or an URI for ' + propName + ' in ' + * componentName * ); * } * } * }, * render: function() {...} * }); * * @internal */ var ANONYMOUS = '<<anonymous>>'; // Important! // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. var ReactPropTypes = { array: createPrimitiveTypeChecker('array'), bigint: createPrimitiveTypeChecker('bigint'), bool: createPrimitiveTypeChecker('boolean'), func: createPrimitiveTypeChecker('function'), number: createPrimitiveTypeChecker('number'), object: createPrimitiveTypeChecker('object'), string: createPrimitiveTypeChecker('string'), symbol: createPrimitiveTypeChecker('symbol'), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker, }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ /*eslint-disable no-self-compare*/ function is(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } } /*eslint-enable no-self-compare*/ /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message, data) { this.message = message; this.data = data && typeof data === 'object' ? data: {}; this.stack = ''; } // Make `instanceof Error` still work for returned errors. PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { if (process.env.NODE_ENV !== 'production') { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; } function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== React