1{"version":3,"sources":["../../node_modules/codemirror/mode/elm/elm.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","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","where","import","exposing","port","startState","copyState","s","token","stream","state","word","current","hasOwnProperty","defineMIME"],"mappings":"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","file":"elm.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"elm\", function() {\n\n    function switchState(source, setState, f)\n    {\n      setState(f);\n      return f(source, setState);\n    }\n\n    var lowerRE = /[a-z]/;\n    var upperRE = /[A-Z]/;\n    var innerRE = /[a-zA-Z0-9_]/;\n\n    var digitRE = /[0-9]/;\n    var hexRE = /[0-9A-Fa-f]/;\n    var symbolRE = /[-&*+.\\\\/<>=?^|:]/;\n    var specialRE = /[(),[\\]{}]/;\n    var spacesRE = /[ \\v\\f]/; // newlines are handled in tokenizer\n\n    function 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 'variable-2';\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\n    function 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\n    function 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\n    function 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\n    function 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\n    function 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\n    var 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\n    return {\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\n  });\n\n  CodeMirror.defineMIME(\"text/x-elm\", \"elm\");\n});\n"]}