{"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":"CAGA,SAAUA,GACR,SAAWC,UAAW,gBAAmBC,SAAU,SACjDF,EAAIG,QAAQ,6BACT,UAAWC,SAAU,YAAcA,OAAOC,IAC7CD,QAAQ,wBAAyBJ,OAEjCA,GAAIM,cACL,SAASA,GACV,YAEAA,GAAWC,WAAW,MAAO,WAE3B,QAASC,GAAYC,EAAQC,EAAUC,GAErCD,EAASC,EACT,OAAOA,GAAEF,EAAQC,GAGnB,GAAIE,GAAU,OACd,IAAIC,GAAU,OACd,IAAIC,GAAU,cAEd,IAAIC,GAAU,OACd,IAAIC,GAAQ,aACZ,IAAIC,GAAW,oBACf,IAAIC,GAAY,YAChB,IAAIC,GAAW,SAEf,SAASC,KAEP,MAAO,UAASX,EAAQC,GAEtB,GAAID,EAAOY,SAASF,GACpB,CACE,MAAO,MAGT,GAAIG,GAAOb,EAAOc,MAElB,IAAIL,EAAUM,KAAKF,GACnB,CACE,MAAQA,KAAS,KAAOb,EAAOgB,IAAI,KAC/BjB,EAAYC,EAAQC,EAAUgB,EAAkB,IAC/CJ,IAAS,KAAOb,EAAOkB,MAAM,SAC1BnB,EAAYC,EAAQC,EAAUkB,GAC9B,UAGV,GAAIN,IAAS,IACb,CACE,MAAOd,GAAYC,EAAQC,EAAUmB,GAGvC,GAAIP,IAAS,IACb,CACE,MAAOb,GAAOgB,IAAI,KACdhB,EAAOgB,IAAI,KACPjB,EAAYC,EAAQC,EAAUoB,GAC9B,SACJtB,EAAYC,EAAQC,EAAUqB,GAGpC,GAAIlB,EAAQW,KAAKF,GACjB,CACEb,EAAOY,SAASP,EAChB,OAAO,aAGT,GAAIF,EAAQY,KAAKF,GACjB,CACE,GAAIU,GAAQvB,EAAOwB,MAAQ,CAC3BxB,GAAOY,SAASP,EAChB,OAAOkB,GAAQ,MAAQ,WAGzB,GAAIjB,EAAQS,KAAKF,GACjB,CACE,GAAIA,IAAS,IACb,CACE,GAAIb,EAAOgB,IAAI,QACf,CACEhB,EAAOY,SAASL,EAChB,OAAO,cAIX,CACEP,EAAOY,SAASN,GAElB,GAAIN,EAAOgB,IAAI,KACf,CACEhB,EAAOY,SAASN,GAElB,GAAIN,EAAOgB,IAAI,QACf,CACEhB,EAAOgB,IAAI,OACXhB,GAAOY,SAASN,GAElB,MAAO,SAGT,GAAIE,EAASO,KAAKF,GAClB,CACE,GAAIA,IAAS,KAAOb,EAAOgB,IAAI,KAC/B,CACEhB,EAAOyB,WACP,OAAO,UAETzB,EAAOY,SAASJ,EAChB,OAAO,UAGT,GAAIK,IAAS,IACb,CACE,MAAO,UAGT,MAAO,SAIX,QAASI,GAAkBS,GAEzB,GAAIA,GAAQ,EACZ,CACE,MAAOf,KAET,MAAO,UAASX,EAAQC,GAEtB,OAAQD,EAAO2B,MACf,CACE,GAAId,GAAOb,EAAOc,MAClB,IAAID,GAAQ,KAAOb,EAAOgB,IAAI,KAC9B,GACIU,MAEC,IAAIb,GAAQ,KAAOb,EAAOgB,IAAI,KACnC,GACIU,CACF,IAAIA,IAAS,EACb,CACEzB,EAASU,IACT,OAAO,YAIbV,EAASgB,EAAkBS,GAC3B,OAAO,WAIX,QAASL,GAAiBrB,EAAQC,GAEhC,OAAQD,EAAO2B,MACf,CACE,GAAId,GAAOb,EAAOc,MAClB,IAAID,IAAS,KAAOb,EAAOgB,IAAI,MAAQhB,EAAOgB,IAAI,KAClD,CACEf,EAASU,IACT,OAAO,UAGX,MAAO,SAGT,QAASW,GAAkBtB,EAAQC,GAEjC,MAAOD,EAAO4B,OAAO,OAAQ,CAAE5B,EAAOc,MAAQd,GAAOc,OACrD,GAAId,EAAO4B,OAAO,KAClB,CACE5B,EAAOc,MACPb,GAASU,IACT,OAAO,SAETX,EAAOyB,WACPxB,GAASU,IACT,OAAO,QAGT,QAASS,GAAUpB,EAAQC,GAEzB,MAAOD,EAAO4B,OAAO,OAAQ,CAAE5B,EAAOc,MAAQd,GAAOc,OACrD,GAAId,EAAO4B,OAAO,KAClB,CACE5B,EAAOc,MACPb,GAASU,IACT,OAAO,SAETX,EAAOyB,WACPxB,GAASU,IACT,OAAO,QAGT,QAASQ,GAAUnB,EAAQC,GAEzB,OAAQD,EAAO2B,MACf,CACE,GAAId,GAAOb,EAAOc,MAClB,IAAID,IAAS,KAAOb,EAAOgB,IAAI,KAC/B,CACEf,EAASU,IACT,OAAO,UAGX,MAAO,SAGT,GAAIkB,IACFC,OAAM,EACNC,GAAI,EACJC,GAAI,EACJC,KAAI,EACJC,KAAM,EACNC,OAAM,EACNC,MAAK,EACLC,KAAI,EACJC,KAAM,EACNC,MAAO,EACP9C,OAAQ,EACR+C,MAAO,EACPC,SAAQ,EACRC,SAAU,EACVC,KAAM,EAGR,QACEC,WAAY,WAAe,OAAS1C,EAAGS,MACvCkC,UAAY,SAAUC,GAAK,OAAS5C,EAAG4C,EAAE5C,IAEzC6C,MAAO,SAASC,EAAQC,GACtB,GAAIX,GAAOW,EAAM/C,EAAE8C,EAAQ,SAASF,GAAKG,EAAM/C,EAAI4C,GACnD,IAAII,GAAOF,EAAOG,SAClB,OAAQtB,GAAeuB,eAAeF,GAAS,UAAYZ,KAMjEzC,GAAWwD,WAAW,aAAc","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"]}