| @@ -1,2194 +1 @@ | ||
| 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 | -}); | |
| 794 | - | |
| 795 | -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; | |
| 796 | -var oop = require("../lib/oop"); | |
| 797 | -var lang = require("../lib/lang"); | |
| 798 | -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; | |
| 799 | -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; | |
| 800 | -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; | |
| 801 | -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; | |
| 802 | -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; | |
| 803 | -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; | |
| 804 | -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; | |
| 805 | -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; | |
| 806 | -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; | |
| 807 | -var CssHighlightRules = function () { | |
| 808 | - var keywordMapper = this.createKeywordMapper({ | |
| 809 | - "support.function": supportFunction, | |
| 810 | - "support.constant": supportConstant, | |
| 811 | - "support.type": supportType, | |
| 812 | - "support.constant.color": supportConstantColor, | |
| 813 | - "support.constant.fonts": supportConstantFonts | |
| 814 | - }, "text", true); | |
| 815 | - this.$rules = { | |
| 816 | - "start": [{ | |
| 817 | - include: ["strings", "url", "comments"] | |
| 818 | - }, { | |
| 819 | - token: "paren.lparen", | |
| 820 | - regex: "\\{", | |
| 821 | - next: "ruleset" | |
| 822 | - }, { | |
| 823 | - token: "paren.rparen", | |
| 824 | - regex: "\\}" | |
| 825 | - }, { | |
| 826 | - token: "string", | |
| 827 | - regex: "@(?!viewport)", | |
| 828 | - next: "media" | |
| 829 | - }, { | |
| 830 | - token: "keyword", | |
| 831 | - regex: "#[a-z0-9-_]+" | |
| 832 | - }, { | |
| 833 | - token: "keyword", | |
| 834 | - regex: "%" | |
| 835 | - }, { | |
| 836 | - token: "variable", | |
| 837 | - regex: "\\.[a-z0-9-_]+" | |
| 838 | - }, { | |
| 839 | - token: "string", | |
| 840 | - regex: ":[a-z0-9-_]+" | |
| 841 | - }, { | |
| 842 | - token: "constant.numeric", | |
| 843 | - regex: numRe | |
| 844 | - }, { | |
| 845 | - token: "constant", | |
| 846 | - regex: "[a-z0-9-_]+" | |
| 847 | - }, { | |
| 848 | - caseInsensitive: true | |
| 849 | - }], | |
| 850 | - "media": [{ | |
| 851 | - include: ["strings", "url", "comments"] | |
| 852 | - }, { | |
| 853 | - token: "paren.lparen", | |
| 854 | - regex: "\\{", | |
| 855 | - next: "start" | |
| 856 | - }, { | |
| 857 | - token: "paren.rparen", | |
| 858 | - regex: "\\}", | |
| 859 | - next: "start" | |
| 860 | - }, { | |
| 861 | - token: "string", | |
| 862 | - regex: ";", | |
| 863 | - next: "start" | |
| 864 | - }, { | |
| 865 | - token: "keyword", | |
| 866 | - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" | |
| 867 | - + "|page|font|keyframes|viewport|counter-style|font-feature-values" | |
| 868 | - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" | |
| 869 | - }], | |
| 870 | - "comments": [{ | |
| 871 | - token: "comment", | |
| 872 | - regex: "\\/\\*", | |
| 873 | - push: [{ | |
| 874 | - token: "comment", | |
| 875 | - regex: "\\*\\/", | |
| 876 | - next: "pop" | |
| 877 | - }, { | |
| 878 | - defaultToken: "comment" | |
| 879 | - }] | |
| 880 | - }], | |
| 881 | - "ruleset": [{ | |
| 882 | - regex: "-(webkit|ms|moz|o)-", | |
| 883 | - token: "text" | |
| 884 | - }, { | |
| 885 | - token: "punctuation.operator", | |
| 886 | - regex: "[:;]" | |
| 887 | - }, { | |
| 888 | - token: "paren.rparen", | |
| 889 | - regex: "\\}", | |
| 890 | - next: "start" | |
| 891 | - }, { | |
| 892 | - include: ["strings", "url", "comments"] | |
| 893 | - }, { | |
| 894 | - token: ["constant.numeric", "keyword"], | |
| 895 | - regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" | |
| 896 | - }, { | |
| 897 | - token: "constant.numeric", | |
| 898 | - regex: numRe | |
| 899 | - }, { | |
| 900 | - token: "constant.numeric", | |
| 901 | - regex: "#[a-f0-9]{6}" | |
| 902 | - }, { | |
| 903 | - token: "constant.numeric", | |
| 904 | - regex: "#[a-f0-9]{3}" | |
| 905 | - }, { | |
| 906 | - token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], | |
| 907 | - regex: pseudoElements | |
| 908 | - }, { | |
| 909 | - token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], | |
| 910 | - regex: pseudoClasses | |
| 911 | - }, { | |
| 912 | - include: "url" | |
| 913 | - }, { | |
| 914 | - token: keywordMapper, | |
| 915 | - regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" | |
| 916 | - }, { | |
| 917 | - caseInsensitive: true | |
| 918 | - }], | |
| 919 | - url: [{ | |
| 920 | - token: "support.function", | |
| 921 | - regex: "(?:url(:?-prefix)?|domain|regexp)\\(", | |
| 922 | - push: [{ | |
| 923 | - token: "support.function", | |
| 924 | - regex: "\\)", | |
| 925 | - next: "pop" | |
| 926 | - }, { | |
| 927 | - defaultToken: "string" | |
| 928 | - }] | |
| 929 | - }], | |
| 930 | - strings: [{ | |
| 931 | - token: "string.start", | |
| 932 | - regex: "'", | |
| 933 | - push: [{ | |
| 934 | - token: "string.end", | |
| 935 | - regex: "'|$", | |
| 936 | - next: "pop" | |
| 937 | - }, { | |
| 938 | - include: "escapes" | |
| 939 | - }, { | |
| 940 | - token: "constant.language.escape", | |
| 941 | - regex: /\\$/, | |
| 942 | - consumeLineEnd: true | |
| 943 | - }, { | |
| 944 | - defaultToken: "string" | |
| 945 | - }] | |
| 946 | - }, { | |
| 947 | - token: "string.start", | |
| 948 | - regex: '"', | |
| 949 | - push: [{ | |
| 950 | - token: "string.end", | |
| 951 | - regex: '"|$', | |
| 952 | - next: "pop" | |
| 953 | - }, { | |
| 954 | - include: "escapes" | |
| 955 | - }, { | |
| 956 | - token: "constant.language.escape", | |
| 957 | - regex: /\\$/, | |
| 958 | - consumeLineEnd: true | |
| 959 | - }, { | |
| 960 | - defaultToken: "string" | |
| 961 | - }] | |
| 962 | - }], | |
| 963 | - escapes: [{ | |
| 964 | - token: "constant.language.escape", | |
| 965 | - regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ | |
| 966 | - }] | |
| 967 | - }; | |
| 968 | - this.normalizeRules(); | |
| 969 | -}; | |
| 970 | -oop.inherits(CssHighlightRules, TextHighlightRules); | |
| 971 | -exports.CssHighlightRules = CssHighlightRules; | |
| 972 | - | |
| 973 | -}); | |
| 974 | - | |
| 975 | -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; | |
| 976 | -var propertyMap = { | |
| 977 | - "background": { "#$0": 1 }, | |
| 978 | - "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, | |
| 979 | - "background-image": { "url('/$0')": 1 }, | |
| 980 | - "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, | |
| 981 | - "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, | |
| 982 | - "background-attachment": { "scroll": 1, "fixed": 1 }, | |
| 983 | - "background-size": { "cover": 1, "contain": 1 }, | |
| 984 | - "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, | |
| 985 | - "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, | |
| 986 | - "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, | |
| 987 | - "border-color": { "#$0": 1 }, | |
| 988 | - "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, | |
| 989 | - "border-collapse": { "collapse": 1, "separate": 1 }, | |
| 990 | - "bottom": { "px": 1, "em": 1, "%": 1 }, | |
| 991 | - "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, | |
| 992 | - "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, | |
| 993 | - "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, | |
| 994 | - "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, | |
| 995 | - "empty-cells": { "show": 1, "hide": 1 }, | |
| 996 | - "float": { "left": 1, "right": 1, "none": 1 }, | |
| 997 | - "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, | |
| 998 | - "font-size": { "px": 1, "em": 1, "%": 1 }, | |
| 999 | - "font-weight": { "bold": 1, "normal": 1 }, | |
| 1000 | - "font-style": { "italic": 1, "normal": 1 }, | |
| 1001 | - "font-variant": { "normal": 1, "small-caps": 1 }, | |
| 1002 | - "height": { "px": 1, "em": 1, "%": 1 }, | |
| 1003 | - "left": { "px": 1, "em": 1, "%": 1 }, | |
| 1004 | - "letter-spacing": { "normal": 1 }, | |
| 1005 | - "line-height": { "normal": 1 }, | |
| 1006 | - "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, | |
| 1007 | - "margin": { "px": 1, "em": 1, "%": 1 }, | |
| 1008 | - "margin-right": { "px": 1, "em": 1, "%": 1 }, | |
| 1009 | - "margin-left": { "px": 1, "em": 1, "%": 1 }, | |
| 1010 | - "margin-top": { "px": 1, "em": 1, "%": 1 }, | |
| 1011 | - "margin-bottom": { "px": 1, "em": 1, "%": 1 }, | |
| 1012 | - "max-height": { "px": 1, "em": 1, "%": 1 }, | |
| 1013 | - "max-width": { "px": 1, "em": 1, "%": 1 }, | |
| 1014 | - "min-height": { "px": 1, "em": 1, "%": 1 }, | |
| 1015 | - "min-width": { "px": 1, "em": 1, "%": 1 }, | |
| 1016 | - "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, | |
| 1017 | - "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, | |
| 1018 | - "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, | |
| 1019 | - "padding": { "px": 1, "em": 1, "%": 1 }, | |
| 1020 | - "padding-top": { "px": 1, "em": 1, "%": 1 }, | |
| 1021 | - "padding-right": { "px": 1, "em": 1, "%": 1 }, | |
| 1022 | - "padding-bottom": { "px": 1, "em": 1, "%": 1 }, | |
| 1023 | - "padding-left": { "px": 1, "em": 1, "%": 1 }, | |
| 1024 | - "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, | |
| 1025 | - "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, | |
| 1026 | - "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, | |
| 1027 | - "right": { "px": 1, "em": 1, "%": 1 }, | |
| 1028 | - "table-layout": { "fixed": 1, "auto": 1 }, | |
| 1029 | - "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, | |
| 1030 | - "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, | |
| 1031 | - "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, | |
| 1032 | - "top": { "px": 1, "em": 1, "%": 1 }, | |
| 1033 | - "vertical-align": { "top": 1, "bottom": 1 }, | |
| 1034 | - "visibility": { "hidden": 1, "visible": 1 }, | |
| 1035 | - "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, | |
| 1036 | - "width": { "px": 1, "em": 1, "%": 1 }, | |
| 1037 | - "word-spacing": { "normal": 1 }, | |
| 1038 | - "filter": { "alpha(opacity=$0100)": 1 }, | |
| 1039 | - "text-shadow": { "$02px 2px 2px #777": 1 }, | |
| 1040 | - "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, | |
| 1041 | - "-moz-border-radius": 1, | |
| 1042 | - "-moz-border-radius-topright": 1, | |
| 1043 | - "-moz-border-radius-bottomright": 1, | |
| 1044 | - "-moz-border-radius-topleft": 1, | |
| 1045 | - "-moz-border-radius-bottomleft": 1, | |
| 1046 | - "-webkit-border-radius": 1, | |
| 1047 | - "-webkit-border-top-right-radius": 1, | |
| 1048 | - "-webkit-border-top-left-radius": 1, | |
| 1049 | - "-webkit-border-bottom-right-radius": 1, | |
| 1050 | - "-webkit-border-bottom-left-radius": 1, | |
| 1051 | - "-moz-box-shadow": 1, | |
| 1052 | - "-webkit-box-shadow": 1, | |
| 1053 | - "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, | |
| 1054 | - "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, | |
| 1055 | - "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } | |
| 1056 | -}; | |
| 1057 | -var CssCompletions = function () { | |
| 1058 | -}; | |
| 1059 | -(function () { | |
| 1060 | - this.completionsDefined = false; | |
| 1061 | - this.defineCompletions = function () { | |
| 1062 | - if (document) { | |
| 1063 | - var style = document.createElement('c').style; | |
| 1064 | - for (var i in style) { | |
| 1065 | - if (typeof style[i] !== 'string') | |
| 1066 | - continue; | |
| 1067 | - var name = i.replace(/[A-Z]/g, function (x) { | |
| 1068 | - return '-' + x.toLowerCase(); | |
| 1069 | - }); | |
| 1070 | - if (!propertyMap.hasOwnProperty(name)) | |
| 1071 | - propertyMap[name] = 1; | |
| 1072 | - } | |
| 1073 | - } | |
| 1074 | - this.completionsDefined = true; | |
| 1075 | - }; | |
| 1076 | - this.getCompletions = function (state, session, pos, prefix) { | |
| 1077 | - if (!this.completionsDefined) { | |
| 1078 | - this.defineCompletions(); | |
| 1079 | - } | |
| 1080 | - if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { | |
| 1081 | - var line = session.getLine(pos.row).substr(0, pos.column); | |
| 1082 | - var inParens = /\([^)]*$/.test(line); | |
| 1083 | - if (inParens) { | |
| 1084 | - line = line.substr(line.lastIndexOf('(') + 1); | |
| 1085 | - } | |
| 1086 | - if (/:[^;]+$/.test(line)) { | |
| 1087 | - /([\w\-]+):[^:]*$/.test(line); | |
| 1088 | - return this.getPropertyValueCompletions(state, session, pos, prefix); | |
| 1089 | - } | |
| 1090 | - else { | |
| 1091 | - return this.getPropertyCompletions(state, session, pos, prefix, inParens); | |
| 1092 | - } | |
| 1093 | - } | |
| 1094 | - return []; | |
| 1095 | - }; | |
| 1096 | - this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { | |
| 1097 | - skipSemicolon = skipSemicolon || false; | |
| 1098 | - var properties = Object.keys(propertyMap); | |
| 1099 | - return properties.map(function (property) { | |
| 1100 | - return { | |
| 1101 | - caption: property, | |
| 1102 | - snippet: property + ': $0' + (skipSemicolon ? '' : ';'), | |
| 1103 | - meta: "property", | |
| 1104 | - score: 1000000 | |
| 1105 | - }; | |
| 1106 | - }); | |
| 1107 | - }; | |
| 1108 | - this.getPropertyValueCompletions = function (state, session, pos, prefix) { | |
| 1109 | - var line = session.getLine(pos.row).substr(0, pos.column); | |
| 1110 | - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; | |
| 1111 | - if (!property) | |
| 1112 | - return []; | |
| 1113 | - var values = []; | |
| 1114 | - if (property in propertyMap && typeof propertyMap[property] === "object") { | |
| 1115 | - values = Object.keys(propertyMap[property]); | |
| 1116 | - } | |
| 1117 | - return values.map(function (value) { | |
| 1118 | - return { | |
| 1119 | - caption: value, | |
| 1120 | - snippet: value, | |
| 1121 | - meta: "property value", | |
| 1122 | - score: 1000000 | |
| 1123 | - }; | |
| 1124 | - }); | |
| 1125 | - }; | |
| 1126 | -}).call(CssCompletions.prototype); | |
| 1127 | -exports.CssCompletions = CssCompletions; | |
| 1128 | - | |
| 1129 | -}); | |
| 1130 | - | |
| 1131 | -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; | |
| 1132 | -var oop = require("../../lib/oop"); | |
| 1133 | -var Behaviour = require("../behaviour").Behaviour; | |
| 1134 | -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; | |
| 1135 | -var TokenIterator = require("../../token_iterator").TokenIterator; | |
| 1136 | -var CssBehaviour = function () { | |
| 1137 | - this.inherit(CstyleBehaviour); | |
| 1138 | - this.add("colon", "insertion", function (state, action, editor, session, text) { | |
| 1139 | - if (text === ':' && editor.selection.isEmpty()) { | |
| 1140 | - var cursor = editor.getCursorPosition(); | |
| 1141 | - var iterator = new TokenIterator(session, cursor.row, cursor.column); | |
| 1142 | - var token = iterator.getCurrentToken(); | |
| 1143 | - if (token && token.value.match(/\s+/)) { | |
| 1144 | - token = iterator.stepBackward(); | |
| 1145 | - } | |
| 1146 | - if (token && token.type === 'support.type') { | |
| 1147 | - var line = session.doc.getLine(cursor.row); | |
| 1148 | - var rightChar = line.substring(cursor.column, cursor.column + 1); | |
| 1149 | - if (rightChar === ':') { | |
| 1150 | - return { | |
| 1151 | - text: '', | |
| 1152 | - selection: [1, 1] | |
| 1153 | - }; | |
| 1154 | - } | |
| 1155 | - if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { | |
| 1156 | - return { | |
| 1157 | - text: ':;', | |
| 1158 | - selection: [1, 1] | |
| 1159 | - }; | |
| 1160 | - } | |
| 1161 | - } | |
| 1162 | - } | |
| 1163 | - }); | |
| 1164 | - this.add("colon", "deletion", function (state, action, editor, session, range) { | |
| 1165 | - var selected = session.doc.getTextRange(range); | |
| 1166 | - if (!range.isMultiLine() && selected === ':') { | |
| 1167 | - var cursor = editor.getCursorPosition(); | |
| 1168 | - var iterator = new TokenIterator(session, cursor.row, cursor.column); | |
| 1169 | - var token = iterator.getCurrentToken(); | |
| 1170 | - if (token && token.value.match(/\s+/)) { | |
| 1171 | - token = iterator.stepBackward(); | |
| 1172 | - } | |
| 1173 | - if (token && token.type === 'support.type') { | |
| 1174 | - var line = session.doc.getLine(range.start.row); | |
| 1175 | - var rightChar = line.substring(range.end.column, range.end.column + 1); | |
| 1176 | - if (rightChar === ';') { | |
| 1177 | - range.end.column++; | |
| 1178 | - return range; | |
| 1179 | - } | |
| 1180 | - } | |
| 1181 | - } | |
| 1182 | - }); | |
| 1183 | - this.add("semicolon", "insertion", function (state, action, editor, session, text) { | |
| 1184 | - if (text === ';' && editor.selection.isEmpty()) { | |
| 1185 | - var cursor = editor.getCursorPosition(); | |
| 1186 | - var line = session.doc.getLine(cursor.row); | |
| 1187 | - var rightChar = line.substring(cursor.column, cursor.column + 1); | |
| 1188 | - if (rightChar === ';') { | |
| 1189 | - return { | |
| 1190 | - text: '', | |
| 1191 | - selection: [1, 1] | |
| 1192 | - }; | |
| 1193 | - } | |
| 1194 | - } | |
| 1195 | - }); | |
| 1196 | - this.add("!important", "insertion", function (state, action, editor, session, text) { | |
| 1197 | - if (text === '!' && editor.selection.isEmpty()) { | |
| 1198 | - var cursor = editor.getCursorPosition(); | |
| 1199 | - var line = session.doc.getLine(cursor.row); | |
| 1200 | - if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { | |
| 1201 | - return { | |
| 1202 | - text: '!important', | |
| 1203 | - selection: [10, 10] | |
| 1204 | - }; | |
| 1205 | - } | |
| 1206 | - } | |
| 1207 | - }); | |
| 1208 | -}; | |
| 1209 | -oop.inherits(CssBehaviour, CstyleBehaviour); | |
| 1210 | -exports.CssBehaviour = CssBehaviour; | |
| 1211 | - | |
| 1212 | -}); | |
| 1213 | - | |
| 1214 | -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; | |
| 1215 | -var oop = require("../lib/oop"); | |
| 1216 | -var TextMode = require("./text").Mode; | |
| 1217 | -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; | |
| 1218 | -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; | |
| 1219 | -var WorkerClient = require("../worker/worker_client").WorkerClient; | |
| 1220 | -var CssCompletions = require("./css_completions").CssCompletions; | |
| 1221 | -var CssBehaviour = require("./behaviour/css").CssBehaviour; | |
| 1222 | -var CStyleFoldMode = require("./folding/cstyle").FoldMode; | |
| 1223 | -var Mode = function () { | |
| 1224 | - this.HighlightRules = CssHighlightRules; | |
| 1225 | - this.$outdent = new MatchingBraceOutdent(); | |
| 1226 | - this.$behaviour = new CssBehaviour(); | |
| 1227 | - this.$completer = new CssCompletions(); | |
| 1228 | - this.foldingRules = new CStyleFoldMode(); | |
| 1229 | -}; | |
| 1230 | -oop.inherits(Mode, TextMode); | |
| 1231 | -(function () { | |
| 1232 | - this.foldingRules = "cStyle"; | |
| 1233 | - this.blockComment = { start: "/*", end: "*/" }; | |
| 1234 | - this.getNextLineIndent = function (state, line, tab) { | |
| 1235 | - var indent = this.$getIndent(line); | |
| 1236 | - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; | |
| 1237 | - if (tokens.length && tokens[tokens.length - 1].type == "comment") { | |
| 1238 | - return indent; | |
| 1239 | - } | |
| 1240 | - var match = line.match(/^.*\{\s*$/); | |
| 1241 | - if (match) { | |
| 1242 | - indent += tab; | |
| 1243 | - } | |
| 1244 | - return indent; | |
| 1245 | - }; | |
| 1246 | - this.checkOutdent = function (state, line, input) { | |
| 1247 | - return this.$outdent.checkOutdent(line, input); | |
| 1248 | - }; | |
| 1249 | - this.autoOutdent = function (state, doc, row) { | |
| 1250 | - this.$outdent.autoOutdent(doc, row); | |
| 1251 | - }; | |
| 1252 | - this.getCompletions = function (state, session, pos, prefix) { | |
| 1253 | - return this.$completer.getCompletions(state, session, pos, prefix); | |
| 1254 | - }; | |
| 1255 | - this.createWorker = function (session) { | |
| 1256 | - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); | |
| 1257 | - worker.attachToDocument(session.getDocument()); | |
| 1258 | - worker.on("annotate", function (e) { | |
| 1259 | - session.setAnnotations(e.data); | |
| 1260 | - }); | |
| 1261 | - worker.on("terminate", function () { | |
| 1262 | - session.clearAnnotations(); | |
| 1263 | - }); | |
| 1264 | - return worker; | |
| 1265 | - }; | |
| 1266 | - this.$id = "ace/mode/css"; | |
| 1267 | - this.snippetFileId = "ace/snippets/css"; | |
| 1268 | -}).call(Mode.prototype); | |
| 1269 | -exports.Mode = Mode; | |
| 1270 | - | |
| 1271 | -}); | |
| 1272 | - | |
| 1273 | -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; | |
| 1274 | -var oop = require("../lib/oop"); | |
| 1275 | -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; | |
| 1276 | -var XmlHighlightRules = function (normalize) { | |
| 1277 | - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; | |
| 1278 | - this.$rules = { | |
| 1279 | - start: [ | |
| 1280 | - { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, | |
| 1281 | - { | |
| 1282 | - token: ["punctuation.instruction.xml", "keyword.instruction.xml"], | |
| 1283 | - regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" | |
| 1284 | - }, | |
| 1285 | - { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, | |
| 1286 | - { | |
| 1287 | - token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], | |
| 1288 | - regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true | |
| 1289 | - }, | |
| 1290 | - { include: "tag" }, | |
| 1291 | - { token: "text.end-tag-open.xml", regex: "</" }, | |
| 1292 | - { token: "text.tag-open.xml", regex: "<" }, | |
| 1293 | - { include: "reference" }, | |
| 1294 | - { defaultToken: "text.xml" } | |
| 1295 | - ], | |
| 1296 | - processing_instruction: [{ | |
| 1297 | - token: "entity.other.attribute-name.decl-attribute-name.xml", | |
| 1298 | - regex: tagRegex | |
| 1299 | - }, { | |
| 1300 | - token: "keyword.operator.decl-attribute-equals.xml", | |
| 1301 | - regex: "=" | |
| 1302 | - }, { | |
| 1303 | - include: "whitespace" | |
| 1304 | - }, { | |
| 1305 | - include: "string" | |
| 1306 | - }, { | |
| 1307 | - token: "punctuation.xml-decl.xml", | |
| 1308 | - regex: "\\?>", | |
| 1309 | - next: "start" | |
| 1310 | - }], | |
| 1311 | - doctype: [ | |
| 1312 | - { include: "whitespace" }, | |
| 1313 | - { include: "string" }, | |
| 1314 | - { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, | |
| 1315 | - { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, | |
| 1316 | - { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } | |
| 1317 | - ], | |
| 1318 | - int_subset: [{ | |
| 1319 | - token: "text.xml", | |
| 1320 | - regex: "\\s+" | |
| 1321 | - }, { | |
| 1322 | - token: "punctuation.int-subset.xml", | |
| 1323 | - regex: "]", | |
| 1324 | - next: "pop" | |
| 1325 | - }, { | |
| 1326 | - token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], | |
| 1327 | - regex: "(<\\!)(" + tagRegex + ")", | |
| 1328 | - push: [{ | |
| 1329 | - token: "text", | |
| 1330 | - regex: "\\s+" | |
| 1331 | - }, | |
| 1332 | - { | |
| 1333 | - token: "punctuation.markup-decl.xml", | |
| 1334 | - regex: ">", | |
| 1335 | - next: "pop" | |
| 1336 | - }, | |
| 1337 | - { include: "string" }] | |
| 1338 | - }], | |
| 1339 | - cdata: [ | |
| 1340 | - { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, | |
| 1341 | - { token: "text.xml", regex: "\\s+" }, | |
| 1342 | - { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } | |
| 1343 | - ], | |
| 1344 | - comment: [ | |
| 1345 | - { token: "comment.end.xml", regex: "-->", next: "start" }, | |
| 1346 | - { defaultToken: "comment.xml" } | |
| 1347 | - ], | |
| 1348 | - reference: [{ | |
| 1349 | - token: "constant.language.escape.reference.xml", | |
| 1350 | - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" | |
| 1351 | - }], | |
| 1352 | - attr_reference: [{ | |
| 1353 | - token: "constant.language.escape.reference.attribute-value.xml", | |
| 1354 | - regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" | |
| 1355 | - }], | |
| 1356 | - tag: [{ | |
| 1357 | - token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], | |
| 1358 | - regex: "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")", | |
| 1359 | - next: [ | |
| 1360 | - { include: "attributes" }, | |
| 1361 | - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } | |
| 1362 | - ] | |
| 1363 | - }], | |
| 1364 | - tag_whitespace: [ | |
| 1365 | - { token: "text.tag-whitespace.xml", regex: "\\s+" } | |
| 1366 | - ], | |
| 1367 | - whitespace: [ | |
| 1368 | - { token: "text.whitespace.xml", regex: "\\s+" } | |
| 1369 | - ], | |
| 1370 | - string: [{ | |
| 1371 | - token: "string.xml", | |
| 1372 | - regex: "'", | |
| 1373 | - push: [ | |
| 1374 | - { token: "string.xml", regex: "'", next: "pop" }, | |
| 1375 | - { defaultToken: "string.xml" } | |
| 1376 | - ] | |
| 1377 | - }, { | |
| 1378 | - token: "string.xml", | |
| 1379 | - regex: '"', | |
| 1380 | - push: [ | |
| 1381 | - { token: "string.xml", regex: '"', next: "pop" }, | |
| 1382 | - { defaultToken: "string.xml" } | |
| 1383 | - ] | |
| 1384 | - }], | |
| 1385 | - attributes: [{ | |
| 1386 | - token: "entity.other.attribute-name.xml", | |
| 1387 | - regex: tagRegex | |
| 1388 | - }, { | |
| 1389 | - token: "keyword.operator.attribute-equals.xml", | |
| 1390 | - regex: "=" | |
| 1391 | - }, { | |
| 1392 | - include: "tag_whitespace" | |
| 1393 | - }, { | |
| 1394 | - include: "attribute_value" | |
| 1395 | - }], | |
| 1396 | - attribute_value: [{ | |
| 1397 | - token: "string.attribute-value.xml", | |
| 1398 | - regex: "'", | |
| 1399 | - push: [ | |
| 1400 | - { token: "string.attribute-value.xml", regex: "'", next: "pop" }, | |
| 1401 | - { include: "attr_reference" }, | |
| 1402 | - { defaultToken: "string.attribute-value.xml" } | |
| 1403 | - ] | |
| 1404 | - }, { | |
| 1405 | - token: "string.attribute-value.xml", | |
| 1406 | - regex: '"', | |
| 1407 | - push: [ | |
| 1408 | - { token: "string.attribute-value.xml", regex: '"', next: "pop" }, | |
| 1409 | - { include: "attr_reference" }, | |
| 1410 | - { defaultToken: "string.attribute-value.xml" } | |
| 1411 | - ] | |
| 1412 | - }] | |
| 1413 | - }; | |
| 1414 | - if (this.constructor === XmlHighlightRules) | |
| 1415 | - this.normalizeRules(); | |
| 1416 | -}; | |
| 1417 | -(function () { | |
| 1418 | - this.embedTagRules = function (HighlightRules, prefix, tag) { | |
| 1419 | - this.$rules.tag.unshift({ | |
| 1420 | - token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], | |
| 1421 | - regex: "(<)(" + tag + "(?=\\s|>|$))", | |
| 1422 | - next: [ | |
| 1423 | - { include: "attributes" }, | |
| 1424 | - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } | |
| 1425 | - ] | |
| 1426 | - }); | |
| 1427 | - this.$rules[tag + "-end"] = [ | |
| 1428 | - { include: "attributes" }, | |
| 1429 | - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", | |
| 1430 | - onMatch: function (value, currentState, stack) { | |
| 1431 | - stack.splice(0); | |
| 1432 | - return this.token; | |
| 1433 | - } } | |
| 1434 | - ]; | |
| 1435 | - this.embedRules(HighlightRules, prefix, [{ | |
| 1436 | - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], | |
| 1437 | - regex: "(</)(" + tag + "(?=\\s|>|$))", | |
| 1438 | - next: tag + "-end" | |
| 1439 | - }, { | |
| 1440 | - token: "string.cdata.xml", | |
| 1441 | - regex: "<\\!\\[CDATA\\[" | |
| 1442 | - }, { | |
| 1443 | - token: "string.cdata.xml", | |
| 1444 | - regex: "\\]\\]>" | |
| 1445 | - }]); | |
| 1446 | - }; | |
| 1447 | -}).call(TextHighlightRules.prototype); | |
| 1448 | -oop.inherits(XmlHighlightRules, TextHighlightRules); | |
| 1449 | -exports.XmlHighlightRules = XmlHighlightRules; | |
| 1450 | - | |
| 1451 | -}); | |
| 1452 | - | |
| 1453 | -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; | |
| 1454 | -var oop = require("../lib/oop"); | |
| 1455 | -var lang = require("../lib/lang"); | |
| 1456 | -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; | |
| 1457 | -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; | |
| 1458 | -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; | |
| 1459 | -var tagMap = lang.createMap({ | |
| 1460 | - a: 'anchor', | |
| 1461 | - button: 'form', | |
| 1462 | - form: 'form', | |
| 1463 | - img: 'image', | |
| 1464 | - input: 'form', | |
| 1465 | - label: 'form', | |
| 1466 | - option: 'form', | |
| 1467 | - script: 'script', | |
| 1468 | - select: 'form', | |
| 1469 | - textarea: 'form', | |
| 1470 | - style: 'style', | |
| 1471 | - table: 'table', | |
| 1472 | - tbody: 'table', | |
| 1473 | - td: 'table', | |
| 1474 | - tfoot: 'table', | |
| 1475 | - th: 'table', | |
| 1476 | - tr: 'table' | |
| 1477 | -}); | |
| 1478 | -var HtmlHighlightRules = function () { | |
| 1479 | - XmlHighlightRules.call(this); | |
| 1480 | - this.addRules({ | |
| 1481 | - attributes: [{ | |
| 1482 | - include: "tag_whitespace" | |
| 1483 | - }, { | |
| 1484 | - token: "entity.other.attribute-name.xml", | |
| 1485 | - regex: "[-_a-zA-Z0-9:.]+" | |
| 1486 | - }, { | |
| 1487 | - token: "keyword.operator.attribute-equals.xml", | |
| 1488 | - regex: "=", | |
| 1489 | - push: [{ | |
| 1490 | - include: "tag_whitespace" | |
| 1491 | - }, { | |
| 1492 | - token: "string.unquoted.attribute-value.html", | |
| 1493 | - regex: "[^<>='\"`\\s]+", | |
| 1494 | - next: "pop" | |
| 1495 | - }, { | |
| 1496 | - token: "empty", | |
| 1497 | - regex: "", | |
| 1498 | - next: "pop" | |
| 1499 | - }] | |
| 1500 | - }, { | |
| 1501 | - include: "attribute_value" | |
| 1502 | - }], | |
| 1503 | - tag: [{ | |
| 1504 | - token: function (start, tag) { | |
| 1505 | - var group = tagMap[tag]; | |
| 1506 | - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", | |
| 1507 | - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; | |
| 1508 | - }, | |
| 1509 | - regex: "(</?)([-_a-zA-Z0-9:.]+)", | |
| 1510 | - next: "tag_stuff" | |
| 1511 | - }], | |
| 1512 | - tag_stuff: [ | |
| 1513 | - { include: "attributes" }, | |
| 1514 | - { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } | |
| 1515 | - ] | |
| 1516 | - }); | |
| 1517 | - this.embedTagRules(CssHighlightRules, "css-", "style"); | |
| 1518 | - this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); | |
| 1519 | - if (this.constructor === HtmlHighlightRules) | |
| 1520 | - this.normalizeRules(); | |
| 1521 | -}; | |
| 1522 | -oop.inherits(HtmlHighlightRules, XmlHighlightRules); | |
| 1523 | -exports.HtmlHighlightRules = HtmlHighlightRules; | |
| 1524 | - | |
| 1525 | -}); | |
| 1526 | - | |
| 1527 | -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; | |
| 1528 | -var oop = require("../../lib/oop"); | |
| 1529 | -var Behaviour = require("../behaviour").Behaviour; | |
| 1530 | -var TokenIterator = require("../../token_iterator").TokenIterator; | |
| 1531 | -var lang = require("../../lib/lang"); | |
| 1532 | -function is(token, type) { | |
| 1533 | - return token && token.type.lastIndexOf(type + ".xml") > -1; | |
| 1534 | -} | |
| 1535 | -var XmlBehaviour = function () { | |
| 1536 | - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { | |
| 1537 | - if (text == '"' || text == "'") { | |
| 1538 | - var quote = text; | |
| 1539 | - var selected = session.doc.getTextRange(editor.getSelectionRange()); | |
| 1540 | - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { | |
| 1541 | - return { | |
| 1542 | - text: quote + selected + quote, | |
| 1543 | - selection: false | |
| 1544 | - }; | |
| 1545 | - } | |
| 1546 | - var cursor = editor.getCursorPosition(); | |
| 1547 | - var line = session.doc.getLine(cursor.row); | |
| 1548 | - var rightChar = line.substring(cursor.column, cursor.column + 1); | |
| 1549 | - var iterator = new TokenIterator(session, cursor.row, cursor.column); | |
| 1550 | - var token = iterator.getCurrentToken(); | |
| 1551 | - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { | |
| 1552 | - return { | |
| 1553 | - text: "", | |
| 1554 | - selection: [1, 1] | |
| 1555 | - }; | |
| 1556 | - } | |
| 1557 | - if (!token) | |
| 1558 | - token = iterator.stepBackward(); | |
| 1559 | - if (!token) | |
| 1560 | - return; | |
| 1561 | - while (is(token, "tag-whitespace") || is(token, "whitespace")) { | |
| 1562 | - token = iterator.stepBackward(); | |
| 1563 | - } | |
| 1564 | - var rightSpace = !rightChar || rightChar.match(/\s/); | |
| 1565 | - if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { | |
| 1566 | - return { | |
| 1567 | - text: quote + quote, | |
| 1568 | - selection: [1, 1] | |
| 1569 | - }; | |
| 1570 | - } | |
| 1571 | - } | |
| 1572 | - }); | |
| 1573 | - this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { | |
| 1574 | - var selected = session.doc.getTextRange(range); | |
| 1575 | - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { | |
| 1576 | - var line = session.doc.getLine(range.start.row); | |
| 1577 | - var rightChar = line.substring(range.start.column + 1, range.start.column + 2); | |
| 1578 | - if (rightChar == selected) { | |
| 1579 | - range.end.column++; | |
| 1580 | - return range; | |
| 1581 | - } | |
| 1582 | - } | |
| 1583 | - }); | |
| 1584 | - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { | |
| 1585 | - if (text == '>') { | |
| 1586 | - var position = editor.getSelectionRange().start; | |
| 1587 | - var iterator = new TokenIterator(session, position.row, position.column); | |
| 1588 | - var token = iterator.getCurrentToken() || iterator.stepBackward(); | |
| 1589 | - if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) | |
| 1590 | - return; | |
| 1591 | - if (is(token, "reference.attribute-value")) | |
| 1592 | - return; | |
| 1593 | - if (is(token, "attribute-value")) { | |
| 1594 | - var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; | |
| 1595 | - if (position.column < tokenEndColumn) | |
| 1596 | - return; | |
| 1597 | - if (position.column == tokenEndColumn) { | |
| 1598 | - var nextToken = iterator.stepForward(); | |
| 1599 | - if (nextToken && is(nextToken, "attribute-value")) | |
| 1600 | - return; | |
| 1601 | - iterator.stepBackward(); | |
| 1602 | - } | |
| 1603 | - } | |
| 1604 | - if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) | |
| 1605 | - return; | |
| 1606 | - while (!is(token, "tag-name")) { | |
| 1607 | - token = iterator.stepBackward(); | |
| 1608 | - if (token.value == "<") { | |
| 1609 | - token = iterator.stepForward(); | |
| 1610 | - break; | |
| 1611 | - } | |
| 1612 | - } | |
| 1613 | - var tokenRow = iterator.getCurrentTokenRow(); | |
| 1614 | - var tokenColumn = iterator.getCurrentTokenColumn(); | |
| 1615 | - if (is(iterator.stepBackward(), "end-tag-open")) | |
| 1616 | - return; | |
| 1617 | - var element = token.value; | |
| 1618 | - if (tokenRow == position.row) | |
| 1619 | - element = element.substring(0, position.column - tokenColumn); | |
| 1620 | - if (this.voidElements.hasOwnProperty(element.toLowerCase())) | |
| 1621 | - return; | |
| 1622 | - return { | |
| 1623 | - text: ">" + "</" + element + ">", | |
| 1624 | - selection: [1, 1] | |
| 1625 | - }; | |
| 1626 | - } | |
| 1627 | - }); | |
| 1628 | - this.add("autoindent", "insertion", function (state, action, editor, session, text) { | |
| 1629 | - if (text == "\n") { | |
| 1630 | - var cursor = editor.getCursorPosition(); | |
| 1631 | - var line = session.getLine(cursor.row); | |
| 1632 | - var iterator = new TokenIterator(session, cursor.row, cursor.column); | |
| 1633 | - var token = iterator.getCurrentToken(); | |
| 1634 | - if (token && token.type.indexOf("tag-close") !== -1) { | |
| 1635 | - if (token.value == "/>") | |
| 1636 | - return; | |
| 1637 | - while (token && token.type.indexOf("tag-name") === -1) { | |
| 1638 | - token = iterator.stepBackward(); | |
| 1639 | - } | |
| 1640 | - if (!token) { | |
| 1641 | - return; | |
| 1642 | - } | |
| 1643 | - var tag = token.value; | |
| 1644 | - var row = iterator.getCurrentTokenRow(); | |
| 1645 | - token = iterator.stepBackward(); | |
| 1646 | - if (!token || token.type.indexOf("end-tag") !== -1) { | |
| 1647 | - return; | |
| 1648 | - } | |
| 1649 | - if (this.voidElements && !this.voidElements[tag]) { | |
| 1650 | - var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); | |
| 1651 | - var line = session.getLine(row); | |
| 1652 | - var nextIndent = this.$getIndent(line); | |
| 1653 | - var indent = nextIndent + session.getTabString(); | |
| 1654 | - if (nextToken && nextToken.value === "</") { | |
| 1655 | - return { | |
| 1656 | - text: "\n" + indent + "\n" + nextIndent, | |
| 1657 | - selection: [1, indent.length, 1, indent.length] | |
| 1658 | - }; | |
| 1659 | - } | |
| 1660 | - else { | |
| 1661 | - return { | |
| 1662 | - text: "\n" + indent | |
| 1663 | - }; | |
| 1664 | - } | |
| 1665 | - } | |
| 1666 | - } | |
| 1667 | - } | |
| 1668 | - }); | |
| 1669 | -}; | |
| 1670 | -oop.inherits(XmlBehaviour, Behaviour); | |
| 1671 | -exports.XmlBehaviour = XmlBehaviour; | |
| 1672 | - | |
| 1673 | -}); | |
| 1674 | - | |
| 1675 | -define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; | |
| 1676 | -var oop = require("../../lib/oop"); | |
| 1677 | -var BaseFoldMode = require("./fold_mode").FoldMode; | |
| 1678 | -var FoldMode = exports.FoldMode = function (defaultMode, subModes) { | |
| 1679 | - this.defaultMode = defaultMode; | |
| 1680 | - this.subModes = subModes; | |
| 1681 | -}; | |
| 1682 | -oop.inherits(FoldMode, BaseFoldMode); | |
| 1683 | -(function () { | |
| 1684 | - this.$getMode = function (state) { | |
| 1685 | - if (typeof state != "string") | |
| 1686 | - state = state[0]; | |
| 1687 | - for (var key in this.subModes) { | |
| 1688 | - if (state.indexOf(key) === 0) | |
| 1689 | - return this.subModes[key]; | |
| 1690 | - } | |
| 1691 | - return null; | |
| 1692 | - }; | |
| 1693 | - this.$tryMode = function (state, session, foldStyle, row) { | |
| 1694 | - var mode = this.$getMode(state); | |
| 1695 | - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); | |
| 1696 | - }; | |
| 1697 | - this.getFoldWidget = function (session, foldStyle, row) { | |
| 1698 | - return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) || | |
| 1699 | - this.$tryMode(session.getState(row), session, foldStyle, row) || | |
| 1700 | - this.defaultMode.getFoldWidget(session, foldStyle, row)); | |
| 1701 | - }; | |
| 1702 | - this.getFoldWidgetRange = function (session, foldStyle, row) { | |
| 1703 | - var mode = this.$getMode(session.getState(row - 1)); | |
| 1704 | - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) | |
| 1705 | - mode = this.$getMode(session.getState(row)); | |
| 1706 | - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) | |
| 1707 | - mode = this.defaultMode; | |
| 1708 | - return mode.getFoldWidgetRange(session, foldStyle, row); | |
| 1709 | - }; | |
| 1710 | -}).call(FoldMode.prototype); | |
| 1711 | - | |
| 1712 | -}); | |
| 1713 | - | |
| 1714 | -define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; | |
| 1715 | -var oop = require("../../lib/oop"); | |
| 1716 | -var Range = require("../../range").Range; | |
| 1717 | -var BaseFoldMode = require("./fold_mode").FoldMode; | |
| 1718 | -var FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) { | |
| 1719 | - BaseFoldMode.call(this); | |
| 1720 | - this.voidElements = voidElements || {}; | |
| 1721 | - this.optionalEndTags = oop.mixin({}, this.voidElements); | |
| 1722 | - if (optionalEndTags) | |
| 1723 | - oop.mixin(this.optionalEndTags, optionalEndTags); | |
| 1724 | -}; | |
| 1725 | -oop.inherits(FoldMode, BaseFoldMode); | |
| 1726 | -var Tag = function () { | |
| 1727 | - this.tagName = ""; | |
| 1728 | - this.closing = false; | |
| 1729 | - this.selfClosing = false; | |
| 1730 | - this.start = { row: 0, column: 0 }; | |
| 1731 | - this.end = { row: 0, column: 0 }; | |
| 1732 | -}; | |
| 1733 | -function is(token, type) { | |
| 1734 | - return token.type.lastIndexOf(type + ".xml") > -1; | |
| 1735 | -} | |
| 1736 | -(function () { | |
| 1737 | - this.getFoldWidget = function (session, foldStyle, row) { | |
| 1738 | - var tag = this._getFirstTagInLine(session, row); | |
| 1739 | - if (!tag) | |
| 1740 | - return this.getCommentFoldWidget(session, row); | |
| 1741 | - if (tag.closing || (!tag.tagName && tag.selfClosing)) | |
| 1742 | - return foldStyle === "markbeginend" ? "end" : ""; | |
| 1743 | - if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) | |
| 1744 | - return ""; | |
| 1745 | - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) | |
| 1746 | - return ""; | |
| 1747 | - return "start"; | |
| 1748 | - }; | |
| 1749 | - this.getCommentFoldWidget = function (session, row) { | |
| 1750 | - if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) | |
| 1751 | - return "start"; | |
| 1752 | - return ""; | |
| 1753 | - }; | |
| 1754 | - this._getFirstTagInLine = function (session, row) { | |
| 1755 | - var tokens = session.getTokens(row); | |
| 1756 | - var tag = new Tag(); | |
| 1757 | - for (var i = 0; i < tokens.length; i++) { | |
| 1758 | - var token = tokens[i]; | |
| 1759 | - if (is(token, "tag-open")) { | |
| 1760 | - tag.end.column = tag.start.column + token.value.length; | |
| 1761 | - tag.closing = is(token, "end-tag-open"); | |
| 1762 | - token = tokens[++i]; | |
| 1763 | - if (!token) | |
| 1764 | - return null; | |
| 1765 | - tag.tagName = token.value; | |
| 1766 | - tag.end.column += token.value.length; | |
| 1767 | - for (i++; i < tokens.length; i++) { | |
| 1768 | - token = tokens[i]; | |
| 1769 | - tag.end.column += token.value.length; | |
| 1770 | - if (is(token, "tag-close")) { | |
| 1771 | - tag.selfClosing = token.value == '/>'; | |
| 1772 | - break; | |
| 1773 | - } | |
| 1774 | - } | |
| 1775 | - return tag; | |
| 1776 | - } | |
| 1777 | - else if (is(token, "tag-close")) { | |
| 1778 | - tag.selfClosing = token.value == '/>'; | |
| 1779 | - return tag; | |
| 1780 | - } | |
| 1781 | - tag.start.column += token.value.length; | |
| 1782 | - } | |
| 1783 | - return null; | |
| 1784 | - }; | |
| 1785 | - this._findEndTagInLine = function (session, row, tagName, startColumn) { | |
| 1786 | - var tokens = session.getTokens(row); | |
| 1787 | - var column = 0; | |
| 1788 | - for (var i = 0; i < tokens.length; i++) { | |
| 1789 | - var token = tokens[i]; | |
| 1790 | - column += token.value.length; | |
| 1791 | - if (column < startColumn) | |
| 1792 | - continue; | |
| 1793 | - if (is(token, "end-tag-open")) { | |
| 1794 | - token = tokens[i + 1]; | |
| 1795 | - if (token && token.value == tagName) | |
| 1796 | - return true; | |
| 1797 | - } | |
| 1798 | - } | |
| 1799 | - return false; | |
| 1800 | - }; | |
| 1801 | - this.getFoldWidgetRange = function (session, foldStyle, row) { | |
| 1802 | - var tags = session.getMatchingTags({ row: row, column: 0 }); | |
| 1803 | - if (tags) { | |
| 1804 | - return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); | |
| 1805 | - } | |
| 1806 | - else { | |
| 1807 | - return this.getCommentFoldWidget(session, row) | |
| 1808 | - && session.getCommentFoldRange(row, session.getLine(row).length); | |
| 1809 | - } | |
| 1810 | - }; | |
| 1811 | -}).call(FoldMode.prototype); | |
| 1812 | - | |
| 1813 | -}); | |
| 1814 | - | |
| 1815 | -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; | |
| 1816 | -var oop = require("../../lib/oop"); | |
| 1817 | -var MixedFoldMode = require("./mixed").FoldMode; | |
| 1818 | -var XmlFoldMode = require("./xml").FoldMode; | |
| 1819 | -var CStyleFoldMode = require("./cstyle").FoldMode; | |
| 1820 | -var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { | |
| 1821 | - MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { | |
| 1822 | - "js-": new CStyleFoldMode(), | |
| 1823 | - "css-": new CStyleFoldMode() | |
| 1824 | - }); | |
| 1825 | -}; | |
| 1826 | -oop.inherits(FoldMode, MixedFoldMode); | |
| 1827 | - | |
| 1828 | -}); | |
| 1829 | - | |
| 1830 | -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; | |
| 1831 | -var TokenIterator = require("../token_iterator").TokenIterator; | |
| 1832 | -var commonAttributes = [ | |
| 1833 | - "accesskey", | |
| 1834 | - "class", | |
| 1835 | - "contenteditable", | |
| 1836 | - "contextmenu", | |
| 1837 | - "dir", | |
| 1838 | - "draggable", | |
| 1839 | - "dropzone", | |
| 1840 | - "hidden", | |
| 1841 | - "id", | |
| 1842 | - "inert", | |
| 1843 | - "itemid", | |
| 1844 | - "itemprop", | |
| 1845 | - "itemref", | |
| 1846 | - "itemscope", | |
| 1847 | - "itemtype", | |
| 1848 | - "lang", | |
| 1849 | - "spellcheck", | |
| 1850 | - "style", | |
| 1851 | - "tabindex", | |
| 1852 | - "title", | |
| 1853 | - "translate" | |
| 1854 | -]; | |
| 1855 | -var eventAttributes = [ | |
| 1856 | - "onabort", | |
| 1857 | - "onblur", | |
| 1858 | - "oncancel", | |
| 1859 | - "oncanplay", | |
| 1860 | - "oncanplaythrough", | |
| 1861 | - "onchange", | |
| 1862 | - "onclick", | |
| 1863 | - "onclose", | |
| 1864 | - "oncontextmenu", | |
| 1865 | - "oncuechange", | |
| 1866 | - "ondblclick", | |
| 1867 | - "ondrag", | |
| 1868 | - "ondragend", | |
| 1869 | - "ondragenter", | |
| 1870 | - "ondragleave", | |
| 1871 | - "ondragover", | |
| 1872 | - "ondragstart", | |
| 1873 | - "ondrop", | |
| 1874 | - "ondurationchange", | |
| 1875 | - "onemptied", | |
| 1876 | - "onended", | |
| 1877 | - "onerror", | |
| 1878 | - "onfocus", | |
| 1879 | - "oninput", | |
| 1880 | - "oninvalid", | |
| 1881 | - "onkeydown", | |
| 1882 | - "onkeypress", | |
| 1883 | - "onkeyup", | |
| 1884 | - "onload", | |
| 1885 | - "onloadeddata", | |
| 1886 | - "onloadedmetadata", | |
| 1887 | - "onloadstart", | |
| 1888 | - "onmousedown", | |
| 1889 | - "onmousemove", | |
| 1890 | - "onmouseout", | |
| 1891 | - "onmouseover", | |
| 1892 | - "onmouseup", | |
| 1893 | - "onmousewheel", | |
| 1894 | - "onpause", | |
| 1895 | - "onplay", | |
| 1896 | - "onplaying", | |
| 1897 | - "onprogress", | |
| 1898 | - "onratechange", | |
| 1899 | - "onreset", | |
| 1900 | - "onscroll", | |
| 1901 | - "onseeked", | |
| 1902 | - "onseeking", | |
| 1903 | - "onselect", | |
| 1904 | - "onshow", | |
| 1905 | - "onstalled", | |
| 1906 | - "onsubmit", | |
| 1907 | - "onsuspend", | |
| 1908 | - "ontimeupdate", | |
| 1909 | - "onvolumechange", | |
| 1910 | - "onwaiting" | |
| 1911 | -]; | |
| 1912 | -var globalAttributes = commonAttributes.concat(eventAttributes); | |
| 1913 | -var attributeMap = { | |
| 1914 | - "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, | |
| 1915 | - "abbr": {}, | |
| 1916 | - "address": {}, | |
| 1917 | - "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, | |
| 1918 | - "article": { "pubdate": 1 }, | |
| 1919 | - "aside": {}, | |
| 1920 | - "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, | |
| 1921 | - "b": {}, | |
| 1922 | - "base": { "href": 1, "target": 1 }, | |
| 1923 | - "bdi": {}, | |
| 1924 | - "bdo": {}, | |
| 1925 | - "blockquote": { "cite": 1 }, | |
| 1926 | - "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, | |
| 1927 | - "br": {}, | |
| 1928 | - "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, | |
| 1929 | - "canvas": { "width": 1, "height": 1 }, | |
| 1930 | - "caption": {}, | |
| 1931 | - "cite": {}, | |
| 1932 | - "code": {}, | |
| 1933 | - "col": { "span": 1 }, | |
| 1934 | - "colgroup": { "span": 1 }, | |
| 1935 | - "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, | |
| 1936 | - "data": {}, | |
| 1937 | - "datalist": {}, | |
| 1938 | - "dd": {}, | |
| 1939 | - "del": { "cite": 1, "datetime": 1 }, | |
| 1940 | - "details": { "open": 1 }, | |
| 1941 | - "dfn": {}, | |
| 1942 | - "dialog": { "open": 1 }, | |
| 1943 | - "div": {}, | |
| 1944 | - "dl": {}, | |
| 1945 | - "dt": {}, | |
| 1946 | - "em": {}, | |
| 1947 | - "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, | |
| 1948 | - "fieldset": { "disabled": 1, "form": 1, "name": 1 }, | |
| 1949 | - "figcaption": {}, | |
| 1950 | - "figure": {}, | |
| 1951 | - "footer": {}, | |
| 1952 | - "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, | |
| 1953 | - "h1": {}, | |
| 1954 | - "h2": {}, | |
| 1955 | - "h3": {}, | |
| 1956 | - "h4": {}, | |
| 1957 | - "h5": {}, | |
| 1958 | - "h6": {}, | |
| 1959 | - "head": {}, | |
| 1960 | - "header": {}, | |
| 1961 | - "hr": {}, | |
| 1962 | - "html": { "manifest": 1 }, | |
| 1963 | - "i": {}, | |
| 1964 | - "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, | |
| 1965 | - "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, | |
| 1966 | - "input": { | |
| 1967 | - "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, | |
| 1968 | - "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 | |
| 1969 | - }, | |
| 1970 | - "ins": { "cite": 1, "datetime": 1 }, | |
| 1971 | - "kbd": {}, | |
| 1972 | - "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, | |
| 1973 | - "label": { "form": 1, "for": 1 }, | |
| 1974 | - "legend": {}, | |
| 1975 | - "li": { "value": 1 }, | |
| 1976 | - "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, | |
| 1977 | - "main": {}, | |
| 1978 | - "map": { "name": 1 }, | |
| 1979 | - "mark": {}, | |
| 1980 | - "math": {}, | |
| 1981 | - "menu": { "type": 1, "label": 1 }, | |
| 1982 | - "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, | |
| 1983 | - "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, | |
| 1984 | - "nav": {}, | |
| 1985 | - "noscript": { "href": 1 }, | |
| 1986 | - "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, | |
| 1987 | - "ol": { "start": 1, "reversed": 1 }, | |
| 1988 | - "optgroup": { "disabled": 1, "label": 1 }, | |
| 1989 | - "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, | |
| 1990 | - "output": { "for": 1, "form": 1, "name": 1 }, | |
| 1991 | - "p": {}, | |
| 1992 | - "param": { "name": 1, "value": 1 }, | |
| 1993 | - "pre": {}, | |
| 1994 | - "progress": { "value": 1, "max": 1 }, | |
| 1995 | - "q": { "cite": 1 }, | |
| 1996 | - "rp": {}, | |
| 1997 | - "rt": {}, | |
| 1998 | - "ruby": {}, | |
| 1999 | - "s": {}, | |
| 2000 | - "samp": {}, | |
| 2001 | - "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, | |
| 2002 | - "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, | |
| 2003 | - "small": {}, | |
| 2004 | - "source": { "src": 1, "type": 1, "media": 1 }, | |
| 2005 | - "span": {}, | |
| 2006 | - "strong": {}, | |
| 2007 | - "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, | |
| 2008 | - "sub": {}, | |
| 2009 | - "sup": {}, | |
| 2010 | - "svg": {}, | |
| 2011 | - "table": { "summary": 1 }, | |
| 2012 | - "tbody": {}, | |
| 2013 | - "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, | |
| 2014 | - "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, | |
| 2015 | - "tfoot": {}, | |
| 2016 | - "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, | |
| 2017 | - "thead": {}, | |
| 2018 | - "time": { "datetime": 1 }, | |
| 2019 | - "title": {}, | |
| 2020 | - "tr": {}, | |
| 2021 | - "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, | |
| 2022 | - "section": {}, | |
| 2023 | - "summary": {}, | |
| 2024 | - "u": {}, | |
| 2025 | - "ul": {}, | |
| 2026 | - "var": {}, | |
| 2027 | - "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, | |
| 2028 | - "wbr": {} | |
| 2029 | -}; | |
| 2030 | -var elements = Object.keys(attributeMap); | |
| 2031 | -function is(token, type) { | |
| 2032 | - return token.type.lastIndexOf(type + ".xml") > -1; | |
| 2033 | -} | |
| 2034 | -function findTagName(session, pos) { | |
| 2035 | - var iterator = new TokenIterator(session, pos.row, pos.column); | |
| 2036 | - var token = iterator.getCurrentToken(); | |
| 2037 | - while (token && !is(token, "tag-name")) { | |
| 2038 | - token = iterator.stepBackward(); | |
| 2039 | - } | |
| 2040 | - if (token) | |
| 2041 | - return token.value; | |
| 2042 | -} | |
| 2043 | -function findAttributeName(session, pos) { | |
| 2044 | - var iterator = new TokenIterator(session, pos.row, pos.column); | |
| 2045 | - var token = iterator.getCurrentToken(); | |
| 2046 | - while (token && !is(token, "attribute-name")) { | |
| 2047 | - token = iterator.stepBackward(); | |
| 2048 | - } | |
| 2049 | - if (token) | |
| 2050 | - return token.value; | |
| 2051 | -} | |
| 2052 | -var HtmlCompletions = function () { | |
| 2053 | -}; | |
| 2054 | -(function () { | |
| 2055 | - this.getCompletions = function (state, session, pos, prefix) { | |
| 2056 | - var token = session.getTokenAt(pos.row, pos.column); | |
| 2057 | - if (!token) | |
| 2058 | - return []; | |
| 2059 | - if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) | |
| 2060 | - return this.getTagCompletions(state, session, pos, prefix); | |
| 2061 | - if (is(token, "tag-whitespace") || is(token, "attribute-name")) | |
| 2062 | - return this.getAttributeCompletions(state, session, pos, prefix); | |
| 2063 | - if (is(token, "attribute-value")) | |
| 2064 | - return this.getAttributeValueCompletions(state, session, pos, prefix); | |
| 2065 | - var line = session.getLine(pos.row).substr(0, pos.column); | |
| 2066 | - if (/&[a-z]*$/i.test(line)) | |
| 2067 | - return this.getHTMLEntityCompletions(state, session, pos, prefix); | |
| 2068 | - return []; | |
| 2069 | - }; | |
| 2070 | - this.getTagCompletions = function (state, session, pos, prefix) { | |
| 2071 | - return elements.map(function (element) { | |
| 2072 | - return { | |
| 2073 | - value: element, | |
| 2074 | - meta: "tag", | |
| 2075 | - score: 1000000 | |
| 2076 | - }; | |
| 2077 | - }); | |
| 2078 | - }; | |
| 2079 | - this.getAttributeCompletions = function (state, session, pos, prefix) { | |
| 2080 | - var tagName = findTagName(session, pos); | |
| 2081 | - if (!tagName) | |
| 2082 | - return []; | |
| 2083 | - var attributes = globalAttributes; | |
| 2084 | - if (tagName in attributeMap) { | |
| 2085 | - attributes = attributes.concat(Object.keys(attributeMap[tagName])); | |
| 2086 | - } | |
| 2087 | - return attributes.map(function (attribute) { | |
| 2088 | - return { | |
| 2089 | - caption: attribute, | |
| 2090 | - snippet: attribute + '="$0"', | |
| 2091 | - meta: "attribute", | |
| 2092 | - score: 1000000 | |
| 2093 | - }; | |
| 2094 | - }); | |
| 2095 | - }; | |
| 2096 | - this.getAttributeValueCompletions = function (state, session, pos, prefix) { | |
| 2097 | - var tagName = findTagName(session, pos); | |
| 2098 | - var attributeName = findAttributeName(session, pos); | |
| 2099 | - if (!tagName) | |
| 2100 | - return []; | |
| 2101 | - var values = []; | |
| 2102 | - if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { | |
| 2103 | - values = Object.keys(attributeMap[tagName][attributeName]); | |
| 2104 | - } | |
| 2105 | - return values.map(function (value) { | |
| 2106 | - return { | |
| 2107 | - caption: value, | |
| 2108 | - snippet: value, | |
| 2109 | - meta: "attribute value", | |
| 2110 | - score: 1000000 | |
| 2111 | - }; | |
| 2112 | - }); | |
| 2113 | - }; | |
| 2114 | - this.getHTMLEntityCompletions = function (state, session, pos, prefix) { | |
| 2115 | - var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; | |
| 2116 | - return values.map(function (value) { | |
| 2117 | - return { | |
| 2118 | - caption: value, | |
| 2119 | - snippet: value, | |
| 2120 | - meta: "html entity", | |
| 2121 | - score: 1000000 | |
| 2122 | - }; | |
| 2123 | - }); | |
| 2124 | - }; | |
| 2125 | -}).call(HtmlCompletions.prototype); | |
| 2126 | -exports.HtmlCompletions = HtmlCompletions; | |
| 2127 | - | |
| 2128 | -}); | |
| 2129 | - | |
| 2130 | -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; | |
| 2131 | -var oop = require("../lib/oop"); | |
| 2132 | -var lang = require("../lib/lang"); | |
| 2133 | -var TextMode = require("./text").Mode; | |
| 2134 | -var JavaScriptMode = require("./javascript").Mode; | |
| 2135 | -var CssMode = require("./css").Mode; | |
| 2136 | -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; | |
| 2137 | -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; | |
| 2138 | -var HtmlFoldMode = require("./folding/html").FoldMode; | |
| 2139 | -var HtmlCompletions = require("./html_completions").HtmlCompletions; | |
| 2140 | -var WorkerClient = require("../worker/worker_client").WorkerClient; | |
| 2141 | -var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; | |
| 2142 | -var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; | |
| 2143 | -var Mode = function (options) { | |
| 2144 | - this.fragmentContext = options && options.fragmentContext; | |
| 2145 | - this.HighlightRules = HtmlHighlightRules; | |
| 2146 | - this.$behaviour = new XmlBehaviour(); | |
| 2147 | - this.$completer = new HtmlCompletions(); | |
| 2148 | - this.createModeDelegates({ | |
| 2149 | - "js-": JavaScriptMode, | |
| 2150 | - "css-": CssMode | |
| 2151 | - }); | |
| 2152 | - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); | |
| 2153 | -}; | |
| 2154 | -oop.inherits(Mode, TextMode); | |
| 2155 | -(function () { | |
| 2156 | - this.blockComment = { start: "<!--", end: "-->" }; | |
| 2157 | - this.voidElements = lang.arrayToMap(voidElements); | |
| 2158 | - this.getNextLineIndent = function (state, line, tab) { | |
| 2159 | - return this.$getIndent(line); | |
| 2160 | - }; | |
| 2161 | - this.checkOutdent = function (state, line, input) { | |
| 2162 | - return false; | |
| 2163 | - }; | |
| 2164 | - this.getCompletions = function (state, session, pos, prefix) { | |
| 2165 | - return this.$completer.getCompletions(state, session, pos, prefix); | |
| 2166 | - }; | |
| 2167 | - this.createWorker = function (session) { | |
| 2168 | - if (this.constructor != Mode) | |
| 2169 | - return; | |
| 2170 | - var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); | |
| 2171 | - worker.attachToDocument(session.getDocument()); | |
| 2172 | - if (this.fragmentContext) | |
| 2173 | - worker.call("setOptions", [{ context: this.fragmentContext }]); | |
| 2174 | - worker.on("error", function (e) { | |
| 2175 | - session.setAnnotations(e.data); | |
| 2176 | - }); | |
| 2177 | - worker.on("terminate", function () { | |
| 2178 | - session.clearAnnotations(); | |
| 2179 | - }); | |
| 2180 | - return worker; | |
| 2181 | - }; | |
| 2182 | - this.$id = "ace/mode/html"; | |
| 2183 | - this.snippetFileId = "ace/snippets/html"; | |
| 2184 | -}).call(Mode.prototype); | |
| 2185 | -exports.Mode = Mode; | |
| 2186 | - | |
| 2187 | -}); (function() { | |
| 2188 | - window.require(["ace/mode/html"], function(m) { | |
| 2189 | - if (typeof module == "object" && typeof exports == "object" && module) { | |
| 2190 | - module.exports = m; | |
| 2191 | - } | |
| 2192 | - }); | |
| 2193 | - })(); | |
| 2194 | - | |
| 1 | +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/tokenizer","ace/mode/html_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html","ace/mode/html_completions"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript").Mode,o=e("./css").Mode,u=e("../tokenizer").Tokenizer,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/html").HtmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=function(){this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":s,"css-":o}),this.foldingRules=new l};r.inherits(h,i),function(){this.blockComment={start:"<!--",end:"-->"},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/html"}.call(h.prototype),t.Mode=h}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=e("../worker/worker_client").WorkerClient,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=function(){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new l,this.foldingRules=new c};r.inherits(h,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},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 f(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("jslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(h.prototype),t.Mode=h}),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){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=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|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|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"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_¡-][a-zA-Z\\d\\$_¡-]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\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:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\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:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","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:["punctuation.operator","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)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","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:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{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.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:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),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/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){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/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f=0,l=-1,c="",h=0,p=-1,d="",v="",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==""&&f!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+f+"}",selection:!1};if(m.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(m.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(m.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){var l=u.substring(s.column,s.column+1);if(l=="}"){var c=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){var p="";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat("}",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==="}"){var d=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!d)return null;var v=this.$getIndent(r.getLine(d.row))}else{if(!p)return;var v=this.$getIndent(u)}var g=v+r.getTabString();return{text:"\n"+g+"\n"+v+p,selection:[1,g.length,1,g.length]}}m.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;h--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type=="string"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!=="comment"&&(p.type!=="string"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type==="string"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){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.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),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)}}.call(o.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./css_highlight_rules").CssHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),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 a(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("csslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"space"},{token:"entity.other.attribute-name",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.separator",regex:"=",push:[{include:"space"},{token:"string",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"string"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation.begin","meta.tag.name"+(n?"."+n:"")]},regex:"(<)([-_a-zA-Z0-9:]+)",next:"start_tag_stuff"},{token:function(e,t){var n=a[t];return["meta.tag.punctuation.begin","meta.tag.name"+(n?"."+n:"")]},regex:"(</)([-_a-zA-Z0-9:]+)",next:"end_tag_stuff"}],start_tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.end",regex:"/?>",next:"start"}],end_tag_stuff:[{include:"space"},{token:"meta.tag.punctuation.end",regex:">",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/xml_util","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./xml_util"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){this.$rules={start:[{token:"punctuation.string.begin",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.begin","keyword.instruction"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_declaration"},{token:["punctuation.instruction.begin","keyword.instruction"],regex:"(<\\?)([-_a-zA-Z0-9]+)",next:"instruction"},{token:"comment",regex:"<\\!--",next:"comment"},{token:["punctuation.doctype.begin","meta.tag.doctype"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype"},{include:"tag"},{include:"reference"}],xml_declaration:[{include:"attributes"},{include:"instruction"}],instruction:[{token:"punctuation.instruction.end",regex:"\\?>",next:"start"}],doctype:[{include:"space"},{include:"string"},{token:"punctuation.doctype.end",regex:">",next:"start"},{token:"xml-pe",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.begin",regex:"\\[",push:"declarations"}],declarations:[{token:"text",regex:"\\s+"},{token:"punctuation.end",regex:"]",next:"pop"},{token:["punctuation.begin","keyword"],regex:"(<\\!)([-_a-zA-Z0-9]+)",push:[{token:"text",regex:"\\s+"},{token:"punctuation.end",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.end",regex:"\\]\\]>",next:"start"},{token:"text",regex:"\\s+"},{token:"text",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment",regex:"-->",next:"start"},{defaultToken:"comment"}],tag:[{token:["meta.tag.punctuation.begin","meta.tag.name"],regex:"(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)",next:[{include:"attributes"},{token:"meta.tag.punctuation.end",regex:"/?>",next:"start"}]},{token:["meta.tag.punctuation.begin","meta.tag.name"],regex:"(</)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)",next:[{include:"space"},{token:"meta.tag.punctuation.end",regex:">",next:"start"}]}],space:[{token:"text",regex:"\\s+"}],reference:[{token:"constant.language.escape",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{token:"text",regex:"&"}],string:[{token:"string",regex:"'",push:"qstring_inner"},{token:"string",regex:'"',push:"qqstring_inner"}],qstring_inner:[{token:"string",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string"}],qqstring_inner:[{token:"string",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string"}],attributes:[{token:"entity.other.attribute-name",regex:"(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+"},{token:"keyword.operator.separator",regex:"="},{include:"space"},{include:"string"}]},this.constructor===o&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.begin","meta.tag.name."+n],regex:"(<)("+n+")",next:[{include:"space"},{include:"attributes"},{token:"meta.tag.punctuation.end",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"space"},{token:"meta.tag.punctuation.end",regex:">",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.begin","meta.tag.name."+n],regex:"(</)("+n+")",next:n+"-end"},{token:"string.begin",regex:"<\\!\\[CDATA\\["},{token:"string.end",regex:"\\]\\]>"}])}}).call(s.prototype),r.inherits(o,s),t.XmlHighlightRules=o}),ace.define("ace/mode/xml_util",["require","exports","module"],function(e,t,n){function r(e){return[{token:"string",regex:'"',next:e+"_qqstring"},{token:"string",regex:"'",next:e+"_qstring"}]}function i(e,t){return[{token:"string",regex:e,next:t},{token:"constant.language.escape",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{defaultToken:"string"}]}t.tag=function(e,t,n,s){e[t]=[{token:"text",regex:"\\s+"},{token:s?function(e){return s[e]?"meta.tag.tag-name."+s[e]:"meta.tag.tag-name"}:"meta.tag.tag-name",regex:"[-_a-zA-Z0-9:]+",next:t+"_embed_attribute_list"},{token:"empty",regex:"",next:t+"_embed_attribute_list"}],e[t+"_qstring"]=i("'",t+"_embed_attribute_list"),e[t+"_qqstring"]=i('"',t+"_embed_attribute_list"),e[t+"_embed_attribute_list"]=[{token:"meta.tag.r",regex:"/?>",next:n},{token:"keyword.operator",regex:"="},{token:"entity.other.attribute-name",regex:"[-_a-zA-Z0-9:]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"text",regex:"\\s+"}].concat(r(t))}}),ace.define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){function a(e,t){var n=e.type.split(".");return t.split(".").every(function(e){return n.indexOf(e)!==-1})}var r=e("../../lib/oop"),i=e("../behaviour/xml").XmlBehaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],f=function(){this.inherit(i),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),f=new o(r,s.row,s.column),l=f.getCurrentToken();if(l&&a(l,"string")&&f.getCurrentTokenColumn()+l.value.length>s.column)return;var c=!1;if(!l||!a(l,"meta.tag")&&(!a(l,"text")||!l.value.match("/"))){do l=f.stepBackward();while(l&&(a(l,"string")||a(l,"keyword.operator")||a(l,"entity.attribute-name")||a(l,"text")))}else c=!0;if(!l||!a(l,"meta.tag.name")||f.stepBackward().value.match("/"))return;var h=l.value;if(c)var h=h.substring(0,s.column-l.start);if(u.indexOf(h)!==-1)return;return{text:"></"+h+">",selection:[1,1]}}})};r.inherits(f,i),t.HtmlBehaviour=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){function u(e,t){var n=e.type.split(".");return t.split(".").every(function(e){return n.indexOf(e)!==-1})}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,a=function(){this.inherit(s,["string_dquotes"]),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),a=new o(r,s.row,s.column),f=a.getCurrentToken();if(f&&u(f,"string")&&a.getCurrentTokenColumn()+f.value.length>s.column)return;var l=!1;if(!f||!u(f,"meta.tag")&&(!u(f,"text")||!f.value.match("/"))){do f=a.stepBackward();while(f&&(u(f,"string")||u(f,"keyword.operator")||u(f,"entity.attribute-name")||u(f,"text")))}else l=!0;if(!f||!u(f,"meta.tag.name")||a.stepBackward().value.match("/"))return;var c=f.value;if(l)var c=c.substring(0,s.column-f.start);return{text:"></"+c+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var s=n.getCursorPosition(),o=r.getLine(s.row),u=o.substring(s.column,s.column+2);if(u=="</"){var a=this.$getIndent(o),f=a+r.getTabString();return{text:"\n"+f+"\n"+a,selection:[1,f.length,1,f.length]}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(){i.call(this,new s({area:1,base:1,br:1,col:1,command:1,embed:1,hr:1,img:1,input:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1,li:1,dt:1,dd:1,p:1,rt:1,rp:1,optgroup:1,option:1,colgroup:1,td:1,th:1}),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e){o.call(this),this.voidElements=e||{}};r.inherits(a,o),function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r.closing?t=="markbeginend"?"end":"":!r.tagName||this.voidElements[r.tagName.toLowerCase()]?"":r.selfClosing?"":r.value.indexOf("/"+r.tagName)!==-1?"":"start"},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r="";for(var s=0;s<n.length;s++){var o=n[s];o.type.lastIndexOf("meta.tag",0)===0?r+=o.value:r+=i.stringRepeat(" ",o.value.length)}return this._parseTag(r)},this.tagRe=/^(\s*)(<?(\/?)([-_a-zA-Z0-9:!]*)\s*(\/?)>?)/,this._parseTag=function(e){var t=e.match(this.tagRe),n=0;return{value:e,match:t?t[2]:"",closing:t?!!t[3]:!1,selfClosing:t?!!t[5]||t[2]=="/>":!1,tagName:t?t[4]:"",column:t[1]?n+t[1].length:n}},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n="",r;do if(t.type.lastIndexOf("meta.tag",0)===0){if(!r)var r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()};n+=t.value;if(n.indexOf(">")!==-1){var i=this._parseTag(n);return i.start=r,i.end={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length},e.stepForward(),i}}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n="",r;do if(t.type.lastIndexOf("meta.tag",0)===0){r||(r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length}),n=t.value+n;if(n.indexOf("<")!==-1){var i=this._parseTag(n);return i.end=r,i.start={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()},e.stepBackward(),i}}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements[t.tagName])return;if(this.voidElements[n.tagName]){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r.match)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.column),l={row:n,column:r.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.column+r.match.length),c={row:n,column:r.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}.call(a.prototype)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){function f(e,t){var n=e.type.split(".");return t.split(".").every(function(e){return n.indexOf(e)!==-1})}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();if(!i||!f(i,"tag")&&(!f(i,"text")||!i.value.match("/")))do i=n.stepBackward();while(i&&(f(i,"string")||f(i,"operator")||f(i,"attribute-name")||f(i,"text")));if(i&&f(i,"tag-name")&&!n.stepBackward().value.match("/"))return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||i.value=="<"&&f(i,"text")?this.getTagCompletions(e,t,n,r):f(i,"text")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){var i=a;return r&&(i=i.filter(function(e){return e.indexOf(r)===0})),i.map(function(e){return{value:e,meta:"tag"}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),r&&(s=s.filter(function(e){return e.indexOf(r)===0})),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute"}})}}).call(c.prototype),t.HtmlCompletions=c}) | |