@zohodesk/components 1.0.0-temp-114 → 1.0.0-temp-116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +1126 -1118
  2. package/assets/Appearance/dark/mode/darkMode.module.css +168 -168
  3. package/assets/Appearance/dark/themes/blue/blueDarkCTATheme.module.css +32 -32
  4. package/assets/Appearance/dark/themes/green/greenDarkCTATheme.module.css +32 -32
  5. package/assets/Appearance/dark/themes/orange/orangeDarkCTATheme.module.css +32 -32
  6. package/assets/Appearance/dark/themes/red/redDarkCTATheme.module.css +32 -32
  7. package/assets/Appearance/dark/themes/yellow/yellowDarkCTATheme.module.css +32 -32
  8. package/assets/Appearance/default/mode/defaultMode.module.css +164 -164
  9. package/assets/Appearance/default/themes/blue/blueDefaultCTATheme.module.css +32 -32
  10. package/assets/Appearance/default/themes/green/greenDefaultCTATheme.module.css +32 -32
  11. package/assets/Appearance/default/themes/orange/orangeDefaultCTATheme.module.css +32 -32
  12. package/assets/Appearance/default/themes/red/redDefaultCTATheme.module.css +32 -32
  13. package/assets/Appearance/default/themes/yellow/yellowDefaultCTATheme.module.css +32 -32
  14. package/assets/Appearance/pureDark/mode/pureDarkMode.module.css +170 -170
  15. package/assets/Appearance/pureDark/themes/blue/bluePureDarkCTATheme.module.css +32 -32
  16. package/assets/Appearance/pureDark/themes/green/greenPureDarkCTATheme.module.css +32 -32
  17. package/assets/Appearance/pureDark/themes/orange/orangePureDarkCTATheme.module.css +32 -32
  18. package/assets/Appearance/pureDark/themes/red/redPureDarkCTATheme.module.css +32 -32
  19. package/assets/Appearance/pureDark/themes/yellow/yellowPureDarkCTATheme.module.css +32 -32
  20. package/assets/Contrast/darkContrastLightness.module.css +25 -0
  21. package/assets/Contrast/defaultContrastLightness.module.css +25 -0
  22. package/assets/Contrast/pureDarkContrastLightness.module.css +25 -0
  23. package/css_error.log +5 -0
  24. package/docs/external/active-line.js +72 -72
  25. package/docs/external/autorefresh.js +47 -47
  26. package/docs/external/codemirror.js +9681 -9681
  27. package/docs/external/css/hopscotch.css +576 -576
  28. package/docs/external/css/styleGuide.css +1100 -1100
  29. package/docs/external/css.js +466 -466
  30. package/docs/external/designTokens.js +1 -1
  31. package/docs/external/foldcode.js +151 -151
  32. package/docs/external/format.js +129 -129
  33. package/docs/external/htmlmixed.js +84 -84
  34. package/docs/external/index.html +127 -127
  35. package/docs/external/javascript.js +422 -422
  36. package/docs/external/jsx.js +147 -147
  37. package/docs/external/matchbrackets.js +145 -145
  38. package/docs/external/xml.js +322 -322
  39. package/docs/package.json +41 -41
  40. package/docs/src/index.js +1311 -1311
  41. package/es/AppContainer/AppContainer.module.css +18 -18
  42. package/es/Avatar/Avatar.js +9 -9
  43. package/es/Avatar/Avatar.module.css +135 -135
  44. package/es/Avatar/__tests__/__snapshots__/Avatar.spec.js.snap +288 -288
  45. package/es/AvatarTeam/AvatarTeam.js +7 -7
  46. package/es/AvatarTeam/AvatarTeam.module.css +161 -161
  47. package/es/AvatarTeam/__tests__/__snapshots__/AvatarTeam.spec.js.snap +226 -226
  48. package/es/Button/Button.js +4 -4
  49. package/es/Button/Button.module.css +524 -524
  50. package/es/Button/__tests__/__snapshots__/Button.spec.js.snap +191 -191
  51. package/es/Button/props/defaultProps.js +2 -1
  52. package/es/Button/props/propTypes.js +2 -1
  53. package/es/Buttongroup/Buttongroup.js +1 -1
  54. package/es/Buttongroup/Buttongroup.module.css +89 -89
  55. package/es/Buttongroup/__test__/__snapshots__/Buttongroup.spec.js.snap +146 -146
  56. package/es/Card/Card.js +4 -4
  57. package/es/Card/Card.module.css +20 -20
  58. package/es/CheckBox/CheckBox.js +0 -0
  59. package/es/CheckBox/CheckBox.module.css +157 -157
  60. package/es/DateTime/CalendarView.js +0 -0
  61. package/es/DateTime/DateTime.js +0 -0
  62. package/es/DateTime/DateTime.module.css +235 -235
  63. package/es/DateTime/DateWidget.js +0 -0
  64. package/es/DateTime/DateWidget.module.css +38 -38
  65. package/es/DateTime/YearView.js +0 -0
  66. package/es/DateTime/YearView.module.css +98 -98
  67. package/es/DateTime/common.js +0 -0
  68. package/es/DateTime/index.js +0 -0
  69. package/es/DateTime/objectUtils.js +0 -0
  70. package/es/DateTime/typeChecker.js +0 -0
  71. package/es/DateTime/validator.js +0 -0
  72. package/es/DropBox/DropBox.js +0 -0
  73. package/es/DropBox/DropBox.module.css +406 -406
  74. package/es/DropBox/DropBoxPositionMapping.json +144 -144
  75. package/es/DropDown/DropDown.js +0 -0
  76. package/es/DropDown/DropDown.module.css +5 -5
  77. package/es/DropDown/DropDownHeading.js +0 -0
  78. package/es/DropDown/DropDownHeading.module.css +53 -53
  79. package/es/DropDown/DropDownItem.js +0 -0
  80. package/es/DropDown/DropDownItem.module.css +94 -94
  81. package/es/DropDown/DropDownSearch.js +0 -0
  82. package/es/DropDown/DropDownSearch.module.css +14 -14
  83. package/es/DropDown/DropDownSeparator.js +0 -0
  84. package/es/DropDown/DropDownSeparator.module.css +7 -7
  85. package/es/Heading/Heading.module.css +4 -4
  86. package/es/Label/Label.js +2 -2
  87. package/es/Label/Label.module.css +52 -52
  88. package/es/Label/LabelColors.module.css +20 -20
  89. package/es/Label/__tests__/__snapshots__/Label.spec.js.snap +101 -101
  90. package/es/Layout/Box.js +0 -0
  91. package/es/Layout/Container.js +0 -0
  92. package/es/Layout/Layout.module.css +335 -335
  93. package/es/Layout/utils.js +0 -0
  94. package/es/ListItem/ListItem.js +0 -0
  95. package/es/ListItem/ListItem.module.css +209 -209
  96. package/es/MultiSelect/AdvancedGroupMultiSelect.js +5 -5
  97. package/es/MultiSelect/MultiSelect.js +5 -5
  98. package/es/MultiSelect/MultiSelect.module.css +205 -205
  99. package/es/MultiSelect/MultiSelectWithAvatar.js +0 -0
  100. package/es/MultiSelect/SelectedOptions.module.css +15 -15
  101. package/es/MultiSelect/__tests__/MultiSelect.spec.js +0 -0
  102. package/es/PopOver/PopOver.module.css +8 -8
  103. package/es/Popup/Popup.js +0 -0
  104. package/es/Popup/PositionMapping.json +73 -73
  105. package/es/Radio/Radio.js +0 -0
  106. package/es/Radio/Radio.module.css +112 -112
  107. package/es/Responsive/CustomResponsive.js +0 -0
  108. package/es/ResponsiveDropBox/ResponsiveDropBox.module.css +6 -6
  109. package/es/Ribbon/Ribbon.js +0 -0
  110. package/es/Ribbon/Ribbon.module.css +376 -376
  111. package/es/Ribbon/__tests__/__snapshots__/Ribbon.spec.js.snap +163 -163
  112. package/es/RippleEffect/RippleEffect.module.css +92 -92
  113. package/es/Select/GroupSelect.js +0 -0
  114. package/es/Select/Select.js +0 -0
  115. package/es/Select/Select.module.css +108 -108
  116. package/es/Select/SelectWithAvatar.js +0 -0
  117. package/es/Select/SelectWithIcon.js +0 -0
  118. package/es/Select/__tests__/Select.spec.js +0 -0
  119. package/es/Stencils/Stencils.js +0 -0
  120. package/es/Stencils/Stencils.module.css +96 -96
  121. package/es/Stencils/__tests__/__snapshots__/Stencils.spec.js.snap +49 -49
  122. package/es/Switch/Switch.js +5 -7
  123. package/es/Switch/Switch.module.css +110 -110
  124. package/es/Tab/Tab.module.css +101 -101
  125. package/es/Tab/TabContent.module.css +4 -4
  126. package/es/Tab/Tabs.js +17 -17
  127. package/es/Tab/Tabs.module.css +140 -140
  128. package/es/Tag/Tag.js +8 -8
  129. package/es/Tag/Tag.module.css +254 -254
  130. package/es/TextBox/TextBox.js +0 -0
  131. package/es/TextBox/TextBox.module.css +157 -157
  132. package/es/TextBox/__tests__/__snapshots__/TextBox.spec.js.snap +127 -127
  133. package/es/TextBoxIcon/TextBoxIcon.js +0 -0
  134. package/es/TextBoxIcon/TextBoxIcon.module.css +78 -78
  135. package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +334 -334
  136. package/es/Textarea/Textarea.js +0 -0
  137. package/es/Textarea/Textarea.module.css +139 -139
  138. package/es/Textarea/__tests__/__snapshots__/Textarea.spec.js.snap +97 -97
  139. package/es/Tooltip/Tooltip.module.css +109 -109
  140. package/es/common/a11y.module.css +3 -3
  141. package/es/common/animation.module.css +624 -624
  142. package/es/common/avatarsizes.module.css +44 -44
  143. package/es/common/basic.module.css +33 -33
  144. package/es/common/basicReset.module.css +40 -40
  145. package/es/common/common.module.css +524 -524
  146. package/es/common/customscroll.module.css +89 -89
  147. package/es/common/reset.module.css +12 -12
  148. package/es/common/transition.module.css +146 -146
  149. package/es/deprecated/AdvancedMultiSelect.module.css +126 -126
  150. package/es/semantic/Button/semanticButton.module.css +9 -9
  151. package/es/utils/Common.js +0 -0
  152. package/es/utils/dropDownUtils.js +0 -0
  153. package/lib/AppContainer/AppContainer.module.css +18 -18
  154. package/lib/Avatar/Avatar.js +9 -9
  155. package/lib/Avatar/Avatar.module.css +135 -135
  156. package/lib/Avatar/__tests__/__snapshots__/Avatar.spec.js.snap +288 -288
  157. package/lib/AvatarTeam/AvatarTeam.js +7 -7
  158. package/lib/AvatarTeam/AvatarTeam.module.css +161 -161
  159. package/lib/AvatarTeam/__tests__/__snapshots__/AvatarTeam.spec.js.snap +226 -226
  160. package/lib/Button/Button.js +4 -4
  161. package/lib/Button/Button.module.css +524 -524
  162. package/lib/Button/__tests__/__snapshots__/Button.spec.js.snap +191 -191
  163. package/lib/Button/props/defaultProps.js +2 -1
  164. package/lib/Button/props/propTypes.js +2 -1
  165. package/lib/Buttongroup/Buttongroup.js +1 -1
  166. package/lib/Buttongroup/Buttongroup.module.css +89 -89
  167. package/lib/Buttongroup/__test__/__snapshots__/Buttongroup.spec.js.snap +146 -146
  168. package/lib/Card/Card.js +4 -4
  169. package/lib/Card/Card.module.css +20 -20
  170. package/lib/CheckBox/CheckBox.js +0 -0
  171. package/lib/CheckBox/CheckBox.module.css +157 -157
  172. package/lib/DateTime/CalendarView.js +0 -0
  173. package/lib/DateTime/DateTime.js +0 -0
  174. package/lib/DateTime/DateTime.module.css +235 -235
  175. package/lib/DateTime/DateWidget.js +0 -0
  176. package/lib/DateTime/DateWidget.module.css +38 -38
  177. package/lib/DateTime/YearView.js +0 -0
  178. package/lib/DateTime/YearView.module.css +98 -98
  179. package/lib/DateTime/common.js +0 -0
  180. package/lib/DateTime/index.js +0 -0
  181. package/lib/DateTime/objectUtils.js +0 -0
  182. package/lib/DateTime/typeChecker.js +0 -0
  183. package/lib/DateTime/validator.js +0 -0
  184. package/lib/DropBox/DropBox.js +0 -0
  185. package/lib/DropBox/DropBox.module.css +406 -406
  186. package/lib/DropBox/DropBoxPositionMapping.json +144 -144
  187. package/lib/DropDown/DropDown.js +0 -0
  188. package/lib/DropDown/DropDown.module.css +5 -5
  189. package/lib/DropDown/DropDownHeading.js +0 -0
  190. package/lib/DropDown/DropDownHeading.module.css +53 -53
  191. package/lib/DropDown/DropDownItem.js +0 -0
  192. package/lib/DropDown/DropDownItem.module.css +94 -94
  193. package/lib/DropDown/DropDownSearch.js +0 -0
  194. package/lib/DropDown/DropDownSearch.module.css +14 -14
  195. package/lib/DropDown/DropDownSeparator.js +0 -0
  196. package/lib/DropDown/DropDownSeparator.module.css +7 -7
  197. package/lib/Heading/Heading.module.css +4 -4
  198. package/lib/Label/Label.js +0 -0
  199. package/lib/Label/Label.module.css +52 -52
  200. package/lib/Label/LabelColors.module.css +20 -20
  201. package/lib/Label/__tests__/__snapshots__/Label.spec.js.snap +101 -101
  202. package/lib/Layout/Box.js +0 -0
  203. package/lib/Layout/Container.js +0 -0
  204. package/lib/Layout/Layout.module.css +335 -335
  205. package/lib/Layout/utils.js +0 -0
  206. package/lib/ListItem/ListItem.js +0 -0
  207. package/lib/ListItem/ListItem.module.css +209 -209
  208. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +5 -5
  209. package/lib/MultiSelect/MultiSelect.js +5 -5
  210. package/lib/MultiSelect/MultiSelect.module.css +205 -205
  211. package/lib/MultiSelect/MultiSelectWithAvatar.js +0 -0
  212. package/lib/MultiSelect/SelectedOptions.module.css +15 -15
  213. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +0 -0
  214. package/lib/PopOver/PopOver.module.css +8 -8
  215. package/lib/Popup/Popup.js +0 -0
  216. package/lib/Popup/PositionMapping.json +73 -73
  217. package/lib/Radio/Radio.js +0 -0
  218. package/lib/Radio/Radio.module.css +112 -112
  219. package/lib/Responsive/CustomResponsive.js +0 -0
  220. package/lib/ResponsiveDropBox/ResponsiveDropBox.module.css +6 -6
  221. package/lib/Ribbon/Ribbon.js +0 -0
  222. package/lib/Ribbon/Ribbon.module.css +376 -376
  223. package/lib/Ribbon/__tests__/__snapshots__/Ribbon.spec.js.snap +163 -163
  224. package/lib/RippleEffect/RippleEffect.module.css +92 -92
  225. package/lib/Select/GroupSelect.js +0 -0
  226. package/lib/Select/Select.js +0 -0
  227. package/lib/Select/Select.module.css +108 -108
  228. package/lib/Select/SelectWithAvatar.js +0 -0
  229. package/lib/Select/SelectWithIcon.js +0 -0
  230. package/lib/Select/__tests__/Select.spec.js +0 -0
  231. package/lib/Stencils/Stencils.js +0 -0
  232. package/lib/Stencils/Stencils.module.css +96 -96
  233. package/lib/Stencils/__tests__/__snapshots__/Stencils.spec.js.snap +49 -49
  234. package/lib/Switch/Switch.js +5 -7
  235. package/lib/Switch/Switch.module.css +110 -110
  236. package/lib/Tab/Tab.module.css +101 -101
  237. package/lib/Tab/TabContent.module.css +4 -4
  238. package/lib/Tab/Tabs.js +11 -11
  239. package/lib/Tab/Tabs.module.css +140 -140
  240. package/lib/Tag/Tag.js +8 -8
  241. package/lib/Tag/Tag.module.css +254 -254
  242. package/lib/TextBox/TextBox.js +0 -0
  243. package/lib/TextBox/TextBox.module.css +157 -157
  244. package/lib/TextBox/__tests__/__snapshots__/TextBox.spec.js.snap +127 -127
  245. package/lib/TextBoxIcon/TextBoxIcon.js +0 -0
  246. package/lib/TextBoxIcon/TextBoxIcon.module.css +78 -78
  247. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +334 -334
  248. package/lib/Textarea/Textarea.js +0 -0
  249. package/lib/Textarea/Textarea.module.css +139 -139
  250. package/lib/Textarea/__tests__/__snapshots__/Textarea.spec.js.snap +97 -97
  251. package/lib/Tooltip/Tooltip.module.css +109 -109
  252. package/lib/common/a11y.module.css +3 -3
  253. package/lib/common/animation.module.css +624 -624
  254. package/lib/common/avatarsizes.module.css +44 -44
  255. package/lib/common/basic.module.css +33 -33
  256. package/lib/common/basicReset.module.css +40 -40
  257. package/lib/common/common.module.css +524 -524
  258. package/lib/common/customscroll.module.css +89 -89
  259. package/lib/common/reset.module.css +12 -12
  260. package/lib/common/transition.module.css +146 -146
  261. package/lib/deprecated/AdvancedMultiSelect.module.css +126 -126
  262. package/lib/semantic/Button/semanticButton.module.css +9 -9
  263. package/lib/utils/Common.js +0 -0
  264. package/lib/utils/dropDownUtils.js +0 -0
  265. package/package.json +103 -98
