Files
FOF-ACE-Editor/lib/ace/src-noconflict/mode-css.js
2025-08-16 16:14:03 +08:00

2636 lines
67 KiB
JavaScript

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";
var oop = require("../lib/oop");
var lang = require("../lib/lang");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var supportType = exports.supportType = "supportTypebegin|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|溢出-x轴|overflow-y|溢出-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|堆叠顺序|fofstudiotextcolor|文本颜色|grid|网格|object-fit|对象-适应|grid-template-columns|网格模板列|grid-template-rows|网格模板行|grid-template-areas|网格模板区域|grid-row|网格行|grid-column|网格列|grid-gap|网格间距|placeholder|提示信息|calc|计算|pointer-events|鼠标-事件|backdrop-filter|背景-模糊|-webkit-line-clamp|-谷歌内核-行数限制|-webkit-box-orient|-谷歌内核-盒子排列|appearance|原生外观|progress-bar|进度条伪类|progress-value|进度条进度|counter-set|计数器设置|paused|暂停|running|运行|time|时间|keyframename|关键帧名称|steps()|步骤()|cubic-bezier(n,n,n,n)|贝塞尔曲线(n,n,n,n)|number|数字|infinite|无限次|reverse|反向播放|alternate|交替播放|alternate-reverse|反向交替播放|linear-gradient()|线性渐变()|radial-gradient()|径向渐变()|repeating-linear-gradient()|重复线性渐变()|repeating-radial-gradient()|重复径向渐变()|length|长度|style|样式|value|值|font-size/line-height|字体-大小/行高|family-name|字体名称|xx-small|特小号|x-small|加小号|small|小号|large|大号|x-large|加大号|xx-large|特大号|smaller|减小|larger|增大|100|100|200|200|300|300|400|400|500|500|600|600|700|700|800|800|900|900|property|属性|outlineColor|轮廓颜色|outlineStyle|轮廓样式|outlineWidth|轮廓宽度|h-shadow|水平阴影位置|v-shadow|垂直阴影位置|blur|模糊距离|spread|阴影尺寸|hide|不显示|show|显示|sticky|粘性定位|string|字符串|row|水平显示|row-reverse|水平显示倒序|column-reverse|垂直显示倒序|wrap|换行|wrap-reverse|反向换行|matrix|矩阵|matrix3d|矩阵3d|translate|平移|translateX|平移x轴|translateY|平移y轴|scale|缩放|scaleX|缩放x轴|scaleY|缩放y轴|rotate|旋转|skew|扭曲|skewX|扭曲x轴|skewY|扭曲y轴|translate3d|平移3d|translateZ|平移z轴|scale3d|缩放3d|scaleZ|缩放z轴|rotate3d|旋转3d|rotateX|旋转x轴|rotateY|旋转y轴|rotateZ|旋转z轴|flex-start|行首排列|flex-end|行尾排列|space-between|两极间隔|space-evenly|均分间隔|space-around|周围间隔|currentColor|颜色值-当前文本颜色|rgba|颜色通道|-webkit-box|-谷歌内核-盒子|vertical|垂直排列|forwards|结束状态|backwards|起始状态|scale-down|比例缩小";
var supportFunction = exports.supportFunction = "supportFunctionbegin|url|地址|attr|属性值|counter|计数器值|counters|supportFunctionend";
var supportConstant = exports.supportConstant = "supportConstantbegin|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|x轴重复|repeat-y|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|supportConstantend";
var supportConstantColor = exports.supportConstantColor = "supportConstantColorbegin|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|颜色值-嫩绿色|supportConstantColorend";
var supportConstantFonts = exports.supportConstantFonts = "supportConstantFontsbegin|arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace|supportConstantFontsend";
var supportConstantColorArray = supportConstantColor.split("|");
var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))";
var pseudoElements = exports.pseudoElements = "(\\:+)\\b(pseudoElementsbegin|after|元素后|before|元素前|first-letter|first-line|moz-selection|selection|pseudoElementsend)\\b";
var pseudoClasses = exports.pseudoClasses = "(:)\\b(pseudoClassesbegin|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|已访问链接|pseudoClassesend)\\b";
var CssHighlightRules = function () {
var keywordMapper = this.createKeywordMapper({
"support.function": supportFunction,
"support.constant": supportConstant,
"support.type": supportType,
"support.constant.color": supportConstantColor,
"support.constant.fonts": supportConstantFonts
}, "text", true);
this.$rules = {
"start": [{
include: ["strings", "url", "comments"]
}, {
token: "paren.lparen",
regex: "\\{",
next: "ruleset"
}, {
token: "paren.rparen",
regex: "\\}"
}, {
token: "string",
regex: "@(?!viewport)",
next: "media"
}, {
token: "keyword",
regex: "#[a-z0-9-_\u4E00-\u9FA5]+"
}, {
token: "keyword",
regex: "%"
}, {
token: "variable",
regex: "\[\.]*[a-z0-9-_\u4E00-\u9FA5]+"
}, {
token: "string",
regex: ":[a-z0-9-_\u4E00-\u9FA5]+"
}, {
token: "constant.numeric",
regex: numRe
}, {
token: "constant",
regex: "[a-z0-9-_\u4E00-\u9FA5]+"
}, {
caseInsensitive: true
}],
"media": [{
include: ["strings", "url", "comments"]
}, {
token: "paren.lparen",
regex: "\\{",
next: "start"
}, {
token: "paren.rparen",
regex: "\\}",
next: "start"
}, {
token: "string",
regex: ";",
next: "start"
}, {
token: "keyword",
regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" +
"|page|font|字体|keyframes|viewport|counter-style|font-feature-values" +
"|swash|ornaments|annotation|stylistic|styleset|character-variant)"
}],
"comments": [{
token: "comment", // multi line comment
regex: "\\/\\*",
push: [{
token: "comment",
regex: "\\*\\/",
next: "pop"
}, {
defaultToken: "comment"
}]
}],
"ruleset": [{
regex: "-(webkit|ms|moz|o)-",
token: "text"
}, {
token: "punctuation.operator",
regex: "[:;]"
}, {
token: "paren.rparen",
regex: "\\}",
next: "start"
}, {
include: ["strings", "url", "comments"]
}, {
token: ["constant.numeric", "keyword"],
regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rpx|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
}, {
token: "constant.numeric",
regex: supportConstantColor,
token: function (value) {
if (/颜色值-[\u4E00-\u9FA5]+/.test(value)) {
let index = supportConstantColorArray.findIndex(v => v === value);
value = supportConstantColorArray[index - 1]
}
return "support.constant.color.changeColor style=border-bottom:2px solid " + value
},
}, {
token: "constant.numeric", // hex6 color
regex: "#[a-f0-9]{6}",
token: function (value) {
return "constant.numeric.color.changeColor style=border-bottom:2px solid " + value
},
}, {
token: "constant.numeric", // hex3 color
regex: "#[a-f0-9]{3}",
token: function (value) {
return "constant.numeric.color.changeColor style=border-bottom:2px solid " + value
},
}, {
token: "constant.numeric", // hex3 color
regex: "rgb[a]*\\([\\S,]+\\)",
token: function (value) {
return "constant.numeric.color.changeColor style=border-bottom:2px solid " + value
},
}, {
token: "constant.numeric",
regex: numRe
}, {
token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
regex: pseudoElements
}, {
token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
regex: pseudoClasses
}, {
include: "url"
}, {
token: keywordMapper,
regex: "\\-?[a-zA-Z_\u4E00-\u9FA5][a-zA-Z0-9_\u4E00-\u9FA5\\-]*"
}, {
caseInsensitive: true
}],
url: [{
token: "support.function",
regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
push: [{
token: "support.function",
regex: "\\)",
next: "pop"
}, {
defaultToken: "string"
}]
}],
strings: [{
token: "string.start",
regex: "'",
push: [{
token: "string.end",
regex: "'|$",
next: "pop"
}, {
include: "escapes"
}, {
token: "constant.language.escape",
regex: /\\$/,
consumeLineEnd: true
}, {
defaultToken: "string"
}]
}, {
token: "string.start",
regex: '"',
push: [{
token: "string.end",
regex: '"|$',
next: "pop"
}, {
include: "escapes"
}, {
token: "constant.language.escape",
regex: /\\$/,
consumeLineEnd: true
}, {
defaultToken: "string"
}]
}],
escapes: [{
token: "constant.language.escape",
regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
}]
};
this.normalizeRules();
};
oop.inherits(CssHighlightRules, TextHighlightRules);
exports.CssHighlightRules = CssHighlightRules;
});
ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function (require, exports, module) {
"use strict";
var Range = require("../range").Range;
var MatchingBraceOutdent = function () { };
(function () {
this.checkOutdent = function (line, input) {
if (!/^\s+$/.test(line))
return false;
return /^\s*\}/.test(input);
};
this.autoOutdent = function (doc, row) {
var line = doc.getLine(row);
var match = line.match(/^(\s*\})/);
if (!match) return 0;
var column = match[1].length;
var openBracePos = doc.findMatchingBracket({
row: row,
column: column
});
if (!openBracePos || openBracePos.row == row) return 0;
var indent = this.$getIndent(doc.getLine(openBracePos.row));
doc.replace(new Range(row, 0, row, column - 1), indent);
};
this.$getIndent = function (line) {
return line.match(/^\s*/)[0];
};
}).call(MatchingBraceOutdent.prototype);
exports.MatchingBraceOutdent = MatchingBraceOutdent;
});
ace.define("ace/mode/css_completions", ["require", "exports", "module", "ace/mode/css_highlight_rules"], function (require, exports, module) {
"use strict";
var css_highlight_rules = require("../mode/css_highlight_rules");
var suppor_color = {};
css_highlight_rules.supportConstantColor.split("|").forEach(v => {
suppor_color[v] = 1
});
//CSSDATA这里替换的就是内置提示
var propertyMap = {
"background":
{
...suppor_color,
"#$0": 1
},
"background-color":
{
...suppor_color,
"#$0": 1,
"transparent": 1,
"fixed": 1
},
"background-image":
{
"url('/$0')": 1
},
"background-repeat":
{
"repeat": 1,
"repeat-x": 1,
"repeat-y": 1,
"no-repeat": 1,
"inherit": 1
},
"background-position":
{
"bottom": 2,
"center": 2,
"left": 2,
"right": 2,
"top": 2,
"inherit": 2
},
"background-attachment":
{
"scroll": 1,
"fixed": 1
},
"background-size":
{
"cover": 1,
"contain": 1
},
"background-clip":
{
"border-box": 1,
"padding-box": 1,
"content-box": 1
},
"background-origin":
{
"border-box": 1,
"padding-box": 1,
"content-box": 1
},
"border":
{
"solid $0": 1,
"dashed $0": 1,
"dotted $0": 1,
...suppor_color,
"#$0": 1
},
"border-color":
{
...suppor_color,
"#$0": 1
},
"border-style":
{
"solid": 2,
"dashed": 2,
"dotted": 2,
"double": 2,
"groove": 2,
"hidden": 2,
"inherit": 2,
"inset": 2,
"none": 2,
"outset": 2,
"ridged": 2
},
"border-collapse":
{
"collapse": 1,
"separate": 1
},
"bottom":
{
"px": 1,
"em": 1,
"%": 1
},
"clear":
{
"left": 1,
"right": 1,
"both": 1,
"none": 1
},
"color":
{
...suppor_color,
"#$0": 1,
"rgb(#$00,0,0)": 1
},
"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
},
"display":
{
"none": 1,
"block": 1,
"inline": 1,
"inline-block": 1,
"table-cell": 1
},
"empty-cells":
{
"show": 1,
"hide": 1
},
"float":
{
"left": 1,
"right": 1,
"none": 1
},
"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
},
"font-size":
{
"px": 1,
"em": 1,
"%": 1
},
"font-weight":
{
"bold": 1,
"normal": 1
},
"font-style":
{
"italic": 1,
"normal": 1
},
"font-variant":
{
"normal": 1,
"small-caps": 1
},
"height":
{
"px": 1,
"em": 1,
"%": 1
},
"left":
{
"px": 1,
"em": 1,
"%": 1
},
"letter-spacing":
{
"normal": 1
},
"line-height":
{
"normal": 1
},
"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
},
"margin":
{
"px": 1,
"em": 1,
"%": 1
},
"margin-right":
{
"px": 1,
"em": 1,
"%": 1
},
"margin-left":
{
"px": 1,
"em": 1,
"%": 1
},
"margin-top":
{
"px": 1,
"em": 1,
"%": 1
},
"margin-bottom":
{
"px": 1,
"em": 1,
"%": 1
},
"max-height":
{
"px": 1,
"em": 1,
"%": 1
},
"max-width":
{
"px": 1,
"em": 1,
"%": 1
},
"min-height":
{
"px": 1,
"em": 1,
"%": 1
},
"min-width":
{
"px": 1,
"em": 1,
"%": 1
},
"overflow":
{
"hidden": 1,
"visible": 1,
"auto": 1,
"scroll": 1
},
"overflow-x":
{
"hidden": 1,
"visible": 1,
"auto": 1,
"scroll": 1
},
"overflow-y":
{
"hidden": 1,
"visible": 1,
"auto": 1,
"scroll": 1
},
"padding":
{
"px": 1,
"em": 1,
"%": 1
},
"padding-top":
{
"px": 1,
"em": 1,
"%": 1
},
"padding-right":
{
"px": 1,
"em": 1,
"%": 1
},
"padding-bottom":
{
"px": 1,
"em": 1,
"%": 1
},
"padding-left":
{
"px": 1,
"em": 1,
"%": 1
},
"page-break-after":
{
"auto": 1,
"always": 1,
"avoid": 1,
"left": 1,
"right": 1
},
"page-break-before":
{
"auto": 1,
"always": 1,
"avoid": 1,
"left": 1,
"right": 1
},
"position":
{
"absolute": 1,
"relative": 1,
"fixed": 1,
"static": 1
},
"right":
{
"px": 1,
"em": 1,
"%": 1
},
"table-layout":
{
"fixed": 1,
"auto": 1
},
"text-decoration":
{
"none": 1,
"underline": 1,
"line-through": 1,
"blink": 1
},
"text-align":
{
"left": 1,
"right": 1,
"center": 1,
"justify": 1
},
"text-transform":
{
"capitalize": 1,
"uppercase": 1,
"lowercase": 1,
"none": 1
},
"top":
{
"px": 1,
"em": 1,
"%": 1
},
"vertical-align":
{
"top": 1,
"bottom": 1
},
"visibility":
{
"hidden": 1,
"visible": 1
},
"white-space":
{
"nowrap": 1,
"normal": 1,
"pre": 1,
"pre-line": 1,
"pre-wrap": 1
},
"width":
{
"px": 1,
"em": 1,
"%": 1
},
"word-spacing":
{
"normal": 1
},
"filter":
{
"alpha(opacity=$0100)": 1
},
"text-shadow":
{
"$02px 2px 2px #777": 1
},
"text-overflow":
{
"ellipsis-word": 1,
"clip": 1,
"ellipsis": 1
},
"transform":
{
"rotate($00deg)": 1,
"skew($00deg)": 1
},
"-moz-transform":
{
"rotate($00deg)": 1,
"skew($00deg)": 1
},
"-webkit-transform":
{
"rotate($00deg)": 1,
"skew($00deg)": 1
},
"背景":
{
...suppor_color,
"#$0": 1,
"颜色": 1,
"透明": 1,
"继承": 1,
"左侧": 1,
"滚动": 1,
"内容滚动": 1,
"固定": 1,
"默认值": 1,
"边界框": 1,
"填充框": 1,
"内容框": 1,
"地址": 1,
"无效": 1,
"线性渐变": 1,
"径向渐变": 1,
"重复线性渐变": 1,
"重复径向渐变": 1,
"重复": 1,
"y轴重复": 1,
"不重复": 1,
"x轴重复": 1,
"宽高覆盖缩放": 1,
"比例缩放图像": 1,
"自动": 1,
"长度": 1,
"模糊距离": 1,
"右侧": 1,
"顶部": 1,
"底部": 1,
"居中": 1
},
"-moz-border-radius": 1,
"-moz-border-radius-topright": 1,
"-moz-border-radius-bottomright": 1,
"-moz-border-radius-topleft": 1,
"-moz-border-radius-bottomleft": 1,
"-webkit-border-radius": 1,
"-webkit-border-top-right-radius": 1,
"-webkit-border-top-left-radius": 1,
"-webkit-border-bottom-right-radius": 1,
"-webkit-border-bottom-left-radius": 1,
"-moz-box-shadow": 1,
"-webkit-box-shadow": 1,
"背景-定位":
{
"滚动": 1,
"固定": 1,
"内容滚动": 1,
"默认值": 1,
"继承": 1
},
"背景-绘制":
{
"边界框": 1,
"填充框": 1,
"内容框": 1,
"默认值": 1,
"继承": 1
},
"背景-颜色":
{
...suppor_color,
"#$0": 1,
"透明": 1,
"fixed": 1,
"颜色": 1,
"继承": 1
},
"背景-图像":
{
"地址('/$0')": 1,
"继承": 1,
"无效": 1,
"线性渐变": 1,
"径向渐变": 1,
"重复线性渐变": 1,
"重复径向渐变": 1
},
"背景-起点":
{
"边界框": 1,
"填充框": 1,
"内容框": 1,
"继承": 1
},
"背景-位置":
{
"底部": 2,
"居中": 2,
"左侧": 2,
"右侧": 2,
"顶部": 2,
"inherit": 2
},
"背景-重复":
{
"重复": 1,
"x轴重复": 1,
"y轴重复": 1,
"不重复": 1,
"继承": 1
},
"背景-大小":
{
"宽高覆盖缩放": 1,
"比例缩放图像": 1,
"自动": 1,
"长度": 1
},
"边框":
{
"solid $0": 1,
"dashed $0": 1,
"dotted $0": 1,
...suppor_color,
"#$0": 1,
"宽度": 1,
"样式": 1,
"颜色": 1
},
"边框-底部":
{
"宽度": 1,
"样式": 1,
"颜色": 1
},
"边框-底部-颜色":
{
"颜色": 1,
"透明": 1,
"继承": 1
},
"边框-底部-样式":
{
"无效": 1,
"隐藏": 1,
"点线": 1,
"虚线": 1,
"双线": 1,
"凹槽": 1,
"实线": 1,
"垄线": 1,
"内嵌": 1,
"外凸": 1,
"继承": 1
},
"边框-底部-宽度":
{
"细边框": 1,
"中等": 1,
"粗边框": 1,
"长度": 1,
"继承": 1
},
"边框-颜色":
{
...suppor_color,
"#$0": 1,
"颜色": 1,
"透明": 1,
"继承": 1
},
"边框-左侧":
{
"宽度": 1,
"样式": 1,
"颜色": 1
},
"边框-左侧-颜色":
{
"颜色": 1,
"透明": 1,
"继承": 1
},
"边框-左侧-样式":
{
"无效": 1,
"隐藏": 1,
"点线": 1,
"虚线": 1,
"双线": 1,
"凹槽": 1,
"实线": 1,
"垄线": 1,
"内嵌": 1,
"外凸": 1
},
"边框-左侧-宽度":
{
"细边框": 1,
"中等": 1,
"粗边框": 1,
"长度": 1,
"继承": 1
},
"边框-右侧":
{
"宽度": 1,
"样式": 1,
"颜色": 1
},
"边框-右侧-颜色":
{
"颜色": 1,
"透明": 1,
"继承": 1
},
"边框-右侧-样式":
{
"无效": 1,
"隐藏": 1,
"点线": 1,
"虚线": 1,
"双线": 1,
"凹槽": 1,
"实线": 1,
"垄线": 1,
"内嵌": 1,
"外凸": 1
},
"边框-右侧-宽度":
{
"细边框": 1,
"中等": 1,
"粗边框": 1,
"长度": 1,
"继承": 1
},
"边框-样式":
{
"实线": 2,
"虚线": 2,
"点线": 2,
"双线": 2,
"凹槽": 2,
"隐藏": 2,
"inherit": 2,
"内嵌": 2,
"无效": 2,
"外凸": 2,
"ridged": 2,
"垄线": 1
},
"边框-顶部":
{
"宽度": 1,
"样式": 1,
"颜色": 1
},
"边框-顶部-颜色":
{
"颜色": 1,
"透明": 1,
"继承": 1
},
"边框-顶部-样式":
{
"无效": 1,
"隐藏": 1,
"点线": 1,
"虚线": 1,
"双线": 1,
"凹槽": 1,
"实线": 1,
"垄线": 1,
"内嵌": 1,
"外凸": 1
},
"边框-顶部-宽度":
{
"细边框": 1,
"中等": 1,
"粗边框": 1,
"长度": 1,
"继承": 1
},
"边框-宽度": 1,
"轮廓":
{
"继承": 1,
"轮廓颜色": 1,
"轮廓样式": 1,
"轮廓宽度": 1
},
"轮廓-颜色":
{
"颜色": 1,
"继承": 1
},
"轮廓-样式":
{
"无效": 1,
"点线": 1,
"虚线": 1,
"双线": 1,
"实线": 1,
"凹槽": 1,
"垄线": 1,
"内嵌": 1,
"外凸": 1,
"继承": 1
},
"轮廓-宽度":
{
"细边框": 1,
"中等": 1,
"粗边框": 1,
"长度": 1,
"继承": 1
},
"左下边框圆角":
{
"长度": 1,
"继承": 1
},
"右下边框圆角":
{
"长度": 1,
"继承": 1
},
"边框-图像": 1,
"边框-图像-超出": 1,
"边框-图像-重复": 1,
"边框-图像-偏移": 1,
"边框-图像-源": 1,
"边框-图像-宽度": 1,
"边框-圆角":
{
"长度": 1
},
"左上边框圆角":
{
"继承": 1,
"长度": 1
},
"右上边框圆角":
{
"长度": 1,
"继承": 1
},
"盒子-阴影":
{
"水平阴影位置": 1,
"垂直阴影位置": 1,
"模糊距离": 1,
"阴影尺寸": 1,
"颜色": 1,
"内嵌": 1
},
"弹性布局": 1,
"弹性布局-扩展":
{
"继承": 1,
"默认值": 1,
"数字": 1
},
"弹性布局-收缩": 1,
"弹性布局-长度": 1,
"弹性布局流": 1,
"弹性布局-方向":
{
"继承": 1,
"默认值": 1,
"水平显示": 1,
"水平显示倒序": 1,
"垂直显示": 1,
"垂直显示倒序": 1
},
"弹性布局-换行":
{
"不换行": 1,
"换行": 1,
"反向换行": 1,
"默认值": 1,
"继承": 1
},
"对齐-内容":
{
"默认值": 1,
"继承": 1,
"行首排列": 1,
"行尾排列": 1,
"居中": 1,
"两极间隔": 1,
"均分间隔": 1,
"周围间隔": 1
},
"对齐-项目":
{
"默认值": 1,
"继承": 1,
"行首排列": 1,
"行尾排列": 1,
"居中": 1,
"两极间隔": 1,
"均分间隔": 1,
"周围间隔": 1
},
"对齐-本项":
{
"默认值": 1,
"继承": 1,
"行首排列": 1,
"行尾排列": 1,
"居中": 1,
"两极间隔": 1,
"均分间隔": 1,
"周围间隔": 1
},
"内容对齐":
{
"默认值": 1,
"继承": 1,
"行首排列": 1,
"行尾排列": 1,
"居中": 1,
"两极间隔": 1,
"均分间隔": 1,
"周围间隔": 1
},
"顺序":
{
"默认值": 1,
"继承": 1,
"数字": 1
},
"动画":
{
"动画-名称": 1,
"动画-持续时间": 1,
"动画-速度曲线": 1,
"动画-延迟时间": 1,
"动画-播放次数": 1,
"动画-反向播放": 1,
"动画-播放状态": 1
},
"动画-名称":
{
"关键帧名称": 1,
"无效": 1
},
"动画-持续时间":
{
"时间": 1
},
"动画-速度曲线":
{
"匀速": 1,
"缓动": 1,
"缓开始": 1,
"缓结束": 1,
"缓开始缓结束": 1,
"步骤": 1,
"贝塞尔曲线n,n,n,n": 1
},
"动画-延迟时间":
{
"时间": 1
},
"动画-播放次数":
{
"数字": 1,
"无限次": 1
},
"动画-反向播放":
{
"正常": 1,
"反向播放": 1,
"交替播放": 1,
"反向交替播放": 1,
"默认值": 1,
"继承": 1
},
"动画-播放状态":
{
"暂停": 1,
"运行": 1
},
"溢出-x轴":
{
"隐藏": 1,
"可见": 1,
"自动": 1,
"滚动": 1,
"继承": 1
},
"溢出-y轴":
{
"隐藏": 1,
"可见": 1,
"自动": 1,
"滚动": 1,
"继承": 1
},
"不透明度":
{
"值": 1,
"继承": 1
},
"内边距":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1
},
"下内边距":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1
},
"左内边距":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1
},
"右内边距":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1
},
"上内边距":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1
},
"高度":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1,
"计算": 1
},
"最大-高度":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1,
"计算": 1
},
"最大-宽度":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1,
"计算": 1
},
"最小-高度":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1,
"计算": 1
},
"最小-宽度":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"继承": 1,
"计算": 1
},
"宽度":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1,
"计算": 1
},
"字体":
{
"字体-样式": 1,
"字体-粗细": 1,
"字体-大小/行高": 1,
"字体-组": 1
},
"字体-组":
{
"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,
"继承": 1,
"字体名称": 1
},
"字体-大小":
{
"px": 1,
"em": 1,
"%": 1,
"特小号": 1,
"加小号": 1,
"小号": 1,
"中等": 1,
"大号": 1,
"加大号": 1,
"特大号": 1,
"减小": 1,
"增大": 1,
"长度": 1,
"继承": 1
},
"字体-样式":
{
"斜体": 1,
"正常": 1,
"倾斜": 1,
"继承": 1
},
"字体-变形":
{
"正常": 1,
"小型大写字母": 1,
"继承": 1
},
"字体-粗细":
{
"粗体": 1,
"正常": 1,
"超粗体": 1,
"细体": 1,
"100": 1,
"200": 1,
"300": 1,
"400": 1,
"500": 1,
"600": 1,
"700": 1,
"800": 1,
"900": 1,
"继承": 1
},
"内容":
{
"属性值": 1,
"无效": 1,
"正常": 1,
"计数器值": 1,
"字符串": 1,
"前引号": 1,
"后引号": 1,
"移除前引号": 1,
"移除后引号": 1,
"地址": 1,
"继承": 1
},
"列表-样式":
{
"继承": 1,
"默认值": 1,
"列表-样式-类型": 1,
"列表-样式-位置": 1,
"列表-样式-图像": 1
},
"列表-样式-图像":
{
"继承": 1,
"地址": 1,
"无效": 1
},
"列表-样式-位置":
{
"内部": 1,
"外部": 1,
"继承": 1
},
"列表-样式-类型":
{
"无效": 1,
"实心圆": 1,
"空心圆": 1,
"实心方块": 1,
"小数": 1,
"数字十进制前置零": 1,
"小写罗马数字": 1,
"大写罗马数字": 1,
"小写希腊字母": 1,
"小写拉丁字母": 1,
"大写拉丁字母": 1,
"georgian": 1,
"小写英文字母": 1,
"大写英文字母": 1,
"希伯来编号": 1,
"亚美尼亚编号": 1,
"中文大写序号": 1,
"日文平假名字符": 1,
"日文片假名字符": 1,
"日文平假名序号": 1,
"日文片假名序号": 1
},
"外边距":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1
},
"下边距":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1
},
"左边距":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1
},
"右边距":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1
},
"上边距":
{
"px": 1,
"em": 1,
"%": 1,
"自动": 1,
"长度": 1,
"继承": 1
},
"列数":
{
"数字": 1,
"自动": 1
},
"列-间隔":
{
"长度": 1,
"正常": 1
},
"列-规则": 1,
"列-规则-颜色":
{
"颜色": 1
},
"列-规则-样式":
{
"无效": 1,
"隐藏": 1,
"点线": 1,
"虚线": 1,
"双线": 1,
"实线": 1,
"凹槽": 1,
"垄线": 1,
"内嵌": 1,
"外凸": 1
},
"列-规则-宽度":
{
"细边框": 1,
"中等": 1,
"粗边框": 1,
"长度": 1
},
"列-数量":
{
"无效": 1,
"所有": 1
},
"列-宽度":
{
"长度": 1,
"自动": 1
},
"列": 1,
"底部":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"自动": 1,
"继承": 1
},
"清除浮动":
{
"左侧": 1,
"右侧": 1,
"全部清除": 1,
"无效": 1,
"继承": 1
},
"光标":
{
"默认": 1,
"指针箭头": 1,
"移动箭头": 1,
"文本": 1,
"等待光标": 1,
"问号箭头": 1,
"progress": 1,
"向上箭头": 1,
"东北箭头": 1,
"向右箭头": 1,
"东南箭头": 1,
"向下箭头": 1,
"西南箭头": 1,
"向左箭头": 1,
"西北箭头": 1,
"地址": 1,
"自动": 1,
"十字线": 1
},
"显示模式":
{
"无效": 1,
"块级元素": 1,
"内联元素": 1,
"内联块元素": 1,
"表格单元格元素": 1,
"列表项元素": 1,
"表格元素": 1,
"内联表格元素": 1,
"表格内容组元素": 1,
"表格头组元素": 1,
"表格尾组元素": 1,
"表格行元素": 1,
"表格格式列组元素": 1,
"表格格式列元素": 1,
"表格标题元素": 1,
"继承": 1,
"-谷歌内核-盒子": 1,
"弹性布局": 1
},
"浮动":
{
"左侧": 1,
"右侧": 1,
"无效": 1,
"继承": 1
},
"左侧":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"自动": 1,
"继承": 1
},
"溢出":
{
"隐藏": 1,
"可见": 1,
"自动": 1,
"滚动": 1,
"继承": 1
},
"定位":
{
"绝对定位": 1,
"相对定位": 1,
"固定": 1,
"静态": 1,
"粘性定位": 1,
"默认值": 1
},
"右侧":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"自动": 1,
"继承": 1
},
"顶部":
{
"px": 1,
"em": 1,
"%": 1,
"长度": 1,
"自动": 1,
"继承": 1
},
"可见性":
{
"隐藏": 1,
"可见": 1,
"折叠": 1,
"继承": 1
},
"堆叠顺序":
{
"自动": 1,
"数字": 1,
"继承": 1
},
"边框-合并":
{
"折叠": 1,
"分离": 1,
"继承": 1
},
"边框-距离":
{
"继承": 1,
"长度": 1
},
"表格标题-位置":
{
"继承": 1,
"顶部": 1,
"底部": 1
},
"空-单元格":
{
"显示": 1,
"不显示": 1,
"继承": 1
},
"表格-布局":
{
"固定": 1,
"自动": 1,
"继承": 1
},
"文本颜色":
{
"颜色值-爱丽丝蓝": 1,
"颜色值-古董白": 1,
"颜色值-湖绿色": 1,
"颜色值-浅蓝色": 1,
"颜色值-蔚蓝色": 1,
"颜色值-米黄色": 1,
"颜色值-橘黄色": 1,
"颜色值-黑色": 1,
"颜色值-白杏色": 1,
"颜色值-蓝色": 1,
"颜色值-紫罗兰色": 1,
"颜色值-棕色": 1,
"颜色值-硬木色": 1,
"颜色值-军服蓝": 1,
"颜色值-黄绿色": 1,
"颜色值-巧克力色": 1,
"颜色值-珊瑚色": 1,
"颜色值-矢车菊蓝色": 1,
"颜色值-玉米色": 1,
"颜色值-绯红色": 1,
"颜色值-青色": 1,
"颜色值-深蓝色": 1,
"颜色值-深青色": 1,
"颜色值-暗金黄色": 1,
"颜色值-深灰色": 1,
"颜色值-深绿色": 1,
"颜色值-暗卡其色": 1,
"颜色值-深洋红色": 1,
"颜色值-暗橄榄绿": 1,
"颜色值-深橙色": 1,
"颜色值-暗兰花紫": 1,
"颜色值-深红色": 1,
"颜色值-暗肉色": 1,
"颜色值-暗海蓝色": 1,
"颜色值-暗灰蓝色": 1,
"颜色值-深石板灰": 1,
"颜色值-暗宝石绿": 1,
"颜色值-暗紫色": 1,
"颜色值-深粉红色": 1,
"颜色值-深天蓝色": 1,
"颜色值-暗灰色": 1,
"颜色值-闪兰色": 1,
"颜色值-砖红色": 1,
"颜色值-花白色": 1,
"颜色值-森林绿": 1,
"颜色值-紫红色": 1,
"颜色值-淡灰色": 1,
"颜色值-幽灵白": 1,
"颜色值-金色": 1,
"颜色值-金菊黄": 1,
"颜色值-灰色": 1,
"颜色值-绿色": 1,
"颜色值-绿黄色": 1,
"颜色值-蜜瓜色": 1,
"颜色值-艳粉色": 1,
"颜色值-印度红": 1,
"颜色值-靛蓝色": 1,
"颜色值-象牙色": 1,
"颜色值-卡其色": 1,
"颜色值-淡紫色": 1,
"颜色值-淡紫红": 1,
"颜色值-草绿色": 1,
"颜色值-柠檬绸色": 1,
"颜色值-淡蓝色": 1,
"颜色值-淡珊瑚色": 1,
"颜色值-浅青色": 1,
"颜色值-浅秋黄": 1,
"颜色值-浅灰色": 1,
"颜色值-浅绿色": 1,
"颜色值-浅粉色": 1,
"颜色值-浅肉色": 1,
"颜色值-浅海蓝色": 1,
"颜色值-浅天蓝色": 1,
"颜色值-浅石板灰": 1,
"颜色值-浅钢蓝色": 1,
"颜色值-浅黄色": 1,
"颜色值-青柠色": 1,
"颜色值-石灰绿": 1,
"颜色值-亚麻色": 1,
"颜色值-红紫色": 1,
"颜色值-褐红色": 1,
"颜色值-间绿色": 1,
"颜色值-中蓝色": 1,
"颜色值-中兰花紫": 1,
"颜色值-中紫色": 1,
"颜色值-间海蓝色": 1,
"颜色值-间暗蓝色": 1,
"颜色值-中春绿色": 1,
"颜色值-间绿宝石色": 1,
"颜色值-间紫罗兰色": 1,
"颜色值-中灰蓝色": 1,
"颜色值-薄荷色": 1,
"颜色值-浅玫瑰色": 1,
"颜色值-鹿皮色": 1,
"颜色值-纳瓦白": 1,
"颜色值-海军蓝": 1,
"颜色值-老花色": 1,
"颜色值-橄榄绿": 1,
"颜色值-褐绿色": 1,
"颜色值-橙色": 1,
"颜色值-橙红色": 1,
"颜色值-兰花紫": 1,
"颜色值-苍麒麟色": 1,
"颜色值-苍绿色": 1,
"颜色值-苍宝石绿": 1,
"颜色值-苍紫罗蓝色": 1,
"颜色值-番木色": 1,
"颜色值-桃色": 1,
"颜色值-秘鲁色": 1,
"颜色值-粉色": 1,
"颜色值-李子色": 1,
"颜色值-火药蓝": 1,
"颜色值-紫色": 1,
"颜色值-红色": 1,
"颜色值-玫瑰棕色": 1,
"颜色值-宝蓝色": 1,
"颜色值-马鞍棕色": 1,
"颜色值-鲑鱼肉色": 1,
"颜色值-沙棕色": 1,
"颜色值-海洋绿": 1,
"颜色值-贝壳白": 1,
"颜色值-黄土赭色": 1,
"颜色值-银白色": 1,
"颜色值-天蓝色": 1,
"颜色值-板岩蓝色": 1,
"颜色值-灰石色": 1,
"颜色值-雪色": 1,
"颜色值-春绿色": 1,
"颜色值-钢蓝色": 1,
"颜色值-棕黄色": 1,
"颜色值-水鸭色": 1,
"颜色值-蓟色": 1,
"颜色值-番茄色": 1,
"颜色值-绿松石色": 1,
"颜色值-蓝紫色": 1,
"颜色值-小麦色": 1,
"颜色值-白色": 1,
"颜色值-烟白色": 1,
"颜色值-黄色": 1,
"颜色值-嫩绿色": 1,
"颜色值-当前文本颜色": 1,
"颜色通道": 1
},
"文本方向":
{
"从左到右": 1,
"从右到左": 1,
"继承": 1
},
"字符间距":
{
"normal": 1
},
"行高":
{
"正常": 1,
"长度": 1,
"继承": 1
},
"文本-对齐":
{
"左侧": 1,
"右侧": 1,
"居中": 1,
"两端对齐": 1
},
"文本-装饰":
{
"无效": 1,
"下划线": 1,
"删除线": 1,
"blink": 1
},
"文本-缩进":
{
"长度": 1,
"继承": 1
},
"文本-大小写":
{
"首字母大写": 1,
"转大写": 1,
"转小写": 1,
"无效": 1,
"继承": 1
},
"垂直-对齐":
{
"顶部": 1,
"底部": 1,
"基线对齐": 1,
"下标对齐": 1,
"上标对齐": 1,
"文本顶端对齐": 1,
"文本底部对齐": 1,
"中部对齐": 1,
"长度": 1,
"继承": 1
},
"空格":
{
"不换行": 1,
"正常": 1,
"保留": 1,
"保留换行符": 1,
"保留-换行": 1,
"继承": 1
},
"单词-间距":
{
"正常": 1,
"长度": 1,
"继承": 1
},
"文本-尾行对齐": 1,
"文本-溢出":
{
"ellipsis-word": 1,
"裁剪": 1,
"省略号": 1,
"字符串": 1,
"默认值": 1,
"继承": 1
},
"文本-阴影":
{
"$02px 2px 2px #777": 1,
"水平阴影位置": 1,
"垂直阴影位置": 1,
"模糊距离": 1,
"颜色": 1
},
"换行规则":
{
"正常": 1,
"断行": 1,
"符号断行": 1
},
"自动换行":
{
"正常": 1,
"字内换行": 1
},
"转换":
{
"旋转($00deg)": 1,
"扭曲($00deg)": 1,
"无效": 1,
"矩阵": 1,
"矩阵3d": 1,
"平移": 1,
"平移x轴": 1,
"平移y轴": 1,
"缩放": 1,
"缩放x轴": 1,
"缩放y轴": 1,
"扭曲x轴": 1,
"扭曲y轴": 1,
"平移3d": 1,
"平移z轴": 1,
"缩放3d": 1,
"缩放z轴": 1,
"旋转3d": 1,
"旋转x轴": 1,
"旋转y轴": 1,
"旋转z轴": 1,
"透视视图": 1
},
"转换-基点": 1,
"转换-样式": 1,
"透视视图": 1,
"透视视图-位置": 1,
"背面-可见":
{
"可见": 1,
"隐藏": 1
},
"过渡": 1,
"过渡-属性":
{
"无效": 1,
"所有": 1,
"属性": 1
},
"过渡-持续时间":
{
"时间": 1
},
"过渡-速度曲线":
{
"匀速": 1,
"缓动": 1,
"缓开始": 1,
"缓结束": 1,
"缓开始缓结束": 1,
"贝塞尔曲线n,n,n,n": 1
},
"过渡-延迟":
{
"时间": 1
},
"网格": 1,
"盒子模型":
{
"内容框": 1,
"边界框": 1
},
"对象-适应":
{
"填充": 1,
"比例缩放图像": 1,
"宽高覆盖缩放": 1,
"无效": 1,
"比例缩小": 1,
"正常": 1,
"继承": 1
},
"网格模板列": 1,
"网格模板行": 1,
"网格模板区域": 1,
"网格行": 1,
"网格列": 1,
"网格间距": 1,
"鼠标移入": 1,
"元素后": 1,
"提示信息": 1,
"计算": 1,
"用户-选择":
{
"无效": 1,
"自动": 1,
"文本": 1,
"所有": 1
},
"鼠标-事件":
{
"自动": 1,
"无效": 1,
"默认值": 1,
"继承": 1
},
"获得焦点": 1,
"元素前": 1,
"子元素": 1,
"背景-模糊":
{
"无效": 1,
"模糊距离": 1
},
"填充": 1,
"默认链接": 1,
"已访问链接": 1,
"选中链接": 1,
"-谷歌内核-行数限制": 1,
"-谷歌内核-盒子排列":
{
"垂直排列": 1
},
"选中": 1,
"根元素": 1,
"原生外观":
{
"无效": 1
},
"进度条伪类": 1,
"进度条进度": 1,
"动画-结束状态":
{
"无效": 1,
"结束状态": 1,
"起始状态": 1,
"全部清除": 1
},
"计数器重置":
{
"无效": 1
},
"计数器增加":
{
"无效": 1
},
"计数器设置":
{
"无效": 1
}
};
var CssCompletions = function () {
};
(function () {
this.completionsDefined = false;
this.defineCompletions = function () {
if (document) {
var style = document.createElement('c').style;
for (var i in style) {
if (typeof style[i] !== 'string')
continue;
var name = i.replace(/[A-Z]/g, function (x) {
return '-' + x.toLowerCase();
});
if (!propertyMap.hasOwnProperty(name))
propertyMap[name] = 1;
}
}
this.completionsDefined = true;
};
this.getCompletions = function (state, session, pos, prefix) {
window.keyWordState = null;
if (!this.completionsDefined) {
this.defineCompletions();
}
var line = session.getLine(pos.row)
var prefixLine = line.substr(0, pos.column);
if (['ruleset', 'rulesetStyle'].includes(state) || session.$mode.$id == "ace/mode/scss") {
//console.log(prefixLine, /\{/.test(prefixLine));
if (state === 'rulesetStyle') {
prefixLine = prefixLine.match(/(style|行内样式)=[\S\s]+/g);
} else if (/\{/.test(line) && !/\{/.test(prefixLine)) {
return this.getTagCompletions(state, session, pos, prefix);
};
if (/[\w\u4e00-\u9fa5\-]:[^;]+$/.test(prefixLine)) {
window.keyWordState = "attr";
return this.getPropertyValueCompletions(state, session, pos, prefix);
} else {
window.keyWordState = "label";
return this.getPropertyCompletions(state, session, pos, prefix);
}
} else if (state === 'start' && /\{/.test(prefixLine) && !/\}/.test(prefixLine)) {
var lines = prefixLine.split(';');
prefixLine = lines[lines.length - 1];
if (/[\w\u4e00-\u9fa5\-]:[^;]+$/.test(prefixLine)) {
window.keyWordState = "attr";
return this.getPropertyValueCompletions(state, session, pos, prefix);
} else {
window.keyWordState = "label";
return this.getPropertyCompletions(state, session, pos, prefix);
}
}
if (/\}/.test(prefixLine)) {
return [];
}
return this.getTagCompletions(state, session, pos, prefix);
// return [];
};
/*
this.getCompletions = function (state, session, pos, prefix) {
window.keyWordState = null;
if (!this.completionsDefined) {
this.defineCompletions();
}
if (['ruleset', 'rulesetStyle'].includes(state) || session.$mode.$id == "ace/mode/scss") {
var line = session.getLine(pos.row)
var prefixLine = line.substr(0, pos.column);
if (state === 'rulesetStyle') {
prefixLine = prefixLine.match(/(style|行内样式)=[\S\s]+/g);
}
if (/\{/.test(line) && !/\{/.test(prefixLine)) {
return this.getTagCompletions(state, session, pos, prefix);
};
if (/[\w\u4e00-\u9fa5\-]:[^;]+$/.test(prefixLine)) {
// /([\w\-]+):[^:]*$/.test(line);
window.keyWordState = "attr";
return this.getPropertyValueCompletions(state, session, pos, prefix);
} else {
window.keyWordState = "label";
return this.getPropertyCompletions(state, session, pos, prefix);
}
}
return this.getTagCompletions(state, session, pos, prefix);
// return [];
};
*/
// 弹出标签和伪类
this.getTagCompletions = function (state, session, pos, prefix) {
let tags = require('ace/snippets').snippetManager.snippetMap.html;
let tagsArray = [];
if (/[\S\s]+?:/.test(prefix)) {
// 判断伪类
let css_snippetMap = require('ace/snippets').snippetManager.snippetMap.css;
prefix = prefix.replace(/:[\S\s]+/, ":");
css_snippetMap.forEach(v => {
if (v.p_name && v.p_name == "伪类") {
let captions = v.name;
if (captions) {
captions = captions.split("|").map(v => {
return prefix + v;
}).join("|");
}
tagsArray.push({
caption: captions,
title: v.title,
snippet: prefix + v.title,
meta: "class",
iconClass: " Ace-Tern-completion Ace-Tern-completion-class",
score: 1000000,
values: false
});
}
})
} else if (/^[\w\u4e00-\u9fa5]/.test(prefix)) {
// 标签
tags.forEach(function (tag) {
if (tag && tag["title"] && /<[\S\s]+>/.test(tag["title"])) {
let tagName = tag.title.replace(/<|>/g, "");
tagsArray.push({
caption: tag.name,
title: tagName,
snippet: tagName,
meta: "class",
iconClass: " Ace-Tern-completion Ace-Tern-completion-class",
score: 1000000,
values: false
});
};
})
}
return tagsArray;
}
this.getPropertyCompletions = function (state, session, pos, prefix) {
let css_snippetMap = require('ace/snippets').snippetManager.snippetMap?.css.filter(v => v.meta && v.meta === "label") || [];
var properties = [];
var properties2 = {};
if (state === "rulesetStyle" || state === "ruleset" || state === "start") {
properties = Object.keys(propertyMap);
css_snippetMap && css_snippetMap.forEach((v) => {
properties2[v.title] = JSON.parse(JSON.stringify(v));
properties.push(v);
});
}
return properties.map(function (property) {
let caption = property;
if (typeof property === "object") {
property = property.title;
}
let values = false;
if (property in propertyMap && typeof propertyMap[property] === "object") {
values = true
}
if (properties2[property]) {
properties2[property]["caption"] = properties2[property]["name"];
properties2[property]["snippet"] = properties2[property]["content"];
properties2[property]["meta"] = "attr";
properties2[property]["iconClass"] = " Ace-Tern-completion Ace-Tern-completion-attr";
properties2[property]["score"] = 1000000;
properties2[property]["values"] = values;
return properties2[property];
}
if (/[\u4E00-\u9FA5]/g.test(caption)) {
caption = property + '|' + pinyin_transliteration(property);
}
return {
caption: caption,
title: property,
snippet: property + ': $0;',
meta: "attr",
iconClass: " Ace-Tern-completion Ace-Tern-completion-attr",
score: 1000000,
values: values
};
});
};
this.getPropertyValueCompletions = function (state, session, pos, prefix) {
let css_snippetMap = require('ace/snippets').snippetManager.snippetMap.css;
var line = session.getLine(pos.row).substr(0, pos.column);
var property = (/([\w\u4e00-\u9fa5\-]+):[^:]*$/.exec(line) || {})[1];
if (!property)
return [];
var values = [];
if (property in propertyMap && typeof propertyMap[property] === "object") {
values = Object.keys(propertyMap[property]);
}
let values2 = {};
css_snippetMap && css_snippetMap.forEach((v) => {
if (v.p_name === property) {
values2[v.title] = JSON.parse(JSON.stringify(v));
if (state === "rulesetStyle" || state === "ruleset" || state === "start") {
values.push(v);
}
}
});
values = values.filter(v => {
return !values2[v]
});
window.attrValueParentName = property;
return values.map(function (value) {
if (typeof value === "object") {
value.meta = "attr";
value.score = 1000000;
return {
title: value.title,
caption: value.name,
p_snippet: property,
snippet: value.content,
explain: value.explain,
description: value.description,
scope: "css",
meta: "attr",
iconClass: " Ace-Tern-completion Ace-Tern-completion-value",
score: 1000000
};
}
let caption = value;
if (/[\u4E00-\u9FA5]/g.test(caption)) {
caption = value + '|' + pinyin_transliteration(value);
}
return {
caption: caption,
snippet: value,
p_snippet: property,
meta: "attr",
iconClass: " Ace-Tern-completion Ace-Tern-completion-attr",
score: 1000000
};
});
};
}).call(CssCompletions.prototype);
exports.CssCompletions = CssCompletions;
});
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";
var oop = require("../../lib/oop");
var Behaviour = require("../behaviour").Behaviour;
var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
var TokenIterator = require("../../token_iterator").TokenIterator;
var CssBehaviour = function () {
this.inherit(CstyleBehaviour);
this.add("colon", "insertion", function (state, action, editor, session, text) {
if (text === ':' && editor.selection.isEmpty()) {
var cursor = editor.getCursorPosition();
var iterator = new TokenIterator(session, cursor.row, cursor.column);
var token = iterator.getCurrentToken();
if (token && token.value.match(/\s+/)) {
token = iterator.stepBackward();
}
if (token && token.type === 'support.type') {
var line = session.doc.getLine(cursor.row);
var rightChar = line.substring(cursor.column, cursor.column + 1);
if (rightChar === ':') {
return {
text: '',
selection: [1, 1]
};
}
if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
return {
text: ':;',
selection: [1, 1]
};
}
}
}
});
this.add("colon", "deletion", function (state, action, editor, session, range) {
var selected = session.doc.getTextRange(range);
if (!range.isMultiLine() && selected === ':') {
var cursor = editor.getCursorPosition();
var iterator = new TokenIterator(session, cursor.row, cursor.column);
var token = iterator.getCurrentToken();
if (token && token.value.match(/\s+/)) {
token = iterator.stepBackward();
}
if (token && token.type === 'support.type') {
var line = session.doc.getLine(range.start.row);
var rightChar = line.substring(range.end.column, range.end.column + 1);
if (rightChar === ';') {
range.end.column++;
return range;
}
}
}
});
this.add("semicolon", "insertion", function (state, action, editor, session, text) {
if (text === ';' && editor.selection.isEmpty()) {
var cursor = editor.getCursorPosition();
var line = session.doc.getLine(cursor.row);
var rightChar = line.substring(cursor.column, cursor.column + 1);
if (rightChar === ';') {
return {
text: '',
selection: [1, 1]
};
}
}
});
this.add("!important", "insertion", function (state, action, editor, session, text) {
if (text === '!' && editor.selection.isEmpty()) {
var cursor = editor.getCursorPosition();
var line = session.doc.getLine(cursor.row);
if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
return {
text: '!important',
selection: [10, 10]
};
}
}
});
};
oop.inherits(CssBehaviour, CstyleBehaviour);
exports.CssBehaviour = CssBehaviour;
});
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";
var oop = require("../../lib/oop");
var Range = require("../../range").Range;
var BaseFoldMode = require("./fold_mode").FoldMode;
var FoldMode = exports.FoldMode = function (commentRegex) {
if (commentRegex) {
this.foldingStartMarker = new RegExp(
this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
);
this.foldingStopMarker = new RegExp(
this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
);
}
};
oop.inherits(FoldMode, BaseFoldMode);
(function () {
this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
this._getFoldWidgetBase = this.getFoldWidget;
this.getFoldWidget = function (session, foldStyle, row) {
var line = session.getLine(row);
if (this.singleLineBlockCommentRe.test(line)) {
if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
return "";
}
var fw = this._getFoldWidgetBase(session, foldStyle, row);
if (!fw && this.startRegionRe.test(line))
return "start"; // lineCommentRegionStart
return fw;
};
this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
var line = session.getLine(row);
if (this.startRegionRe.test(line))
return this.getCommentRegionBlock(session, line, row);
var match = line.match(this.foldingStartMarker);
if (match) {
var i = match.index;
if (match[1])
return this.openingBracketBlock(session, match[1], row, i);
var range = session.getCommentFoldRange(row, i + match[0].length, 1);
if (range && !range.isMultiLine()) {
if (forceMultiline) {
range = this.getSectionRange(session, row);
} else if (foldStyle != "all")
range = null;
}
return range;
}
if (foldStyle === "markbegin")
return;
var match = line.match(this.foldingStopMarker);
if (match) {
var i = match.index + match[0].length;
if (match[1])
return this.closingBracketBlock(session, match[1], row, i);
return session.getCommentFoldRange(row, i, -1);
}
};
this.getSectionRange = function (session, row) {
var line = session.getLine(row);
var startIndent = line.search(/\S/);
var startRow = row;
var startColumn = line.length;
row = row + 1;
var endRow = row;
var maxRow = session.getLength();
while (++row < maxRow) {
line = session.getLine(row);
var indent = line.search(/\S/);
if (indent === -1)
continue;
if (startIndent > indent)
break;
var subRange = this.getFoldWidgetRange(session, "all", row);
if (subRange) {
if (subRange.start.row <= startRow) {
break;
} else if (subRange.isMultiLine()) {
row = subRange.end.row;
} else if (startIndent == indent) {
break;
}
}
endRow = row;
}
return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
};
this.getCommentRegionBlock = function (session, line, row) {
var startColumn = line.search(/\s*$/);
var maxRow = session.getLength();
var startRow = row;
var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
var depth = 1;
while (++row < maxRow) {
line = session.getLine(row);
var m = re.exec(line);
if (!m) continue;
if (m[1]) depth--;
else depth++;
if (!depth) break;
}
var endRow = row;
if (endRow > startRow) {
return new Range(startRow, startColumn, endRow, line.length);
}
};
}).call(FoldMode.prototype);
});
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";
var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
var WorkerClient = require("../worker/worker_client").WorkerClient;
var CssCompletions = require("./css_completions").CssCompletions;
var CssBehaviour = require("./behaviour/css").CssBehaviour;
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
var Mode = function () {
this.HighlightRules = CssHighlightRules;
this.$outdent = new MatchingBraceOutdent();
this.$behaviour = new CssBehaviour();
this.$completer = new CssCompletions();
this.foldingRules = new CStyleFoldMode();
};
oop.inherits(Mode, TextMode);
(function () {
this.foldingRules = "cStyle";
this.blockComment = {
start: "/*",
end: "*/"
};
this.getNextLineIndent = function (state, line, tab) {
var indent = this.$getIndent(line);
var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
if (tokens.length && tokens[tokens.length - 1].type == "comment") {
return indent;
}
var match = line.match(/^.*\{\s*$/);
if (match) {
indent += tab;
}
return indent;
};
this.checkOutdent = function (state, line, input) {
return this.$outdent.checkOutdent(line, input);
};
this.autoOutdent = function (state, doc, row) {
this.$outdent.autoOutdent(doc, row);
};
this.getCompletions = function (state, session, pos, prefix) {
return this.$completer.getCompletions(state, session, pos, prefix);
};
this.createWorker = function (session) {
// var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
// worker.attachToDocument(session.getDocument());
// worker.on("annotate", function (e) {
// // session.setAnnotations(e.data);
// });
// worker.on("terminate", function () {
// session.clearAnnotations();
// });
// return worker;
};
this.$id = "ace/mode/css";
this.snippetFileId = "ace/snippets/css";
}).call(Mode.prototype);
exports.Mode = Mode;
});
(function () {
ace.require(["ace/mode/css"], function (m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();