{"version":3,"sources":["https://lively-kernel.org/lively4/composed-offset/src/client/syntax.js"],"names":["parseToCheckSyntax","SyntaxChecker","checkForSyntaxErrors","editor","src","getValue","clearGutter","getAllMarks","filter","ea","isSyntaxError","forEach","clear","ast","e","loc","console","warn","line","errorMark","document","createElement","style","color","marginLeft","innerHTML","classList","add","setAttribute","setGutterMarker","marker","markText","ch","css","title"],"mappings":";;;;;;;;;AAAQA,wB,mCAAAA,kB;;;;;;;;;;;AAAAA,6D;;;;;;;AAIO,YAAMC,aAAN,CAAoB;;AAEjC,qBAAaC,oBAAb,CAAkCC,MAAlC,EAA0C;;AAExC,cAAIC,MAAMD,OAAOE,QAAP,EAAV;;AAEAF,iBAAOG,WAAP,CAAmB;;AAEnB;AAFA,YAGAH,OAAOI,WAAP,GACGC,MADH,CACUC,MAAMA,GAAGC,aADnB,EAEGC,OAFH,CAEWF,MAAMA,GAAGG,KAAH,EAFjB;;AAIA,cAAI;AACF,gBAAIC,MAAMb,mBAAmBI;AAC7B;AADU,aAAV,CAEA,OAAO,KAAP;AACD,WAJD,CAIE,OAAMU,CAAN,EAAS;AACT,gBAAI,CAACA,EAAEC,GAAP,EAAY;AACVC,sBAAQC,IAAR,CAAa,2CAAb,EAA0DH,CAA1D;AACA,qBAAO,KAAP;AACD;AACD,gBAAII,OAAOJ,EAAEC,GAAF,CAAMG,IAAN,GAAa,CAAxB;AACA,gBAAIC,+BAAYC,SAASC,aAAT,CAAuB,KAAvB,CAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAF,sBAAUG,KAAV,CAAgBC,KAAhB,GAAwB,KAAxB;AACAJ,sBAAUG,KAAV,CAAgBE,UAAhB,GAA6B,KAA7B;AACAL,sBAAUM,SAAV,GAAsB,UAAtB;AACAN,sBAAUO,SAAV,CAAoBC,GAApB,CAAwB,WAAxB;AACAR,sBAAUS,YAAV,CAAuB,OAAvB,EAAgC,KAAKd,CAArC;AACAX,mBAAO0B,eAAP,CAAuBX,IAAvB,EAA6B,YAA7B,EAA2CC,SAA3C;;AAEA,gBAAIW,SAAS3B,OAAO4B,QAAP,CACX,EAACb,MAAMA,IAAP,EAAac,IAAI,CAAjB,EADW,EACU;AACrB,cAACd,MAAMA,IAAP,EAAac,IAAI,GAAjB,EAFW,EAGX;AACEtB,6BAAe,IADjB;AAEEuB,mBAAK,qCAFP;AAGEC,qBAAO,KAAKpB;AAHd,aAHW,CAAb;;AASA,mBAAO,IAAP;AACD;AACF;;AA1CgC;;yBAAdb,a;;;;;;;;6BAAAA,8C","file":"syntax.js","sourcesContent":["import {parseToCheckSyntax} from \"src/external/babel/plugin-babel7.js\"\n\n\n\nexport default class SyntaxChecker {\n  \n  static async checkForSyntaxErrors(editor) {\n   \n    var src = editor.getValue();\n    \n    editor.clearGutter(\"leftgutter\")\n    \n    // clear markers\n    editor.getAllMarks()\n      .filter(ea => ea.isSyntaxError)\n      .forEach(ea => ea.clear())\n    \n    try {\n      var ast = parseToCheckSyntax(src)\n      // we are trying to get the error, if it parses everything is fine\n      return false;\n    } catch(e) {   \n      if (!e.loc) {\n        console.warn(\"checkForSyntaxErrors failed, loc missing \", e)\n        return false\n      }\n      var line = e.loc.line - 1;\n      var errorMark = document.createElement(\"div\")\n      errorMark.style.color = \"red\";\n      errorMark.style.marginLeft = \"5px\"\n      errorMark.innerHTML = \"<b>!</b>\"\n      errorMark.classList.add(\"errorMark\")\n      errorMark.setAttribute(\"title\", \"\" + e)\n      editor.setGutterMarker(line, \"leftgutter\", errorMark)\n      \n      var marker = editor.markText(\n        {line: line, ch: 0}, // e.loc.column\n        {line: line, ch: 100},\n        {\n          isSyntaxError: true,\n          css: \"background-color: rgba(255,0,0,0.3)\", \n          title: \"\" + e\n        }); \n            \n      return true\n    }\n  }\n  \n  \n}"]}