@@ -1,466 +1,466 @@
1
- CodeMirror.defineMode("css", function(config) {
2
- var indentUnit = config.indentUnit, type;
3
-
4
- var atMediaTypes = keySet([
5
- "all", "aural", "braille", "handheld", "print", "projection", "screen",
6
- "tty", "tv", "embossed"
7
- ]);
8
-
9
- var atMediaFeatures = keySet([
10
- "width", "min-width", "max-width", "height", "min-height", "max-height",
11
- "device-width", "min-device-width", "max-device-width", "device-height",
12
- "min-device-height", "max-device-height", "aspect-ratio",
13
- "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio",
14
- "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color",
15
- "max-color", "color-index", "min-color-index", "max-color-index",
16
- "monochrome", "min-monochrome", "max-monochrome", "resolution",
17
- "min-resolution", "max-resolution", "scan", "grid"
18
- ]);
19
-
20
- var propertyKeywords = keySet([
21
- "align-content", "align-items", "align-self", "alignment-adjust",
22
- "alignment-baseline", "anchor-point", "animation", "animation-delay",
23
- "animation-direction", "animation-duration", "animation-iteration-count",
24
- "animation-name", "animation-play-state", "animation-timing-function",
25
- "appearance", "azimuth", "backface-visibility", "background",
26
- "background-attachment", "background-clip", "background-color",
27
- "background-image", "background-origin", "background-position",
28
- "background-repeat", "background-size", "baseline-shift", "binding",
29
- "bleed", "bookmark-label", "bookmark-level", "bookmark-state",
30
- "bookmark-target", "border", "border-bottom", "border-bottom-color",
31
- "border-bottom-left-radius", "border-bottom-right-radius",
32
- "border-bottom-style", "border-bottom-width", "border-collapse",
33
- "border-color", "border-image", "border-image-outset",
34
- "border-image-repeat", "border-image-slice", "border-image-source",
35
- "border-image-width", "border-left", "border-left-color",
36
- "border-left-style", "border-left-width", "border-radius", "border-right",
37
- "border-right-color", "border-right-style", "border-right-width",
38
- "border-spacing", "border-style", "border-top", "border-top-color",
39
- "border-top-left-radius", "border-top-right-radius", "border-top-style",
40
- "border-top-width", "border-width", "bottom", "box-decoration-break",
41
- "box-shadow", "box-sizing", "break-after", "break-before", "break-inside",
42
- "caption-side", "clear", "clip", "color", "color-profile", "column-count",
43
- "column-fill", "column-gap", "column-rule", "column-rule-color",
44
- "column-rule-style", "column-rule-width", "column-span", "column-width",
45
- "columns", "content", "counter-increment", "counter-reset", "crop", "cue",
46
- "cue-after", "cue-before", "cursor", "direction", "display",
47
- "dominant-baseline", "drop-initial-after-adjust",
48
- "drop-initial-after-align", "drop-initial-before-adjust",
49
- "drop-initial-before-align", "drop-initial-size", "drop-initial-value",
50
- "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis",
51
- "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap",
52
- "float", "float-offset", "font", "font-feature-settings", "font-family",
53
- "font-kerning", "font-language-override", "font-size", "font-size-adjust",
54
- "font-stretch", "font-style", "font-synthesis", "font-variant",
55
- "font-variant-alternates", "font-variant-caps", "font-variant-east-asian",
56
- "font-variant-ligatures", "font-variant-numeric", "font-variant-position",
57
- "font-weight", "grid-cell", "grid-column", "grid-column-align",
58
- "grid-column-sizing", "grid-column-span", "grid-columns", "grid-flow",
59
- "grid-row", "grid-row-align", "grid-row-sizing", "grid-row-span",
60
- "grid-rows", "grid-template", "hanging-punctuation", "height", "hyphens",
61
- "icon", "image-orientation", "image-rendering", "image-resolution",
62
- "inline-box-align", "justify-content", "left", "letter-spacing",
63
- "line-break", "line-height", "line-stacking", "line-stacking-ruby",
64
- "line-stacking-shift", "line-stacking-strategy", "list-style",
65
- "list-style-image", "list-style-position", "list-style-type", "margin",
66
- "margin-bottom", "margin-left", "margin-right", "margin-top",
67
- "marker-offset", "marks", "marquee-direction", "marquee-loop",
68
- "marquee-play-count", "marquee-speed", "marquee-style", "max-height",
69
- "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
70
- "nav-left", "nav-right", "nav-up", "opacity", "order", "orphans", "outline",
71
- "outline-color", "outline-offset", "outline-style", "outline-width",
72
- "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y",
73
- "padding", "padding-bottom", "padding-left", "padding-right", "padding-top",
74
- "page", "page-break-after", "page-break-before", "page-break-inside",
75
- "page-policy", "pause", "pause-after", "pause-before", "perspective",
76
- "perspective-origin", "pitch", "pitch-range", "play-during", "position",
77
- "presentation-level", "punctuation-trim", "quotes", "rendering-intent",
78
- "resize", "rest", "rest-after", "rest-before", "richness", "right",
79
- "rotation", "rotation-point", "ruby-align", "ruby-overhang",
80
- "ruby-position", "ruby-span", "size", "speak", "speak-as", "speak-header",
81
- "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set",
82
- "tab-size", "table-layout", "target", "target-name", "target-new",
83
- "target-position", "text-align", "text-align-last", "text-decoration",
84
- "text-decoration-color", "text-decoration-line", "text-decoration-skip",
85
- "text-decoration-style", "text-emphasis", "text-emphasis-color",
86
- "text-emphasis-position", "text-emphasis-style", "text-height",
87
- "text-indent", "text-justify", "text-outline", "text-shadow",
88
- "text-space-collapse", "text-transform", "text-underline-position",
89
- "text-wrap", "top", "transform", "transform-origin", "transform-style",
90
- "transition", "transition-delay", "transition-duration",
91
- "transition-property", "transition-timing-function", "unicode-bidi",
92
- "vertical-align", "visibility", "voice-balance", "voice-duration",
93
- "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
94
- "voice-volume", "volume", "white-space", "widows", "width", "word-break",
95
- "word-spacing", "word-wrap", "z-index"
96
- ]);
97
-
98
- var colorKeywords = keySet([
99
- "black", "silver", "gray", "white", "maroon", "red", "purple", "fuchsia",
100
- "green", "lime", "olive", "yellow", "navy", "blue", "teal", "aqua"
101
- ]);
102
-
103
- var valueKeywords = keySet([
104
- "above", "absolute", "activeborder", "activecaption", "afar",
105
- "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate",
106
- "always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
107
- "arabic-indic", "armenian", "asterisks", "auto", "avoid", "background",
108
- "backwards", "baseline", "below", "bidi-override", "binary", "bengali",
109
- "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
110
- "both", "bottom", "break-all", "break-word", "button", "button-bevel",
111
- "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian",
112
- "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
113
- "cell", "center", "checkbox", "circle", "cjk-earthly-branch",
114
- "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
115
- "col-resize", "collapse", "compact", "condensed", "contain", "content",
116
- "content-box", "context-menu", "continuous", "copy", "cover", "crop",
117
- "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal",
118
- "decimal-leading-zero", "default", "default-button", "destination-atop",
119
- "destination-in", "destination-out", "destination-over", "devanagari",
120
- "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted",
121
- "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
122
- "element", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
123
- "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
124
- "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
125
- "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
126
- "ethiopic-halehame-gez", "ethiopic-halehame-om-et",
127
- "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
128
- "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et",
129
- "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed",
130
- "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes",
131
- "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove",
132
- "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew",
133
- "help", "hidden", "hide", "higher", "highlight", "highlighttext",
134
- "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore",
135
- "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
136
- "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
137
- "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert",
138
- "italic", "justify", "kannada", "katakana", "katakana-iroha", "khmer",
139
- "landscape", "lao", "large", "larger", "left", "level", "lighter",
140
- "line-through", "linear", "lines", "list-item", "listbox", "listitem",
141
- "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
142
- "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
143
- "lower-roman", "lowercase", "ltr", "malayalam", "match",
144
- "media-controls-background", "media-current-time-display",
145
- "media-fullscreen-button", "media-mute-button", "media-play-button",
146
- "media-return-to-realtime-button", "media-rewind-button",
147
- "media-seek-back-button", "media-seek-forward-button", "media-slider",
148
- "media-sliderthumb", "media-time-remaining-display", "media-volume-slider",
149
- "media-volume-slider-container", "media-volume-sliderthumb", "medium",
150
- "menu", "menulist", "menulist-button", "menulist-text",
151
- "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
152
- "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize",
153
- "narrower", "navy", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
154
- "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
155
- "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote",
156
- "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
157
- "outside", "overlay", "overline", "padding", "padding-box", "painted",
158
- "paused", "persian", "plus-darker", "plus-lighter", "pointer", "portrait",
159
- "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button",
160
- "radio", "read-only", "read-write", "read-write-plaintext-only", "relative",
161
- "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba",
162
- "ridge", "right", "round", "row-resize", "rtl", "run-in", "running",
163
- "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield",
164
- "searchfield-cancel-button", "searchfield-decoration",
165
- "searchfield-results-button", "searchfield-results-decoration",
166
- "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama",
167
- "single", "skip-white-space", "slide", "slider-horizontal",
168
- "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
169
- "small", "small-caps", "small-caption", "smaller", "solid", "somali",
170
- "source-atop", "source-in", "source-out", "source-over", "space", "square",
171
- "square-button", "start", "static", "status-bar", "stretch", "stroke",
172
- "sub", "subpixel-antialiased", "super", "sw-resize", "table",
173
- "table-caption", "table-cell", "table-column", "table-column-group",
174
- "table-footer-group", "table-header-group", "table-row", "table-row-group",
175
- "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai",
176
- "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight",
177
- "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er",
178
- "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top",
179
- "transparent", "ultra-condensed", "ultra-expanded", "underline", "up",
180
- "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal",
181
- "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url",
182
- "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted",
183
- "visibleStroke", "visual", "w-resize", "wait", "wave", "white", "wider",
184
- "window", "windowframe", "windowtext", "x-large", "x-small", "xor",
185
- "xx-large", "xx-small", "yellow"
186
- ]);
187
-
188
- function keySet(array) { var keys = {}; for (var i = 0; i < array.length; ++i) keys[array[i]] = true; return keys; }
189
- function ret(style, tp) {type = tp; return style;}
190
-
191
- function tokenBase(stream, state) {
192
- var ch = stream.next();
193
- if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("def", stream.current());}
194
- else if (ch == "/" && stream.eat("*")) {
195
- state.tokenize = tokenCComment;
196
- return tokenCComment(stream, state);
197
- }
198
- else if (ch == "<" && stream.eat("!")) {
199
- state.tokenize = tokenSGMLComment;
200
- return tokenSGMLComment(stream, state);
201
- }
202
- else if (ch == "=") ret(null, "compare");
203
- else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare");
204
- else if (ch == "\"" || ch == "'") {
205
- state.tokenize = tokenString(ch);
206
- return state.tokenize(stream, state);
207
- }
208
- else if (ch == "#") {
209
- stream.eatWhile(/[\w\\\-]/);
210
- return ret("atom", "hash");
211
- }
212
- else if (ch == "!") {
213
- stream.match(/^\s*\w*/);
214
- return ret("keyword", "important");
215
- }
216
- else if (/\d/.test(ch)) {
217
- stream.eatWhile(/[\w.%]/);
218
- return ret("number", "unit");
219
- }
220
- else if (ch === "-") {
221
- if (/\d/.test(stream.peek())) {
222
- stream.eatWhile(/[\w.%]/);
223
- return ret("number", "unit");
224
- } else if (stream.match(/^[^-]+-/)) {
225
- return ret("meta", type);
226
- }
227
- }
228
- else if (/[,+>*\/]/.test(ch)) {
229
- return ret(null, "select-op");
230
- }
231
- else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
232
- return ret("qualifier", type);
233
- }
234
- else if (ch == ":") {
235
- return ret("operator", ch);
236
- }
237
- else if (/[;{}\[\]\(\)]/.test(ch)) {
238
- return ret(null, ch);
239
- }
240
- else if (ch == "u" && stream.match("rl(")) {
241
- stream.backUp(1);
242
- state.tokenize = tokenParenthesized;
243
- return ret("property", "variable");
244
- }
245
- else {
246
- stream.eatWhile(/[\w\\\-]/);
247
- return ret("property", "variable");
248
- }
249
- }
250
-
251
- function tokenCComment(stream, state) {
252
- var maybeEnd = false, ch;
253
- while ((ch = stream.next()) != null) {
254
- if (maybeEnd && ch == "/") {
255
- state.tokenize = tokenBase;
256
- break;
257
- }
258
- maybeEnd = (ch == "*");
259
- }
260
- return ret("comment", "comment");
261
- }
262
-
263
- function tokenSGMLComment(stream, state) {
264
- var dashes = 0, ch;
265
- while ((ch = stream.next()) != null) {
266
- if (dashes >= 2 && ch == ">") {
267
- state.tokenize = tokenBase;
268
- break;
269
- }
270
- dashes = (ch == "-") ? dashes + 1 : 0;
271
- }
272
- return ret("comment", "comment");
273
- }
274
-
275
- function tokenString(quote, nonInclusive) {
276
- return function(stream, state) {
277
- var escaped = false, ch;
278
- while ((ch = stream.next()) != null) {
279
- if (ch == quote && !escaped)
280
- break;
281
- escaped = !escaped && ch == "\\";
282
- }
283
- if (!escaped) {
284
- if (nonInclusive) stream.backUp(1);
285
- state.tokenize = tokenBase;
286
- }
287
- return ret("string", "string");
288
- };
289
- }
290
-
291
- function tokenParenthesized(stream, state) {
292
- stream.next(); // Must be '('
293
- if (!stream.match(/\s*[\"\']/, false))
294
- state.tokenize = tokenString(")", true);
295
- else
296
- state.tokenize = tokenBase;
297
- return ret(null, "(");
298
- }
299
-
300
- return {
301
- startState: function(base) {
302
- return {tokenize: tokenBase,
303
- baseIndent: base || 0,
304
- stack: []};
305
- },
306
-
307
- token: function(stream, state) {
308
-
309
- // Use these terms when applicable (see http://www.xanthir.com/blog/b4E50)
310
- //
311
- // rule** or **ruleset:
312
- // A selector + braces combo, or an at-rule.
313
- //
314
- // declaration block:
315
- // A sequence of declarations.
316
- //
317
- // declaration:
318
- // A property + colon + value combo.
319
- //
320
- // property value:
321
- // The entire value of a property.
322
- //
323
- // component value:
324
- // A single piece of a property value. Like the 5px in
325
- // text-shadow: 0 0 5px blue;. Can also refer to things that are
326
- // multiple terms, like the 1-4 terms that make up the background-size
327
- // portion of the background shorthand.
328
- //
329
- // term:
330
- // The basic unit of author-facing CSS, like a single number (5),
331
- // dimension (5px), string ("foo"), or function. Officially defined
332
- // by the CSS 2.1 grammar (look for the 'term' production)
333
- //
334
- //
335
- // simple selector:
336
- // A single atomic selector, like a type selector, an attr selector, a
337
- // class selector, etc.
338
- //
339
- // compound selector:
340
- // One or more simple selectors without a combinator. div.example is
341
- // compound, div > .example is not.
342
- //
343
- // complex selector:
344
- // One or more compound selectors chained with combinators.
345
- //
346
- // combinator:
347
- // The parts of selectors that express relationships. There are four
348
- // currently - the space (descendant combinator), the greater-than
349
- // bracket (child combinator), the plus sign (next sibling combinator),
350
- // and the tilda (following sibling combinator).
351
- //
352
- // sequence of selectors:
353
- // One or more of the named type of selector chained with commas.
354
-
355
- if (state.tokenize == tokenBase && stream.eatSpace()) return null;
356
- var style = state.tokenize(stream, state);
357
-
358
- // Changing style returned based on context
359
- var context = state.stack[state.stack.length-1];
360
- if (style == "property") {
361
- if (context == "propertyValue"){
362
- if (valueKeywords[stream.current()]) {
363
- style = "string-2";
364
- } else if (colorKeywords[stream.current()]) {
365
- style = "keyword";
366
- } else {
367
- style = "variable-2";
368
- }
369
- } else if (context == "rule") {
370
- if (!propertyKeywords[stream.current()]) {
371
- style += " error";
372
- }
373
- } else if (!context || context == "@media{") {
374
- style = "tag";
375
- } else if (context == "@media") {
376
- if (atMediaTypes[stream.current()]) {
377
- style = "attribute"; // Known attribute
378
- } else if (/^(only|not)$/i.test(stream.current())) {
379
- style = "keyword";
380
- } else if (stream.current().toLowerCase() == "and") {
381
- style = "error"; // "and" is only allowed in @mediaType
382
- } else if (atMediaFeatures[stream.current()]) {
383
- style = "error"; // Known property, should be in @mediaType(
384
- } else {
385
- // Unknown, expecting keyword or attribute, assuming attribute
386
- style = "attribute error";
387
- }
388
- } else if (context == "@mediaType") {
389
- if (atMediaTypes[stream.current()]) {
390
- style = "attribute";
391
- } else if (stream.current().toLowerCase() == "and") {
392
- style = "operator";
393
- } else if (/^(only|not)$/i.test(stream.current())) {
394
- style = "error"; // Only allowed in @media
395
- } else if (atMediaFeatures[stream.current()]) {
396
- style = "error"; // Known property, should be in parentheses
397
- } else {
398
- // Unknown attribute or property, but expecting property (preceded
399
- // by "and"). Should be in parentheses
400
- style = "error";
401
- }
402
- } else if (context == "@mediaType(") {
403
- if (propertyKeywords[stream.current()]) {
404
- // do nothing, remains "property"
405
- } else if (atMediaTypes[stream.current()]) {
406
- style = "error"; // Known property, should be in parentheses
407
- } else if (stream.current().toLowerCase() == "and") {
408
- style = "operator";
409
- } else if (/^(only|not)$/i.test(stream.current())) {
410
- style = "error"; // Only allowed in @media
411
- } else {
412
- style += " error";
413
- }
414
- } else {
415
- style = "error";
416
- }
417
- } else if (style == "atom") {
418
- if(!context || context == "@media{") {
419
- style = "builtin";
420
- } else if (context == "propertyValue") {
421
- if (!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) {
422
- style += " error";
423
- }
424
- } else {
425
- style = "error";
426
- }
427
- } else if (context == "@media" && type == "{") {
428
- style = "error";
429
- }
430
-
431
- // Push/pop context stack
432
- if (type == "{") {
433
- if (context == "@media" || context == "@mediaType") {
434
- state.stack.pop();
435
- state.stack[state.stack.length-1] = "@media{";
436
- }
437
- else state.stack.push("rule");
438
- }
439
- else if (type == "}") {
440
- state.stack.pop();
441
- if (context == "propertyValue") state.stack.pop();
442
- }
443
- else if (type == "@media") state.stack.push("@media");
444
- else if (context == "@media" && /\b(keyword|attribute)\b/.test(style))
445
- state.stack.push("@mediaType");
446
- else if (context == "@mediaType" && stream.current() == ",") state.stack.pop();
447
- else if (context == "@mediaType" && type == "(") state.stack.push("@mediaType(");
448
- else if (context == "@mediaType(" && type == ")") state.stack.pop();
449
- else if (context == "rule" && type == ":") state.stack.push("propertyValue");
450
- else if (context == "propertyValue" && type == ";") state.stack.pop();
451
- return style;
452
- },
453
-
454
- indent: function(state, textAfter) {
455
- var n = state.stack.length;
456
- if (/^\}/.test(textAfter))
457
- n -= state.stack[state.stack.length-1] == "propertyValue" ? 2 : 1;
458
- return state.baseIndent + n * indentUnit;
459
- },
460
-
461
- electricChars: "}"
462
- };
463
- });
464
-
465
- CodeMirror.defineMIME("text/css", "css");
466
-
1
+ CodeMirror.defineMode("css", function(config) {
2
+ var indentUnit = config.indentUnit, type;
3
+
4
+ var atMediaTypes = keySet([
5
+ "all", "aural", "braille", "handheld", "print", "projection", "screen",
6
+ "tty", "tv", "embossed"
7
+ ]);
8
+
9
+ var atMediaFeatures = keySet([
10
+ "width", "min-width", "max-width", "height", "min-height", "max-height",
11
+ "device-width", "min-device-width", "max-device-width", "device-height",
12
+ "min-device-height", "max-device-height", "aspect-ratio",
13
+ "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio",
14
+ "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color",
15
+ "max-color", "color-index", "min-color-index", "max-color-index",
16
+ "monochrome", "min-monochrome", "max-monochrome", "resolution",
17
+ "min-resolution", "max-resolution", "scan", "grid"
18
+ ]);
19
+
20
+ var propertyKeywords = keySet([
21
+ "align-content", "align-items", "align-self", "alignment-adjust",
22
+ "alignment-baseline", "anchor-point", "animation", "animation-delay",
23
+ "animation-direction", "animation-duration", "animation-iteration-count",
24
+ "animation-name", "animation-play-state", "animation-timing-function",
25
+ "appearance", "azimuth", "backface-visibility", "background",
26
+ "background-attachment", "background-clip", "background-color",
27
+ "background-image", "background-origin", "background-position",
28
+ "background-repeat", "background-size", "baseline-shift", "binding",
29
+ "bleed", "bookmark-label", "bookmark-level", "bookmark-state",
30
+ "bookmark-target", "border", "border-bottom", "border-bottom-color",
31
+ "border-bottom-left-radius", "border-bottom-right-radius",
32
+ "border-bottom-style", "border-bottom-width", "border-collapse",
33
+ "border-color", "border-image", "border-image-outset",
34
+ "border-image-repeat", "border-image-slice", "border-image-source",
35
+ "border-image-width", "border-left", "border-left-color",
36
+ "border-left-style", "border-left-width", "border-radius", "border-right",
37
+ "border-right-color", "border-right-style", "border-right-width",
38
+ "border-spacing", "border-style", "border-top", "border-top-color",
39
+ "border-top-left-radius", "border-top-right-radius", "border-top-style",
40
+ "border-top-width", "border-width", "bottom", "box-decoration-break",
41
+ "box-shadow", "box-sizing", "break-after", "break-before", "break-inside",
42
+ "caption-side", "clear", "clip", "color", "color-profile", "column-count",
43
+ "column-fill", "column-gap", "column-rule", "column-rule-color",
44
+ "column-rule-style", "column-rule-width", "column-span", "column-width",
45
+ "columns", "content", "counter-increment", "counter-reset", "crop", "cue",
46
+ "cue-after", "cue-before", "cursor", "direction", "display",
47
+ "dominant-baseline", "drop-initial-after-adjust",
48
+ "drop-initial-after-align", "drop-initial-before-adjust",
49
+ "drop-initial-before-align", "drop-initial-size", "drop-initial-value",
50
+ "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis",
51
+ "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap",
52
+ "float", "float-offset", "font", "font-feature-settings", "font-family",
53
+ "font-kerning", "font-language-override", "font-size", "font-size-adjust",
54
+ "font-stretch", "font-style", "font-synthesis", "font-variant",
55
+ "font-variant-alternates", "font-variant-caps", "font-variant-east-asian",
56
+ "font-variant-ligatures", "font-variant-numeric", "font-variant-position",
57
+ "font-weight", "grid-cell", "grid-column", "grid-column-align",
58
+ "grid-column-sizing", "grid-column-span", "grid-columns", "grid-flow",
59
+ "grid-row", "grid-row-align", "grid-row-sizing", "grid-row-span",
60
+ "grid-rows", "grid-template", "hanging-punctuation", "height", "hyphens",
61
+ "icon", "image-orientation", "image-rendering", "image-resolution",
62
+ "inline-box-align", "justify-content", "left", "letter-spacing",
63
+ "line-break", "line-height", "line-stacking", "line-stacking-ruby",
64
+ "line-stacking-shift", "line-stacking-strategy", "list-style",
65
+ "list-style-image", "list-style-position", "list-style-type", "margin",
66
+ "margin-bottom", "margin-left", "margin-right", "margin-top",
67
+ "marker-offset", "marks", "marquee-direction", "marquee-loop",
68
+ "marquee-play-count", "marquee-speed", "marquee-style", "max-height",
69
+ "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
70
+ "nav-left", "nav-right", "nav-up", "opacity", "order", "orphans", "outline",
71
+ "outline-color", "outline-offset", "outline-style", "outline-width",
72
+ "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y",
73
+ "padding", "padding-bottom", "padding-left", "padding-right", "padding-top",
74
+ "page", "page-break-after", "page-break-before", "page-break-inside",
75
+ "page-policy", "pause", "pause-after", "pause-before", "perspective",
76
+ "perspective-origin", "pitch", "pitch-range", "play-during", "position",
77
+ "presentation-level", "punctuation-trim", "quotes", "rendering-intent",
78
+ "resize", "rest", "rest-after", "rest-before", "richness", "right",
79
+ "rotation", "rotation-point", "ruby-align", "ruby-overhang",
80
+ "ruby-position", "ruby-span", "size", "speak", "speak-as", "speak-header",
81
+ "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set",
82
+ "tab-size", "table-layout", "target", "target-name", "target-new",
83
+ "target-position", "text-align", "text-align-last", "text-decoration",
84
+ "text-decoration-color", "text-decoration-line", "text-decoration-skip",
85
+ "text-decoration-style", "text-emphasis", "text-emphasis-color",
86
+ "text-emphasis-position", "text-emphasis-style", "text-height",
87
+ "text-indent", "text-justify", "text-outline", "text-shadow",
88
+ "text-space-collapse", "text-transform", "text-underline-position",
89
+ "text-wrap", "top", "transform", "transform-origin", "transform-style",
90
+ "transition", "transition-delay", "transition-duration",
91
+ "transition-property", "transition-timing-function", "unicode-bidi",
92
+ "vertical-align", "visibility", "voice-balance", "voice-duration",
93
+ "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
94
+ "voice-volume", "volume", "white-space", "widows", "width", "word-break",
95
+ "word-spacing", "word-wrap", "z-index"
96
+ ]);
97
+
98
+ var colorKeywords = keySet([
99
+ "black", "silver", "gray", "white", "maroon", "red", "purple", "fuchsia",
100
+ "green", "lime", "olive", "yellow", "navy", "blue", "teal", "aqua"
101
+ ]);
102
+
103
+ var valueKeywords = keySet([
104
+ "above", "absolute", "activeborder", "activecaption", "afar",
105
+ "after-white-space", "ahead", "alias", "all", "all-scroll", "alternate",
106
+ "always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
107
+ "arabic-indic", "armenian", "asterisks", "auto", "avoid", "background",
108
+ "backwards", "baseline", "below", "bidi-override", "binary", "bengali",
109
+ "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
110
+ "both", "bottom", "break-all", "break-word", "button", "button-bevel",
111
+ "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian",
112
+ "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
113
+ "cell", "center", "checkbox", "circle", "cjk-earthly-branch",
114
+ "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
115
+ "col-resize", "collapse", "compact", "condensed", "contain", "content",
116
+ "content-box", "context-menu", "continuous", "copy", "cover", "crop",
117
+ "cross", "crosshair", "currentcolor", "cursive", "dashed", "decimal",
118
+ "decimal-leading-zero", "default", "default-button", "destination-atop",
119
+ "destination-in", "destination-out", "destination-over", "devanagari",
120
+ "disc", "discard", "document", "dot-dash", "dot-dot-dash", "dotted",
121
+ "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
122
+ "element", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
123
+ "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
124
+ "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
125
+ "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
126
+ "ethiopic-halehame-gez", "ethiopic-halehame-om-et",
127
+ "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
128
+ "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et",
129
+ "ethiopic-halehame-tig", "ew-resize", "expanded", "extra-condensed",
130
+ "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes",
131
+ "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove",
132
+ "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew",
133
+ "help", "hidden", "hide", "higher", "highlight", "highlighttext",
134
+ "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore",
135
+ "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
136
+ "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
137
+ "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert",
138
+ "italic", "justify", "kannada", "katakana", "katakana-iroha", "khmer",
139
+ "landscape", "lao", "large", "larger", "left", "level", "lighter",
140
+ "line-through", "linear", "lines", "list-item", "listbox", "listitem",
141
+ "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
142
+ "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
143
+ "lower-roman", "lowercase", "ltr", "malayalam", "match",
144
+ "media-controls-background", "media-current-time-display",
145
+ "media-fullscreen-button", "media-mute-button", "media-play-button",
146
+ "media-return-to-realtime-button", "media-rewind-button",
147
+ "media-seek-back-button", "media-seek-forward-button", "media-slider",
148
+ "media-sliderthumb", "media-time-remaining-display", "media-volume-slider",
149
+ "media-volume-slider-container", "media-volume-sliderthumb", "medium",
150
+ "menu", "menulist", "menulist-button", "menulist-text",
151
+ "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
152
+ "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize",
153
+ "narrower", "navy", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
154
+ "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
155
+ "ns-resize", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote",
156
+ "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
157
+ "outside", "overlay", "overline", "padding", "padding-box", "painted",
158
+ "paused", "persian", "plus-darker", "plus-lighter", "pointer", "portrait",
159
+ "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button",
160
+ "radio", "read-only", "read-write", "read-write-plaintext-only", "relative",
161
+ "repeat", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba",
162
+ "ridge", "right", "round", "row-resize", "rtl", "run-in", "running",
163
+ "s-resize", "sans-serif", "scroll", "scrollbar", "se-resize", "searchfield",
164
+ "searchfield-cancel-button", "searchfield-decoration",
165
+ "searchfield-results-button", "searchfield-results-decoration",
166
+ "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama",
167
+ "single", "skip-white-space", "slide", "slider-horizontal",
168
+ "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
169
+ "small", "small-caps", "small-caption", "smaller", "solid", "somali",
170
+ "source-atop", "source-in", "source-out", "source-over", "space", "square",
171
+ "square-button", "start", "static", "status-bar", "stretch", "stroke",
172
+ "sub", "subpixel-antialiased", "super", "sw-resize", "table",
173
+ "table-caption", "table-cell", "table-column", "table-column-group",
174
+ "table-footer-group", "table-header-group", "table-row", "table-row-group",
175
+ "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai",
176
+ "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight",
177
+ "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er",
178
+ "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top",
179
+ "transparent", "ultra-condensed", "ultra-expanded", "underline", "up",
180
+ "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal",
181
+ "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url",
182
+ "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted",
183
+ "visibleStroke", "visual", "w-resize", "wait", "wave", "white", "wider",
184
+ "window", "windowframe", "windowtext", "x-large", "x-small", "xor",
185
+ "xx-large", "xx-small", "yellow"
186
+ ]);
187
+
188
+ function keySet(array) { var keys = {}; for (var i = 0; i < array.length; ++i) keys[array[i]] = true; return keys; }
189
+ function ret(style, tp) {type = tp; return style;}
190
+
191
+ function tokenBase(stream, state) {
192
+ var ch = stream.next();
193
+ if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("def", stream.current());}
194
+ else if (ch == "/" && stream.eat("*")) {
195
+ state.tokenize = tokenCComment;
196
+ return tokenCComment(stream, state);
197
+ }
198
+ else if (ch == "<" && stream.eat("!")) {
199
+ state.tokenize = tokenSGMLComment;
200
+ return tokenSGMLComment(stream, state);
201
+ }
202
+ else if (ch == "=") ret(null, "compare");
203
+ else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare");
204
+ else if (ch == "\"" || ch == "'") {
205
+ state.tokenize = tokenString(ch);
206
+ return state.tokenize(stream, state);
207
+ }
208
+ else if (ch == "#") {
209
+ stream.eatWhile(/[\w\\\-]/);
210
+ return ret("atom", "hash");
211
+ }
212
+ else if (ch == "!") {
213
+ stream.match(/^\s*\w*/);
214
+ return ret("keyword", "important");
215
+ }
216
+ else if (/\d/.test(ch)) {
217
+ stream.eatWhile(/[\w.%]/);
218
+ return ret("number", "unit");
219
+ }
220
+ else if (ch === "-") {
221
+ if (/\d/.test(stream.peek())) {
222
+ stream.eatWhile(/[\w.%]/);
223
+ return ret("number", "unit");
224
+ } else if (stream.match(/^[^-]+-/)) {
225
+ return ret("meta", type);
226
+ }
227
+ }
228
+ else if (/[,+>*\/]/.test(ch)) {
229
+ return ret(null, "select-op");
230
+ }
231
+ else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
232
+ return ret("qualifier", type);
233
+ }
234
+ else if (ch == ":") {
235
+ return ret("operator", ch);
236
+ }
237
+ else if (/[;{}\[\]\(\)]/.test(ch)) {
238
+ return ret(null, ch);
239
+ }
240
+ else if (ch == "u" && stream.match("rl(")) {
241
+ stream.backUp(1);
242
+ state.tokenize = tokenParenthesized;
243
+ return ret("property", "variable");
244
+ }
245
+ else {
246
+ stream.eatWhile(/[\w\\\-]/);
247
+ return ret("property", "variable");
248
+ }
249
+ }
250
+
251
+ function tokenCComment(stream, state) {
252
+ var maybeEnd = false, ch;
253
+ while ((ch = stream.next()) != null) {
254
+ if (maybeEnd && ch == "/") {
255
+ state.tokenize = tokenBase;
256
+ break;
257
+ }
258
+ maybeEnd = (ch == "*");
259
+ }
260
+ return ret("comment", "comment");
261
+ }
262
+
263
+ function tokenSGMLComment(stream, state) {
264
+ var dashes = 0, ch;
265
+ while ((ch = stream.next()) != null) {
266
+ if (dashes >= 2 && ch == ">") {
267
+ state.tokenize = tokenBase;
268
+ break;
269
+ }
270
+ dashes = (ch == "-") ? dashes + 1 : 0;
271
+ }
272
+ return ret("comment", "comment");
273
+ }
274
+
275
+ function tokenString(quote, nonInclusive) {
276
+ return function(stream, state) {
277
+ var escaped = false, ch;
278
+ while ((ch = stream.next()) != null) {
279
+ if (ch == quote && !escaped)
280
+ break;
281
+ escaped = !escaped && ch == "\\";
282
+ }
283
+ if (!escaped) {
284
+ if (nonInclusive) stream.backUp(1);
285
+ state.tokenize = tokenBase;
286
+ }
287
+ return ret("string", "string");
288
+ };
289
+ }
290
+
291
+ function tokenParenthesized(stream, state) {
292
+ stream.next(); // Must be '('
293
+ if (!stream.match(/\s*[\"\']/, false))
294
+ state.tokenize = tokenString(")", true);
295
+ else
296
+ state.tokenize = tokenBase;
297
+ return ret(null, "(");
298
+ }
299
+
300
+ return {
301
+ startState: function(base) {
302
+ return {tokenize: tokenBase,
303
+ baseIndent: base || 0,
304
+ stack: []};
305
+ },
306
+
307
+ token: function(stream, state) {
308
+
309
+ // Use these terms when applicable (see http://www.xanthir.com/blog/b4E50)
310
+ //
311
+ // rule** or **ruleset:
312
+ // A selector + braces combo, or an at-rule.
313
+ //
314
+ // declaration block:
315
+ // A sequence of declarations.
316
+ //
317
+ // declaration:
318
+ // A property + colon + value combo.
319
+ //
320
+ // property value:
321
+ // The entire value of a property.
322
+ //
323
+ // component value:
324
+ // A single piece of a property value. Like the 5px in
325
+ // text-shadow: 0 0 5px blue;. Can also refer to things that are
326
+ // multiple terms, like the 1-4 terms that make up the background-size
327
+ // portion of the background shorthand.
328
+ //
329
+ // term:
330
+ // The basic unit of author-facing CSS, like a single number (5),
331
+ // dimension (5px), string ("foo"), or function. Officially defined
332
+ // by the CSS 2.1 grammar (look for the 'term' production)
333
+ //
334
+ //
335
+ // simple selector:
336
+ // A single atomic selector, like a type selector, an attr selector, a
337
+ // class selector, etc.
338
+ //
339
+ // compound selector:
340
+ // One or more simple selectors without a combinator. div.example is
341
+ // compound, div > .example is not.
342
+ //
343
+ // complex selector:
344
+ // One or more compound selectors chained with combinators.
345
+ //
346
+ // combinator:
347
+ // The parts of selectors that express relationships. There are four
348
+ // currently - the space (descendant combinator), the greater-than
349
+ // bracket (child combinator), the plus sign (next sibling combinator),
350
+ // and the tilda (following sibling combinator).
351
+ //
352
+ // sequence of selectors:
353
+ // One or more of the named type of selector chained with commas.
354
+
355
+ if (state.tokenize == tokenBase && stream.eatSpace()) return null;
356
+ var style = state.tokenize(stream, state);
357
+
358
+ // Changing style returned based on context
359
+ var context = state.stack[state.stack.length-1];
360
+ if (style == "property") {
361
+ if (context == "propertyValue"){
362
+ if (valueKeywords[stream.current()]) {
363
+ style = "string-2";
364
+ } else if (colorKeywords[stream.current()]) {
365
+ style = "keyword";
366
+ } else {
367
+ style = "variable-2";
368
+ }
369
+ } else if (context == "rule") {
370
+ if (!propertyKeywords[stream.current()]) {
371
+ style += " error";
372
+ }
373
+ } else if (!context || context == "@media{") {
374
+ style = "tag";
375
+ } else if (context == "@media") {
376
+ if (atMediaTypes[stream.current()]) {
377
+ style = "attribute"; // Known attribute
378
+ } else if (/^(only|not)$/i.test(stream.current())) {
379
+ style = "keyword";
380
+ } else if (stream.current().toLowerCase() == "and") {
381
+ style = "error"; // "and" is only allowed in @mediaType
382
+ } else if (atMediaFeatures[stream.current()]) {
383
+ style = "error"; // Known property, should be in @mediaType(
384
+ } else {
385
+ // Unknown, expecting keyword or attribute, assuming attribute
386
+ style = "attribute error";
387
+ }
388
+ } else if (context == "@mediaType") {
389
+ if (atMediaTypes[stream.current()]) {
390
+ style = "attribute";
391
+ } else if (stream.current().toLowerCase() == "and") {
392
+ style = "operator";
393
+ } else if (/^(only|not)$/i.test(stream.current())) {
394
+ style = "error"; // Only allowed in @media
395
+ } else if (atMediaFeatures[stream.current()]) {
396
+ style = "error"; // Known property, should be in parentheses
397
+ } else {
398
+ // Unknown attribute or property, but expecting property (preceded
399
+ // by "and"). Should be in parentheses
400
+ style = "error";
401
+ }
402
+ } else if (context == "@mediaType(") {
403
+ if (propertyKeywords[stream.current()]) {
404
+ // do nothing, remains "property"
405
+ } else if (atMediaTypes[stream.current()]) {
406
+ style = "error"; // Known property, should be in parentheses
407
+ } else if (stream.current().toLowerCase() == "and") {
408
+ style = "operator";
409
+ } else if (/^(only|not)$/i.test(stream.current())) {
410
+ style = "error"; // Only allowed in @media
411
+ } else {
412
+ style += " error";
413
+ }
414
+ } else {
415
+ style = "error";
416
+ }
417
+ } else if (style == "atom") {
418
+ if(!context || context == "@media{") {
419
+ style = "builtin";
420
+ } else if (context == "propertyValue") {
421
+ if (!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) {
422
+ style += " error";
423
+ }
424
+ } else {
425
+ style = "error";
426
+ }
427
+ } else if (context == "@media" && type == "{") {
428
+ style = "error";
429
+ }
430
+
431
+ // Push/pop context stack
432
+ if (type == "{") {
433
+ if (context == "@media" || context == "@mediaType") {
434
+ state.stack.pop();
435
+ state.stack[state.stack.length-1] = "@media{";
436
+ }
437
+ else state.stack.push("rule");
438
+ }
439
+ else if (type == "}") {
440
+ state.stack.pop();
441
+ if (context == "propertyValue") state.stack.pop();
442
+ }
443
+ else if (type == "@media") state.stack.push("@media");
444
+ else if (context == "@media" && /\b(keyword|attribute)\b/.test(style))
445
+ state.stack.push("@mediaType");
446
+ else if (context == "@mediaType" && stream.current() == ",") state.stack.pop();
447
+ else if (context == "@mediaType" && type == "(") state.stack.push("@mediaType(");
448
+ else if (context == "@mediaType(" && type == ")") state.stack.pop();
449
+ else if (context == "rule" && type == ":") state.stack.push("propertyValue");
450
+ else if (context == "propertyValue" && type == ";") state.stack.pop();
451
+ return style;
452
+ },
453
+
454
+ indent: function(state, textAfter) {
455
+ var n = state.stack.length;
456
+ if (/^\}/.test(textAfter))
457
+ n -= state.stack[state.stack.length-1] == "propertyValue" ? 2 : 1;
458
+ return state.baseIndent + n * indentUnit;
459
+ },
460
+
461
+ electricChars: "}"
462
+ };
463
+ });
464
+
465
+ CodeMirror.defineMIME("text/css", "css");
466
+