{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/latex.js"],"names":["_toConsumableArray","source","re","either","_len","arguments","length","args","Array","_key","joined","map","x","join","module","exports","hljs","_ref","DOUBLE_CARET_VARIANTS","begin","EVERYTHING_BUT_VERBATIM","className","relevance","contains","endsParent","apply","word","RegExp","pattern","variants","end","COMMENT","BRACE_GROUP_NO_VERBATIM","concat","ARGUMENT_BRACES","inherit","ARGUMENT_BRACKETS","SPACE_GOBBLER","ARGUMENT_M","ARGUMENT_O","ARGUMENT_AND_THEN","arg","starts_mode","starts","CSNAME","csname","keywords","$pattern","keyword","BEGIN_ENV","envname","VERBATIM_DELIMITED_EQUAL","innerName","undefined","END_SAME_AS_BEGIN","excludeBegin","excludeEnd","VERBATIM_DELIMITED_ENV","VERBATIM_DELIMITED_BRACES","VERBATIM","suffix","prefix","name","aliases"],"mappings":"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","file":"react-syntax-highlighter_languages_highlight_latex-cb42f4ecb187387eab3c.js","sourcesContent":["var _toConsumableArray = require(\"/home/runner/work/superset/superset/docs/node_modules/babel-preset-gatsby/node_modules/@babel/runtime/helpers/toConsumableArray\");\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n  return re.source;\n}\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\n\n\nfunction either() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var joined = '(' + args.map(function (x) {\n    return source(x);\n  }).join(\"|\") + \")\";\n  return joined;\n}\n/*\nLanguage: LaTeX\nAuthor: Benedikt Wilde <bwilde@posteo.de>\nWebsite: https://www.latex-project.org\nCategory: markup\n*/\n\n/** @type LanguageFn */\n\n\nfunction latex(hljs) {\n  var _ref;\n\n  var KNOWN_CONTROL_WORDS = either.apply(void 0, _toConsumableArray(['(?:NeedsTeXFormat|RequirePackage|GetIdInfo)', 'Provides(?:Expl)?(?:Package|Class|File)', '(?:DeclareOption|ProcessOptions)', '(?:documentclass|usepackage|input|include)', 'makeat(?:letter|other)', 'ExplSyntax(?:On|Off)', '(?:new|renew|provide)?command', '(?:re)newenvironment', '(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand', '(?:New|Renew|Provide|Declare)DocumentEnvironment', '(?:(?:e|g|x)?def|let)', '(?:begin|end)', '(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)', 'caption', '(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)', '(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)', '(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)', '(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)', '(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)', '(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)'].map(function (word) {\n    return word + '(?![a-zA-Z@:_])';\n  })));\n  var L3_REGEX = new RegExp([// A function \\module_function_name:signature or \\__module_function_name:signature,\n  // where both module and function_name need at least two characters and\n  // function_name may contain single underscores.\n  '(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*', // A variable \\scope_module_and_name_type or \\scope__module_ane_name_type,\n  // where scope is one of l, g or c, type needs at least two characters\n  // and module_and_name may contain single underscores.\n  '[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}', // A quark \\q_the_name or \\q__the_name or\n  // scan mark \\s_the_name or \\s__vthe_name,\n  // where variable_name needs at least two characters and\n  // may contain single underscores.\n  '[qs]__?[a-zA-Z](?:_?[a-zA-Z])+', // Other LaTeX3 macro names that are not covered by the three rules above.\n  'use(?:_i)?:[a-zA-Z]*', '(?:else|fi|or):', '(?:if|cs|exp):w', '(?:hbox|vbox):n', '::[a-zA-Z]_unbraced', '::[a-zA-Z:]'].map(function (pattern) {\n    return pattern + '(?![a-zA-Z:_])';\n  }).join('|'));\n  var L2_VARIANTS = [{\n    begin: /[a-zA-Z@]+/\n  }, // control word\n  {\n    begin: /[^a-zA-Z@]?/\n  } // control symbol\n  ];\n  var DOUBLE_CARET_VARIANTS = [{\n    begin: /\\^{6}[0-9a-f]{6}/\n  }, {\n    begin: /\\^{5}[0-9a-f]{5}/\n  }, {\n    begin: /\\^{4}[0-9a-f]{4}/\n  }, {\n    begin: /\\^{3}[0-9a-f]{3}/\n  }, {\n    begin: /\\^{2}[0-9a-f]{2}/\n  }, {\n    begin: /\\^{2}[\\u0000-\\u007f]/\n  }];\n  var CONTROL_SEQUENCE = {\n    className: 'keyword',\n    begin: /\\\\/,\n    relevance: 0,\n    contains: [{\n      endsParent: true,\n      begin: KNOWN_CONTROL_WORDS\n    }, {\n      endsParent: true,\n      begin: L3_REGEX\n    }, {\n      endsParent: true,\n      variants: DOUBLE_CARET_VARIANTS\n    }, {\n      endsParent: true,\n      relevance: 0,\n      variants: L2_VARIANTS\n    }]\n  };\n  var MACRO_PARAM = {\n    className: 'params',\n    relevance: 0,\n    begin: /#+\\d?/\n  };\n  var DOUBLE_CARET_CHAR = {\n    // relevance: 1\n    variants: DOUBLE_CARET_VARIANTS\n  };\n  var SPECIAL_CATCODE = {\n    className: 'built_in',\n    relevance: 0,\n    begin: /[$&^_]/\n  };\n  var MAGIC_COMMENT = {\n    className: 'meta',\n    begin: '% !TeX',\n    end: '$',\n    relevance: 10\n  };\n  var COMMENT = hljs.COMMENT('%', '$', {\n    relevance: 0\n  });\n  var EVERYTHING_BUT_VERBATIM = [CONTROL_SEQUENCE, MACRO_PARAM, DOUBLE_CARET_CHAR, SPECIAL_CATCODE, MAGIC_COMMENT, COMMENT];\n  var BRACE_GROUP_NO_VERBATIM = {\n    begin: /\\{/,\n    end: /\\}/,\n    relevance: 0,\n    contains: ['self'].concat(EVERYTHING_BUT_VERBATIM)\n  };\n  var ARGUMENT_BRACES = hljs.inherit(BRACE_GROUP_NO_VERBATIM, {\n    relevance: 0,\n    endsParent: true,\n    contains: [BRACE_GROUP_NO_VERBATIM].concat(EVERYTHING_BUT_VERBATIM)\n  });\n  var ARGUMENT_BRACKETS = {\n    begin: /\\[/,\n    end: /\\]/,\n    endsParent: true,\n    relevance: 0,\n    contains: [BRACE_GROUP_NO_VERBATIM].concat(EVERYTHING_BUT_VERBATIM)\n  };\n  var SPACE_GOBBLER = {\n    begin: /\\s+/,\n    relevance: 0\n  };\n  var ARGUMENT_M = [ARGUMENT_BRACES];\n  var ARGUMENT_O = [ARGUMENT_BRACKETS];\n\n  var ARGUMENT_AND_THEN = function ARGUMENT_AND_THEN(arg, starts_mode) {\n    return {\n      contains: [SPACE_GOBBLER],\n      starts: {\n        relevance: 0,\n        contains: arg,\n        starts: starts_mode\n      }\n    };\n  };\n\n  var CSNAME = function CSNAME(csname, starts_mode) {\n    return {\n      begin: '\\\\\\\\' + csname + '(?![a-zA-Z@:_])',\n      keywords: {\n        $pattern: /\\\\[a-zA-Z]+/,\n        keyword: '\\\\' + csname\n      },\n      relevance: 0,\n      contains: [SPACE_GOBBLER],\n      starts: starts_mode\n    };\n  };\n\n  var BEGIN_ENV = function BEGIN_ENV(envname, starts_mode) {\n    return hljs.inherit({\n      begin: '\\\\\\\\begin(?=\\\\s*\\\\r?\\\\n?\\\\s*\\\\{' + envname + '\\\\})',\n      keywords: {\n        $pattern: /\\\\[a-zA-Z]+/,\n        keyword: '\\\\begin'\n      },\n      relevance: 0\n    }, ARGUMENT_AND_THEN(ARGUMENT_M, starts_mode));\n  };\n\n  var VERBATIM_DELIMITED_EQUAL = function VERBATIM_DELIMITED_EQUAL() {\n    var innerName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"string\";\n    return hljs.END_SAME_AS_BEGIN({\n      className: innerName,\n      begin: /(.|\\r?\\n)/,\n      end: /(.|\\r?\\n)/,\n      excludeBegin: true,\n      excludeEnd: true,\n      endsParent: true\n    });\n  };\n\n  var VERBATIM_DELIMITED_ENV = function VERBATIM_DELIMITED_ENV(envname) {\n    return {\n      className: 'string',\n      end: '(?=\\\\\\\\end\\\\{' + envname + '\\\\})'\n    };\n  };\n\n  var VERBATIM_DELIMITED_BRACES = function VERBATIM_DELIMITED_BRACES() {\n    var innerName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"string\";\n    return {\n      relevance: 0,\n      begin: /\\{/,\n      starts: {\n        endsParent: true,\n        contains: [{\n          className: innerName,\n          end: /(?=\\})/,\n          endsParent: true,\n          contains: [{\n            begin: /\\{/,\n            end: /\\}/,\n            relevance: 0,\n            contains: [\"self\"]\n          }]\n        }]\n      }\n    };\n  };\n\n  var VERBATIM = [].concat(_toConsumableArray(['verb', 'lstinline'].map(function (csname) {\n    return CSNAME(csname, {\n      contains: [VERBATIM_DELIMITED_EQUAL()]\n    });\n  })), [CSNAME('mint', ARGUMENT_AND_THEN(ARGUMENT_M, {\n    contains: [VERBATIM_DELIMITED_EQUAL()]\n  })), CSNAME('mintinline', ARGUMENT_AND_THEN(ARGUMENT_M, {\n    contains: [VERBATIM_DELIMITED_BRACES(), VERBATIM_DELIMITED_EQUAL()]\n  })), CSNAME('url', {\n    contains: [VERBATIM_DELIMITED_BRACES(\"link\"), VERBATIM_DELIMITED_BRACES(\"link\")]\n  }), CSNAME('hyperref', {\n    contains: [VERBATIM_DELIMITED_BRACES(\"link\")]\n  }), CSNAME('href', ARGUMENT_AND_THEN(ARGUMENT_O, {\n    contains: [VERBATIM_DELIMITED_BRACES(\"link\")]\n  }))], _toConsumableArray((_ref = []).concat.apply(_ref, _toConsumableArray(['', '\\\\*'].map(function (suffix) {\n    return [BEGIN_ENV('verbatim' + suffix, VERBATIM_DELIMITED_ENV('verbatim' + suffix)), BEGIN_ENV('filecontents' + suffix, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('filecontents' + suffix)))].concat(_toConsumableArray(['', 'B', 'L'].map(function (prefix) {\n      return BEGIN_ENV(prefix + 'Verbatim' + suffix, ARGUMENT_AND_THEN(ARGUMENT_O, VERBATIM_DELIMITED_ENV(prefix + 'Verbatim' + suffix)));\n    })));\n  })))), [BEGIN_ENV('minted', ARGUMENT_AND_THEN(ARGUMENT_O, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('minted'))))]);\n  return {\n    name: 'LaTeX',\n    aliases: ['TeX'],\n    contains: [].concat(_toConsumableArray(VERBATIM), EVERYTHING_BUT_VERBATIM)\n  };\n}\n\nmodule.exports = latex;"],"sourceRoot":""}