{"version":3,"file":"simple-mode-5nlGhSi7.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/simple-mode.js"],"sourcesContent":["export function simpleMode(states) {\n  ensureState(states, \"start\");\n  var states_ = {}, meta = states.languageData || {}, hasIndentation = false;\n  for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n    var list = states_[state] = [], orig = states[state];\n    for (var i = 0; i < orig.length; i++) {\n      var data = orig[i];\n      list.push(new Rule(data, states));\n      if (data.indent || data.dedent) hasIndentation = true;\n    }\n  }\n  return {\n    name: meta.name,\n    startState: function() {\n      return {state: \"start\", pending: null, indent: hasIndentation ? [] : null};\n    },\n    copyState: function(state) {\n      var s = {state: state.state, pending: state.pending, indent: state.indent && state.indent.slice(0)};\n      if (state.stack)\n        s.stack = state.stack.slice(0);\n      return s;\n    },\n    token: tokenFunction(states_),\n    indent: indentFunction(states_, meta),\n    mergeTokens: meta.mergeTokens,\n    languageData: meta\n  }\n};\n\nfunction ensureState(states, name) {\n  if (!states.hasOwnProperty(name))\n    throw new Error(\"Undefined state \" + name + \" in simple mode\");\n}\n\nfunction toRegex(val, caret) {\n  if (!val) return /(?:)/;\n  var flags = \"\";\n  if (val instanceof RegExp) {\n    if (val.ignoreCase) flags = \"i\";\n    if (val.unicode) flags += \"u\";\n    val = val.source;\n  } else {\n    val = String(val);\n  }\n  return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n}\n\nfunction asToken(val) {\n  if (!val) return null;\n  if (val.apply) return val\n  if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n  var result = [];\n  for (var i = 0; i < val.length; i++)\n    result.push(val[i] && val[i].replace(/\\./g, \" \"));\n  return result;\n}\n\nfunction Rule(data, states) {\n  if (data.next || data.push) ensureState(states, data.next || data.push);\n  this.regex = toRegex(data.regex);\n  this.token = asToken(data.token);\n  this.data = data;\n}\n\nfunction tokenFunction(states) {\n  return function(stream, state) {\n    if (state.pending) {\n      var pend = state.pending.shift();\n      if (state.pending.length == 0) state.pending = null;\n      stream.pos += pend.text.length;\n      return pend.token;\n    }\n\n    var curState = states[state.state];\n    for (var i = 0; i < curState.length; i++) {\n      var rule = curState[i];\n      var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n      if (matches) {\n        if (rule.data.next) {\n          state.state = rule.data.next;\n        } else if (rule.data.push) {\n          (state.stack || (state.stack = [])).push(state.state);\n          state.state = rule.data.push;\n        } else if (rule.data.pop && state.stack && state.stack.length) {\n          state.state = state.stack.pop();\n        }\n\n        if (rule.data.indent)\n          state.indent.push(stream.indentation() + stream.indentUnit);\n        if (rule.data.dedent)\n          state.indent.pop();\n        var token = rule.token\n        if (token && token.apply) token = token(matches)\n        if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n          state.pending = [];\n          for (var j = 2; j < matches.length; j++)\n            if (matches[j])\n              state.pending.push({text: matches[j], token: rule.token[j - 1]});\n          stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n          return token[0];\n        } else if (token && token.join) {\n          return token[0];\n        } else {\n          return token;\n        }\n      }\n    }\n    stream.next();\n    return null;\n  };\n}\n\nfunction indentFunction(states, meta) {\n  return function(state, textAfter) {\n    if (state.indent == null || meta.dontIndentStates && meta.dontIndentStates.indexOf(state.state) > -1)\n      return null\n\n    var pos = state.indent.length - 1, rules = states[state.state];\n    scan: for (;;) {\n      for (var i = 0; i < rules.length; i++) {\n        var rule = rules[i];\n        if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n          var m = rule.regex.exec(textAfter);\n          if (m && m[0]) {\n            pos--;\n            if (rule.next || rule.push) rules = states[rule.next || rule.push];\n            textAfter = textAfter.slice(m[0].length);\n            continue scan;\n          }\n        }\n      }\n      break;\n    }\n    return pos < 0 ? 0 : state.indent[pos];\n  };\n}\n"],"names":["ensureState","states","name","hasOwnProperty","Error","Rule","data","next","push","this","regex","val","flags","RegExp","ignoreCase","unicode","source","String","toRegex","token","apply","replace","result","i","length","asToken","tokenFunction","stream","state","pending","pend","shift","pos","text","curState","rule","matches","sol","match","stack","pop","indent","indentation","indentUnit","dedent","j","backUp","join","indentFunction","meta","textAfter","dontIndentStates","indexOf","rules","scan","dedentIfLineStart","m","exec","slice","states_","languageData","hasIndentation","list","orig","startState","copyState","s","mergeTokens"],"mappings":"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","x_google_ignoreList":[0]}