UNPKG

@readme/markdown

Version:

ReadMe's React-based Markdown parser

1,934 lines (1,645 loc) 3.25 MB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("@readme/syntax-highlighter"), require("@readme/variable"), require("@tippyjs/react"), require("acorn"), require("mermaid"), require("react"), require("react-dom")); else if(typeof define === 'function' && define.amd) define(["@readme/syntax-highlighter", "@readme/variable", "@tippyjs/react", "acorn", "mermaid", "react", "react-dom"], factory); else { var a = typeof exports === 'object' ? factory(require("@readme/syntax-highlighter"), require("@readme/variable"), require("@tippyjs/react"), require("acorn"), require("mermaid"), require("react"), require("react-dom")) : factory(root["@readme/syntax-highlighter"], root["@readme/variable"], root["@tippyjs/react"], root["acorn"], root["mermaid"], root["React"], root["ReactDOM"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(self, (__WEBPACK_EXTERNAL_MODULE__3966__, __WEBPACK_EXTERNAL_MODULE__8167__, __WEBPACK_EXTERNAL_MODULE__4189__, __WEBPACK_EXTERNAL_MODULE__6473__, __WEBPACK_EXTERNAL_MODULE__1387__, __WEBPACK_EXTERNAL_MODULE__1307__, __WEBPACK_EXTERNAL_MODULE__8759__) => { return /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 2660: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var visit = __webpack_require__(9574); var hasOwnProperty = Object.prototype.hasOwnProperty; var hastCssPropertyMap = { align: 'text-align', valign: 'vertical-align', height: 'height', width: 'width', }; module.exports = function tableCellStyle(node) { visit(node, 'element', visitor); return node; }; function visitor(node) { if (node.tagName !== 'tr' && node.tagName !== 'td' && node.tagName !== 'th') { return; } var hastName; var cssName; for (hastName in hastCssPropertyMap) { if ( !hasOwnProperty.call(hastCssPropertyMap, hastName) || node.properties[hastName] === undefined ) { continue; } cssName = hastCssPropertyMap[hastName]; appendStyle(node, cssName, node.properties[hastName]); delete node.properties[hastName]; } } function appendStyle(node, property, value) { var prevStyle = (node.properties.style || '').trim(); if (prevStyle && !/;\s*/.test(prevStyle)) { prevStyle += ';'; } if (prevStyle) { prevStyle += ' '; } var nextStyle = prevStyle + property + ': ' + value + ';'; node.properties.style = nextStyle; } /***/ }), /***/ 856: /***/ ((module) => { "use strict"; module.exports = convert function convert(test) { if (typeof test === 'string') { return typeFactory(test) } if (test === null || test === undefined) { return ok } if (typeof test === 'object') { return ('length' in test ? anyFactory : matchesFactory)(test) } if (typeof test === 'function') { return test } throw new Error('Expected function, string, or object as test') } function convertAll(tests) { var results = [] var length = tests.length var index = -1 while (++index < length) { results[index] = convert(tests[index]) } return results } // Utility assert each property in `test` is represented in `node`, and each // values are strictly equal. function matchesFactory(test) { return matches function matches(node) { var key for (key in test) { if (node[key] !== test[key]) { return false } } return true } } function anyFactory(tests) { var checks = convertAll(tests) var length = checks.length return matches function matches() { var index = -1 while (++index < length) { if (checks[index].apply(this, arguments)) { return true } } return false } } // Utility to convert a string into a function which checks a given node’s type // for said string. function typeFactory(test) { return type function type(node) { return Boolean(node && node.type === test) } } // Utility to return true. function ok() { return true } /***/ }), /***/ 9222: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; module.exports = visitParents var convert = __webpack_require__(856) var CONTINUE = true var SKIP = 'skip' var EXIT = false visitParents.CONTINUE = CONTINUE visitParents.SKIP = SKIP visitParents.EXIT = EXIT function visitParents(tree, test, visitor, reverse) { var is if (typeof test === 'function' && typeof visitor !== 'function') { reverse = visitor visitor = test test = null } is = convert(test) one(tree, null, []) // Visit a single node. function one(node, index, parents) { var result = [] var subresult if (!test || is(node, index, parents[parents.length - 1] || null)) { result = toResult(visitor(node, parents)) if (result[0] === EXIT) { return result } } if (node.children && result[0] !== SKIP) { subresult = toResult(all(node.children, parents.concat(node))) return subresult[0] === EXIT ? subresult : result } return result } // Visit children in `parent`. function all(children, parents) { var min = -1 var step = reverse ? -1 : 1 var index = (reverse ? children.length : min) + step var result while (index > min && index < children.length) { result = one(children[index], index, parents) if (result[0] === EXIT) { return result } index = typeof result[1] === 'number' ? result[1] : index + step } } } function toResult(value) { if (value !== null && typeof value === 'object' && 'length' in value) { return value } if (typeof value === 'number') { return [CONTINUE, value] } return [value] } /***/ }), /***/ 9574: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; module.exports = visit var visitParents = __webpack_require__(9222) var CONTINUE = visitParents.CONTINUE var SKIP = visitParents.SKIP var EXIT = visitParents.EXIT visit.CONTINUE = CONTINUE visit.SKIP = SKIP visit.EXIT = EXIT function visit(tree, test, visitor, reverse) { if (typeof test === 'function' && typeof visitor !== 'function') { reverse = visitor visitor = test test = null } visitParents(tree, test, overload, reverse) function overload(node, parents) { var parent = parents[parents.length - 1] var index = parent ? parent.children.indexOf(node) : null return visitor(node, index, parent) } } /***/ }), /***/ 9762: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const modeAliases = { aspx: 'asp', bash: 'shell', 'c++': 'cplusplus', 'c#': 'csharp', clj: 'clojure', cljc: 'clojure', cljx: 'clojure', coffeescript: 'javascript', cpp: 'cplusplus', cql: 'sql', cs: 'csharp', docker: 'dockerfile', ecmascript: 'javascript', erl: 'erlang', gql: 'graphql', gradle: 'groovy', handlebars: 'html', hbs: 'html', jl: 'julia', jruby: 'ruby', js: 'javascript', kt: 'kotlin', less: 'css', macruby: 'ruby', md: 'markdown', ml: 'ocaml', mssql: 'sql', mysql: 'sql', node: 'javascript', 'obj-c': 'objectivec', 'obj-c++': 'objectivecplusplus', 'objc++': 'objectivecplusplus', objc: 'objectivec', objcpp: 'objectivecplusplus', objectivecpp: 'objectivecplusplus', pgsql: 'sql', pl: 'perl', plsql: 'sql', postgres: 'sql', postgresql: 'sql', ps1: 'powershell', py: 'python', rake: 'ruby', rb: 'ruby', rbx: 'ruby', rs: 'rust', sass: 'css', scss: 'css', sh: 'shell', solidity: 'sol', sqlite: 'sql', styl: 'css', stylus: 'css', xhtml: 'html', yml: 'yaml', zsh: 'shell', }; const canonical = (language) => { if (language in modeAliases) return modeAliases[language]; return language; }; exports["default"] = canonical; /***/ }), /***/ 7900: /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const canonical_1 = __importDefault(__webpack_require__(9762)); const modes_1 = __webpack_require__(1412); const uppercase_1 = __importDefault(__webpack_require__(8892)); exports["default"] = { uppercase: uppercase_1.default, canonical: canonical_1.default, modes: modes_1.modes, getMode: modes_1.getMode }; /***/ }), /***/ 1412: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.modes = void 0; exports.getMode = getMode; // This is a mapping of languages that we support, but aren't directly loading the mode extension // Within `/src/codeMirror/index.jsx` and /src/codeEditor.index.jsx // // This list also includes a number of language aliases, as because of the way we're using // `CodeMirror.runMode` we can't take advantage of its known aliases in the mode extensions that // we're loading. // // There are 2 types of lookup, single and array. e.g. `html` needs to be rendered using // `htmlmixed`, but `java`, needs to be rendered using the `clike` mode. // exports.modes = { asp: 'clike', aspx: 'clike', bash: 'shell', c: 'clike', 'c#': ['clike', 'text/x-csharp'], 'c++': ['clike', 'text/x-c++src'], clj: 'clojure', cljc: 'clojure', cljx: 'clojure', coffeescript: 'javascript', cplusplus: ['clike', 'text/x-c++src'], cpp: ['clike', 'text/x-c++src'], cql: ['sql', 'text/x-cassandra'], cs: ['clike', 'text/x-csharp'], csharp: ['clike', 'text/x-csharp'], curl: 'shell', d: 'd', diff: 'diff', ecmascript: 'javascript', erl: 'erlang', go: ['go', 'text/x-go'], gradle: 'groovy', gql: 'graphql', handlebars: 'htmlmixed', hbs: 'htmlmixed', html: 'htmlmixed', java: ['clike', 'text/x-java'], jl: 'julia', js: 'javascript', jsx: 'jsx', json: ['javascript', 'application/ld+json'], jruby: 'ruby', kotlin: ['clike', 'text/x-kotlin'], kt: ['clike', 'text/x-kotlin'], less: 'css', liquid: 'htmlmixed', lua: 'lua', node: 'javascript', macruby: 'ruby', markdown: 'gfm', ml: ['mllike', 'text/x-ocaml'], mssql: ['sql', 'text/x-mssql'], mysql: ['sql', 'text/x-mysql'], objc: ['clike', 'text/x-objectivec'], 'objc++': ['clike', 'text/x-objectivec++'], objcpp: ['clike', 'text/x-objectivec++'], objectivec: ['clike', 'text/x-objectivec'], objectivecpp: ['clike', 'text/x-objectivec++'], objectivecplusplus: ['clike', 'text/x-objectivec++'], ocaml: ['mllike', 'text/x-ocaml'], php: ['php', 'text/x-php'], pgsql: ['sql', 'text/x-pgsql'], pl: 'perl', plsql: ['sql', 'text/x-plsql'], postgres: ['sql', 'text/x-pgsql'], postgresql: ['sql', 'text/x-pgsql'], ps1: 'powershell', py: 'python', r: 'r', rake: 'ruby', rb: 'ruby', rbx: 'ruby', rs: 'rust', sass: 'css', scala: ['clike', 'text/x-scala'], scss: 'css', sh: 'shell', sol: 'solidity', solidity: 'solidity', sql: ['sql', 'text/x-sql'], sqlite: ['sql', 'text/x-sqlite'], styl: 'css', stylus: 'css', text: ['null', 'text/plain'], ts: ['javascript', 'text/typescript'], typescript: ['javascript', 'text/typescript'], xhtml: 'htmlmixed', yml: 'yaml', zsh: 'shell', }; function getMode(lang) { let mode = lang; if (mode in exports.modes) { mode = exports.modes[mode]; if (Array.isArray(mode)) { [, mode] = mode; } } return mode; } /***/ }), /***/ 8892: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = uppercase; const codeTypes = { asp: 'ASP.NET', aspx: 'ASP.NET', bash: 'Bash', c: 'C', 'c#': 'C#', 'c++': 'C++', coffeescript: 'CoffeeScript', clj: 'Clojure', cljc: 'Clojure', cljx: 'Clojure', clojure: 'Clojure', cplusplus: 'C++', cpp: 'C++', cql: 'Cassandra', cs: 'C#', csharp: 'C#', css: 'CSS', curl: 'cURL', d: 'D', dart: 'Dart', diff: 'Diff', dockerfile: 'Dockerfile', ecmascript: 'ECMAScript', erl: 'Erlang', erlang: 'Erlang', go: 'Go', gql: 'GraphQL', gradle: 'Gradle', graphql: 'GraphQL', groovy: 'Groovy', handlebars: 'Handlebars', hbs: 'Handlebars', haml: 'HAML', haxe: 'Haxe', html: 'HTML', http: 'HTTP', java: 'Java', javascript: 'JavaScript', jinja2: 'Jinja2', jl: 'Julia', jruby: 'JRuby', js: 'JavaScript', json: 'JSON', jsx: 'JSX', julia: 'Julia', kotlin: 'Kotlin', kt: 'Kotlin', less: 'LESS', liquid: 'Liquid', lua: 'Lua', macruby: 'MacRuby', markdown: 'Markdown', md: 'Markdown', mermaid: 'Mermaid', // syntax highlighting not supported yet ml: 'OCaml', mssql: 'SQL Server', mysql: 'MySQL', node: 'Node', objc: 'Objective-C', 'objc++': 'Objective-C++', objcpp: 'Objective-C++', objectivec: 'Objective-C', objectivecpp: 'Objective-C++', objectivecplusplus: 'Objective-C++', ocaml: 'OCaml', perl: 'Perl', php: 'PHP', pl: 'Perl', pgsql: 'PL/pgSQL', plsql: 'PL/SQL', postgres: 'PostgreSQL', postgresql: 'PostgreSQL', powershell: 'PowerShell', ps1: 'PowerShell', python: 'Python', py: 'Python', r: 'R', rake: 'Rake', rb: 'Ruby', rbx: 'Rubinius', rs: 'Rust', ruby: 'Ruby', rust: 'Rust', sass: 'Sass', scala: 'Scala', scss: 'SCSS', sh: 'Shell', shell: 'Shell', smarty: 'Smarty', solidity: 'Solidity', sql: 'SQL', sqlite: 'SQLite', stylus: 'Stylus', styl: 'Stylus', swift: 'Swift', text: 'Text', toml: 'TOML', twig: 'Twig', typescript: 'TypeScript', xhtml: 'XHTML', xml: 'XML', yaml: 'YAML', yml: 'YAML', zsh: 'Zsh', }; function uppercase(language) { if (language in codeTypes) return codeTypes[language]; return language; } /***/ }), /***/ 9214: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const XHTMLEntities = __webpack_require__(7591); const hexNumber = /^[\da-fA-F]+$/; const decimalNumber = /^\d+$/; // The map to `acorn-jsx` tokens from `acorn` namespace objects. const acornJsxMap = new WeakMap(); // Get the original tokens for the given `acorn` namespace object. function getJsxTokens(acorn) { acorn = acorn.Parser.acorn || acorn; let acornJsx = acornJsxMap.get(acorn); if (!acornJsx) { const tt = acorn.tokTypes; const TokContext = acorn.TokContext; const TokenType = acorn.TokenType; const tc_oTag = new TokContext('<tag', false); const tc_cTag = new TokContext('</tag', false); const tc_expr = new TokContext('<tag>...</tag>', true, true); const tokContexts = { tc_oTag: tc_oTag, tc_cTag: tc_cTag, tc_expr: tc_expr }; const tokTypes = { jsxName: new TokenType('jsxName'), jsxText: new TokenType('jsxText', {beforeExpr: true}), jsxTagStart: new TokenType('jsxTagStart', {startsExpr: true}), jsxTagEnd: new TokenType('jsxTagEnd') }; tokTypes.jsxTagStart.updateContext = function() { this.context.push(tc_expr); // treat as beginning of JSX expression this.context.push(tc_oTag); // start opening tag context this.exprAllowed = false; }; tokTypes.jsxTagEnd.updateContext = function(prevType) { let out = this.context.pop(); if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) { this.context.pop(); this.exprAllowed = this.curContext() === tc_expr; } else { this.exprAllowed = true; } }; acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes }; acornJsxMap.set(acorn, acornJsx); } return acornJsx; } // Transforms JSX element name to string. function getQualifiedJSXName(object) { if (!object) return object; if (object.type === 'JSXIdentifier') return object.name; if (object.type === 'JSXNamespacedName') return object.namespace.name + ':' + object.name.name; if (object.type === 'JSXMemberExpression') return getQualifiedJSXName(object.object) + '.' + getQualifiedJSXName(object.property); } module.exports = function(options) { options = options || {}; return function(Parser) { return plugin({ allowNamespaces: options.allowNamespaces !== false, allowNamespacedObjects: !!options.allowNamespacedObjects }, Parser); }; }; // This is `tokTypes` of the peer dep. // This can be different instances from the actual `tokTypes` this plugin uses. Object.defineProperty(module.exports, "tokTypes", ({ get: function get_tokTypes() { return getJsxTokens(__webpack_require__(6473)).tokTypes; }, configurable: true, enumerable: true })); function plugin(options, Parser) { const acorn = Parser.acorn || __webpack_require__(6473); const acornJsx = getJsxTokens(acorn); const tt = acorn.tokTypes; const tok = acornJsx.tokTypes; const tokContexts = acorn.tokContexts; const tc_oTag = acornJsx.tokContexts.tc_oTag; const tc_cTag = acornJsx.tokContexts.tc_cTag; const tc_expr = acornJsx.tokContexts.tc_expr; const isNewLine = acorn.isNewLine; const isIdentifierStart = acorn.isIdentifierStart; const isIdentifierChar = acorn.isIdentifierChar; return class extends Parser { // Expose actual `tokTypes` and `tokContexts` to other plugins. static get acornJsx() { return acornJsx; } // Reads inline JSX contents token. jsx_readToken() { let out = '', chunkStart = this.pos; for (;;) { if (this.pos >= this.input.length) this.raise(this.start, 'Unterminated JSX contents'); let ch = this.input.charCodeAt(this.pos); switch (ch) { case 60: // '<' case 123: // '{' if (this.pos === this.start) { if (ch === 60 && this.exprAllowed) { ++this.pos; return this.finishToken(tok.jsxTagStart); } return this.getTokenFromCode(ch); } out += this.input.slice(chunkStart, this.pos); return this.finishToken(tok.jsxText, out); case 38: // '&' out += this.input.slice(chunkStart, this.pos); out += this.jsx_readEntity(); chunkStart = this.pos; break; case 62: // '>' case 125: // '}' this.raise( this.pos, "Unexpected token `" + this.input[this.pos] + "`. Did you mean `" + (ch === 62 ? "&gt;" : "&rbrace;") + "` or " + "`{\"" + this.input[this.pos] + "\"}" + "`?" ); default: if (isNewLine(ch)) { out += this.input.slice(chunkStart, this.pos); out += this.jsx_readNewLine(true); chunkStart = this.pos; } else { ++this.pos; } } } } jsx_readNewLine(normalizeCRLF) { let ch = this.input.charCodeAt(this.pos); let out; ++this.pos; if (ch === 13 && this.input.charCodeAt(this.pos) === 10) { ++this.pos; out = normalizeCRLF ? '\n' : '\r\n'; } else { out = String.fromCharCode(ch); } if (this.options.locations) { ++this.curLine; this.lineStart = this.pos; } return out; } jsx_readString(quote) { let out = '', chunkStart = ++this.pos; for (;;) { if (this.pos >= this.input.length) this.raise(this.start, 'Unterminated string constant'); let ch = this.input.charCodeAt(this.pos); if (ch === quote) break; if (ch === 38) { // '&' out += this.input.slice(chunkStart, this.pos); out += this.jsx_readEntity(); chunkStart = this.pos; } else if (isNewLine(ch)) { out += this.input.slice(chunkStart, this.pos); out += this.jsx_readNewLine(false); chunkStart = this.pos; } else { ++this.pos; } } out += this.input.slice(chunkStart, this.pos++); return this.finishToken(tt.string, out); } jsx_readEntity() { let str = '', count = 0, entity; let ch = this.input[this.pos]; if (ch !== '&') this.raise(this.pos, 'Entity must start with an ampersand'); let startPos = ++this.pos; while (this.pos < this.input.length && count++ < 10) { ch = this.input[this.pos++]; if (ch === ';') { if (str[0] === '#') { if (str[1] === 'x') { str = str.substr(2); if (hexNumber.test(str)) entity = String.fromCharCode(parseInt(str, 16)); } else { str = str.substr(1); if (decimalNumber.test(str)) entity = String.fromCharCode(parseInt(str, 10)); } } else { entity = XHTMLEntities[str]; } break; } str += ch; } if (!entity) { this.pos = startPos; return '&'; } return entity; } // Read a JSX identifier (valid tag or attribute name). // // Optimized version since JSX identifiers can't contain // escape characters and so can be read as single slice. // Also assumes that first character was already checked // by isIdentifierStart in readToken. jsx_readWord() { let ch, start = this.pos; do { ch = this.input.charCodeAt(++this.pos); } while (isIdentifierChar(ch) || ch === 45); // '-' return this.finishToken(tok.jsxName, this.input.slice(start, this.pos)); } // Parse next token as JSX identifier jsx_parseIdentifier() { let node = this.startNode(); if (this.type === tok.jsxName) node.name = this.value; else if (this.type.keyword) node.name = this.type.keyword; else this.unexpected(); this.next(); return this.finishNode(node, 'JSXIdentifier'); } // Parse namespaced identifier. jsx_parseNamespacedName() { let startPos = this.start, startLoc = this.startLoc; let name = this.jsx_parseIdentifier(); if (!options.allowNamespaces || !this.eat(tt.colon)) return name; var node = this.startNodeAt(startPos, startLoc); node.namespace = name; node.name = this.jsx_parseIdentifier(); return this.finishNode(node, 'JSXNamespacedName'); } // Parses element name in any form - namespaced, member // or single identifier. jsx_parseElementName() { if (this.type === tok.jsxTagEnd) return ''; let startPos = this.start, startLoc = this.startLoc; let node = this.jsx_parseNamespacedName(); if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !options.allowNamespacedObjects) { this.unexpected(); } while (this.eat(tt.dot)) { let newNode = this.startNodeAt(startPos, startLoc); newNode.object = node; newNode.property = this.jsx_parseIdentifier(); node = this.finishNode(newNode, 'JSXMemberExpression'); } return node; } // Parses any type of JSX attribute value. jsx_parseAttributeValue() { switch (this.type) { case tt.braceL: let node = this.jsx_parseExpressionContainer(); if (node.expression.type === 'JSXEmptyExpression') this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression'); return node; case tok.jsxTagStart: case tt.string: return this.parseExprAtom(); default: this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text'); } } // JSXEmptyExpression is unique type since it doesn't actually parse anything, // and so it should start at the end of last read token (left brace) and finish // at the beginning of the next one (right brace). jsx_parseEmptyExpression() { let node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc); return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc); } // Parses JSX expression enclosed into curly brackets. jsx_parseExpressionContainer() { let node = this.startNode(); this.next(); node.expression = this.type === tt.braceR ? this.jsx_parseEmptyExpression() : this.parseExpression(); this.expect(tt.braceR); return this.finishNode(node, 'JSXExpressionContainer'); } // Parses following JSX attribute name-value pair. jsx_parseAttribute() { let node = this.startNode(); if (this.eat(tt.braceL)) { this.expect(tt.ellipsis); node.argument = this.parseMaybeAssign(); this.expect(tt.braceR); return this.finishNode(node, 'JSXSpreadAttribute'); } node.name = this.jsx_parseNamespacedName(); node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null; return this.finishNode(node, 'JSXAttribute'); } // Parses JSX opening tag starting after '<'. jsx_parseOpeningElementAt(startPos, startLoc) { let node = this.startNodeAt(startPos, startLoc); node.attributes = []; let nodeName = this.jsx_parseElementName(); if (nodeName) node.name = nodeName; while (this.type !== tt.slash && this.type !== tok.jsxTagEnd) node.attributes.push(this.jsx_parseAttribute()); node.selfClosing = this.eat(tt.slash); this.expect(tok.jsxTagEnd); return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment'); } // Parses JSX closing tag starting after '</'. jsx_parseClosingElementAt(startPos, startLoc) { let node = this.startNodeAt(startPos, startLoc); let nodeName = this.jsx_parseElementName(); if (nodeName) node.name = nodeName; this.expect(tok.jsxTagEnd); return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment'); } // Parses entire JSX element, including it's opening tag // (starting after '<'), attributes, contents and closing tag. jsx_parseElementAt(startPos, startLoc) { let node = this.startNodeAt(startPos, startLoc); let children = []; let openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc); let closingElement = null; if (!openingElement.selfClosing) { contents: for (;;) { switch (this.type) { case tok.jsxTagStart: startPos = this.start; startLoc = this.startLoc; this.next(); if (this.eat(tt.slash)) { closingElement = this.jsx_parseClosingElementAt(startPos, startLoc); break contents; } children.push(this.jsx_parseElementAt(startPos, startLoc)); break; case tok.jsxText: children.push(this.parseExprAtom()); break; case tt.braceL: children.push(this.jsx_parseExpressionContainer()); break; default: this.unexpected(); } } if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { this.raise( closingElement.start, 'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>'); } } let fragmentOrElement = openingElement.name ? 'Element' : 'Fragment'; node['opening' + fragmentOrElement] = openingElement; node['closing' + fragmentOrElement] = closingElement; node.children = children; if (this.type === tt.relational && this.value === "<") { this.raise(this.start, "Adjacent JSX elements must be wrapped in an enclosing tag"); } return this.finishNode(node, 'JSX' + fragmentOrElement); } // Parse JSX text jsx_parseText() { let node = this.parseLiteral(this.value); node.type = "JSXText"; return node; } // Parses entire JSX element from current position. jsx_parseElement() { let startPos = this.start, startLoc = this.startLoc; this.next(); return this.jsx_parseElementAt(startPos, startLoc); } parseExprAtom(refShortHandDefaultPos) { if (this.type === tok.jsxText) return this.jsx_parseText(); else if (this.type === tok.jsxTagStart) return this.jsx_parseElement(); else return super.parseExprAtom(refShortHandDefaultPos); } readToken(code) { let context = this.curContext(); if (context === tc_expr) return this.jsx_readToken(); if (context === tc_oTag || context === tc_cTag) { if (isIdentifierStart(code)) return this.jsx_readWord(); if (code == 62) { ++this.pos; return this.finishToken(tok.jsxTagEnd); } if ((code === 34 || code === 39) && context == tc_oTag) return this.jsx_readString(code); } if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) { ++this.pos; return this.finishToken(tok.jsxTagStart); } return super.readToken(code); } updateContext(prevType) { if (this.type == tt.braceL) { var curContext = this.curContext(); if (curContext == tc_oTag) this.context.push(tokContexts.b_expr); else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl); else super.updateContext(prevType); this.exprAllowed = true; } else if (this.type === tt.slash && prevType === tok.jsxTagStart) { this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore this.context.push(tc_cTag); // reconsider as closing tag context this.exprAllowed = false; } else { return super.updateContext(prevType); } } }; } /***/ }), /***/ 7591: /***/ ((module) => { module.exports = { quot: '\u0022', amp: '&', apos: '\u0027', lt: '<', gt: '>', nbsp: '\u00A0', iexcl: '\u00A1', cent: '\u00A2', pound: '\u00A3', curren: '\u00A4', yen: '\u00A5', brvbar: '\u00A6', sect: '\u00A7', uml: '\u00A8', copy: '\u00A9', ordf: '\u00AA', laquo: '\u00AB', not: '\u00AC', shy: '\u00AD', reg: '\u00AE', macr: '\u00AF', deg: '\u00B0', plusmn: '\u00B1', sup2: '\u00B2', sup3: '\u00B3', acute: '\u00B4', micro: '\u00B5', para: '\u00B6', middot: '\u00B7', cedil: '\u00B8', sup1: '\u00B9', ordm: '\u00BA', raquo: '\u00BB', frac14: '\u00BC', frac12: '\u00BD', frac34: '\u00BE', iquest: '\u00BF', Agrave: '\u00C0', Aacute: '\u00C1', Acirc: '\u00C2', Atilde: '\u00C3', Auml: '\u00C4', Aring: '\u00C5', AElig: '\u00C6', Ccedil: '\u00C7', Egrave: '\u00C8', Eacute: '\u00C9', Ecirc: '\u00CA', Euml: '\u00CB', Igrave: '\u00CC', Iacute: '\u00CD', Icirc: '\u00CE', Iuml: '\u00CF', ETH: '\u00D0', Ntilde: '\u00D1', Ograve: '\u00D2', Oacute: '\u00D3', Ocirc: '\u00D4', Otilde: '\u00D5', Ouml: '\u00D6', times: '\u00D7', Oslash: '\u00D8', Ugrave: '\u00D9', Uacute: '\u00DA', Ucirc: '\u00DB', Uuml: '\u00DC', Yacute: '\u00DD', THORN: '\u00DE', szlig: '\u00DF', agrave: '\u00E0', aacute: '\u00E1', acirc: '\u00E2', atilde: '\u00E3', auml: '\u00E4', aring: '\u00E5', aelig: '\u00E6', ccedil: '\u00E7', egrave: '\u00E8', eacute: '\u00E9', ecirc: '\u00EA', euml: '\u00EB', igrave: '\u00EC', iacute: '\u00ED', icirc: '\u00EE', iuml: '\u00EF', eth: '\u00F0', ntilde: '\u00F1', ograve: '\u00F2', oacute: '\u00F3', ocirc: '\u00F4', otilde: '\u00F5', ouml: '\u00F6', divide: '\u00F7', oslash: '\u00F8', ugrave: '\u00F9', uacute: '\u00FA', ucirc: '\u00FB', uuml: '\u00FC', yacute: '\u00FD', thorn: '\u00FE', yuml: '\u00FF', OElig: '\u0152', oelig: '\u0153', Scaron: '\u0160', scaron: '\u0161', Yuml: '\u0178', fnof: '\u0192', circ: '\u02C6', tilde: '\u02DC', Alpha: '\u0391', Beta: '\u0392', Gamma: '\u0393', Delta: '\u0394', Epsilon: '\u0395', Zeta: '\u0396', Eta: '\u0397', Theta: '\u0398', Iota: '\u0399', Kappa: '\u039A', Lambda: '\u039B', Mu: '\u039C', Nu: '\u039D', Xi: '\u039E', Omicron: '\u039F', Pi: '\u03A0', Rho: '\u03A1', Sigma: '\u03A3', Tau: '\u03A4', Upsilon: '\u03A5', Phi: '\u03A6', Chi: '\u03A7', Psi: '\u03A8', Omega: '\u03A9', alpha: '\u03B1', beta: '\u03B2', gamma: '\u03B3', delta: '\u03B4', epsilon: '\u03B5', zeta: '\u03B6', eta: '\u03B7', theta: '\u03B8', iota: '\u03B9', kappa: '\u03BA', lambda: '\u03BB', mu: '\u03BC', nu: '\u03BD', xi: '\u03BE', omicron: '\u03BF', pi: '\u03C0', rho: '\u03C1', sigmaf: '\u03C2', sigma: '\u03C3', tau: '\u03C4', upsilon: '\u03C5', phi: '\u03C6', chi: '\u03C7', psi: '\u03C8', omega: '\u03C9', thetasym: '\u03D1', upsih: '\u03D2', piv: '\u03D6', ensp: '\u2002', emsp: '\u2003', thinsp: '\u2009', zwnj: '\u200C', zwj: '\u200D', lrm: '\u200E', rlm: '\u200F', ndash: '\u2013', mdash: '\u2014', lsquo: '\u2018', rsquo: '\u2019', sbquo: '\u201A', ldquo: '\u201C', rdquo: '\u201D', bdquo: '\u201E', dagger: '\u2020', Dagger: '\u2021', bull: '\u2022', hellip: '\u2026', permil: '\u2030', prime: '\u2032', Prime: '\u2033', lsaquo: '\u2039', rsaquo: '\u203A', oline: '\u203E', frasl: '\u2044', euro: '\u20AC', image: '\u2111', weierp: '\u2118', real: '\u211C', trade: '\u2122', alefsym: '\u2135', larr: '\u2190', uarr: '\u2191', rarr: '\u2192', darr: '\u2193', harr: '\u2194', crarr: '\u21B5', lArr: '\u21D0', uArr: '\u21D1', rArr: '\u21D2', dArr: '\u21D3', hArr: '\u21D4', forall: '\u2200', part: '\u2202', exist: '\u2203', empty: '\u2205', nabla: '\u2207', isin: '\u2208', notin: '\u2209', ni: '\u220B', prod: '\u220F', sum: '\u2211', minus: '\u2212', lowast: '\u2217', radic: '\u221A', prop: '\u221D', infin: '\u221E', ang: '\u2220', and: '\u2227', or: '\u2228', cap: '\u2229', cup: '\u222A', 'int': '\u222B', there4: '\u2234', sim: '\u223C', cong: '\u2245', asymp: '\u2248', ne: '\u2260', equiv: '\u2261', le: '\u2264', ge: '\u2265', sub: '\u2282', sup: '\u2283', nsub: '\u2284', sube: '\u2286', supe: '\u2287', oplus: '\u2295', otimes: '\u2297', perp: '\u22A5', sdot: '\u22C5', lceil: '\u2308', rceil: '\u2309', lfloor: '\u230A', rfloor: '\u230B', lang: '\u2329', rang: '\u232A', loz: '\u25CA', spades: '\u2660', clubs: '\u2663', hearts: '\u2665', diams: '\u2666' }; /***/ }), /***/ 7965: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var deselectCurrent = __webpack_require__(6426); var clipboardToIE11Formatting = { "text/plain": "Text", "text/html": "Url", "default": "Text" } var defaultMessage = "Copy to clipboard: #{key}, Enter"; function format(message) { var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; return message.replace(/#{\s*key\s*}/g, copyKey); } function copy(text, options) { var debug, message, reselectPrevious, range, selection, mark, success = false; if (!options) { options = {}; } debug = options.debug || false; try { reselectPrevious = deselectCurrent(); range = document.createRange(); selection = document.getSelection(); mark = document.createElement("span"); mark.textContent = text; // avoid screen readers from reading out loud the text mark.ariaHidden = "true" // reset user styles for span element mark.style.all = "unset"; // prevents scrolling to the end of the page mark.style.position = "fixed"; mark.style.top = 0; mark.style.clip = "rect(0, 0, 0, 0)"; // used to preserve spaces and line breaks mark.style.whiteSpace = "pre"; // do not inherit user-select (it may be `none`) mark.style.webkitUserSelect = "text"; mark.style.MozUserSelect = "text"; mark.style.msUserSelect = "text"; mark.style.userSelect = "text"; mark.addEventListener("copy", function(e) { e.stopPropagation(); if (options.format) { e.preventDefault(); if (typeof e.clipboardData === "undefined") { // IE 11 debug && console.warn("unable to use e.clipboardData"); debug && console.warn("trying IE specific stuff"); window.clipboardData.clearData(); var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"] window.clipboardData.setData(format, text); } else { // all other browsers e.clipboardData.clearData(); e.clipboardData.setData(options.format, text); } } if (options.onCopy) { e.preventDefault(); options.onCopy(e.clipboardData); } }); document.body.appendChild(mark); range.selectNodeContents(mark); selection.addRange(range); var successful = document.execCommand("copy"); if (!successful) { throw new Error("copy command was unsuccessful"); } success = true; } catch (err) { debug && console.error("unable to copy using execCommand: ", err); debug && console.warn("trying IE specific stuff"); try { window.clipboardData.setData(options.format || "text", text); options.onCopy && options.onCopy(window.clipboardData); success = true; } catch (err) { debug && console.error("unable to copy using clipboardData: ", err); debug && console.error("falling back to prompt"); message = format("message" in options ? options.message : defaultMessage); window.prompt(message, text); } } finally { if (selection) { if (typeof selection.removeRange == "function") { selection.removeRange(range); } else { selection.removeAllRanges(); } } if (mark) { document.body.removeChild(mark); } reselectPrevious(); } return success; } module.exports = copy; /***/ }), /***/ 3387: /***/ ((module) => { module.exports = function (it) { if (typeof it != 'function') throw TypeError(it + ' is not a function!'); return it; }; /***/ }), /***/ 8184: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // 22.1.3.31 Array.prototype[@@unscopables] var UNSCOPABLES = __webpack_require__(7574)('unscopables'); var ArrayProto = Array.prototype; if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(3341)(ArrayProto, UNSCOPABLES, {}); module.exports = function (key) { ArrayProto[UNSCOPABLES][key] = true; }; /***/ }), /***/ 4228: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(3305); module.exports = function (it) { if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /***/ 1464: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(7221); var toLength = __webpack_require__(1485); var toAbsoluteIndex = __webpack_require__(157); module.exports = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) if (IS_INCLUDES || index in O) { if (O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }), /***/ 6179: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // 0 -> Array#forEach // 1 -> Array#map // 2 -> Array#filter // 3 -> Array#some // 4 -> Array#every // 5 -> Array#find // 6 -> Array#findIndex var ctx = __webpack_require__(5052); var IObject = __webpack_require__(1249); var toObject = __webpack_require__(8270); var toLength = __webpack_require__(1485); var asc = __webpack_require__(5572); module.exports = function (TYPE, $create) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; var create = $create || asc; return function ($this, callbackfn, that) { var O = toObject($this); var self = IObject(O); var f = ctx(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var val, res; for (;length > index; index++) if (NO_HOLES || index in self) { val = self[index]; res = f(val, index, O); if (TYPE) { if (IS_MAP) result[index] = res; // map else if (res) switch (TYPE) { case 3: return true; // some case 5: return val; // find case 6: return index; // findIndex case 2: result.push(val); // filter } else if (IS_EVERY) return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; }; }; /***/ }), /***/ 3606: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(3305); var isArray = __webpack_require__(7981); var SPECIES = __webpack_require__(7574)('species'); module.exports = function (original) { var C; if (isArray(original)) { C = original.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return C === undefined ? Array : C; }; /***/ }), /***/ 5572: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // 9.4.2.3 ArraySpeciesCreate(originalArray, length) var speciesConstructor = __webpack_require__(3606); module.exports = function (original, length) { return new (speciesConstructor(original))(length); }; /***/ }), /***/ 4848: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // getting tag from 19.1.3.6 Object.prototype.toString() var cof = __webpack_require__(5089); var TAG = __webpack_require__(7574)('toStringTag'); // ES3 wrong here var ARG = cof(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (e) { /* empty */ } }; module.exports = function (it) { var O, T, B; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T // builtinTag case : ARG ? cof(O) // ES3 arguments fallback : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; }; /***/ }), /***/ 5089: /***/ ((module) => { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }), /***/ 6094: /***/ ((module) => { var core = module.exports = { version: '2.6.12' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), /***/ 7227: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var $defineProperty = __webpack_require__(7967); var createDesc = __webpack_require__(1996); module.exports = function (object, index, value) { if (index in object) $defineProperty.f(object, index, createDesc(0, value)); else object[index] = value; }; /***/ }), /***/ 5052: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // optional / simple context binding var aFunction = __webpack_require__(3387); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; /***/ }), /***/ 3344: /***/ ((module) => { // 7.2.1 RequireObjectCoercible(argument) module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /***/ 1763: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(9448)(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /***/ 6034: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(3305); var document = (__webpack_require__(7526).document); // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); module.exports = function (it) { return is ? document.createElement(it) : {}; }; /***/ }), /***/ 6140: /***/ ((module) => { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }), /***/ 5969: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // all enumerable object keys, includes symbols var getKeys = __webpack_require__(1311); var gOPS = __webpack_require__(1060); var pIE = __webpack_require__(8449); module.exports = function (it) { var result = getKeys(it); var getSymbols = gOPS.f; if (getSymbols) { var symbols = getSymbols(it); var isEnum = pIE.f; var i = 0; var key; while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); } return result; }; /***/ }), /***/ 2127: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var global = __webpack_require__(7526); var core = __webpack_require__(6094); var hide = __webpack_require__(3341); var redefine = __webpack_require__(8859); var ctx = __webpack_require__(5052); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { var IS_FORCED = type & $export.F; var IS_GLOBAL = type & $export.G; var IS_STATIC = type & $export.S; var IS_PROTO = type & $export.P; var IS_BIND = type & $export.B; var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); var key, own, out, exp; if (IS_GLOBAL) source = name; for (key in source) { // contains in native own = !IS_FORCED && target && target[key] !== undefined; // export native or passed out = (own ? target : source)[key]; // bind timers to global for call from export context exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // extend global if (target) redefine(target, key, out, type & $export.U); // export if (exports[key] != out) hide(exports, key, exp); if (IS_PROTO && expProto[key] != out) expProto[key] = out; } }; global.core = core; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /***/ 5203: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var MATCH = __webpack_require__(7574)('match'); module.exports = function (KEY) { var re = /./; try { '/./'[KEY](re); } catch (e) { try { re[MATCH] = false; return !'/./'[KEY](re); } catch (f) { /* empty */ } } return true; }; /***/ }), /***/ 9448: /***/ ((module) => { module.exports = function (exec) { try { return !!exec(); } catch (e) { return true; } }; /***/ }), /***/ 9461: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = __webpack_require__(4556)('native-function-to-string', Function.toString); /***/ }), /***/ 7526: /***/ ((module) => { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func : Function('return this')(); if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef /***/ }), /***/ 7917: /***/ ((module) => { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /***/ 3341: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var dP = __webpack_require__(7967); var createDesc = __webpack_require__(1996); module.exports = __webpack_require__(1763) ? function (object, key, value) { retu