PluginProbe
CSS & JavaScript Toolbox / 11.7
CSS & JavaScript Toolbox v11.7
trunk 0.3 0.8 10 10.1 11 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.9.1 12 12.0 12.0.1 12.0.3 12.0.4 12.0.5 12.0.6 12.0.7 6.0 6.0.11 All 60 releases
← All changes | framework/js/ace/mode-javascript.js +794 -2 1011.7 View file →
@@ -1,6 +1,798 @@
1 -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}); (function() {
2 - ace.require(["ace/mode/javascript"], function(m) {
1 +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
2 +var oop = require("../lib/oop");
3 +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
4 +var DocCommentHighlightRules = function () {
5 + this.$rules = {
6 + "start": [{
7 + token: "comment.doc.tag",
8 + regex: "@[\\w\\d_]+" // TODO: fix email addresses
9 + },
10 + DocCommentHighlightRules.getTagRule(),
11 + {
12 + defaultToken: "comment.doc",
13 + caseInsensitive: true
14 + }]
15 + };
16 +};
17 +oop.inherits(DocCommentHighlightRules, TextHighlightRules);
18 +DocCommentHighlightRules.getTagRule = function (start) {
19 + return {
20 + token: "comment.doc.tag.storage.type",
21 + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
22 + };
23 +};
24 +DocCommentHighlightRules.getStartRule = function (start) {
25 + return {
26 + token: "comment.doc",
27 + regex: "\\/\\*(?=\\*)",
28 + next: start
29 + };
30 +};
31 +DocCommentHighlightRules.getEndRule = function (start) {
32 + return {
33 + token: "comment.doc",
34 + regex: "\\*\\/",
35 + next: start
36 + };
37 +};
38 +exports.DocCommentHighlightRules = DocCommentHighlightRules;
39 +
40 +});
41 +
42 +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
43 +var oop = require("../lib/oop");
44 +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
45 +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
46 +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";
47 +var JavaScriptHighlightRules = function (options) {
48 + var keywordMapper = this.createKeywordMapper({
49 + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors
50 + "Namespace|QName|XML|XMLList|" + // E4X
51 + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
52 + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
53 + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
54 + "SyntaxError|TypeError|URIError|" +
55 + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
56 + "isNaN|parseFloat|parseInt|" +
57 + "JSON|Math|" + // Other
58 + "this|arguments|prototype|window|document",
59 + "keyword": "const|yield|import|get|set|async|await|" +
60 + "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
61 + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" +
62 + "__parent__|__count__|escape|unescape|with|__proto__|" +
63 + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor",
64 + "storage.type": "const|let|var|function",
65 + "constant.language": "null|Infinity|NaN|undefined",
66 + "support.function": "alert",
67 + "constant.language.boolean": "true|false"
68 + }, "identifier");
69 + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";
70 + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
71 + "u[0-9a-fA-F]{4}|" + // unicode
72 + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
73 + "[0-2][0-7]{0,2}|" + // oct
74 + "3[0-7][0-7]?|" + // oct
75 + "[4-7][0-7]?|" + //oct
76 + ".)";
77 + this.$rules = {
78 + "no_regex": [
79 + DocCommentHighlightRules.getStartRule("doc-start"),
80 + comments("no_regex"),
81 + {
82 + token: "string",
83 + regex: "'(?=.)",
84 + next: "qstring"
85 + }, {
86 + token: "string",
87 + regex: '"(?=.)',
88 + next: "qqstring"
89 + }, {
90 + token: "constant.numeric",
91 + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
92 + }, {
93 + token: "constant.numeric",
94 + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
95 + }, {
96 + token: [
97 + "storage.type", "punctuation.operator", "support.function",
98 + "punctuation.operator", "entity.name.function", "text", "keyword.operator"
99 + ],
100 + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)",
101 + next: "function_arguments"
102 + }, {
103 + token: [
104 + "storage.type", "punctuation.operator", "entity.name.function", "text",
105 + "keyword.operator", "text", "storage.type", "text", "paren.lparen"
106 + ],
107 + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",
108 + next: "function_arguments"
109 + }, {
110 + token: [
111 + "entity.name.function", "text", "keyword.operator", "text", "storage.type",
112 + "text", "paren.lparen"
113 + ],
114 + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",
115 + next: "function_arguments"
116 + }, {
117 + token: [
118 + "storage.type", "punctuation.operator", "entity.name.function", "text",
119 + "keyword.operator", "text",
120 + "storage.type", "text", "entity.name.function", "text", "paren.lparen"
121 + ],
122 + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",
123 + next: "function_arguments"
124 + }, {
125 + token: [
126 + "storage.type", "text", "entity.name.function", "text", "paren.lparen"
127 + ],
128 + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
129 + next: "function_arguments"
130 + }, {
131 + token: [
132 + "entity.name.function", "text", "punctuation.operator",
133 + "text", "storage.type", "text", "paren.lparen"
134 + ],
135 + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",
136 + next: "function_arguments"
137 + }, {
138 + token: [
139 + "text", "text", "storage.type", "text", "paren.lparen"
140 + ],
141 + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()",
142 + next: "function_arguments"
143 + }, {
144 + token: "keyword",
145 + regex: "from(?=\\s*('|\"))"
146 + }, {
147 + token: "keyword",
148 + regex: "(?:" + kwBeforeRe + ")\\b",
149 + next: "start"
150 + }, {
151 + token: "support.constant",
152 + regex: /that\b/
153 + }, {
154 + token: ["storage.type", "punctuation.operator", "support.function.firebug"],
155 + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
156 + }, {
157 + token: keywordMapper,
158 + regex: identifierRe
159 + }, {
160 + token: "punctuation.operator",
161 + regex: /[.](?![.])/,
162 + next: "property"
163 + }, {
164 + token: "storage.type",
165 + regex: /=>/,
166 + next: "start"
167 + }, {
168 + token: "keyword.operator",
169 + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
170 + next: "start"
171 + }, {
172 + token: "punctuation.operator",
173 + regex: /[?:,;.]/,
174 + next: "start"
175 + }, {
176 + token: "paren.lparen",
177 + regex: /[\[({]/,
178 + next: "start"
179 + }, {
180 + token: "paren.rparen",
181 + regex: /[\])}]/
182 + }, {
183 + token: "comment",
184 + regex: /^#!.*$/
185 + }
186 + ],
187 + property: [{
188 + token: "text",
189 + regex: "\\s+"
190 + }, {
191 + token: [
192 + "storage.type", "punctuation.operator", "entity.name.function", "text",
193 + "keyword.operator", "text",
194 + "storage.type", "text", "entity.name.function", "text", "paren.lparen"
195 + ],
196 + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",
197 + next: "function_arguments"
198 + }, {
199 + token: "punctuation.operator",
200 + regex: /[.](?![.])/
201 + }, {
202 + token: "support.function",
203 + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
204 + }, {
205 + token: "support.function.dom",
206 + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
207 + }, {
208 + token: "support.constant",
209 + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
210 + }, {
211 + token: "identifier",
212 + regex: identifierRe
213 + }, {
214 + regex: "",
215 + token: "empty",
216 + next: "no_regex"
217 + }
218 + ],
219 + "start": [
220 + DocCommentHighlightRules.getStartRule("doc-start"),
221 + comments("start"),
222 + {
223 + token: "string.regexp",
224 + regex: "\\/",
225 + next: "regex"
226 + }, {
227 + token: "text",
228 + regex: "\\s+|^$",
229 + next: "start"
230 + }, {
231 + token: "empty",
232 + regex: "",
233 + next: "no_regex"
234 + }
235 + ],
236 + "regex": [
237 + {
238 + token: "regexp.keyword.operator",
239 + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
240 + }, {
241 + token: "string.regexp",
242 + regex: "/[sxngimy]*",
243 + next: "no_regex"
244 + }, {
245 + token: "invalid",
246 + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
247 + }, {
248 + token: "constant.language.escape",
249 + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
250 + }, {
251 + token: "constant.language.delimiter",
252 + regex: /\|/
253 + }, {
254 + token: "constant.language.escape",
255 + regex: /\[\^?/,
256 + next: "regex_character_class"
257 + }, {
258 + token: "empty",
259 + regex: "$",
260 + next: "no_regex"
261 + }, {
262 + defaultToken: "string.regexp"
263 + }
264 + ],
265 + "regex_character_class": [
266 + {
267 + token: "regexp.charclass.keyword.operator",
268 + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
269 + }, {
270 + token: "constant.language.escape",
271 + regex: "]",
272 + next: "regex"
273 + }, {
274 + token: "constant.language.escape",
275 + regex: "-"
276 + }, {
277 + token: "empty",
278 + regex: "$",
279 + next: "no_regex"
280 + }, {
281 + defaultToken: "string.regexp.charachterclass"
282 + }
283 + ],
284 + "default_parameter": [
285 + {
286 + token: "string",
287 + regex: "'(?=.)",
288 + push: [
289 + {
290 + token: "string",
291 + regex: "'|$",
292 + next: "pop"
293 + }, {
294 + include: "qstring"
295 + }
296 + ]
297 + }, {
298 + token: "string",
299 + regex: '"(?=.)',
300 + push: [
301 + {
302 + token: "string",
303 + regex: '"|$',
304 + next: "pop"
305 + }, {
306 + include: "qqstring"
307 + }
308 + ]
309 + }, {
310 + token: "constant.language",
311 + regex: "null|Infinity|NaN|undefined"
312 + }, {
313 + token: "constant.numeric",
314 + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
315 + }, {
316 + token: "constant.numeric",
317 + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
318 + }, {
319 + token: "punctuation.operator",
320 + regex: ",",
321 + next: "function_arguments"
322 + }, {
323 + token: "text",
324 + regex: "\\s+"
325 + }, {
326 + token: "punctuation.operator",
327 + regex: "$"
328 + }, {
329 + token: "empty",
330 + regex: "",
331 + next: "no_regex"
332 + }
333 + ],
334 + "function_arguments": [
335 + comments("function_arguments"),
336 + {
337 + token: "variable.parameter",
338 + regex: identifierRe
339 + }, {
340 + token: "punctuation.operator",
341 + regex: ","
342 + }, {
343 + token: "text",
344 + regex: "\\s+"
345 + }, {
346 + token: "punctuation.operator",
347 + regex: "$"
348 + }, {
349 + token: "empty",
350 + regex: "",
351 + next: "no_regex"
352 + }
353 + ],
354 + "qqstring": [
355 + {
356 + token: "constant.language.escape",
357 + regex: escapedRe
358 + }, {
359 + token: "string",
360 + regex: "\\\\$",
361 + consumeLineEnd: true
362 + }, {
363 + token: "string",
364 + regex: '"|$',
365 + next: "no_regex"
366 + }, {
367 + defaultToken: "string"
368 + }
369 + ],
370 + "qstring": [
371 + {
372 + token: "constant.language.escape",
373 + regex: escapedRe
374 + }, {
375 + token: "string",
376 + regex: "\\\\$",
377 + consumeLineEnd: true
378 + }, {
379 + token: "string",
380 + regex: "'|$",
381 + next: "no_regex"
382 + }, {
383 + defaultToken: "string"
384 + }
385 + ]
386 + };
387 + if (!options || !options.noES6) {
388 + this.$rules.no_regex.unshift({
389 + regex: "[{}]", onMatch: function (val, state, stack) {
390 + this.next = val == "{" ? this.nextState : "";
391 + if (val == "{" && stack.length) {
392 + stack.unshift("start", state);
393 + }
394 + else if (val == "}" && stack.length) {
395 + stack.shift();
396 + this.next = stack.shift();
397 + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1)
398 + return "paren.quasi.end";
399 + }
400 + return val == "{" ? "paren.lparen" : "paren.rparen";
401 + },
402 + nextState: "start"
403 + }, {
404 + token: "string.quasi.start",
405 + regex: /`/,
406 + push: [{
407 + token: "constant.language.escape",
408 + regex: escapedRe
409 + }, {
410 + token: "paren.quasi.start",
411 + regex: /\${/,
412 + push: "start"
413 + }, {
414 + token: "string.quasi.end",
415 + regex: /`/,
416 + next: "pop"
417 + }, {
418 + defaultToken: "string.quasi"
419 + }]
420 + }, {
421 + token: ["variable.parameter", "text"],
422 + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)"
423 + }, {
424 + token: "paren.lparen",
425 + regex: "(\\()(?=.+\\s*=>)",
426 + next: "function_arguments"
427 + }, {
428 + token: "variable.language",
429 + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"
430 + });
431 + this.$rules["function_arguments"].unshift({
432 + token: "keyword.operator",
433 + regex: "=",
434 + next: "default_parameter"
435 + }, {
436 + token: "keyword.operator",
437 + regex: "\\.{3}"
438 + });
439 + this.$rules["property"].unshift({
440 + token: "support.function",
441 + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|"
442 + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"
443 + }, {
444 + token: "constant.language",
445 + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"
446 + });
447 + if (!options || options.jsx != false)
448 + JSX.call(this);
449 + }
450 + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]);
451 + this.normalizeRules();
452 +};
453 +oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
454 +function JSX() {
455 + var tagRegex = identifierRe.replace("\\d", "\\d\\-");
456 + var jsxTag = {
457 + onMatch: function (val, state, stack) {
458 + var offset = val.charAt(1) == "/" ? 2 : 1;
459 + if (offset == 1) {
460 + if (state != this.nextState)
461 + stack.unshift(this.next, this.nextState, 0);
462 + else
463 + stack.unshift(this.next);
464 + stack[2]++;
465 + }
466 + else if (offset == 2) {
467 + if (state == this.nextState) {
468 + stack[1]--;
469 + if (!stack[1] || stack[1] < 0) {
470 + stack.shift();
471 + stack.shift();
472 + }
473 + }
474 + }
475 + return [{
476 + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
477 + value: val.slice(0, offset)
478 + }, {
479 + type: "meta.tag.tag-name.xml",
480 + value: val.substr(offset)
481 + }];
482 + },
483 + regex: "</?" + tagRegex + "",
484 + next: "jsxAttributes",
485 + nextState: "jsx"
486 + };
487 + this.$rules.start.unshift(jsxTag);
488 + var jsxJsRule = {
489 + regex: "{",
490 + token: "paren.quasi.start",
491 + push: "start"
492 + };
493 + this.$rules.jsx = [
494 + jsxJsRule,
495 + jsxTag,
496 + { include: "reference" },
497 + { defaultToken: "string" }
498 + ];
499 + this.$rules.jsxAttributes = [{
500 + token: "meta.tag.punctuation.tag-close.xml",
501 + regex: "/?>",
502 + onMatch: function (value, currentState, stack) {
503 + if (currentState == stack[0])
504 + stack.shift();
505 + if (value.length == 2) {
506 + if (stack[0] == this.nextState)
507 + stack[1]--;
508 + if (!stack[1] || stack[1] < 0) {
509 + stack.splice(0, 2);
510 + }
511 + }
512 + this.next = stack[0] || "start";
513 + return [{ type: this.token, value: value }];
514 + },
515 + nextState: "jsx"
516 + },
517 + jsxJsRule,
518 + comments("jsxAttributes"),
519 + {
520 + token: "entity.other.attribute-name.xml",
521 + regex: tagRegex
522 + }, {
523 + token: "keyword.operator.attribute-equals.xml",
524 + regex: "="
525 + }, {
526 + token: "text.tag-whitespace.xml",
527 + regex: "\\s+"
528 + }, {
529 + token: "string.attribute-value.xml",
530 + regex: "'",
531 + stateName: "jsx_attr_q",
532 + push: [
533 + { token: "string.attribute-value.xml", regex: "'", next: "pop" },
534 + { include: "reference" },
535 + { defaultToken: "string.attribute-value.xml" }
536 + ]
537 + }, {
538 + token: "string.attribute-value.xml",
539 + regex: '"',
540 + stateName: "jsx_attr_qq",
541 + push: [
542 + { token: "string.attribute-value.xml", regex: '"', next: "pop" },
543 + { include: "reference" },
544 + { defaultToken: "string.attribute-value.xml" }
545 + ]
546 + },
547 + jsxTag
548 + ];
549 + this.$rules.reference = [{
550 + token: "constant.language.escape.reference.xml",
551 + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
552 + }];
553 +}
554 +function comments(next) {
555 + return [
556 + {
557 + token: "comment",
558 + regex: /\/\*/,
559 + next: [
560 + DocCommentHighlightRules.getTagRule(),
561 + { token: "comment", regex: "\\*\\/", next: next || "pop" },
562 + { defaultToken: "comment", caseInsensitive: true }
563 + ]
564 + }, {
565 + token: "comment",
566 + regex: "\\/\\/",
567 + next: [
568 + DocCommentHighlightRules.getTagRule(),
569 + { token: "comment", regex: "$|^", next: next || "pop" },
570 + { defaultToken: "comment", caseInsensitive: true }
571 + ]
572 + }
573 + ];
574 +}
575 +exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
576 +
577 +});
578 +
579 +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict";
580 +var Range = require("../range").Range;
581 +var MatchingBraceOutdent = function () { };
582 +(function () {
583 + this.checkOutdent = function (line, input) {
584 + if (!/^\s+$/.test(line))
585 + return false;
586 + return /^\s*\}/.test(input);
587 + };
588 + this.autoOutdent = function (doc, row) {
589 + var line = doc.getLine(row);
590 + var match = line.match(/^(\s*\})/);
591 + if (!match)
592 + return 0;
593 + var column = match[1].length;
594 + var openBracePos = doc.findMatchingBracket({ row: row, column: column });
595 + if (!openBracePos || openBracePos.row == row)
596 + return 0;
597 + var indent = this.$getIndent(doc.getLine(openBracePos.row));
598 + doc.replace(new Range(row, 0, row, column - 1), indent);
599 + };
600 + this.$getIndent = function (line) {
601 + return line.match(/^\s*/)[0];
602 + };
603 +}).call(MatchingBraceOutdent.prototype);
604 +exports.MatchingBraceOutdent = MatchingBraceOutdent;
605 +
606 +});
607 +
608 +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
609 +var oop = require("../../lib/oop");
610 +var Range = require("../../range").Range;
611 +var BaseFoldMode = require("./fold_mode").FoldMode;
612 +var FoldMode = exports.FoldMode = function (commentRegex) {
613 + if (commentRegex) {
614 + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start));
615 + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end));
616 + }
617 +};
618 +oop.inherits(FoldMode, BaseFoldMode);
619 +(function () {
620 + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
621 + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
622 + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
623 + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
624 + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
625 + this._getFoldWidgetBase = this.getFoldWidget;
626 + this.getFoldWidget = function (session, foldStyle, row) {
627 + var line = session.getLine(row);
628 + if (this.singleLineBlockCommentRe.test(line)) {
629 + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
630 + return "";
631 + }
632 + var fw = this._getFoldWidgetBase(session, foldStyle, row);
633 + if (!fw && this.startRegionRe.test(line))
634 + return "start"; // lineCommentRegionStart
635 + return fw;
636 + };
637 + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
638 + var line = session.getLine(row);
639 + if (this.startRegionRe.test(line))
640 + return this.getCommentRegionBlock(session, line, row);
641 + var match = line.match(this.foldingStartMarker);
642 + if (match) {
643 + var i = match.index;
644 + if (match[1])
645 + return this.openingBracketBlock(session, match[1], row, i);
646 + var range = session.getCommentFoldRange(row, i + match[0].length, 1);
647 + if (range && !range.isMultiLine()) {
648 + if (forceMultiline) {
649 + range = this.getSectionRange(session, row);
650 + }
651 + else if (foldStyle != "all")
652 + range = null;
653 + }
654 + return range;
655 + }
656 + if (foldStyle === "markbegin")
657 + return;
658 + var match = line.match(this.foldingStopMarker);
659 + if (match) {
660 + var i = match.index + match[0].length;
661 + if (match[1])
662 + return this.closingBracketBlock(session, match[1], row, i);
663 + return session.getCommentFoldRange(row, i, -1);
664 + }
665 + };
666 + this.getSectionRange = function (session, row) {
667 + var line = session.getLine(row);
668 + var startIndent = line.search(/\S/);
669 + var startRow = row;
670 + var startColumn = line.length;
671 + row = row + 1;
672 + var endRow = row;
673 + var maxRow = session.getLength();
674 + while (++row < maxRow) {
675 + line = session.getLine(row);
676 + var indent = line.search(/\S/);
677 + if (indent === -1)
678 + continue;
679 + if (startIndent > indent)
680 + break;
681 + var subRange = this.getFoldWidgetRange(session, "all", row);
682 + if (subRange) {
683 + if (subRange.start.row <= startRow) {
684 + break;
685 + }
686 + else if (subRange.isMultiLine()) {
687 + row = subRange.end.row;
688 + }
689 + else if (startIndent == indent) {
690 + break;
691 + }
692 + }
693 + endRow = row;
694 + }
695 + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
696 + };
697 + this.getCommentRegionBlock = function (session, line, row) {
698 + var startColumn = line.search(/\s*$/);
699 + var maxRow = session.getLength();
700 + var startRow = row;
701 + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
702 + var depth = 1;
703 + while (++row < maxRow) {
704 + line = session.getLine(row);
705 + var m = re.exec(line);
706 + if (!m)
707 + continue;
708 + if (m[1])
709 + depth--;
710 + else
711 + depth++;
712 + if (!depth)
713 + break;
714 + }
715 + var endRow = row;
716 + if (endRow > startRow) {
717 + return new Range(startRow, startColumn, endRow, line.length);
718 + }
719 + };
720 +}).call(FoldMode.prototype);
721 +
722 +});
723 +
724 +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
725 +var oop = require("../lib/oop");
726 +var TextMode = require("./text").Mode;
727 +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
728 +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
729 +var WorkerClient = require("../worker/worker_client").WorkerClient;
730 +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
731 +var CStyleFoldMode = require("./folding/cstyle").FoldMode;
732 +var Mode = function () {
733 + this.HighlightRules = JavaScriptHighlightRules;
734 + this.$outdent = new MatchingBraceOutdent();
735 + this.$behaviour = new CstyleBehaviour();
736 + this.foldingRules = new CStyleFoldMode();
737 +};
738 +oop.inherits(Mode, TextMode);
739 +(function () {
740 + this.lineCommentStart = "//";
741 + this.blockComment = { start: "/*", end: "*/" };
742 + this.$quotes = { '"': '"', "'": "'", "`": "`" };
743 + this.getNextLineIndent = function (state, line, tab) {
744 + var indent = this.$getIndent(line);
745 + var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
746 + var tokens = tokenizedLine.tokens;
747 + var endState = tokenizedLine.state;
748 + if (tokens.length && tokens[tokens.length - 1].type == "comment") {
749 + return indent;
750 + }
751 + if (state == "start" || state == "no_regex") {
752 + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
753 + if (match) {
754 + indent += tab;
755 + }
756 + }
757 + else if (state == "doc-start") {
758 + if (endState == "start" || endState == "no_regex") {
759 + return "";
760 + }
761 + var match = line.match(/^\s*(\/?)\*/);
762 + if (match) {
763 + if (match[1]) {
764 + indent += " ";
765 + }
766 + indent += "* ";
767 + }
768 + }
769 + return indent;
770 + };
771 + this.checkOutdent = function (state, line, input) {
772 + return this.$outdent.checkOutdent(line, input);
773 + };
774 + this.autoOutdent = function (state, doc, row) {
775 + this.$outdent.autoOutdent(doc, row);
776 + };
777 + this.createWorker = function (session) {
778 + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
779 + worker.attachToDocument(session.getDocument());
780 + worker.on("annotate", function (results) {
781 + session.setAnnotations(results.data);
782 + });
783 + worker.on("terminate", function () {
784 + session.clearAnnotations();
785 + });
786 + return worker;
787 + };
788 + this.$id = "ace/mode/javascript";
789 + this.snippetFileId = "ace/snippets/javascript";
790 +}).call(Mode.prototype);
791 +exports.Mode = Mode;
792 +
793 +}); (function() {
794 + window.require(["ace/mode/javascript"], function(m) {
3 795 if (typeof module == "object" && typeof exports == "object" && module) {
4 796 module.exports = m;
5 797 }
6 798 });