1{"version":3,"sources":["../../node_modules/codemirror/mode/dart/dart.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","keywords","split","blockKeywords","atoms","builtins","set","words","obj","i","length","pushInterpolationStack","state","interpolationStack","push","tokenize","popInterpolationStack","pop","sizeInterpolationStack","defineMIME","name","builtin","hooks","@","stream","eatWhile","'","tokenString","\"","r","peek","next","}","_stream","/","eat","tokenNestedComment","token","_","style","isUpper","RegExp","test","current","quote","raw","tripleQuoted","tokenStringHelper","escaped","eol","tokenInterpolation","match","tokenInterpolationIdentifier","depth","ch","registerHelper","concat","defineMode","conf","getMode"],"mappings":"CAGA,SAAUA,GACR,SAAWC,UAAW,gBAAmBC,SAAU,SACjDF,EAAIG,QAAQ,wBAAyBA,QAAQ,uBAC1C,UAAWC,SAAU,YAAcA,OAAOC,IAC7CD,QAAQ,uBAAwB,kBAAmBJ,OAEnDA,GAAIM,cACL,SAASA,GACV,YAEA,IAAIC,IAAY,yEACd,mEACA,mFACA,uEACA,4DAA4DC,MAAM,IACpE,IAAIC,GAAgB,gDAAgDD,MAAM,IAC1E,IAAIE,GAAQ,kBAAkBF,MAAM,IACpC,IAAIG,GAAW,yDAAyDH,MAAM,IAE9E,SAASI,GAAIC,GACX,GAAIC,KACJ,KAAK,GAAIC,GAAI,EAAGA,EAAIF,EAAMG,SAAUD,EAAGD,EAAID,EAAME,IAAM,IACvD,OAAOD,GAGT,QAASG,GAAuBC,IAC7BA,EAAMC,qBAAuBD,EAAMC,wBAA0BC,KAAKF,EAAMG,UAG3E,QAASC,GAAsBJ,GAC7B,OAAQA,EAAMC,qBAAuBD,EAAMC,wBAA0BI,MAGvE,QAASC,GAAuBN,GAC9B,MAAOA,GAAMC,mBAAqBD,EAAMC,mBAAmBH,OAAS,EAGtEV,EAAWmB,WAAW,oBACpBC,KAAM,QACNnB,SAAUK,EAAIL,GACdE,cAAeG,EAAIH,GACnBkB,QAASf,EAAID,GACbD,MAAOE,EAAIF,GACXkB,OACEC,IAAK,SAASC,GACZA,EAAOC,SAAS,YAChB,OAAO,QAITC,IAAK,SAASF,EAAQZ,GACpB,MAAOe,GAAY,IAAKH,EAAQZ,EAAO,QAEzCgB,IAAM,SAASJ,EAAQZ,GACrB,MAAOe,GAAY,IAAMH,EAAQZ,EAAO,QAE1CiB,EAAK,SAASL,EAAQZ,GACpB,GAAIkB,GAAON,EAAOM,MAClB,IAAIA,GAAQ,KAAOA,GAAQ,IAAM,CAC/B,MAAOH,GAAYH,EAAOO,OAAQP,EAAQZ,EAAO,MAEnD,MAAO,QAGToB,IAAK,SAASC,EAASrB,GAErB,GAAIM,EAAuBN,GAAS,EAAG,CACrCA,EAAMG,SAAWC,EAAsBJ,EACvC,OAAO,MAET,MAAO,QAGTsB,IAAK,SAASV,EAAQZ,GACpB,IAAKY,EAAOW,IAAI,KAAM,MAAO,MAC7BvB,GAAMG,SAAWqB,EAAmB,EACpC,OAAOxB,GAAMG,SAASS,EAAQZ,IAEhCyB,MAAO,SAASb,EAAQc,EAAGC,GACzB,GAAIA,GAAS,WAAY,CAEvB,GAAIC,GAAUC,OAAO,6BAA6B,IAClD,IAAID,EAAQE,KAAKlB,EAAOmB,WAAY,CAClC,MAAO,kBAOjB,SAAShB,GAAYiB,EAAOpB,EAAQZ,EAAOiC,GACzC,GAAIC,GAAe,KACnB,IAAItB,EAAOW,IAAIS,GAAQ,CACrB,GAAIpB,EAAOW,IAAIS,GAAQE,EAAe,SACjC,OAAO,SAEd,QAASC,GAAkBvB,EAAQZ,GACjC,GAAIoC,GAAU,KACd,QAAQxB,EAAOyB,MAAO,CACpB,IAAKJ,IAAQG,GAAWxB,EAAOM,QAAU,IAAK,CAC5CnB,EAAuBC,EACvBA,GAAMG,SAAWmC,CACjB,OAAO,SAET,GAAInB,GAAOP,EAAOO,MAClB,IAAIA,GAAQa,IAAUI,KAAaF,GAAgBtB,EAAO2B,MAAMP,EAAQA,IAAS,CAC/EhC,EAAMG,SAAW,IACjB,OAEFiC,GAAWH,IAAQG,GAAWjB,GAAQ,KAExC,MAAO,SAETnB,EAAMG,SAAWgC,CACjB,OAAOA,GAAkBvB,EAAQZ,GAGnC,QAASsC,GAAmB1B,EAAQZ,GAClCY,EAAOW,IAAI,IACX,IAAIX,EAAOW,IAAI,KAAM,CAGnBvB,EAAMG,SAAW,SACZ,CACLH,EAAMG,SAAWqC,EAEnB,MAAO,MAGT,QAASA,GAA6B5B,EAAQZ,GAC5CY,EAAOC,SAAS,QAChBb,GAAMG,SAAWC,EAAsBJ,EACvC,OAAO,WAGT,QAASwB,GAAmBiB,GAC1B,MAAO,UAAU7B,EAAQZ,GACvB,GAAI0C,EACJ,OAAOA,EAAK9B,EAAOO,OAAQ,CACzB,GAAIuB,GAAM,KAAO9B,EAAOW,IAAI,KAAM,CAChC,GAAIkB,GAAS,EAAG,CACdzC,EAAMG,SAAW,IACjB,WACK,CACLH,EAAMG,SAAWqB,EAAmBiB,EAAQ,EAC5C,OAAOzC,GAAMG,SAASS,EAAQZ,QAE3B,IAAI0C,GAAM,KAAO9B,EAAOW,IAAI,KAAM,CACvCvB,EAAMG,SAAWqB,EAAmBiB,EAAQ,EAC5C,OAAOzC,GAAMG,SAASS,EAAQZ,IAGlC,MAAO,WAIXZ,EAAWuD,eAAe,YAAa,mBAAoBtD,EAASuD,OAAOpD,GAAOoD,OAAOnD,GAGzFL,GAAWyD,WAAW,OAAQ,SAASC,GACrC,MAAO1D,GAAW2D,QAAQD,EAAM,qBAC/B","file":"dart.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(\"../clike/clike\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../clike/clike\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var keywords = (\"this super static final const abstract class extends external factory \" +\n    \"implements mixin get native set typedef with enum throw rethrow \" +\n    \"assert break case continue default in return new deferred async await covariant \" +\n    \"try catch finally do else for if switch while import library export \" +\n    \"part of show hide is as extension on yield late required\").split(\" \");\n  var blockKeywords = \"try catch finally do else for if switch while\".split(\" \");\n  var atoms = \"true false null\".split(\" \");\n  var builtins = \"void bool num int double dynamic var String Null Never\".split(\" \");\n\n  function set(words) {\n    var obj = {};\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  function pushInterpolationStack(state) {\n    (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize);\n  }\n\n  function popInterpolationStack(state) {\n    return (state.interpolationStack || (state.interpolationStack = [])).pop();\n  }\n\n  function sizeInterpolationStack(state) {\n    return state.interpolationStack ? state.interpolationStack.length : 0;\n  }\n\n  CodeMirror.defineMIME(\"application/dart\", {\n    name: \"clike\",\n    keywords: set(keywords),\n    blockKeywords: set(blockKeywords),\n    builtin: set(builtins),\n    atoms: set(atoms),\n    hooks: {\n      \"@\": function(stream) {\n        stream.eatWhile(/[\\w\\$_\\.]/);\n        return \"meta\";\n      },\n\n      // custom string handling to deal with triple-quoted strings and string interpolation\n      \"'\": function(stream, state) {\n        return tokenString(\"'\", stream, state, false);\n      },\n      \"\\\"\": function(stream, state) {\n        return tokenString(\"\\\"\", stream, state, false);\n      },\n      \"r\": function(stream, state) {\n        var peek = stream.peek();\n        if (peek == \"'\" || peek == \"\\\"\") {\n          return tokenString(stream.next(), stream, state, true);\n        }\n        return false;\n      },\n\n      \"}\": function(_stream, state) {\n        // \"}\" is end of interpolation, if interpolation stack is non-empty\n        if (sizeInterpolationStack(state) > 0) {\n          state.tokenize = popInterpolationStack(state);\n          return null;\n        }\n        return false;\n      },\n\n      \"/\": function(stream, state) {\n        if (!stream.eat(\"*\")) return false\n        state.tokenize = tokenNestedComment(1)\n        return state.tokenize(stream, state)\n      },\n      token: function(stream, _, style) {\n        if (style == \"variable\") {\n          // Assume uppercase symbols are classes using variable-2\n          var isUpper = RegExp('^[_$]*[A-Z][a-zA-Z0-9_$]*$','g');\n          if (isUpper.test(stream.current())) {\n            return 'variable-2';\n          }\n        }\n      }\n    }\n  });\n\n  function tokenString(quote, stream, state, raw) {\n    var tripleQuoted = false;\n    if (stream.eat(quote)) {\n      if (stream.eat(quote)) tripleQuoted = true;\n      else return \"string\"; //empty string\n    }\n    function tokenStringHelper(stream, state) {\n      var escaped = false;\n      while (!stream.eol()) {\n        if (!raw && !escaped && stream.peek() == \"$\") {\n          pushInterpolationStack(state);\n          state.tokenize = tokenInterpolation;\n          return \"string\";\n        }\n        var next = stream.next();\n        if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) {\n          state.tokenize = null;\n          break;\n        }\n        escaped = !raw && !escaped && next == \"\\\\\";\n      }\n      return \"string\";\n    }\n    state.tokenize = tokenStringHelper;\n    return tokenStringHelper(stream, state);\n  }\n\n  function tokenInterpolation(stream, state) {\n    stream.eat(\"$\");\n    if (stream.eat(\"{\")) {\n      // let clike handle the content of ${...},\n      // we take over again when \"}\" appears (see hooks).\n      state.tokenize = null;\n    } else {\n      state.tokenize = tokenInterpolationIdentifier;\n    }\n    return null;\n  }\n\n  function tokenInterpolationIdentifier(stream, state) {\n    stream.eatWhile(/[\\w_]/);\n    state.tokenize = popInterpolationStack(state);\n    return \"variable\";\n  }\n\n  function tokenNestedComment(depth) {\n    return function (stream, state) {\n      var ch\n      while (ch = stream.next()) {\n        if (ch == \"*\" && stream.eat(\"/\")) {\n          if (depth == 1) {\n            state.tokenize = null\n            break\n          } else {\n            state.tokenize = tokenNestedComment(depth - 1)\n            return state.tokenize(stream, state)\n          }\n        } else if (ch == \"/\" && stream.eat(\"*\")) {\n          state.tokenize = tokenNestedComment(depth + 1)\n          return state.tokenize(stream, state)\n        }\n      }\n      return \"comment\"\n    }\n  }\n\n  CodeMirror.registerHelper(\"hintWords\", \"application/dart\", keywords.concat(atoms).concat(builtins));\n\n  // This is needed to make loading through meta.js work.\n  CodeMirror.defineMode(\"dart\", function(conf) {\n    return CodeMirror.getMode(conf, \"application/dart\");\n  }, \"clike\");\n});\n"]}