1{"version":3,"sources":["../../node_modules/codemirror/mode/jsx/jsx.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","Context","state","mode","depth","prev","this","copyContext","context","copyState","defineMode","config","modeConfig","xmlMode","getMode","name","allowMissing","multilineTagIndentPastTag","allowMissingTagName","jsMode","base","flatXMLIndent","tagName","result","indent","token","stream","xmlToken","jsToken","cx","match","skipToEnd","peek","skipAttribute","xmlContext","startOfLine","indentUnit","lexical","indented","startState","style","cur","current","stop","test","indexOf","backUp","length","expressionAllowed","skipExpression","textAfter","fullLine","innerMode","defineMIME","typescript"],"mappings":"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","file":"jsx.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"))\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\"], mod)\n  else // Plain browser env\n    mod(CodeMirror)\n})(function(CodeMirror) {\n  \"use strict\"\n\n  // Depth means the amount of open braces in JS context, in XML\n  // context 0 means not in tag, 1 means in tag, and 2 means in tag\n  // and js block comment.\n  function Context(state, mode, depth, prev) {\n    this.state = state; this.mode = mode; this.depth = depth; this.prev = prev\n  }\n\n  function copyContext(context) {\n    return new Context(CodeMirror.copyState(context.mode, context.state),\n                       context.mode,\n                       context.depth,\n                       context.prev && copyContext(context.prev))\n  }\n\n  CodeMirror.defineMode(\"jsx\", function(config, modeConfig) {\n    var xmlMode = CodeMirror.getMode(config, {name: \"xml\", allowMissing: true, multilineTagIndentPastTag: false, allowMissingTagName: true})\n    var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || \"javascript\")\n\n    function flatXMLIndent(state) {\n      var tagName = state.tagName\n      state.tagName = null\n      var result = xmlMode.indent(state, \"\", \"\")\n      state.tagName = tagName\n      return result\n    }\n\n    function token(stream, state) {\n      if (state.context.mode == xmlMode)\n        return xmlToken(stream, state, state.context)\n      else\n        return jsToken(stream, state, state.context)\n    }\n\n    function xmlToken(stream, state, cx) {\n      if (cx.depth == 2) { // Inside a JS /* */ comment\n        if (stream.match(/^.*?\\*\\//)) cx.depth = 1\n        else stream.skipToEnd()\n        return \"comment\"\n      }\n\n      if (stream.peek() == \"{\") {\n        xmlMode.skipAttribute(cx.state)\n\n        var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context\n        // If JS starts on same line as tag\n        if (xmlContext && stream.match(/^[^>]*>\\s*$/, false)) {\n          while (xmlContext.prev && !xmlContext.startOfLine)\n            xmlContext = xmlContext.prev\n          // If tag starts the line, use XML indentation level\n          if (xmlContext.startOfLine) indent -= config.indentUnit\n          // Else use JS indentation level\n          else if (cx.prev.state.lexical) indent = cx.prev.state.lexical.indented\n        // Else if inside of tag\n        } else if (cx.depth == 1) {\n          indent += config.indentUnit\n        }\n\n        state.context = new Context(CodeMirror.startState(jsMode, indent),\n                                    jsMode, 0, state.context)\n        return null\n      }\n\n      if (cx.depth == 1) { // Inside of tag\n        if (stream.peek() == \"<\") { // Tag inside of tag\n          xmlMode.skipAttribute(cx.state)\n          state.context = new Context(CodeMirror.startState(xmlMode, flatXMLIndent(cx.state)),\n                                      xmlMode, 0, state.context)\n          return null\n        } else if (stream.match(\"//\")) {\n          stream.skipToEnd()\n          return \"comment\"\n        } else if (stream.match(\"/*\")) {\n          cx.depth = 2\n          return token(stream, state)\n        }\n      }\n\n      var style = xmlMode.token(stream, cx.state), cur = stream.current(), stop\n      if (/\\btag\\b/.test(style)) {\n        if (/>$/.test(cur)) {\n          if (cx.state.context) cx.depth = 0\n          else state.context = state.context.prev\n        } else if (/^</.test(cur)) {\n          cx.depth = 1\n        }\n      } else if (!style && (stop = cur.indexOf(\"{\")) > -1) {\n        stream.backUp(cur.length - stop)\n      }\n      return style\n    }\n\n    function jsToken(stream, state, cx) {\n      if (stream.peek() == \"<\" && jsMode.expressionAllowed(stream, cx.state)) {\n        jsMode.skipExpression(cx.state)\n        state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, \"\", \"\")),\n                                    xmlMode, 0, state.context)\n        return null\n      }\n\n      var style = jsMode.token(stream, cx.state)\n      if (!style && cx.depth != null) {\n        var cur = stream.current()\n        if (cur == \"{\") {\n          cx.depth++\n        } else if (cur == \"}\") {\n          if (--cx.depth == 0) state.context = state.context.prev\n        }\n      }\n      return style\n    }\n\n    return {\n      startState: function() {\n        return {context: new Context(CodeMirror.startState(jsMode), jsMode)}\n      },\n\n      copyState: function(state) {\n        return {context: copyContext(state.context)}\n      },\n\n      token: token,\n\n      indent: function(state, textAfter, fullLine) {\n        return state.context.mode.indent(state.context.state, textAfter, fullLine)\n      },\n\n      innerMode: function(state) {\n        return state.context\n      }\n    }\n  }, \"xml\", \"javascript\")\n\n  CodeMirror.defineMIME(\"text/jsx\", \"jsx\")\n  CodeMirror.defineMIME(\"text/typescript-jsx\", {name: \"jsx\", base: {name: \"javascript\", typescript: true}})\n});\n"]}