PluginProbe
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits / 3.1.9
Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits v3.1.9
3.2.2 3.2.3 3.2.1 3.2.0 3.1.9 3.1.8 3.1.7 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.9 trunk 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.3 1.1.4 1.1.5 All 174 releases
master-addons / assets / vendor / ace / mode-css.js

mode-css.js in Master Addons for Elementor – Elementor Addons, Widgets, Mega Menu Builder, Popup Builder, Widget Builder & Template Kits 3.1.9, at assets/vendor/ace/mode-css.js

632 lines 32.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 ace.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";
2 var oop = require("../lib/oop");
3 var lang = require("../lib/lang");
4 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
5 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";
6 var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
7 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";
8 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";
9 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";
10 var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))";
11 var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
12 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";
13 var CssHighlightRules = function () {
14 var keywordMapper = this.createKeywordMapper({
15 "support.function": supportFunction,
16 "support.constant": supportConstant,
17 "support.type": supportType,
18 "support.constant.color": supportConstantColor,
19 "support.constant.fonts": supportConstantFonts
20 }, "text", true);
21 this.$rules = {
22 "start": [{
23 include: ["strings", "url", "comments"]
24 }, {
25 token: "paren.lparen",
26 regex: "\\{",
27 next: "ruleset"
28 }, {
29 token: "paren.rparen",
30 regex: "\\}"
31 }, {
32 token: "string",
33 regex: "@(?!viewport)",
34 next: "media"
35 }, {
36 token: "keyword",
37 regex: "#[a-z0-9-_]+"
38 }, {
39 token: "keyword",
40 regex: "%"
41 }, {
42 token: "variable",
43 regex: "\\.[a-z0-9-_]+"
44 }, {
45 token: "string",
46 regex: ":[a-z0-9-_]+"
47 }, {
48 token: "constant.numeric",
49 regex: numRe
50 }, {
51 token: "constant",
52 regex: "[a-z0-9-_]+"
53 }, {
54 caseInsensitive: true
55 }],
56 "media": [{
57 include: ["strings", "url", "comments"]
58 }, {
59 token: "paren.lparen",
60 regex: "\\{",
61 next: "start"
62 }, {
63 token: "paren.rparen",
64 regex: "\\}",
65 next: "start"
66 }, {
67 token: "string",
68 regex: ";",
69 next: "start"
70 }, {
71 token: "keyword",
72 regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
73 + "|page|font|keyframes|viewport|counter-style|font-feature-values"
74 + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
75 }],
76 "comments": [{
77 token: "comment", // multi line comment
78 regex: "\\/\\*",
79 push: [{
80 token: "comment",
81 regex: "\\*\\/",
82 next: "pop"
83 }, {
84 defaultToken: "comment"
85 }]
86 }],
87 "ruleset": [{
88 regex: "-(webkit|ms|moz|o)-",
89 token: "text"
90 }, {
91 token: "punctuation.operator",
92 regex: "[:;]"
93 }, {
94 token: "paren.rparen",
95 regex: "\\}",
96 next: "start"
97 }, {
98 include: ["strings", "url", "comments"]
99 }, {
100 token: ["constant.numeric", "keyword"],
101 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|%)"
102 }, {
103 token: "constant.numeric",
104 regex: numRe
105 }, {
106 token: "constant.numeric", // hex6 color
107 regex: "#[a-f0-9]{6}"
108 }, {
109 token: "constant.numeric", // hex3 color
110 regex: "#[a-f0-9]{3}"
111 }, {
112 token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
113 regex: pseudoElements
114 }, {
115 token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
116 regex: pseudoClasses
117 }, {
118 include: "url"
119 }, {
120 token: keywordMapper,
121 regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
122 }, {
123 token: "paren.lparen",
124 regex: "\\{"
125 }, {
126 caseInsensitive: true
127 }],
128 url: [{
129 token: "support.function",
130 regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
131 push: [{
132 token: "support.function",
133 regex: "\\)",
134 next: "pop"
135 }, {
136 defaultToken: "string"
137 }]
138 }],
139 strings: [{
140 token: "string.start",
141 regex: "'",
142 push: [{
143 token: "string.end",
144 regex: "'|$",
145 next: "pop"
146 }, {
147 include: "escapes"
148 }, {
149 token: "constant.language.escape",
150 regex: /\\$/,
151 consumeLineEnd: true
152 }, {
153 defaultToken: "string"
154 }]
155 }, {
156 token: "string.start",
157 regex: '"',
158 push: [{
159 token: "string.end",
160 regex: '"|$',
161 next: "pop"
162 }, {
163 include: "escapes"
164 }, {
165 token: "constant.language.escape",
166 regex: /\\$/,
167 consumeLineEnd: true
168 }, {
169 defaultToken: "string"
170 }]
171 }],
172 escapes: [{
173 token: "constant.language.escape",
174 regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
175 }]
176 };
177 this.normalizeRules();
178 };
179 oop.inherits(CssHighlightRules, TextHighlightRules);
180 exports.CssHighlightRules = CssHighlightRules;
181
182 });
183
184 ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict";
185 var Range = require("../range").Range;
186 var MatchingBraceOutdent = function () { };
187 (function () {
188 this.checkOutdent = function (line, input) {
189 if (!/^\s+$/.test(line))
190 return false;
191 return /^\s*\}/.test(input);
192 };
193 this.autoOutdent = function (doc, row) {
194 var line = doc.getLine(row);
195 var match = line.match(/^(\s*\})/);
196 if (!match)
197 return 0;
198 var column = match[1].length;
199 var openBracePos = doc.findMatchingBracket({ row: row, column: column });
200 if (!openBracePos || openBracePos.row == row)
201 return 0;
202 var indent = this.$getIndent(doc.getLine(openBracePos.row));
203 doc.replace(new Range(row, 0, row, column - 1), indent);
204 };
205 this.$getIndent = function (line) {
206 return line.match(/^\s*/)[0];
207 };
208 }).call(MatchingBraceOutdent.prototype);
209 exports.MatchingBraceOutdent = MatchingBraceOutdent;
210
211 });
212
213 ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict";
214 var propertyMap = {
215 "background": { "#$0": 1 },
216 "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 },
217 "background-image": { "url('/$0')": 1 },
218 "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 },
219 "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 },
220 "background-attachment": { "scroll": 1, "fixed": 1 },
221 "background-size": { "cover": 1, "contain": 1 },
222 "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 },
223 "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 },
224 "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 },
225 "border-color": { "#$0": 1 },
226 "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 },
227 "border-collapse": { "collapse": 1, "separate": 1 },
228 "bottom": { "px": 1, "em": 1, "%": 1 },
229 "clear": { "left": 1, "right": 1, "both": 1, "none": 1 },
230 "color": { "#$0": 1, "rgb(#$00,0,0)": 1 },
231 "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 },
232 "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 },
233 "empty-cells": { "show": 1, "hide": 1 },
234 "float": { "left": 1, "right": 1, "none": 1 },
235 "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 },
236 "font-size": { "px": 1, "em": 1, "%": 1 },
237 "font-weight": { "bold": 1, "normal": 1 },
238 "font-style": { "italic": 1, "normal": 1 },
239 "font-variant": { "normal": 1, "small-caps": 1 },
240 "height": { "px": 1, "em": 1, "%": 1 },
241 "left": { "px": 1, "em": 1, "%": 1 },
242 "letter-spacing": { "normal": 1 },
243 "line-height": { "normal": 1 },
244 "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 },
245 "margin": { "px": 1, "em": 1, "%": 1 },
246 "margin-right": { "px": 1, "em": 1, "%": 1 },
247 "margin-left": { "px": 1, "em": 1, "%": 1 },
248 "margin-top": { "px": 1, "em": 1, "%": 1 },
249 "margin-bottom": { "px": 1, "em": 1, "%": 1 },
250 "max-height": { "px": 1, "em": 1, "%": 1 },
251 "max-width": { "px": 1, "em": 1, "%": 1 },
252 "min-height": { "px": 1, "em": 1, "%": 1 },
253 "min-width": { "px": 1, "em": 1, "%": 1 },
254 "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
255 "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
256 "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
257 "padding": { "px": 1, "em": 1, "%": 1 },
258 "padding-top": { "px": 1, "em": 1, "%": 1 },
259 "padding-right": { "px": 1, "em": 1, "%": 1 },
260 "padding-bottom": { "px": 1, "em": 1, "%": 1 },
261 "padding-left": { "px": 1, "em": 1, "%": 1 },
262 "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 },
263 "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 },
264 "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 },
265 "right": { "px": 1, "em": 1, "%": 1 },
266 "table-layout": { "fixed": 1, "auto": 1 },
267 "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 },
268 "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 },
269 "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 },
270 "top": { "px": 1, "em": 1, "%": 1 },
271 "vertical-align": { "top": 1, "bottom": 1 },
272 "visibility": { "hidden": 1, "visible": 1 },
273 "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 },
274 "width": { "px": 1, "em": 1, "%": 1 },
275 "word-spacing": { "normal": 1 },
276 "filter": { "alpha(opacity=$0100)": 1 },
277 "text-shadow": { "$02px 2px 2px #777": 1 },
278 "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 },
279 "-moz-border-radius": 1,
280 "-moz-border-radius-topright": 1,
281 "-moz-border-radius-bottomright": 1,
282 "-moz-border-radius-topleft": 1,
283 "-moz-border-radius-bottomleft": 1,
284 "-webkit-border-radius": 1,
285 "-webkit-border-top-right-radius": 1,
286 "-webkit-border-top-left-radius": 1,
287 "-webkit-border-bottom-right-radius": 1,
288 "-webkit-border-bottom-left-radius": 1,
289 "-moz-box-shadow": 1,
290 "-webkit-box-shadow": 1,
291 "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
292 "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
293 "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }
294 };
295 var CssCompletions = function () {
296 };
297 (function () {
298 this.completionsDefined = false;
299 this.defineCompletions = function () {
300 if (document) {
301 var style = document.createElement('c').style;
302 for (var i in style) {
303 if (typeof style[i] !== 'string')
304 continue;
305 var name = i.replace(/[A-Z]/g, function (x) {
306 return '-' + x.toLowerCase();
307 });
308 if (!propertyMap.hasOwnProperty(name))
309 propertyMap[name] = 1;
310 }
311 }
312 this.completionsDefined = true;
313 };
314 this.getCompletions = function (state, session, pos, prefix) {
315 if (!this.completionsDefined) {
316 this.defineCompletions();
317 }
318 if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") {
319 var line = session.getLine(pos.row).substr(0, pos.column);
320 var inParens = /\([^)]*$/.test(line);
321 if (inParens) {
322 line = line.substr(line.lastIndexOf('(') + 1);
323 }
324 if (/:[^;]+$/.test(line)) {
325 /([\w\-]+):[^:]*$/.test(line);
326 return this.getPropertyValueCompletions(state, session, pos, prefix);
327 }
328 else {
329 return this.getPropertyCompletions(state, session, pos, prefix, inParens);
330 }
331 }
332 return [];
333 };
334 this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {
335 skipSemicolon = skipSemicolon || false;
336 var properties = Object.keys(propertyMap);
337 return properties.map(function (property) {
338 return {
339 caption: property,
340 snippet: property + ': $0' + (skipSemicolon ? '' : ';'),
341 meta: "property",
342 score: 1000000
343 };
344 });
345 };
346 this.getPropertyValueCompletions = function (state, session, pos, prefix) {
347 var line = session.getLine(pos.row).substr(0, pos.column);
348 var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
349 if (!property)
350 return [];
351 var values = [];
352 if (property in propertyMap && typeof propertyMap[property] === "object") {
353 values = Object.keys(propertyMap[property]);
354 }
355 return values.map(function (value) {
356 return {
357 caption: value,
358 snippet: value,
359 meta: "property value",
360 score: 1000000
361 };
362 });
363 };
364 }).call(CssCompletions.prototype);
365 exports.CssCompletions = CssCompletions;
366
367 });
368
369 ace.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";
370 var oop = require("../../lib/oop");
371 var Behaviour = require("../behaviour").Behaviour;
372 var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
373 var TokenIterator = require("../../token_iterator").TokenIterator;
374 var CssBehaviour = function () {
375 this.inherit(CstyleBehaviour);
376 this.add("colon", "insertion", function (state, action, editor, session, text) {
377 if (text === ':' && editor.selection.isEmpty()) {
378 var cursor = editor.getCursorPosition();
379 var iterator = new TokenIterator(session, cursor.row, cursor.column);
380 var token = iterator.getCurrentToken();
381 if (token && token.value.match(/\s+/)) {
382 token = iterator.stepBackward();
383 }
384 if (token && token.type === 'support.type') {
385 var line = session.doc.getLine(cursor.row);
386 var rightChar = line.substring(cursor.column, cursor.column + 1);
387 if (rightChar === ':') {
388 return {
389 text: '',
390 selection: [1, 1]
391 };
392 }
393 if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
394 return {
395 text: ':;',
396 selection: [1, 1]
397 };
398 }
399 }
400 }
401 });
402 this.add("colon", "deletion", function (state, action, editor, session, range) {
403 var selected = session.doc.getTextRange(range);
404 if (!range.isMultiLine() && selected === ':') {
405 var cursor = editor.getCursorPosition();
406 var iterator = new TokenIterator(session, cursor.row, cursor.column);
407 var token = iterator.getCurrentToken();
408 if (token && token.value.match(/\s+/)) {
409 token = iterator.stepBackward();
410 }
411 if (token && token.type === 'support.type') {
412 var line = session.doc.getLine(range.start.row);
413 var rightChar = line.substring(range.end.column, range.end.column + 1);
414 if (rightChar === ';') {
415 range.end.column++;
416 return range;
417 }
418 }
419 }
420 });
421 this.add("semicolon", "insertion", function (state, action, editor, session, text) {
422 if (text === ';' && editor.selection.isEmpty()) {
423 var cursor = editor.getCursorPosition();
424 var line = session.doc.getLine(cursor.row);
425 var rightChar = line.substring(cursor.column, cursor.column + 1);
426 if (rightChar === ';') {
427 return {
428 text: '',
429 selection: [1, 1]
430 };
431 }
432 }
433 });
434 this.add("!important", "insertion", function (state, action, editor, session, text) {
435 if (text === '!' && editor.selection.isEmpty()) {
436 var cursor = editor.getCursorPosition();
437 var line = session.doc.getLine(cursor.row);
438 if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
439 return {
440 text: '!important',
441 selection: [10, 10]
442 };
443 }
444 }
445 });
446 };
447 oop.inherits(CssBehaviour, CstyleBehaviour);
448 exports.CssBehaviour = CssBehaviour;
449
450 });
451
452 ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
453 var oop = require("../../lib/oop");
454 var Range = require("../../range").Range;
455 var BaseFoldMode = require("./fold_mode").FoldMode;
456 var FoldMode = exports.FoldMode = function (commentRegex) {
457 if (commentRegex) {
458 this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start));
459 this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end));
460 }
461 };
462 oop.inherits(FoldMode, BaseFoldMode);
463 (function () {
464 this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
465 this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
466 this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
467 this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
468 this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
469 this._getFoldWidgetBase = this.getFoldWidget;
470 this.getFoldWidget = function (session, foldStyle, row) {
471 var line = session.getLine(row);
472 if (this.singleLineBlockCommentRe.test(line)) {
473 if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
474 return "";
475 }
476 var fw = this._getFoldWidgetBase(session, foldStyle, row);
477 if (!fw && this.startRegionRe.test(line))
478 return "start"; // lineCommentRegionStart
479 return fw;
480 };
481 this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
482 var line = session.getLine(row);
483 if (this.startRegionRe.test(line))
484 return this.getCommentRegionBlock(session, line, row);
485 var match = line.match(this.foldingStartMarker);
486 if (match) {
487 var i = match.index;
488 if (match[1])
489 return this.openingBracketBlock(session, match[1], row, i);
490 var range = session.getCommentFoldRange(row, i + match[0].length, 1);
491 if (range && !range.isMultiLine()) {
492 if (forceMultiline) {
493 range = this.getSectionRange(session, row);
494 }
495 else if (foldStyle != "all")
496 range = null;
497 }
498 return range;
499 }
500 if (foldStyle === "markbegin")
501 return;
502 var match = line.match(this.foldingStopMarker);
503 if (match) {
504 var i = match.index + match[0].length;
505 if (match[1])
506 return this.closingBracketBlock(session, match[1], row, i);
507 return session.getCommentFoldRange(row, i, -1);
508 }
509 };
510 this.getSectionRange = function (session, row) {
511 var line = session.getLine(row);
512 var startIndent = line.search(/\S/);
513 var startRow = row;
514 var startColumn = line.length;
515 row = row + 1;
516 var endRow = row;
517 var maxRow = session.getLength();
518 while (++row < maxRow) {
519 line = session.getLine(row);
520 var indent = line.search(/\S/);
521 if (indent === -1)
522 continue;
523 if (startIndent > indent)
524 break;
525 var subRange = this.getFoldWidgetRange(session, "all", row);
526 if (subRange) {
527 if (subRange.start.row <= startRow) {
528 break;
529 }
530 else if (subRange.isMultiLine()) {
531 row = subRange.end.row;
532 }
533 else if (startIndent == indent) {
534 break;
535 }
536 }
537 endRow = row;
538 }
539 return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
540 };
541 this.getCommentRegionBlock = function (session, line, row) {
542 var startColumn = line.search(/\s*$/);
543 var maxRow = session.getLength();
544 var startRow = row;
545 var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
546 var depth = 1;
547 while (++row < maxRow) {
548 line = session.getLine(row);
549 var m = re.exec(line);
550 if (!m)
551 continue;
552 if (m[1])
553 depth--;
554 else
555 depth++;
556 if (!depth)
557 break;
558 }
559 var endRow = row;
560 if (endRow > startRow) {
561 return new Range(startRow, startColumn, endRow, line.length);
562 }
563 };
564 }).call(FoldMode.prototype);
565
566 });
567
568 ace.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";
569 var oop = require("../lib/oop");
570 var TextMode = require("./text").Mode;
571 var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
572 var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
573 var WorkerClient = require("../worker/worker_client").WorkerClient;
574 var CssCompletions = require("./css_completions").CssCompletions;
575 var CssBehaviour = require("./behaviour/css").CssBehaviour;
576 var CStyleFoldMode = require("./folding/cstyle").FoldMode;
577 var Mode = function () {
578 this.HighlightRules = CssHighlightRules;
579 this.$outdent = new MatchingBraceOutdent();
580 this.$behaviour = new CssBehaviour();
581 this.$completer = new CssCompletions();
582 this.foldingRules = new CStyleFoldMode();
583 };
584 oop.inherits(Mode, TextMode);
585 (function () {
586 this.foldingRules = "cStyle";
587 this.blockComment = { start: "/*", end: "*/" };
588 this.getNextLineIndent = function (state, line, tab) {
589 var indent = this.$getIndent(line);
590 var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
591 if (tokens.length && tokens[tokens.length - 1].type == "comment") {
592 return indent;
593 }
594 var match = line.match(/^.*\{\s*$/);
595 if (match) {
596 indent += tab;
597 }
598 return indent;
599 };
600 this.checkOutdent = function (state, line, input) {
601 return this.$outdent.checkOutdent(line, input);
602 };
603 this.autoOutdent = function (state, doc, row) {
604 this.$outdent.autoOutdent(doc, row);
605 };
606 this.getCompletions = function (state, session, pos, prefix) {
607 return this.$completer.getCompletions(state, session, pos, prefix);
608 };
609 this.createWorker = function (session) {
610 var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
611 worker.attachToDocument(session.getDocument());
612 worker.on("annotate", function (e) {
613 session.setAnnotations(e.data);
614 });
615 worker.on("terminate", function () {
616 session.clearAnnotations();
617 });
618 return worker;
619 };
620 this.$id = "ace/mode/css";
621 this.snippetFileId = "ace/snippets/css";
622 }).call(Mode.prototype);
623 exports.Mode = Mode;
624
625 }); (function() {
626 ace.require(["ace/mode/css"], function(m) {
627 if (typeof module == "object" && typeof exports == "object" && module) {
628 module.exports = m;
629 }
630 });
631 })();
632