{"version":3,"file":"elm-DJqCmzHQ.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/elm.js"],"sourcesContent":["function switchState(source, setState, f)\n{\n  setState(f);\n  return f(source, setState);\n}\n\nvar lowerRE = /[a-z]/;\nvar upperRE = /[A-Z]/;\nvar innerRE = /[a-zA-Z0-9_]/;\n\nvar digitRE = /[0-9]/;\nvar hexRE = /[0-9A-Fa-f]/;\nvar symbolRE = /[-&*+.\\\\/<>=?^|:]/;\nvar specialRE = /[(),[\\]{}]/;\nvar spacesRE = /[ \\v\\f]/; // newlines are handled in tokenizer\n\nfunction normal()\n{\n  return function(source, setState)\n  {\n    if (source.eatWhile(spacesRE))\n    {\n      return null;\n    }\n\n    var char = source.next();\n\n    if (specialRE.test(char))\n    {\n      return (char === '{' && source.eat('-'))\n        ? switchState(source, setState, chompMultiComment(1))\n        : (char === '[' && source.match('glsl|'))\n        ? switchState(source, setState, chompGlsl)\n        : 'builtin';\n    }\n\n    if (char === '\\'')\n    {\n      return switchState(source, setState, chompChar);\n    }\n\n    if (char === '\"')\n    {\n      return source.eat('\"')\n        ? source.eat('\"')\n        ? switchState(source, setState, chompMultiString)\n        : 'string'\n      : switchState(source, setState, chompSingleString);\n    }\n\n    if (upperRE.test(char))\n    {\n      source.eatWhile(innerRE);\n      return 'type';\n    }\n\n    if (lowerRE.test(char))\n    {\n      var isDef = source.pos === 1;\n      source.eatWhile(innerRE);\n      return isDef ? \"def\" : \"variable\";\n    }\n\n    if (digitRE.test(char))\n    {\n      if (char === '0')\n      {\n        if (source.eat(/[xX]/))\n        {\n          source.eatWhile(hexRE); // should require at least 1\n          return \"number\";\n        }\n      }\n      else\n      {\n        source.eatWhile(digitRE);\n      }\n      if (source.eat('.'))\n      {\n        source.eatWhile(digitRE); // should require at least 1\n      }\n      if (source.eat(/[eE]/))\n      {\n        source.eat(/[-+]/);\n        source.eatWhile(digitRE); // should require at least 1\n      }\n      return \"number\";\n    }\n\n    if (symbolRE.test(char))\n    {\n      if (char === '-' && source.eat('-'))\n      {\n        source.skipToEnd();\n        return \"comment\";\n      }\n      source.eatWhile(symbolRE);\n      return \"keyword\";\n    }\n\n    if (char === '_')\n    {\n      return \"keyword\";\n    }\n\n    return \"error\";\n  }\n}\n\nfunction chompMultiComment(nest)\n{\n  if (nest == 0)\n  {\n    return normal();\n  }\n  return function(source, setState)\n  {\n    while (!source.eol())\n    {\n      var char = source.next();\n      if (char == '{' && source.eat('-'))\n      {\n        ++nest;\n      }\n      else if (char == '-' && source.eat('}'))\n      {\n        --nest;\n        if (nest === 0)\n        {\n          setState(normal());\n          return 'comment';\n        }\n      }\n    }\n    setState(chompMultiComment(nest));\n    return 'comment';\n  }\n}\n\nfunction chompMultiString(source, setState)\n{\n  while (!source.eol())\n  {\n    var char = source.next();\n    if (char === '\"' && source.eat('\"') && source.eat('\"'))\n    {\n      setState(normal());\n      return 'string';\n    }\n  }\n  return 'string';\n}\n\nfunction chompSingleString(source, setState)\n{\n  while (source.skipTo('\\\\\"')) { source.next(); source.next(); }\n  if (source.skipTo('\"'))\n  {\n    source.next();\n    setState(normal());\n    return 'string';\n  }\n  source.skipToEnd();\n  setState(normal());\n  return 'error';\n}\n\nfunction chompChar(source, setState)\n{\n  while (source.skipTo(\"\\\\'\")) { source.next(); source.next(); }\n  if (source.skipTo(\"'\"))\n  {\n    source.next();\n    setState(normal());\n    return 'string';\n  }\n  source.skipToEnd();\n  setState(normal());\n  return 'error';\n}\n\nfunction chompGlsl(source, setState)\n{\n  while (!source.eol())\n  {\n    var char = source.next();\n    if (char === '|' && source.eat(']'))\n    {\n      setState(normal());\n      return 'string';\n    }\n  }\n  return 'string';\n}\n\nvar wellKnownWords = {\n  case: 1,\n  of: 1,\n  as: 1,\n  if: 1,\n  then: 1,\n  else: 1,\n  let: 1,\n    in: 1,\n  type: 1,\n  alias: 1,\n  module: 1,\n  where: 1,\n  import: 1,\n  exposing: 1,\n  port: 1\n};\n\nexport const elm = {\n  name: \"elm\",\n  startState: function ()  { return { f: normal() }; },\n  copyState:  function (s) { return { f: s.f }; },\n\n  token: function(stream, state) {\n    var type = state.f(stream, function(s) { state.f = s; });\n    var word = stream.current();\n    return (wellKnownWords.hasOwnProperty(word)) ? 'keyword' : type;\n  },\n\n  languageData: {\n    commentTokens: {line: \"--\"}\n  }\n};\n"],"names":["switchState","source","setState","f","lowerRE","upperRE","innerRE","digitRE","hexRE","symbolRE","specialRE","spacesRE","normal","eatWhile","char","next","test","eat","chompMultiComment","match","chompGlsl","chompChar","chompMultiString","chompSingleString","isDef","pos","skipToEnd","nest","eol","skipTo","wellKnownWords","case","of","as","if","then","else","let","in","type","alias","module","where","import","exposing","port","elm","name","startState","copyState","s","token","stream","state","word","current","hasOwnProperty","languageData","commentTokens","line"],"mappings":"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","x_google_ignoreList":[0]}