{"version":3,"file":"stex-0KIfGD5U.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/stex.js"],"sourcesContent":["function mkStex(mathMode) {\n  function pushCommand(state, command) {\n    state.cmdState.push(command);\n  }\n\n  function peekCommand(state) {\n    if (state.cmdState.length > 0) {\n      return state.cmdState[state.cmdState.length - 1];\n    } else {\n      return null;\n    }\n  }\n\n  function popCommand(state) {\n    var plug = state.cmdState.pop();\n    if (plug) {\n      plug.closeBracket();\n    }\n  }\n\n  // returns the non-default plugin closest to the end of the list\n  function getMostPowerful(state) {\n    var context = state.cmdState;\n    for (var i = context.length - 1; i >= 0; i--) {\n      var plug = context[i];\n      if (plug.name == \"DEFAULT\") {\n        continue;\n      }\n      return plug;\n    }\n    return { styleIdentifier: function() { return null; } };\n  }\n\n  function addPluginPattern(pluginName, cmdStyle, styles) {\n    return function () {\n      this.name = pluginName;\n      this.bracketNo = 0;\n      this.style = cmdStyle;\n      this.styles = styles;\n      this.argument = null;   // \\begin and \\end have arguments that follow. These are stored in the plugin\n\n      this.styleIdentifier = function() {\n        return this.styles[this.bracketNo - 1] || null;\n      };\n      this.openBracket = function() {\n        this.bracketNo++;\n        return \"bracket\";\n      };\n      this.closeBracket = function() {};\n    };\n  }\n\n  var plugins = {};\n\n  plugins[\"importmodule\"] = addPluginPattern(\"importmodule\", \"tag\", [\"string\", \"builtin\"]);\n  plugins[\"documentclass\"] = addPluginPattern(\"documentclass\", \"tag\", [\"\", \"atom\"]);\n  plugins[\"usepackage\"] = addPluginPattern(\"usepackage\", \"tag\", [\"atom\"]);\n  plugins[\"begin\"] = addPluginPattern(\"begin\", \"tag\", [\"atom\"]);\n  plugins[\"end\"] = addPluginPattern(\"end\", \"tag\", [\"atom\"]);\n\n  plugins[\"label\"    ] = addPluginPattern(\"label\"    , \"tag\", [\"atom\"]);\n  plugins[\"ref\"      ] = addPluginPattern(\"ref\"      , \"tag\", [\"atom\"]);\n  plugins[\"eqref\"    ] = addPluginPattern(\"eqref\"    , \"tag\", [\"atom\"]);\n  plugins[\"cite\"     ] = addPluginPattern(\"cite\"     , \"tag\", [\"atom\"]);\n  plugins[\"bibitem\"  ] = addPluginPattern(\"bibitem\"  , \"tag\", [\"atom\"]);\n  plugins[\"Bibitem\"  ] = addPluginPattern(\"Bibitem\"  , \"tag\", [\"atom\"]);\n  plugins[\"RBibitem\" ] = addPluginPattern(\"RBibitem\" , \"tag\", [\"atom\"]);\n\n  plugins[\"DEFAULT\"] = function () {\n    this.name = \"DEFAULT\";\n    this.style = \"tag\";\n\n    this.styleIdentifier = this.openBracket = this.closeBracket = function() {};\n  };\n\n  function setState(state, f) {\n    state.f = f;\n  }\n\n  // called when in a normal (no environment) context\n  function normal(source, state) {\n    var plug;\n    // Do we look like '\\command' ?  If so, attempt to apply the plugin 'command'\n    if (source.match(/^\\\\[a-zA-Z@\\xc0-\\u1fff\\u2060-\\uffff]+/)) {\n      var cmdName = source.current().slice(1);\n      plug = plugins.hasOwnProperty(cmdName) ? plugins[cmdName] : plugins[\"DEFAULT\"];\n      plug = new plug();\n      pushCommand(state, plug);\n      setState(state, beginParams);\n      return plug.style;\n    }\n\n    // escape characters\n    if (source.match(/^\\\\[$&%#{}_]/)) {\n      return \"tag\";\n    }\n\n    // white space control characters\n    if (source.match(/^\\\\[,;!\\/\\\\]/)) {\n      return \"tag\";\n    }\n\n    // find if we're starting various math modes\n    if (source.match(\"\\\\[\")) {\n      setState(state, function(source, state){ return inMathMode(source, state, \"\\\\]\"); });\n      return \"keyword\";\n    }\n    if (source.match(\"\\\\(\")) {\n      setState(state, function(source, state){ return inMathMode(source, state, \"\\\\)\"); });\n      return \"keyword\";\n    }\n    if (source.match(\"$$\")) {\n      setState(state, function(source, state){ return inMathMode(source, state, \"$$\"); });\n      return \"keyword\";\n    }\n    if (source.match(\"$\")) {\n      setState(state, function(source, state){ return inMathMode(source, state, \"$\"); });\n      return \"keyword\";\n    }\n\n    var ch = source.next();\n    if (ch == \"%\") {\n      source.skipToEnd();\n      return \"comment\";\n    } else if (ch == '}' || ch == ']') {\n      plug = peekCommand(state);\n      if (plug) {\n        plug.closeBracket(ch);\n        setState(state, beginParams);\n      } else {\n        return \"error\";\n      }\n      return \"bracket\";\n    } else if (ch == '{' || ch == '[') {\n      plug = plugins[\"DEFAULT\"];\n      plug = new plug();\n      pushCommand(state, plug);\n      return \"bracket\";\n    } else if (/\\d/.test(ch)) {\n      source.eatWhile(/[\\w.%]/);\n      return \"atom\";\n    } else {\n      source.eatWhile(/[\\w\\-_]/);\n      plug = getMostPowerful(state);\n      if (plug.name == 'begin') {\n        plug.argument = source.current();\n      }\n      return plug.styleIdentifier();\n    }\n  }\n\n  function inMathMode(source, state, endModeSeq) {\n    if (source.eatSpace()) {\n      return null;\n    }\n    if (endModeSeq && source.match(endModeSeq)) {\n      setState(state, normal);\n      return \"keyword\";\n    }\n    if (source.match(/^\\\\[a-zA-Z@]+/)) {\n      return \"tag\";\n    }\n    if (source.match(/^[a-zA-Z]+/)) {\n      return \"variableName.special\";\n    }\n    // escape characters\n    if (source.match(/^\\\\[$&%#{}_]/)) {\n      return \"tag\";\n    }\n    // white space control characters\n    if (source.match(/^\\\\[,;!\\/]/)) {\n      return \"tag\";\n    }\n    // special math-mode characters\n    if (source.match(/^[\\^_&]/)) {\n      return \"tag\";\n    }\n    // non-special characters\n    if (source.match(/^[+\\-<>|=,\\/@!*:;'\"`~#?]/)) {\n      return null;\n    }\n    if (source.match(/^(\\d+\\.\\d*|\\d*\\.\\d+|\\d+)/)) {\n      return \"number\";\n    }\n    var ch = source.next();\n    if (ch == \"{\" || ch == \"}\" || ch == \"[\" || ch == \"]\" || ch == \"(\" || ch == \")\") {\n      return \"bracket\";\n    }\n\n    if (ch == \"%\") {\n      source.skipToEnd();\n      return \"comment\";\n    }\n    return \"error\";\n  }\n\n  function beginParams(source, state) {\n    var ch = source.peek(), lastPlug;\n    if (ch == '{' || ch == '[') {\n      lastPlug = peekCommand(state);\n      lastPlug.openBracket(ch);\n      source.eat(ch);\n      setState(state, normal);\n      return \"bracket\";\n    }\n    if (/[ \\t\\r]/.test(ch)) {\n      source.eat(ch);\n      return null;\n    }\n    setState(state, normal);\n    popCommand(state);\n\n    return normal(source, state);\n  }\n\n  return {\n    name: \"stex\",\n    startState: function() {\n      var f = mathMode ? function(source, state){ return inMathMode(source, state); } : normal;\n      return {\n        cmdState: [],\n        f: f\n      };\n    },\n    copyState: function(s) {\n      return {\n        cmdState: s.cmdState.slice(),\n        f: s.f\n      };\n    },\n    token: function(stream, state) {\n      return state.f(stream, state);\n    },\n    blankLine: function(state) {\n      state.f = normal;\n      state.cmdState.length = 0;\n    },\n    languageData: {\n      commentTokens: {line: \"%\"}\n    }\n  };\n};\n\nexport const stex = mkStex(false)\nexport const stexMath = mkStex(true)\n"],"names":["mkStex","mathMode","pushCommand","state","command","cmdState","push","peekCommand","length","addPluginPattern","pluginName","cmdStyle","styles","this","name","bracketNo","style","argument","styleIdentifier","openBracket","closeBracket","plugins","setState","f","normal","source","plug","match","cmdName","current","slice","hasOwnProperty","beginParams","inMathMode","ch","next","skipToEnd","test","eatWhile","context","i","getMostPowerful","endModeSeq","eatSpace","peek","eat","pop","popCommand","startState","copyState","s","token","stream","blankLine","languageData","commentTokens","line","stex"],"mappings":"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","x_google_ignoreList":[0]}